forked from bartvdbraak/blender
Merged changes from trunk to soc-2008-mxcurioni: svn merge -r 14534:14595 https://svn.blender.org/svnroot/bf-blender/trunk/blender/
This commit is contained in:
commit
812a0eb1fb
@ -60,7 +60,7 @@ OPTION(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
|
||||
OPTION(WITH_VERSE "Enable Verse (http://verse.blender.org)" OFF)
|
||||
OPTION(WITH_ELBEEM "Enable Elbeem (Fluid Simulation)" ON)
|
||||
OPTION(WITH_QUICKTIME "Enable Quicktime Support" OFF)
|
||||
OPTION(WITH_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" OFF)
|
||||
OPTION(WITH_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON)
|
||||
OPTION(WITH_FFMPEG "Enable FFMPeg Support (http://ffmpeg.mplayerhq.hu/)" OFF)
|
||||
OPTION(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
|
||||
OPTION(YESIAMSTUPID "Enable execution on 64-bit platforms" OFF)
|
||||
@ -258,7 +258,7 @@ IF(WIN32)
|
||||
|
||||
SET(FFMPEG ${LIBDIR}/ffmpeg)
|
||||
SET(FFMPEG_INC ${FFMPEG}/include)
|
||||
SET(FFMPEG_LIB avcodec-51 avformat-51 avutil-49)
|
||||
SET(FFMPEG_LIB avcodec-51 avformat-52 avdevice-52 avutil-49 swscale-0)
|
||||
SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
|
||||
|
||||
SET(LLIBS kernel32 user32 gdi32 comdlg32 advapi32 shell32 ole32 oleaut32 uuid ws2_32 vfw32 winmm)
|
||||
@ -299,7 +299,7 @@ IF(WIN32)
|
||||
SET(WINTAB_INC ${LIBDIR}/wintab/include)
|
||||
|
||||
SET(PLATFORM_LINKFLAGS "/NODEFAULTLIB:libc.lib")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib ")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib;libc.lib ")
|
||||
ENDIF(WIN32)
|
||||
|
||||
IF(APPLE)
|
||||
|
31
SConstruct
31
SConstruct
@ -143,7 +143,7 @@ if crossbuild and platform!='win32':
|
||||
|
||||
env['OURPLATFORM'] = platform
|
||||
|
||||
configfile = B.arguments.get('BF_CONFIG', 'config'+os.sep+platform+'-config.py')
|
||||
configfile = 'config'+os.sep+platform+'-config.py'
|
||||
|
||||
if os.path.exists(configfile):
|
||||
print B.bc.OKGREEN + "Using config file: " + B.bc.ENDC + configfile
|
||||
@ -157,13 +157,14 @@ if crossbuild and env['PLATFORM'] != 'win32':
|
||||
# Needed for gui programs, console programs should do without it
|
||||
env.Append(LINKFLAGS=['-mwindows'])
|
||||
|
||||
userconfig = B.arguments.get('BF_CONFIG', 'user-config.py')
|
||||
# first read platform config. B.arguments will override
|
||||
optfiles = [configfile]
|
||||
if os.path.exists('user-config.py'):
|
||||
print B.bc.OKGREEN + "Using config file: " + B.bc.ENDC + 'user-config.py'
|
||||
optfiles += ['user-config.py']
|
||||
if os.path.exists(userconfig):
|
||||
print B.bc.OKGREEN + "Using user-config file: " + B.bc.ENDC + userconfig
|
||||
optfiles += [userconfig]
|
||||
else:
|
||||
print B.bc.WARNING + 'user-config.py' + " not found, no user overrides" + B.bc.ENDC
|
||||
print B.bc.WARNING + userconfig + " not found, no user overrides" + B.bc.ENDC
|
||||
|
||||
opts = btools.read_opts(optfiles, B.arguments)
|
||||
opts.Update(env)
|
||||
@ -267,6 +268,11 @@ if not quickie and do_clean:
|
||||
if os.path.isdir(B.root_build_dir + dir) == 1:
|
||||
print "clean dir %s"%(B.root_build_dir+dir)
|
||||
shutil.rmtree(B.root_build_dir+dir)
|
||||
for confile in ['extern/ffmpeg/config.mak', 'extern/x264/config.mak',
|
||||
'extern/xvidcore/build/generic/platform.inc']:
|
||||
if os.path.exists(confile):
|
||||
print "clean file %s"%confile
|
||||
os.remove(confile)
|
||||
print B.bc.OKGREEN+'...done'+B.bc.ENDC
|
||||
else:
|
||||
print B.bc.HEADER+'Already Clean, nothing to do.'+B.bc.ENDC
|
||||
@ -432,10 +438,17 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw'):
|
||||
dllsources += ['${LCGDIR}/pthreads/lib/pthreadVC2.dll']
|
||||
if env['WITH_BF_ICONV']:
|
||||
dllsources += ['${LCGDIR}/iconv/lib/iconv.dll']
|
||||
# if env['WITH_BF_FFMPEG']:
|
||||
# dllsources += ['${LCGDIR}/ffmpeg/lib/avcodec-51.dll',
|
||||
# '${LCGDIR}/ffmpeg/lib/avformat-51.dll',
|
||||
# '${LCGDIR}/ffmpeg/lib/avutil-49.dll']
|
||||
if env['WITH_BF_FFMPEG']:
|
||||
dllsources += ['${LCGDIR}/ffmpeg/lib/avcodec-51.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/avformat-52.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/avdevice-52.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/avutil-49.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/libfaad-0.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/libfaac-0.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/libmp3lame-0.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/libx264-59.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/xvidcore.dll',
|
||||
'${LCGDIR}/ffmpeg/lib/swscale-0.dll']
|
||||
windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources)
|
||||
allinstall += windlls
|
||||
|
||||
|
@ -1,10 +1,48 @@
|
||||
LCGDIR = '#../lib/darwin-6.1-powerpc'
|
||||
#
|
||||
# Note : if you want to alter this file
|
||||
# copy it as a whole in the upper folder
|
||||
# as user-config.py
|
||||
# dont create a new file with only some
|
||||
# vars changed.
|
||||
|
||||
import commands
|
||||
|
||||
# IMPORTANT NOTE : OFFICIAL BUILDS SHOULD BE DONE WITH SDKs
|
||||
USE_SDK='true'
|
||||
|
||||
BF_PYTHON_VERSION = '2.3'
|
||||
|
||||
cmd = 'uname -p'
|
||||
MAC_PROC=commands.getoutput(cmd)
|
||||
cmd = 'uname -r'
|
||||
cmd_res=commands.getoutput(cmd)
|
||||
if cmd_res[0]=='7':
|
||||
MAC_CUR_VER='10.3'
|
||||
elif cmd_res[0]=='8':
|
||||
MAC_CUR_VER='10.4'
|
||||
else:
|
||||
MAC_CUR_VER='10.5'
|
||||
|
||||
if MAC_PROC == 'powerpc':
|
||||
LCGDIR = '#../lib/darwin-6.1-powerpc'
|
||||
else :
|
||||
LCGDIR = '#../lib/darwin-8.x.i386'
|
||||
LIBDIR = '${LCGDIR}'
|
||||
|
||||
if MAC_PROC== 'powerpc' and BF_PYTHON_VERSION == '2.3':
|
||||
MAC_MIN_VERS = '10.3'
|
||||
MACOSX_SDK='/Developer/SDKs/MacOSX10.3.9.sdk'
|
||||
else:
|
||||
MAC_MIN_VERS = '10.4'
|
||||
MACOSX_SDK='/Developer/SDKs/MacOSX10.4u.sdk'
|
||||
|
||||
|
||||
# enable ffmpeg support
|
||||
WITH_BF_FFMPEG = 'true' # -DWITH_FFMPEG
|
||||
BF_FFMPEG = "#extern/ffmpeg"
|
||||
BF_FFMPEG_INC = '${BF_FFMPEG}/include'
|
||||
if USE_SDK=='true':
|
||||
BF_FFMPEG_EXTRA = '-isysroot '+MACOSX_SDK+' -mmacosx-version-min='+MAC_MIN_VERS
|
||||
#BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
|
||||
#BF_FFMPEG_LIB = 'avformat.a avcodec.a avutil.a'
|
||||
|
||||
@ -14,8 +52,12 @@ BF_VERSE_LIBPATH = "${BF_BUILDDIR}/extern/verse/dist"
|
||||
BF_VERSE_INCLUDE = BF_VERSE
|
||||
BF_VERSE_LIBS = "libverse"
|
||||
|
||||
# python.org libs install in /library
|
||||
BF_PYTHON_VERSION = '2.5'
|
||||
# python.org libs install in /library we want to use that for 2.5
|
||||
#
|
||||
# if you want py2.5 on leopard without installing
|
||||
# change value to BF_PYTHON = '/Library/Frameworks/Python.framework/Versions/'
|
||||
# BEWARE: in that case it will work only on leopard
|
||||
|
||||
if BF_PYTHON_VERSION=='2.3':
|
||||
BF_PYTHON = '/System/Library/Frameworks/Python.framework/Versions/'
|
||||
else:
|
||||
@ -25,14 +67,26 @@ BF_PYTHON_INC = '${BF_PYTHON}${BF_PYTHON_VERSION}/include/python${BF_PYTHON_VERS
|
||||
BF_PYTHON_BINARY = '${BF_PYTHON}${BF_PYTHON_VERSION}/bin/python${BF_PYTHON_VERSION}'
|
||||
BF_PYTHON_LIB = ''
|
||||
BF_PYTHON_LIBPATH = '${BF_PYTHON}${BF_PYTHON_VERSION}/lib/python${BF_PYTHON_VERSION}/config'
|
||||
BF_PYTHON_LINKFLAGS = '-u __dummy -u _PyMac_Error -framework System -framework Python'
|
||||
BF_PYTHON_LINKFLAGS = '-u _PyMac_Error -framework System -framework Python'
|
||||
if MAC_CUR_VER=='10.3' or MAC_CUR_VER=='10.4':
|
||||
BF_PYTHON_LINKFLAGS ='-u __dummy '+BF_PYTHON_LINKFLAGS
|
||||
|
||||
WITH_BF_OPENAL = 'true'
|
||||
BF_QUIET = '1'
|
||||
WITH_BF_OPENMP = '0'
|
||||
|
||||
# Note : should be true, but openal simply dont work on intel
|
||||
if MAC_PROC == 'i386':
|
||||
WITH_BF_OPENAL = 'false'
|
||||
else:
|
||||
WITH_BF_OPENAL = 'true'
|
||||
#different lib must be used following version of gcc
|
||||
# for gcc 3.3
|
||||
#BF_OPENAL = LIBDIR + '/openal'
|
||||
# for gcc 3.4
|
||||
BF_OPENAL = '#../lib/darwin-8.0.0-powerpc/openal'
|
||||
# for gcc 3.4 and ulterior
|
||||
if MAC_PROC == 'powerpc':
|
||||
BF_OPENAL = '#../lib/darwin-8.0.0-powerpc/openal'
|
||||
else :
|
||||
BF_OPENAL = LIBDIR + '/openal'
|
||||
|
||||
BF_OPENAL_INC = '${BF_OPENAL}/include'
|
||||
BF_OPENAL_LIB = 'openal'
|
||||
@ -143,20 +197,40 @@ BF_OPENGL_LIB = 'GL GLU'
|
||||
BF_OPENGL_LIBPATH = '/System/Library/Frameworks/OpenGL.framework/Libraries'
|
||||
BF_OPENGL_LINKFLAGS = '-framework OpenGL'
|
||||
|
||||
##
|
||||
##CC = gcc
|
||||
##CCC = g++
|
||||
##ifeq ($CPU),alpha)
|
||||
## CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -mieee
|
||||
|
||||
CFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing']
|
||||
CFLAGS = ['-pipe','-fPIC','-funsigned-char']
|
||||
|
||||
CPPFLAGS = ['-fpascal-strings']
|
||||
CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing', '-fpascal-strings']
|
||||
CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing', '-fpascal-strings']
|
||||
CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fpascal-strings']
|
||||
CXXFLAGS = [ '-pipe','-fPIC','-funsigned-char', '-fpascal-strings']
|
||||
PLATFORM_LINKFLAGS = '-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime'
|
||||
REL_CFLAGS = ['-O2']
|
||||
REL_CCFLAGS = ['-O2']
|
||||
|
||||
#note to build succesfully on 10.3.9 SDK you need to patch 10.3.9 by adding the SystemStubs.a lib from 10.4
|
||||
LLIBS = 'stdc++ SystemStubs'
|
||||
|
||||
# some flags shuffling for different Os versions
|
||||
if MAC_MIN_VERS == '10.3':
|
||||
CFLAGS = ['-fuse-cxa-atexit']+CFLAGS
|
||||
CXXFLAGS = ['-fuse-cxa-atexit']+CXXFLAGS
|
||||
PLATFORM_LINKFLAGS = '-fuse-cxa-atexit '+PLATFORM_LINKFLAGS
|
||||
LLIBS = LLIBS + ' crt3.o'
|
||||
|
||||
if USE_SDK=='true':
|
||||
SDK_FLAGS=['-isysroot', MACOSX_SDK,'-mmacosx-version-min='+MAC_MIN_VERS]
|
||||
PLATFORM_LINKFLAGS = '-mmacosx-version-min='+MAC_MIN_VERS+ ' -Wl,-syslibroot,' + MACOSX_SDK+" "+PLATFORM_LINKFLAGS
|
||||
CCFLAGS=SDK_FLAGS+CCFLAGS
|
||||
CXXFLAGS=SDK_FLAGS+CXXFLAGS
|
||||
|
||||
if MAC_PROC == 'i386':
|
||||
REL_CFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3','-mssse3']
|
||||
REL_CCFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3','-mssse3']
|
||||
else:
|
||||
CFLAGS = CFLAGS+['-fno-strict-aliasing']
|
||||
CCFLAGS = CCFLAGS+['-fno-strict-aliasing']
|
||||
CXXFLAGS = CXXFLAGS+['-fno-strict-aliasing']
|
||||
|
||||
REL_CFLAGS = ['-O2']
|
||||
REL_CCFLAGS = ['-O2']
|
||||
|
||||
##BF_DEPEND = 'true'
|
||||
##
|
||||
##AR = ar
|
||||
@ -171,7 +245,6 @@ CC_WARN = ' -Wall -Wno-long-double'
|
||||
|
||||
##FIX_STUBS_WARNINGS = -Wno-unused
|
||||
|
||||
LLIBS = 'stdc++ SystemStubs'
|
||||
##LOPTS = --dynamic
|
||||
##DYNLDFLAGS = -shared $(LDFLAGS)
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
$Id$
|
||||
|
||||
Note: The current official release of SCons is 0.97
|
||||
Note: The current official release of SCons is 0.98, but
|
||||
our system still works for 0.97. However, this will be fixed
|
||||
soon.
|
||||
|
||||
Blenders SCons build scripts
|
||||
============================
|
||||
@ -76,6 +78,11 @@ $Id$
|
||||
likings. Any value set here will override the ones from the
|
||||
(platform)-config.py.
|
||||
|
||||
You can use BF_CONFIG argument to override the default user-config.py
|
||||
check. This is just like the user-config.py, but just with another name:
|
||||
|
||||
% scons BF_CONFIG=myownsettings
|
||||
|
||||
If you want to quickly test a new setting, you can give the option
|
||||
also on the command-line:
|
||||
|
||||
|
2
extern/verse/dist/v_network.c
vendored
2
extern/verse/dist/v_network.c
vendored
@ -32,7 +32,7 @@ typedef unsigned short uint16;
|
||||
typedef short int16;
|
||||
typedef unsigned char uint8;
|
||||
typedef char int8;
|
||||
typedef char boolean;
|
||||
typedef unsigned char boolean;
|
||||
|
||||
#include "v_cmd_gen.h"
|
||||
#include "v_network.h"
|
||||
|
@ -21,8 +21,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DisableLanguageExtensions="FALSE"
|
||||
@ -75,7 +75,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -41,12 +41,12 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib ftgl_static.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.lib libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.lib libbsp.lib libbmfont.lib libghost.lib libstring.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libdecimation.lib libiksolver.lib libpng_st.lib zlib.lib libmoto.lib solid.lib qhull.lib libopennl.lib Bullet.lib python25.lib libelbeem.lib libboolop.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib broad.lib complex.lib convex.lib memutil.lib verse.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib ftgl_static.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.lib libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.lib libbsp.lib libbmfont.lib libghost.lib libstring.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libdecimation.lib libiksolver.lib libpng_st.lib zlib.lib libmoto.lib solid.lib qhull.lib libopennl.lib Bullet.lib python25.lib libelbeem.lib libboolop.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib broad.lib complex.lib convex.lib memutil.lib verse.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-51.lib avformat-52.lib avutil-49.lib swscale-0.lib"
|
||||
ShowProgress="0"
|
||||
OutputFile="..\..\bin\blender.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_7\libs\intern;..\..\..\build\msvc_7\libs\extern"
|
||||
AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_7\libs\intern;..\..\..\build\msvc_7\libs\extern;..\..\..\lib\windows\ffmpeg\lib"
|
||||
IgnoreAllDefaultLibraries="FALSE"
|
||||
IgnoreDefaultLibraryNames="msvcprt.lib;glut32.lib;libc.lib;libcd.lib;libcpd.lib;libcp.lib;libcmtd.lib;odbc32.lib;odbccp32.lib"
|
||||
ProgramDatabaseFile="..\..\..\build\msvc_7\libs\blender.pdb"
|
||||
@ -65,6 +65,7 @@ XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\bin
|
||||
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\bin
|
||||
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\bin
|
||||
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\bin
|
||||
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\bin
|
||||
ECHO Copying language folder
|
||||
ECHO Copying python scripts
|
||||
IF NOT EXIST ..\..\bin\.blender\scripts MKDIR ..\..\bin\.blender\scripts
|
||||
@ -123,12 +124,12 @@ ECHO Done
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386
|
||||
"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib ftgl_static.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.lib libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.lib libbsp.lib libbmfont.lib libghost.lib libstring.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libdecimation.lib libiksolver.lib libpng_st.lib zlib.lib libmoto.lib solid.lib qhull.lib libopennl.lib Bullet.lib python25_d.lib libelbeem.lib libboolop.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib broad.lib complex.lib convex.lib memutil.lib verse.lib Half.lib Iex.lib Imath.lib IlmImf.lib IlmThread.lib"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib ftgl_static.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.lib libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.lib libbsp.lib libbmfont.lib libghost.lib libstring.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libdecimation.lib libiksolver.lib libpng_st.lib zlib.lib libmoto.lib solid.lib qhull.lib libopennl.lib Bullet.lib python25_d.lib libelbeem.lib libboolop.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib broad.lib complex.lib convex.lib memutil.lib verse.lib Half.lib Iex.lib Imath.lib IlmImf.lib IlmThread.lib avcodec-51.lib avformat-52.lib avutil-49.lib swscale-0.lib"
|
||||
ShowProgress="0"
|
||||
OutputFile="..\..\bin\debug\blender.exe"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="TRUE"
|
||||
AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_7\libs\intern\debug;..\..\..\build\msvc_7\libs\extern\debug"
|
||||
AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\python\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\lib\windows\ffmpeg\lib;..\..\..\build\msvc_7\libs\intern\debug;..\..\..\build\msvc_7\libs\extern\debug"
|
||||
IgnoreDefaultLibraryNames="libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, odbc32.lib, odbccp32.lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="..\..\..\build\msvc_7\libs\debug\blender.pdb"
|
||||
@ -149,6 +150,7 @@ XCOPY /Y ..\..\..\lib\windows\python\lib\python25_d.dll ..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\bin\debug
|
||||
ECHO Copying language folder
|
||||
IF NOT EXIST ..\..\bin\debug\.blender MKDIR ..\..\bin\debug\.blender
|
||||
XCOPY /Y ..\..\bin\.blender ..\..\bin\debug\.blender /E
|
||||
|
@ -73,8 +73,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FREETYPE2;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET = 1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FREETYPE2;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET = 1;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="TRUE"
|
||||
@ -125,8 +125,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_FREETYPE2;UNWRAPPER;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_FREETYPE2;UNWRAPPER;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@ -229,8 +229,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB,WITH_FREETYPE2"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FREETYPE2;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="TRUE"
|
||||
@ -281,8 +281,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,WITH_FREETYPE2,UNWRAPPER"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\extern\bullet\include;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_FREETYPE2;UNWRAPPER;WITH_FFMPEG"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
|
@ -21,7 +21,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\freetype\include;..\..\..\..\build\msvc_7\extern\ftgl\include;..\..\..\..\lib\windows\gettext\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\freetype\include;..\..\..\..\build\msvc_7\extern\ftgl\include;..\..\..\..\lib\windows\gettext\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;WCHAR_T16;HAVE_LC_MESSAGES;FTGL_LIBRARY_STATIC"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
@ -74,7 +74,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\freetype\include;..\..\..\..\build\msvc_7\extern\ftgl\include;..\..\..\..\lib\windows\gettext\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\freetype\include;..\..\..\..\build\msvc_7\extern\ftgl\include;..\..\..\..\lib\windows\gettext\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel"
|
||||
PreprocessorDefinitions="WIN32,_DEBUG,_LIB,WCHAR_T16,HAVE_LC_MESSAGES,FTGL_LIBRARY_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
|
@ -21,8 +21,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_OPENEXR;WITH_DDS"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_OPENEXR;WITH_DDS;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="TRUE"
|
||||
@ -176,8 +176,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_OPENEXR;WITH_DDS"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_OPENEXR;WITH_DDS;WITH_FFMPEG"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@ -228,8 +228,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB,WITH_QUICKTIME,WITH_DDS"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_DDS;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="TRUE"
|
||||
@ -280,8 +280,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_DDS"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\jpeg\include;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\png\include;..\..\..\..\lib\windows\tiff\include;..\..\..\..\lib\windows\openexr\include;..\..\..\..\lib\windows\openexr\include\Iex;..\..\..\..\lib\windows\openexr\include\Imath;..\..\..\..\lib\windows\openexr\include\IlmImf;..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenloader;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf\intern;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\imbuf\intern\openexr;..\..\..\source\blender\imbuf\intern\dds;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_QUICKTIME;WITH_DDS;WITH_FFMPEG"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
|
@ -21,8 +21,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\ghost\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\blenkey\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\soundsystem\include;..\..\..\source\blender;..\..\..\source\blender\img;..\..\..\source\blender\verify;..\..\..\source\blender\ftfont;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenpluginapi;..\..\..\source\blender\renderconverter;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\network;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\lib\windows\pthreads\include"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CONSOLE;GAMEBLENDER=1;WITH_QUICKTIME;INTERNATIONAL;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\ghost\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\blenkey\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\soundsystem\include;..\..\..\source\blender;..\..\..\source\blender\img;..\..\..\source\blender\verify;..\..\..\source\blender\ftfont;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenpluginapi;..\..\..\source\blender\renderconverter;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\network;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CONSOLE;GAMEBLENDER=1;WITH_QUICKTIME;INTERNATIONAL;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG"
|
||||
StringPooling="TRUE"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="TRUE"
|
||||
@ -73,8 +73,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\ghost\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\blenkey\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\soundsystem\include;..\..\..\source\blender;..\..\..\source\blender\img;..\..\..\source\blender\verify;..\..\..\source\blender\ftfont;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenpluginapi;..\..\..\source\blender\renderconverter;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\network;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\lib\windows\pthreads\include"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CONSOLE;GAMEBLENDER;WITH_QUICKTIME;INTERNATIONAL;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET = 1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\build\msvc_7\intern\bsp\include;..\..\..\..\build\msvc_7\intern\ghost\include;..\..\..\..\build\msvc_7\intern\elbeem\include;..\..\..\..\build\msvc_7\intern\opennl\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\blenkey\include;..\..\..\..\build\msvc_7\intern\decimation\include;..\..\..\..\build\msvc_7\intern\memutil\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\intern\soundsystem\include;..\..\..\source\blender;..\..\..\source\blender\img;..\..\..\source\blender\verify;..\..\..\source\blender\ftfont;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenpluginapi;..\..\..\source\blender\renderconverter;..\..\..\source\blender\readstreamglue;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\network;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\build\msvc_7\extern\verse\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\ffmpeg\include"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CONSOLE;GAMEBLENDER;WITH_QUICKTIME;INTERNATIONAL;WITH_VERSE;WITH_OPENEXR;WITH_DDS;WITH_BULLET = 1;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="TRUE"
|
||||
|
@ -40,12 +40,12 @@
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386
|
||||
"
|
||||
AdditionalDependencies="libguardedalloc.lib libstring.lib libghost.lib odelib.lib fmodvc.lib libbmfont.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib libmoto.lib libSoundSystem.lib qtmlClient.lib libDummySoundSystem.lib libOpenALSoundSystem.lib SDL.lib solid.lib freetype2ST.lib Bullet.lib libdecimation.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib verse.lib libopennl.lib"
|
||||
AdditionalDependencies="libguardedalloc.lib libstring.lib libghost.lib odelib.lib fmodvc.lib libbmfont.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib libmoto.lib libSoundSystem.lib qtmlClient.lib libDummySoundSystem.lib libOpenALSoundSystem.lib SDL.lib solid.lib freetype2ST.lib Bullet.lib libdecimation.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib verse.lib libopennl.lib avcodec-51.lib avformat-52.lib avutil-49.lib swscale-0.lib"
|
||||
ShowProgress="0"
|
||||
OutputFile="..\..\..\..\bin\debug\blenderplayer.exe"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="TRUE"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\build\msvc_7\libs\intern\debug;..\..\..\..\..\build\msvc_7\libs\extern\debug;..\..\..\..\..\lib\windows\pthreads\lib"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\build\msvc_7\libs\intern\debug;..\..\..\..\..\build\msvc_7\libs\extern\debug;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib"
|
||||
IgnoreDefaultLibraryNames="libc.lib;libcmt.lib;msvcrt.lib;libcd.lib;msvcrtd.lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="..\..\..\..\..\build\msvc_7\libs\debug\blenderplayer.pdb"
|
||||
@ -64,6 +64,7 @@ XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python25_d.dll ..\..\..\..\bin\de
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\SDL.dll ..\..\..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\png\lib\libpng.dll ..\..\..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\bin\debug
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\..\bin\debug
|
||||
ECHO Done
|
||||
"/>
|
||||
@ -116,11 +117,11 @@ ECHO Done
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386"
|
||||
AdditionalDependencies="libguardedalloc.lib libstring.lib libghost.lib odelib.lib fmodvc.lib libbmfont.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib libmoto.lib libSoundSystem.lib qtmlClient.lib libDummySoundSystem.lib libOpenALSoundSystem.lib SDL.lib solid.lib freetype2ST.lib Bullet.lib libdecimation.lib python25.lib pthreadVSE2.lib pthreadVC2.lib verse.lib libopennl.lib"
|
||||
AdditionalDependencies="libguardedalloc.lib libstring.lib libghost.lib odelib.lib fmodvc.lib libbmfont.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib libmoto.lib libSoundSystem.lib qtmlClient.lib libDummySoundSystem.lib libOpenALSoundSystem.lib SDL.lib solid.lib freetype2ST.lib Bullet.lib libdecimation.lib python25.lib pthreadVSE2.lib pthreadVC2.lib verse.lib libopennl.lib avcodec-51.lib avformat-52.lib avutil-49.lib swscale-0.lib"
|
||||
OutputFile="..\..\..\..\bin\blenderplayer.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="TRUE"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\build\msvc_7\libs\intern;..\..\..\..\..\build\msvc_7\libs\extern;..\..\..\..\..\lib\windows\pthreads\lib"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\build\msvc_7\libs\intern;..\..\..\..\..\build\msvc_7\libs\extern;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib"
|
||||
IgnoreDefaultLibraryNames="libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib"
|
||||
ProgramDatabaseFile="..\..\..\..\..\build\msvc_7\libs\blenderplayer.pdb"
|
||||
SubSystem="1"/>
|
||||
@ -137,6 +138,7 @@ XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python25.dll ..\..\..\..\bin
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\SDL.dll ..\..\..\..\bin
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\png\lib\libpng.dll ..\..\..\..\bin
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\bin
|
||||
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\bin
|
||||
ECHO Done
|
||||
"/>
|
||||
<Tool
|
||||
|
@ -62,7 +62,7 @@ int main(int argc, char**argv) {
|
||||
if (argv[1][i]=='.') argv[1][i]='_';
|
||||
|
||||
sprintf(sizest, "%d", (int)size);
|
||||
printf ("Input filesize is %d, Output size should be %d\n", size, ((int)size)*4 + strlen("/* DataToC output of file <> */\n\n") + strlen("char datatoc_[]= {\"") + strlen ("\"};\n") + (strlen(argv[1])*3) + strlen(sizest) + strlen("int datatoc__size= ;\n") +(((int)(size/256)+1)*5));
|
||||
printf ("Input filesize is %ld, Output size should be %ld\n", size, ((int)size)*4 + strlen("/* DataToC output of file <> */\n\n") + strlen("char datatoc_[]= {\"") + strlen ("\"};\n") + (strlen(argv[1])*3) + strlen(sizest) + strlen("int datatoc__size= ;\n") +(((int)(size/256)+1)*5));
|
||||
|
||||
fpout= fopen(cname, "w");
|
||||
if (!fpout) {
|
||||
@ -93,8 +93,8 @@ int main(int argc, char**argv) {
|
||||
/* fprintf (fpout, "\\x%02x", getc(fpin)); */
|
||||
fprintf (fpout, "%3d,", getc(fpin));
|
||||
}
|
||||
|
||||
fprintf (fpout, "\n};\n\n");
|
||||
/* null terminate for the case it is a string */
|
||||
fprintf (fpout, "\n 0};\n\n");
|
||||
|
||||
fclose(fpin);
|
||||
fclose(fpout);
|
||||
|
@ -41,7 +41,7 @@ struct ListBase;
|
||||
struct MemFile;
|
||||
|
||||
#define BLENDER_VERSION 245
|
||||
#define BLENDER_SUBVERSION 16
|
||||
#define BLENDER_SUBVERSION 17
|
||||
|
||||
#define BLENDER_MINVERSION 240
|
||||
#define BLENDER_MINSUBVERSION 0
|
||||
|
@ -50,7 +50,7 @@
|
||||
#include "BKE_collision.h"
|
||||
|
||||
struct Object;
|
||||
struct Cloth;
|
||||
|
||||
struct MFace;
|
||||
struct DerivedMesh;
|
||||
struct ClothModifierData;
|
||||
@ -82,6 +82,33 @@ struct CollisionTree;
|
||||
#define CLOTH_VERT_FLAG_COLLISION 2
|
||||
#define CLOTH_VERT_FLAG_PINNED_EM 3
|
||||
|
||||
/**
|
||||
* This structure describes a cloth object against which the
|
||||
* simulation can run.
|
||||
*
|
||||
* The m and n members of this structure represent the assumed
|
||||
* rectangular ordered grid for which the original paper is written.
|
||||
* At some point they need to disappear and we need to determine out
|
||||
* own connectivity of the mesh based on the actual edges in the mesh.
|
||||
*
|
||||
**/
|
||||
typedef struct Cloth
|
||||
{
|
||||
struct ClothVertex *verts; /* The vertices that represent this cloth. */
|
||||
struct LinkNode *springs; /* The springs connecting the mesh. */
|
||||
unsigned int numverts; /* The number of verts == m * n. */
|
||||
unsigned int numsprings; /* The count of springs. */
|
||||
unsigned int numfaces;
|
||||
unsigned char old_solver_type; /* unused, only 1 solver here */
|
||||
unsigned char pad2;
|
||||
short pad3;
|
||||
struct BVH *tree; /* collision tree for this cloth object */
|
||||
struct MFace *mfaces;
|
||||
struct Implicit_Data *implicit; /* our implicit solver connects to this pointer */
|
||||
struct Implicit_Data *implicitEM; /* our implicit solver connects to this pointer */
|
||||
struct EdgeHash *edgehash; /* used for selfcollisions */
|
||||
} Cloth;
|
||||
|
||||
/**
|
||||
* The definition of a cloth vertex.
|
||||
*/
|
||||
|
@ -35,7 +35,6 @@
|
||||
|
||||
struct Effect;
|
||||
struct ListBase;
|
||||
struct PartEff;
|
||||
struct Particle;
|
||||
struct Group;
|
||||
|
||||
@ -51,21 +50,16 @@ typedef struct pEffectorCache {
|
||||
Object obcopy; /* for restoring transformation data */
|
||||
} pEffectorCache;
|
||||
|
||||
|
||||
struct Effect *add_effect(int type);
|
||||
void free_effect(struct Effect *eff);
|
||||
void free_effects(struct ListBase *lb);
|
||||
struct Effect *copy_effect(struct Effect *eff);
|
||||
void copy_act_effect(struct Object *ob);
|
||||
void copy_effects(struct ListBase *lbn, struct ListBase *lb);
|
||||
void deselectall_eff(struct Object *ob);
|
||||
struct PartEff *give_parteff(struct Object *ob);
|
||||
void where_is_particle(struct PartEff *paf, struct Particle *pa, float ctime, float *vec);
|
||||
void build_particle_system(struct Object *ob);
|
||||
|
||||
/* particle deflector */
|
||||
#define PE_WIND_AS_SPEED 0x00000001
|
||||
|
||||
struct PartEff *give_parteff(struct Object *ob);
|
||||
struct ListBase *pdInitEffectors(struct Object *obsrc, struct Group *group);
|
||||
void pdEndEffectors(struct ListBase *lb);
|
||||
void pdDoEffectors(struct ListBase *lb, float *opco, float *force, float *speed, float cur_time, float loc_time, unsigned int flags);
|
||||
|
@ -31,6 +31,10 @@
|
||||
#ifndef BKE_VFONT_H
|
||||
#define BKE_VFONT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <wchar.h>
|
||||
|
||||
struct VFont;
|
||||
@ -65,7 +69,11 @@ int getselection(int *start, int *end);
|
||||
void chtoutf8(unsigned long c, char *o);
|
||||
void wcs2utf8s(char *dst, wchar_t *src);
|
||||
int wcsleninu8(wchar_t *src);
|
||||
int utf8towchar_(wchar_t *w, char *c);
|
||||
int utf8towchar(wchar_t *w, char *c);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -61,7 +61,7 @@ void multires_load_cols(struct Mesh *me);
|
||||
void multires_level_to_mesh(struct Object *ob, struct Mesh *me, const int render);
|
||||
void multires_update_levels(struct Mesh *me, const int render);
|
||||
void multires_update_first_level(struct Mesh *me, struct EditMesh *em);
|
||||
void multires_update_customdata(struct MultiresLevel *lvl1, struct CustomData *src,
|
||||
void multires_update_customdata(struct MultiresLevel *lvl1, struct EditMesh *em, struct CustomData *src,
|
||||
struct CustomData *dst, const int type);
|
||||
void multires_customdata_to_mesh(struct Mesh *me, struct EditMesh *em,
|
||||
struct MultiresLevel *lvl, struct CustomData *src,
|
||||
|
@ -355,6 +355,7 @@ TimeMarker *get_frame_marker(int frame){return 0;};
|
||||
|
||||
/* editseq.c */
|
||||
Sequence *get_forground_frame_seq(int frame){return 0;};
|
||||
void set_last_seq(Sequence *seq){return 0;};
|
||||
|
||||
/* modifier.c stub */
|
||||
void harmonic_coordinates_bind(struct MeshDeformModifierData *mmd,
|
||||
|
@ -420,7 +420,6 @@ static DerivedMesh *getMeshDerivedMesh(Mesh *me, Object *ob, float (*vertCos)[3]
|
||||
dofluidsim = ((ob->fluidsimFlag & OB_FLUIDSIM_ENABLE) &&
|
||||
(ob->fluidsimSettings->type & OB_FLUIDSIM_DOMAIN)&&
|
||||
(ob->fluidsimSettings->meshSurface) &&
|
||||
(1) && (!give_parteff(ob)) && // doesnt work together with particle systems!
|
||||
(me->totvert == ((Mesh *)(ob->fluidsimSettings->meshSurface))->totvert));
|
||||
|
||||
if (vertCos && !dofluidsim)
|
||||
@ -1916,8 +1915,7 @@ static void mesh_calc_modifiers(Object *ob, float (*inputVertexCos)[3],
|
||||
* domain objects
|
||||
*/
|
||||
if((G.obedit!=ob) && !needMapping) {
|
||||
if((ob->fluidsimFlag & OB_FLUIDSIM_ENABLE) &&
|
||||
(1) && (!give_parteff(ob)) ) { // doesnt work together with particle systems!
|
||||
if((ob->fluidsimFlag & OB_FLUIDSIM_ENABLE)) {
|
||||
if(ob->fluidsimSettings->type & OB_FLUIDSIM_DOMAIN) {
|
||||
loadFluidsimMesh(ob,useRenderParams);
|
||||
fluidsimMeshUsed = 1;
|
||||
@ -2550,14 +2548,7 @@ void makeDerivedMesh(Object *ob, CustomDataMask dataMask)
|
||||
if (ob==G.obedit) {
|
||||
editmesh_build_data(dataMask);
|
||||
} else {
|
||||
PartEff *paf= give_parteff(ob);
|
||||
|
||||
mesh_build_data(ob, dataMask);
|
||||
|
||||
if(paf) {
|
||||
if((paf->flag & PAF_STATIC) || (ob->recalc & OB_RECALC_TIME)==0)
|
||||
build_particle_system(ob);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -962,10 +962,6 @@ static float nla_time(float cfra, float unit)
|
||||
/* global time */
|
||||
cfra*= G.scene->r.framelen;
|
||||
|
||||
|
||||
/* decide later... */
|
||||
// if(no_speed_curve==0) if(ob && ob->ipo) cfra= calc_ipo_time(ob->ipo, cfra);
|
||||
|
||||
return cfra;
|
||||
}
|
||||
|
||||
@ -1144,11 +1140,12 @@ void what_does_obaction (Object *ob, bAction *act, float cframe)
|
||||
workob.constraints.last = ob->constraints.last;
|
||||
|
||||
strcpy(workob.parsubstr, ob->parsubstr);
|
||||
strcpy(workob.id.name, ob->id.name);
|
||||
|
||||
/* extract_ipochannels_from_action needs id's! */
|
||||
workob.action= act;
|
||||
|
||||
extract_ipochannels_from_action(&tchanbase, &ob->id, act, "Object", bsystem_time(&workob, cframe, 0.0));
|
||||
extract_ipochannels_from_action(&tchanbase, &workob.id, act, "Object", bsystem_time(&workob, cframe, 0.0));
|
||||
|
||||
if (tchanbase.first) {
|
||||
execute_ipochannels(&tchanbase);
|
||||
|
@ -330,6 +330,7 @@ static void setup_app_data(BlendFileData *bfd, char *filename)
|
||||
extern void lib_link_screen_restore(Main *, Scene *);
|
||||
|
||||
SWAP(ListBase, G.main->screen, bfd->main->screen);
|
||||
SWAP(ListBase, G.main->script, bfd->main->script);
|
||||
|
||||
/* we re-use current screen */
|
||||
curscreen= G.curscreen;
|
||||
|
@ -568,35 +568,6 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int
|
||||
dag_add_relation(dag,node2,node,DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Texture On Curve");
|
||||
}
|
||||
}
|
||||
else if(ob->type==OB_MESH) {
|
||||
PartEff *paf= give_parteff(ob);
|
||||
if(paf) {
|
||||
ListBase *listb;
|
||||
pEffectorCache *ec;
|
||||
|
||||
/* ob location depends on itself */
|
||||
if((paf->flag & PAF_STATIC)==0)
|
||||
dag_add_relation(dag, node, node, DAG_RL_OB_DATA, "Particle-Object Relation");
|
||||
|
||||
listb= pdInitEffectors(ob, paf->group); /* note, makes copy... */
|
||||
if(listb) {
|
||||
for(ec= listb->first; ec; ec= ec->next) {
|
||||
Object *ob1= ec->ob;
|
||||
PartDeflect *pd= ob1->pd;
|
||||
|
||||
if(pd->forcefield) {
|
||||
node2 = dag_get_node(dag, ob1);
|
||||
if(pd->forcefield==PFIELD_GUIDE)
|
||||
dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Particle Field");
|
||||
else
|
||||
dag_add_relation(dag, node2, node, DAG_RL_OB_DATA, "Particle Field");
|
||||
}
|
||||
}
|
||||
|
||||
pdEndEffectors(listb); /* restores copy... */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
psys= ob->particlesystem.first;
|
||||
if(psys) {
|
||||
@ -1987,15 +1958,6 @@ static void dag_object_time_update_flags(Object *ob)
|
||||
ob->shapeflag &= ~OB_SHAPE_TEMPLOCK;
|
||||
}
|
||||
}
|
||||
else if(ob->effect.first) {
|
||||
Effect *eff= ob->effect.first;
|
||||
PartEff *paf= give_parteff(ob);
|
||||
|
||||
if(eff->type==EFF_WAVE)
|
||||
ob->recalc |= OB_RECALC_DATA;
|
||||
else if(paf && paf->keys==NULL)
|
||||
ob->recalc |= OB_RECALC_DATA;
|
||||
}
|
||||
if((ob->fluidsimFlag & OB_FLUIDSIM_ENABLE) && (ob->fluidsimSettings)) {
|
||||
// fluidsimSettings might not be initialized during load...
|
||||
if(ob->fluidsimSettings->type & (OB_FLUIDSIM_DOMAIN|OB_FLUIDSIM_PARTICLE)) {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -159,37 +159,57 @@ utf8slen(char *src)
|
||||
return size;
|
||||
}
|
||||
|
||||
int utf8towchar_(wchar_t *w, char *c)
|
||||
|
||||
/* Converts Unicode to wchar
|
||||
|
||||
According to RFC 3629 "UTF-8, a transformation format of ISO 10646"
|
||||
(http://tools.ietf.org/html/rfc3629), the valid UTF-8 encoding are:
|
||||
|
||||
Char. number range | UTF-8 octet sequence
|
||||
(hexadecimal) | (binary)
|
||||
--------------------+---------------------------------------------
|
||||
0000 0000-0000 007F | 0xxxxxxx
|
||||
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
|
||||
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
|
||||
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
||||
|
||||
If the encoding incidated by the first character is incorrect (because the
|
||||
1 to 3 following characters do not match 10xxxxxx), the output is a '?' and
|
||||
only a single input character is consumed.
|
||||
|
||||
*/
|
||||
|
||||
int utf8towchar(wchar_t *w, char *c)
|
||||
{
|
||||
int len=0;
|
||||
|
||||
if(w==NULL || c==NULL) return(0);
|
||||
//printf("%s\n",c);
|
||||
while(*c)
|
||||
{
|
||||
if(*c & 0x80)
|
||||
{
|
||||
if(*c & 0x40)
|
||||
{
|
||||
if(*c & 0x20)
|
||||
{
|
||||
if(*c & 0x10)
|
||||
{
|
||||
*w=(c[0] & 0x0f)<<18 | (c[1]&0x1f)<<12 | (c[2]&0x3f)<<6 | (c[3]&0x7f);
|
||||
|
||||
while(*c) {
|
||||
if ((*c & 0xe0) == 0xc0) {
|
||||
if((c[1] & 0x80) && (c[1] & 0x40) == 0x00) {
|
||||
*w=((c[0] &0x1f)<<6) | (c[1]&0x3f);
|
||||
c++;
|
||||
} else {
|
||||
*w = '?';
|
||||
}
|
||||
else
|
||||
*w=(c[0] & 0x1f)<<12 | (c[1]&0x3f)<<6 | (c[2]&0x7f);
|
||||
c++;
|
||||
} else if ((*c & 0xf0) == 0xe0) {
|
||||
if((c[1] & c[2] & 0x80) && ((c[1] | c[2]) & 0x40) == 0x00) {
|
||||
*w=((c[0] & 0x0f)<<12) | ((c[1]&0x3f)<<6) | (c[2]&0x3f);
|
||||
c += 2;
|
||||
} else {
|
||||
*w = '?';
|
||||
}
|
||||
else
|
||||
*w=(((c[0] &0x3f)<<6) | (c[1]&0x7f));
|
||||
c++;
|
||||
} else if ((*c & 0xf8) == 0xf0) {
|
||||
if((c[1] & c[2] & c[3] & 0x80) && ((c[1] | c[2] | c[3]) & 0x40) == 0x00) {
|
||||
*w=((c[0] & 0x07)<<18) | ((c[1]&0x1f)<<12) | ((c[2]&0x3f)<<6) | (c[3]&0x3f);
|
||||
c += 3;
|
||||
} else {
|
||||
*w = '?';
|
||||
}
|
||||
else
|
||||
*w=(c[0] & 0x7f);
|
||||
}
|
||||
else
|
||||
} else
|
||||
*w=(c[0] & 0x7f);
|
||||
|
||||
c++;
|
||||
w++;
|
||||
len++;
|
||||
@ -641,7 +661,7 @@ struct chartrans *text_to_curve(Object *ob, int mode)
|
||||
utf8len = utf8slen(cu->str);
|
||||
tmp = mem = MEM_callocN(((utf8len + 1) * sizeof(wchar_t)), "convertedmem");
|
||||
|
||||
utf8towchar_(mem, cu->str);
|
||||
utf8towchar(mem, cu->str);
|
||||
|
||||
// Count the wchar_t string length
|
||||
slen = wcslen(mem);
|
||||
|
@ -41,6 +41,7 @@
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_nla_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
|
||||
@ -77,14 +78,27 @@ void unlink_group(Group *group)
|
||||
{
|
||||
Material *ma;
|
||||
Object *ob;
|
||||
Scene *sce;
|
||||
SceneRenderLayer *srl;
|
||||
ParticleSystem *psys;
|
||||
|
||||
for(ma= G.main->mat.first; ma; ma= ma->id.next) {
|
||||
if(ma->group==group)
|
||||
ma->group= NULL;
|
||||
}
|
||||
for(ma= G.main->mat.first; ma; ma= ma->id.next) {
|
||||
if(ma->group==group)
|
||||
ma->group= NULL;
|
||||
}
|
||||
for (sce= G.main->scene.first; sce; sce= sce->id.next) {
|
||||
for(srl= sce->r.layers.first; srl; srl= srl->next) {
|
||||
if (srl->light_override==group)
|
||||
srl->light_override= NULL;
|
||||
}
|
||||
}
|
||||
|
||||
for(ob= G.main->object.first; ob; ob= ob->id.next) {
|
||||
bActionStrip *strip;
|
||||
PartEff *paf;
|
||||
|
||||
if(ob->dup_group==group) {
|
||||
ob->dup_group= NULL;
|
||||
@ -95,11 +109,12 @@ void unlink_group(Group *group)
|
||||
strip->object= NULL;
|
||||
}
|
||||
}
|
||||
for(paf= ob->effect.first; paf; paf= paf->next) {
|
||||
if(paf->type==EFF_PARTICLE) {
|
||||
if(paf->group)
|
||||
paf->group= NULL;
|
||||
}
|
||||
|
||||
for(psys=ob->particlesystem.first; psys; psys=psys->next){
|
||||
if(psys->part->dup_group==group)
|
||||
psys->part->dup_group= NULL;
|
||||
if(psys->part->eff_group==group)
|
||||
psys->part->eff_group= NULL;
|
||||
}
|
||||
}
|
||||
group->id.us= 0;
|
||||
|
@ -246,7 +246,6 @@ static void image_free_buffers(Image *ima)
|
||||
/* called by library too, do not free ima itself */
|
||||
void free_image(Image *ima)
|
||||
{
|
||||
|
||||
image_free_buffers(ima);
|
||||
if (ima->packedfile) {
|
||||
freePackedFile(ima->packedfile);
|
||||
@ -257,7 +256,6 @@ void free_image(Image *ima)
|
||||
if (ima->preview) {
|
||||
BKE_previewimg_free(&ima->preview);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* only image block itself */
|
||||
|
@ -1368,7 +1368,7 @@ void cloth_calc_force(ClothModifierData *clmd, lfVector *lF, lfVector *lX, lfVec
|
||||
float gravity[3];
|
||||
float tm2[3][3] = {{-spring_air,0,0}, {0,-spring_air,0},{0,0,-spring_air}};
|
||||
MFace *mfaces = cloth->mfaces;
|
||||
ClothVertex *verts = cloth->verts;
|
||||
//ClothVertex *verts = cloth->verts;
|
||||
float wind_normalized[3];
|
||||
unsigned int numverts = cloth->numverts;
|
||||
LinkNode *search = cloth->springs;
|
||||
|
@ -991,7 +991,7 @@ static void lib_indirect_test_id(ID *id)
|
||||
Object *ob= (Object *)id;
|
||||
bActionStrip *strip;
|
||||
Mesh *me;
|
||||
PartEff *paf;
|
||||
|
||||
int a;
|
||||
|
||||
for (strip=ob->nlastrips.first; strip; strip=strip->next){
|
||||
@ -1004,10 +1004,6 @@ static void lib_indirect_test_id(ID *id)
|
||||
LIBTAG(ob->mat[a]);
|
||||
}
|
||||
|
||||
paf = give_parteff(ob);
|
||||
if (paf)
|
||||
LIBTAG(paf->group);
|
||||
|
||||
LIBTAG(ob->dup_group);
|
||||
LIBTAG(ob->proxy);
|
||||
|
||||
|
@ -75,7 +75,7 @@ char type_ok(const int type)
|
||||
}
|
||||
|
||||
/* Copy vdata or fdata from Mesh or EditMesh to Multires. */
|
||||
void multires_update_customdata(MultiresLevel *lvl1, CustomData *src, CustomData *dst, const int type)
|
||||
void multires_update_customdata(MultiresLevel *lvl1, EditMesh *em, CustomData *src, CustomData *dst, const int type)
|
||||
{
|
||||
if(src && dst && type_ok(type)) {
|
||||
const int tot= (type == CD_MDEFORMVERT ? lvl1->totvert : lvl1->totface);
|
||||
@ -84,7 +84,7 @@ void multires_update_customdata(MultiresLevel *lvl1, CustomData *src, CustomData
|
||||
CustomData_free(dst, tot);
|
||||
|
||||
if(CustomData_has_layer(src, type)) {
|
||||
if(G.obedit) {
|
||||
if(em) {
|
||||
EditVert *eve= G.editMesh->verts.first;
|
||||
EditFace *efa= G.editMesh->faces.first;
|
||||
CustomData_copy(src, dst, cdmask(type), CD_CALLOC, tot);
|
||||
@ -227,9 +227,9 @@ void multires_del_lower_customdata(Multires *mr, MultiresLevel *cr_lvl)
|
||||
void multires_update_first_level(Mesh *me, EditMesh *em)
|
||||
{
|
||||
if(me && me->mr && me->mr->current == 1) {
|
||||
multires_update_customdata(me->mr->levels.first, em ? &em->vdata : &me->vdata,
|
||||
multires_update_customdata(me->mr->levels.first, em, em ? &em->vdata : &me->vdata,
|
||||
&me->mr->vdata, CD_MDEFORMVERT);
|
||||
multires_update_customdata(me->mr->levels.first, em ? &em->fdata : &me->fdata,
|
||||
multires_update_customdata(me->mr->levels.first, em, em ? &em->fdata : &me->fdata,
|
||||
&me->mr->fdata, CD_MTFACE);
|
||||
multires_update_edge_flags(me, em);
|
||||
}
|
||||
|
@ -373,7 +373,7 @@ void multires_create(Object *ob, Mesh *me)
|
||||
/* Load vertices and vdata (MDeformVerts) */
|
||||
lvl->totvert= em ? BLI_countlist(&em->verts) : me->totvert;
|
||||
me->mr->verts= MEM_callocN(sizeof(MVert)*lvl->totvert,"multires verts");
|
||||
multires_update_customdata(me->mr->levels.first, em ? &em->vdata : &me->vdata,
|
||||
multires_update_customdata(me->mr->levels.first, em, em ? &em->vdata : &me->vdata,
|
||||
&me->mr->vdata, CD_MDEFORMVERT);
|
||||
if(em) eve= em->verts.first;
|
||||
for(i=0; i<lvl->totvert; ++i) {
|
||||
@ -384,7 +384,7 @@ void multires_create(Object *ob, Mesh *me)
|
||||
/* Load faces and fdata (MTFaces) */
|
||||
lvl->totface= em ? BLI_countlist(&em->faces) : me->totface;
|
||||
lvl->faces= MEM_callocN(sizeof(MultiresFace)*lvl->totface,"multires faces");
|
||||
multires_update_customdata(me->mr->levels.first, em ? &em->fdata : &me->fdata,
|
||||
multires_update_customdata(me->mr->levels.first, em, em ? &em->fdata : &me->fdata,
|
||||
&me->mr->fdata, CD_MTFACE);
|
||||
if(em) efa= em->faces.first;
|
||||
for(i=0; i<lvl->totface; ++i) {
|
||||
|
@ -90,7 +90,6 @@
|
||||
#include "BKE_constraint.h"
|
||||
#include "BKE_curve.h"
|
||||
#include "BKE_displist.h"
|
||||
#include "BKE_effect.h"
|
||||
#include "BKE_group.h"
|
||||
#include "BKE_icons.h"
|
||||
#include "BKE_ipo.h"
|
||||
@ -249,7 +248,6 @@ void free_object(Object *ob)
|
||||
BLI_freelistN(&ob->defbase);
|
||||
if(ob->pose)
|
||||
free_pose(ob->pose);
|
||||
free_effects(&ob->effect);
|
||||
free_properties(&ob->prop);
|
||||
object_free_modifiers(ob);
|
||||
|
||||
@ -394,9 +392,7 @@ void unlink_object(Object *ob)
|
||||
|
||||
/* object is deflector or field */
|
||||
if(ob->pd) {
|
||||
if(give_parteff(obt))
|
||||
obt->recalc |= OB_RECALC_DATA;
|
||||
else if(obt->soft)
|
||||
if(obt->soft)
|
||||
obt->recalc |= OB_RECALC_DATA;
|
||||
|
||||
/* cloth */
|
||||
@ -906,8 +902,10 @@ Object *add_only_object(int type, char *name)
|
||||
ob->type= type;
|
||||
/* ob->transflag= OB_QUAT; */
|
||||
|
||||
#if 0 /* not used yet */
|
||||
QuatOne(ob->quat);
|
||||
QuatOne(ob->dquat);
|
||||
#endif
|
||||
|
||||
ob->col[0]= ob->col[1]= ob->col[2]= 0.0;
|
||||
ob->col[3]= 1.0;
|
||||
@ -998,11 +996,13 @@ void base_init_from_view3d(Base *base, View3D *v3d)
|
||||
|
||||
if (U.flag & USER_ADD_VIEWALIGNED) {
|
||||
v3d->viewquat[0]= -v3d->viewquat[0];
|
||||
if (ob->transflag & OB_QUAT) {
|
||||
|
||||
/* Quats arnt used yet */
|
||||
/*if (ob->transflag & OB_QUAT) {
|
||||
QUATCOPY(ob->quat, v3d->viewquat);
|
||||
} else {
|
||||
} else {*/
|
||||
QuatToEul(v3d->viewquat, ob->rot);
|
||||
}
|
||||
/*}*/
|
||||
v3d->viewquat[0]= -v3d->viewquat[0];
|
||||
}
|
||||
}
|
||||
@ -1146,7 +1146,6 @@ Object *copy_object(Object *ob)
|
||||
obn->path= NULL;
|
||||
obn->flag &= ~OB_FROMGROUP;
|
||||
|
||||
copy_effects(&obn->effect, &ob->effect);
|
||||
obn->modifiers.first = obn->modifiers.last= NULL;
|
||||
|
||||
for (md=ob->modifiers.first; md; md=md->next) {
|
||||
@ -1439,7 +1438,7 @@ void object_to_mat3(Object *ob, float mat[][3]) /* no parent */
|
||||
{
|
||||
float smat[3][3], vec[3];
|
||||
float rmat[3][3];
|
||||
float q1[4];
|
||||
/*float q1[4];*/
|
||||
|
||||
/* size */
|
||||
if(ob->ipo) {
|
||||
@ -1453,7 +1452,8 @@ void object_to_mat3(Object *ob, float mat[][3]) /* no parent */
|
||||
}
|
||||
|
||||
/* rot */
|
||||
if(ob->transflag & OB_QUAT) {
|
||||
/* Quats arnt used yet */
|
||||
/*if(ob->transflag & OB_QUAT) {
|
||||
if(ob->ipo) {
|
||||
QuatMul(q1, ob->quat, ob->dquat);
|
||||
QuatToMat3(q1, rmat);
|
||||
@ -1462,7 +1462,7 @@ void object_to_mat3(Object *ob, float mat[][3]) /* no parent */
|
||||
QuatToMat3(ob->quat, rmat);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else {*/
|
||||
if(ob->ipo) {
|
||||
vec[0]= ob->rot[0]+ob->drot[0];
|
||||
vec[1]= ob->rot[1]+ob->drot[1];
|
||||
@ -1472,7 +1472,7 @@ void object_to_mat3(Object *ob, float mat[][3]) /* no parent */
|
||||
else {
|
||||
EulToMat3(ob->rot, rmat);
|
||||
}
|
||||
}
|
||||
/*}*/
|
||||
Mat3MulMat3(mat, rmat, smat);
|
||||
}
|
||||
|
||||
|
@ -172,12 +172,12 @@ static int ptcache_path(PTCacheID *pid, char *filename)
|
||||
lib= (pid)? pid->ob->id.lib: NULL;
|
||||
|
||||
if (G.relbase_valid || lib) {
|
||||
char dir[FILE_MAX], file[FILE_MAX]; /* we dont want the dir, only the file */
|
||||
char file[FILE_MAX]; /* we dont want the dir, only the file */
|
||||
char *blendfilename;
|
||||
|
||||
blendfilename= (lib)? lib->filename: G.sce;
|
||||
|
||||
BLI_split_dirfile(blendfilename, dir, file);
|
||||
BLI_split_dirfile_basic(blendfilename, NULL, file);
|
||||
i = strlen(file);
|
||||
|
||||
/* remove .blend */
|
||||
|
@ -79,6 +79,7 @@
|
||||
#include "BKE_utildefines.h"
|
||||
|
||||
#include "BIF_previewrender.h"
|
||||
#include "BIF_editseq.h"
|
||||
|
||||
#include "BPY_extern.h"
|
||||
#include "BLI_arithb.h"
|
||||
@ -295,6 +296,9 @@ void set_scene_bg(Scene *sce)
|
||||
GroupObject *go;
|
||||
int flag;
|
||||
|
||||
// Note: this here is defined in editseq.c (BIF_editseq.h), NOT in blenkernel!
|
||||
set_last_seq(NULL);
|
||||
|
||||
G.scene= sce;
|
||||
|
||||
/* check for cyclic sets, for reading old files but also for definite security (py?) */
|
||||
|
@ -212,7 +212,6 @@ int reopen_text(Text *text)
|
||||
int i, llen, len;
|
||||
unsigned char *buffer;
|
||||
TextLine *tmp;
|
||||
char sdir[FILE_MAXDIR];
|
||||
char sfile[FILE_MAXFILE];
|
||||
char str[FILE_MAXDIR+FILE_MAXFILE];
|
||||
|
||||
@ -220,7 +219,7 @@ int reopen_text(Text *text)
|
||||
|
||||
BLI_strncpy(str, text->name, FILE_MAXDIR+FILE_MAXFILE);
|
||||
BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
|
||||
BLI_split_dirfile(str, sdir, sfile);
|
||||
BLI_split_dirfile_basic(str, NULL, sfile);
|
||||
|
||||
fp= fopen(str, "r");
|
||||
if(fp==NULL) return 0;
|
||||
@ -312,14 +311,13 @@ Text *add_text(char *file)
|
||||
unsigned char *buffer;
|
||||
TextLine *tmp;
|
||||
Text *ta;
|
||||
char sdir[FILE_MAXDIR];
|
||||
char sfile[FILE_MAXFILE];
|
||||
char str[FILE_MAXDIR+FILE_MAXFILE];
|
||||
|
||||
BLI_strncpy(str, file, FILE_MAXDIR+FILE_MAXFILE);
|
||||
if (G.scene) /* can be NULL (bg mode) */
|
||||
BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
|
||||
BLI_split_dirfile(str, sdir, sfile);
|
||||
BLI_split_dirfile_basic(str, NULL, sfile);
|
||||
|
||||
fp= fopen(str, "r");
|
||||
if(fp==NULL) return NULL;
|
||||
@ -1030,6 +1028,7 @@ int txt_find_string(Text *text, char *findstr)
|
||||
|
||||
void txt_cut_sel (Text *text)
|
||||
{
|
||||
if (!G.background) /* Python uses txt_cut_sel, which it should not, working around for now */
|
||||
txt_copy_clipboard(text);
|
||||
|
||||
txt_delete_sel(text);
|
||||
|
@ -96,6 +96,7 @@ void BLI_make_file_string(const char *relabase, char *string, const char *dir,
|
||||
void BLI_make_exist(char *dir);
|
||||
void BLI_make_existing_file(char *name);
|
||||
void BLI_split_dirfile(char *string, char *dir, char *file);
|
||||
void BLI_split_dirfile_basic(const char *string, char *dir, char *file);
|
||||
void BLI_join_dirfile(char *string, const char *dir, const char *file);
|
||||
int BLI_testextensie(const char *str, const char *ext);
|
||||
void addlisttolist(ListBase *list1, ListBase *list2);
|
||||
|
@ -29,6 +29,13 @@
|
||||
/* Based on ghash, difference is ghash is not a fixed size,
|
||||
* so for BPath we dont need to malloc */
|
||||
|
||||
struct BPathIteratorSeqData {
|
||||
int totseq;
|
||||
int seq;
|
||||
struct Sequence **seqar; /* Sequence */
|
||||
struct Scene *scene; /* Current scene */
|
||||
};
|
||||
|
||||
struct BPathIterator {
|
||||
char* path;
|
||||
char* lib;
|
||||
@ -36,17 +43,25 @@ struct BPathIterator {
|
||||
void* data;
|
||||
int len;
|
||||
int type;
|
||||
|
||||
void (*setpath_callback)(struct BPathIterator *, char *);
|
||||
void (*getpath_callback)(struct BPathIterator *, char *);
|
||||
|
||||
/* only for seq data */
|
||||
struct BPathIteratorSeqData seqdata;
|
||||
};
|
||||
|
||||
void BLI_bpathIterator_init (struct BPathIterator *bpi);
|
||||
char* BLI_bpathIterator_getPath (struct BPathIterator *bpi);
|
||||
void BLI_bpathIterator_free (struct BPathIterator *bpi);
|
||||
char* BLI_bpathIterator_getLib (struct BPathIterator *bpi);
|
||||
char* BLI_bpathIterator_getName (struct BPathIterator *bpi);
|
||||
int BLI_bpathIterator_getType (struct BPathIterator *bpi);
|
||||
int BLI_bpathIterator_getPathMaxLen(struct BPathIterator *bpi);
|
||||
int BLI_bpathIterator_getPathMaxLen (struct BPathIterator *bpi);
|
||||
void BLI_bpathIterator_step (struct BPathIterator *bpi);
|
||||
int BLI_bpathIterator_isDone (struct BPathIterator *bpi);
|
||||
void BLI_bpathIterator_copyPathExpanded( struct BPathIterator *bpi, char *path_expanded);
|
||||
void BLI_bpathIterator_getPath (struct BPathIterator *bpi, char *path);
|
||||
void BLI_bpathIterator_getPathExpanded (struct BPathIterator *bpi, char *path_expanded);
|
||||
void BLI_bpathIterator_setPath (struct BPathIterator *bpi, char *path);
|
||||
|
||||
/* high level funcs */
|
||||
|
||||
|
@ -28,11 +28,13 @@
|
||||
|
||||
#include "BLI_bpath.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BIF_screen.h" /* only for wait cursor */
|
||||
#include "DNA_ID.h" /* Library */
|
||||
#include "DNA_vfont_types.h"
|
||||
#include "DNA_image_types.h"
|
||||
#include "DNA_sound_types.h"
|
||||
#include "DNA_scene_types.h" /* to get the current frame */
|
||||
#include "DNA_sequence_types.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
@ -41,6 +43,10 @@
|
||||
|
||||
#include "blendef.h"
|
||||
#include "BKE_utildefines.h"
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
/* for sequence */
|
||||
#include "BSE_sequence.h"
|
||||
|
||||
/* for writing to a textblock */
|
||||
#include "BKE_text.h"
|
||||
@ -67,35 +73,62 @@
|
||||
|
||||
#define FILE_MAX 240
|
||||
|
||||
|
||||
/* TODO - BPATH_PLUGIN, BPATH_SEQ */
|
||||
enum BPathTypes {
|
||||
BPATH_IMAGE = 0,
|
||||
BPATH_SOUND,
|
||||
BPATH_FONT,
|
||||
BPATH_LIB,
|
||||
BPATH_SEQ,
|
||||
|
||||
BPATH_DONE
|
||||
};
|
||||
|
||||
|
||||
void BLI_bpathIterator_init( struct BPathIterator *bpi ) {
|
||||
bpi->type = BPATH_IMAGE;
|
||||
bpi->data = NULL;
|
||||
|
||||
bpi->getpath_callback = NULL;
|
||||
bpi->setpath_callback = NULL;
|
||||
|
||||
/* Sequencer spesific */
|
||||
bpi->seqdata.totseq = 0;
|
||||
bpi->seqdata.seq = 0;
|
||||
bpi->seqdata.seqar = NULL;
|
||||
bpi->seqdata.scene = NULL;
|
||||
|
||||
BLI_bpathIterator_step(bpi);
|
||||
}
|
||||
|
||||
char* BLI_bpathIterator_getPath( struct BPathIterator *bpi) {
|
||||
return bpi->path;
|
||||
void BLI_bpathIterator_free( struct BPathIterator *bpi ) {
|
||||
if (bpi->seqdata.seqar)
|
||||
MEM_freeN((void *)bpi->seqdata.seqar);
|
||||
bpi->seqdata.seqar = NULL;
|
||||
bpi->seqdata.scene = NULL;
|
||||
}
|
||||
void BLI_bpathIterator_copyPathExpanded( struct BPathIterator *bpi, char *path_expanded) {
|
||||
char *filepath, *libpath;
|
||||
|
||||
filepath = BLI_bpathIterator_getPath(bpi);
|
||||
void BLI_bpathIterator_getPath( struct BPathIterator *bpi, char *path) {
|
||||
if (bpi->getpath_callback) {
|
||||
bpi->getpath_callback( bpi, path );
|
||||
} else {
|
||||
strcpy(path, bpi->path); /* warning, we assume 'path' are long enough */
|
||||
}
|
||||
}
|
||||
|
||||
void BLI_bpathIterator_setPath( struct BPathIterator *bpi, char *path) {
|
||||
if (bpi->setpath_callback) {
|
||||
bpi->setpath_callback( bpi, path );
|
||||
} else {
|
||||
strcpy(bpi->path, path); /* warning, we assume 'path' are long enough */
|
||||
}
|
||||
}
|
||||
|
||||
void BLI_bpathIterator_getPathExpanded( struct BPathIterator *bpi, char *path_expanded) {
|
||||
char *libpath;
|
||||
|
||||
BLI_bpathIterator_getPath(bpi, path_expanded);
|
||||
libpath = BLI_bpathIterator_getLib(bpi);
|
||||
|
||||
BLI_strncpy(path_expanded, filepath, FILE_MAXDIR*2);
|
||||
|
||||
if (libpath) { /* check the files location relative to its library path */
|
||||
BLI_convertstringcode(path_expanded, libpath, G.scene->r.cfra);
|
||||
} else { /* local data, use the blend files path */
|
||||
@ -116,7 +149,7 @@ int BLI_bpathIterator_getPathMaxLen( struct BPathIterator *bpi) {
|
||||
}
|
||||
|
||||
/* gets the first or the next image that has a path - not a viewer node or generated image */
|
||||
static struct Image *ima_getpath__internal(struct Image *ima, int step_next) {
|
||||
static struct Image *ima_stepdata__internal(struct Image *ima, int step_next) {
|
||||
if (ima==NULL)
|
||||
return NULL;
|
||||
|
||||
@ -132,7 +165,7 @@ static struct Image *ima_getpath__internal(struct Image *ima, int step_next) {
|
||||
return ima;
|
||||
}
|
||||
|
||||
static struct VFont *vf_getpath__internal(struct VFont *vf, int step_next) {
|
||||
static struct VFont *vf_stepdata__internal(struct VFont *vf, int step_next) {
|
||||
if (vf==NULL)
|
||||
return NULL;
|
||||
|
||||
@ -150,7 +183,7 @@ static struct VFont *vf_getpath__internal(struct VFont *vf, int step_next) {
|
||||
return vf;
|
||||
}
|
||||
|
||||
static struct bSound *snd_getpath__internal(struct bSound *snd, int step_next) {
|
||||
static struct bSound *snd_stepdata__internal(struct bSound *snd, int step_next) {
|
||||
if (snd==NULL)
|
||||
return NULL;
|
||||
|
||||
@ -168,13 +201,115 @@ static struct bSound *snd_getpath__internal(struct bSound *snd, int step_next) {
|
||||
return snd;
|
||||
}
|
||||
|
||||
static struct Sequence *seq_stepdata__internal(struct BPathIterator *bpi, int step_next) {
|
||||
Sequence *seq;
|
||||
|
||||
/* Initializing */
|
||||
if (bpi->seqdata.scene==NULL) {
|
||||
bpi->seqdata.scene= G.main->scene.first;
|
||||
}
|
||||
|
||||
if (step_next) {
|
||||
bpi->seqdata.seq++;
|
||||
}
|
||||
|
||||
while (bpi->seqdata.scene) {
|
||||
|
||||
if (bpi->seqdata.scene->ed) {
|
||||
if (bpi->seqdata.seqar == NULL) {
|
||||
/* allocate the sequencer array */
|
||||
build_seqar( &(((Editing *)bpi->seqdata.scene->ed)->seqbase), &bpi->seqdata.seqar, &bpi->seqdata.totseq);
|
||||
bpi->seqdata.seq = 0;
|
||||
}
|
||||
|
||||
if (bpi->seqdata.seq >= bpi->seqdata.totseq) {
|
||||
seq = NULL;
|
||||
} else {
|
||||
seq = bpi->seqdata.seqar[bpi->seqdata.seq];
|
||||
while (!SEQ_HAS_PATH(seq)) {
|
||||
bpi->seqdata.seq++;
|
||||
if (bpi->seqdata.seq >= bpi->seqdata.totseq) {
|
||||
seq = NULL;
|
||||
break;
|
||||
}
|
||||
seq = bpi->seqdata.seqar[bpi->seqdata.seq];
|
||||
}
|
||||
}
|
||||
if (seq) {
|
||||
return seq;
|
||||
} else {
|
||||
/* keep looking through the next scene, reallocate seq array */
|
||||
MEM_freeN((void *)bpi->seqdata.seqar);
|
||||
bpi->seqdata.seqar = NULL;
|
||||
bpi->seqdata.scene = bpi->seqdata.scene->id.next;
|
||||
}
|
||||
} else {
|
||||
/* no seq data in this scene, next */
|
||||
bpi->seqdata.scene = bpi->seqdata.scene->id.next;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void seq_getpath(struct BPathIterator *bpi, char *path) {
|
||||
Sequence *seq = (Sequence *)bpi->data;
|
||||
|
||||
|
||||
path[0] = '\0'; /* incase we cant get the path */
|
||||
if (seq==NULL) return;
|
||||
if (SEQ_HAS_PATH(seq)) {
|
||||
if (seq->type == SEQ_IMAGE || seq->type == SEQ_MOVIE) {
|
||||
BLI_strncpy(path, seq->strip->dir, FILE_MAX);
|
||||
BLI_add_slash(path); /* incase its missing */
|
||||
if (seq->strip->stripdata) { /* should always be true! */
|
||||
/* Using the first image is weak for image sequences */
|
||||
strcat(path, seq->strip->stripdata->name);
|
||||
}
|
||||
} else {
|
||||
/* simple case */
|
||||
BLI_strncpy(seq->strip->dir, path, sizeof(seq->strip->dir));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void seq_setpath(struct BPathIterator *bpi, char *path) {
|
||||
Sequence *seq = (Sequence *)bpi->data;
|
||||
if (seq==NULL) return;
|
||||
|
||||
if (SEQ_HAS_PATH(seq)) {
|
||||
if (seq->type == SEQ_IMAGE || seq->type == SEQ_MOVIE) {
|
||||
BLI_split_dirfile_basic(path, seq->strip->dir, seq->strip->stripdata->name);
|
||||
} else {
|
||||
/* simple case */
|
||||
BLI_strncpy(seq->strip->dir, path, sizeof(seq->strip->dir));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void bpi_type_step__internal( struct BPathIterator *bpi) {
|
||||
bpi->type++; /* advance to the next type */
|
||||
bpi->data = NULL;
|
||||
|
||||
switch (bpi->type) {
|
||||
case BPATH_SEQ:
|
||||
bpi->getpath_callback = seq_getpath;
|
||||
bpi->setpath_callback = seq_setpath;
|
||||
break;
|
||||
default:
|
||||
bpi->getpath_callback = NULL;
|
||||
bpi->setpath_callback = NULL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void BLI_bpathIterator_step( struct BPathIterator *bpi) {
|
||||
while (bpi->type != BPATH_DONE) {
|
||||
|
||||
if ((bpi->type) == BPATH_IMAGE) {
|
||||
/*if (bpi->data) bpi->data = ((ID *)bpi->data)->next;*/
|
||||
if (bpi->data) bpi->data = ima_getpath__internal( (Image *)bpi->data, 1 ); /* must skip images that have no path */
|
||||
else bpi->data = ima_getpath__internal(G.main->image.first, 0);
|
||||
if (bpi->data) bpi->data = ima_stepdata__internal( (Image *)bpi->data, 1 ); /* must skip images that have no path */
|
||||
else bpi->data = ima_stepdata__internal(G.main->image.first, 0);
|
||||
|
||||
if (bpi->data) {
|
||||
/* get the path info from this datatype */
|
||||
@ -189,13 +324,13 @@ void BLI_bpathIterator_step( struct BPathIterator *bpi) {
|
||||
break;
|
||||
|
||||
} else {
|
||||
bpi->type+=1; /* advance to the next type */
|
||||
bpi_type_step__internal(bpi);
|
||||
}
|
||||
|
||||
|
||||
} else if ((bpi->type) == BPATH_SOUND) {
|
||||
if (bpi->data) bpi->data = snd_getpath__internal( (bSound *)bpi->data, 1 ); /* must skip images that have no path */
|
||||
else bpi->data = snd_getpath__internal(G.main->sound.first, 0);
|
||||
if (bpi->data) bpi->data = snd_stepdata__internal( (bSound *)bpi->data, 1 ); /* must skip images that have no path */
|
||||
else bpi->data = snd_stepdata__internal(G.main->sound.first, 0);
|
||||
|
||||
if (bpi->data) {
|
||||
/* get the path info from this datatype */
|
||||
@ -209,14 +344,14 @@ void BLI_bpathIterator_step( struct BPathIterator *bpi) {
|
||||
/* we are done, advancing to the next item, this type worked fine */
|
||||
break;
|
||||
} else {
|
||||
bpi->type+=1; /* advance to the next type */
|
||||
bpi_type_step__internal(bpi);
|
||||
}
|
||||
|
||||
|
||||
} else if ((bpi->type) == BPATH_FONT) {
|
||||
|
||||
if (bpi->data) bpi->data = vf_getpath__internal( (VFont *)bpi->data, 1 );
|
||||
else bpi->data = vf_getpath__internal( G.main->vfont.first, 0 );
|
||||
if (bpi->data) bpi->data = vf_stepdata__internal( (VFont *)bpi->data, 1 );
|
||||
else bpi->data = vf_stepdata__internal( G.main->vfont.first, 0 );
|
||||
|
||||
if (bpi->data) {
|
||||
/* get the path info from this datatype */
|
||||
@ -230,12 +365,10 @@ void BLI_bpathIterator_step( struct BPathIterator *bpi) {
|
||||
/* we are done, advancing to the next item, this type worked fine */
|
||||
break;
|
||||
} else {
|
||||
bpi->type+=1; /* advance to the next type */
|
||||
bpi_type_step__internal(bpi);
|
||||
}
|
||||
|
||||
|
||||
} else if ((bpi->type) == BPATH_LIB) {
|
||||
|
||||
if (bpi->data) bpi->data = ((ID *)bpi->data)->next;
|
||||
else bpi->data = G.main->library.first;
|
||||
|
||||
@ -251,7 +384,19 @@ void BLI_bpathIterator_step( struct BPathIterator *bpi) {
|
||||
/* we are done, advancing to the next item, this type worked fine */
|
||||
break;
|
||||
} else {
|
||||
bpi->type+=1; /* advance to the next type */
|
||||
bpi_type_step__internal(bpi);
|
||||
}
|
||||
} else if ((bpi->type) == BPATH_SEQ) {
|
||||
if (bpi->data) bpi->data = seq_stepdata__internal( bpi, 1 );
|
||||
else bpi->data = seq_stepdata__internal( bpi, 0 );
|
||||
if (bpi->data) {
|
||||
Sequence *seq = (Sequence *)bpi->data;
|
||||
bpi->lib = NULL;
|
||||
bpi->name = seq->name+2;
|
||||
bpi->len = sizeof(seq->strip->stripdata->name);
|
||||
break;
|
||||
} else {
|
||||
bpi_type_step__internal(bpi);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -280,6 +425,9 @@ static void bpathToText(Text *btxt, struct BPathIterator *bpi)
|
||||
case BPATH_LIB:
|
||||
txt_insert_buf( btxt, "Library \"" );
|
||||
break;
|
||||
case BPATH_SEQ:
|
||||
txt_insert_buf( btxt, "Sequence \"" );
|
||||
break;
|
||||
default:
|
||||
txt_insert_buf( btxt, "Unknown \"" );
|
||||
break;
|
||||
@ -292,7 +440,7 @@ static void bpathToText(Text *btxt, struct BPathIterator *bpi)
|
||||
}
|
||||
txt_insert_buf( btxt, "\" " );
|
||||
|
||||
BLI_bpathIterator_copyPathExpanded(bpi, path_expanded);
|
||||
BLI_bpathIterator_getPathExpanded(bpi, path_expanded);
|
||||
|
||||
txt_insert_buf( btxt, path_expanded );
|
||||
txt_insert_buf( btxt, "\n" );
|
||||
@ -306,15 +454,14 @@ void checkMissingFiles( char *txtname ) {
|
||||
|
||||
/* be sure there is low chance of the path being too short */
|
||||
char filepath_expanded[FILE_MAXDIR*2];
|
||||
char *filepath, *libpath;
|
||||
char *libpath;
|
||||
int files_missing = 0;
|
||||
|
||||
BLI_bpathIterator_init(&bpi);
|
||||
while (!BLI_bpathIterator_isDone(&bpi)) {
|
||||
filepath = BLI_bpathIterator_getPath(&bpi);
|
||||
libpath = BLI_bpathIterator_getLib(&bpi);
|
||||
|
||||
BLI_bpathIterator_copyPathExpanded( &bpi, filepath_expanded );
|
||||
BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
|
||||
|
||||
if (!BLI_exists(filepath_expanded)) {
|
||||
if (!btxt) {
|
||||
@ -328,12 +475,13 @@ void checkMissingFiles( char *txtname ) {
|
||||
}
|
||||
BLI_bpathIterator_step(&bpi);
|
||||
}
|
||||
BLI_bpathIterator_free(&bpi);
|
||||
}
|
||||
|
||||
/* dont log any errors at the moment, should probably do this */
|
||||
void makeFilesRelative(char *txtname, int *tot, int *changed, int *failed, int *linked) {
|
||||
struct BPathIterator bpi;
|
||||
char *filepath, *libpath;
|
||||
char filepath[FILE_MAX], *libpath;
|
||||
|
||||
/* be sure there is low chance of the path being too short */
|
||||
char filepath_relative[(FILE_MAXDIR * 2) + FILE_MAXFILE];
|
||||
@ -344,7 +492,7 @@ void makeFilesRelative(char *txtname, int *tot, int *changed, int *failed, int *
|
||||
|
||||
BLI_bpathIterator_init(&bpi);
|
||||
while (!BLI_bpathIterator_isDone(&bpi)) {
|
||||
filepath = BLI_bpathIterator_getPath(&bpi);
|
||||
BLI_bpathIterator_getPath(&bpi, filepath);
|
||||
libpath = BLI_bpathIterator_getLib(&bpi);
|
||||
|
||||
if(strncmp(filepath, "//", 2)) {
|
||||
@ -368,7 +516,7 @@ void makeFilesRelative(char *txtname, int *tot, int *changed, int *failed, int *
|
||||
(*failed)++;
|
||||
} else {
|
||||
if(strncmp(filepath_relative, "//", 2)==0) {
|
||||
strcpy(filepath, filepath_relative);
|
||||
BLI_bpathIterator_setPath(&bpi, filepath_relative);
|
||||
(*changed)++;
|
||||
} else {
|
||||
if (!btxt) {
|
||||
@ -386,13 +534,14 @@ void makeFilesRelative(char *txtname, int *tot, int *changed, int *failed, int *
|
||||
BLI_bpathIterator_step(&bpi);
|
||||
(*tot)++;
|
||||
}
|
||||
BLI_bpathIterator_free(&bpi);
|
||||
}
|
||||
|
||||
/* dont log any errors at the moment, should probably do this -
|
||||
* Verry similar to makeFilesRelative - keep in sync! */
|
||||
void makeFilesAbsolute(char *txtname, int *tot, int *changed, int *failed, int *linked) {
|
||||
struct BPathIterator bpi;
|
||||
char *filepath, *libpath;
|
||||
char filepath[FILE_MAX], *libpath;
|
||||
|
||||
/* be sure there is low chance of the path being too short */
|
||||
char filepath_absolute[(FILE_MAXDIR * 2) + FILE_MAXFILE];
|
||||
@ -403,14 +552,14 @@ void makeFilesAbsolute(char *txtname, int *tot, int *changed, int *failed, int *
|
||||
|
||||
BLI_bpathIterator_init(&bpi);
|
||||
while (!BLI_bpathIterator_isDone(&bpi)) {
|
||||
filepath = BLI_bpathIterator_getPath(&bpi);
|
||||
BLI_bpathIterator_getPath(&bpi, filepath);
|
||||
libpath = BLI_bpathIterator_getLib(&bpi);
|
||||
|
||||
if(strncmp(filepath, "//", 2)==0) {
|
||||
if (libpath) { /* cant make absolute if we are library - TODO, LOG THIS */
|
||||
(*linked)++;
|
||||
} else { /* get the expanded path and check it is relative or too long */
|
||||
BLI_bpathIterator_copyPathExpanded( &bpi, filepath_absolute );
|
||||
BLI_bpathIterator_getPathExpanded( &bpi, filepath_absolute );
|
||||
BLI_cleanup_file(G.sce, filepath_absolute); /* fix any /foo/../foo/ */
|
||||
/* to be safe, check the length */
|
||||
if (BLI_bpathIterator_getPathMaxLen(&bpi) <= strlen(filepath_absolute)) {
|
||||
@ -424,7 +573,7 @@ void makeFilesAbsolute(char *txtname, int *tot, int *changed, int *failed, int *
|
||||
(*failed)++;
|
||||
} else {
|
||||
if(strncmp(filepath_absolute, "//", 2)) {
|
||||
strcpy(filepath, filepath_absolute);
|
||||
BLI_bpathIterator_setPath(&bpi, filepath_absolute);
|
||||
(*changed)++;
|
||||
} else {
|
||||
if (!btxt) {
|
||||
@ -442,6 +591,7 @@ void makeFilesAbsolute(char *txtname, int *tot, int *changed, int *failed, int *
|
||||
BLI_bpathIterator_step(&bpi);
|
||||
(*tot)++;
|
||||
}
|
||||
BLI_bpathIterator_free(&bpi);
|
||||
}
|
||||
|
||||
|
||||
@ -505,28 +655,35 @@ void findMissingFiles(char *str) {
|
||||
|
||||
/* be sure there is low chance of the path being too short */
|
||||
char filepath_expanded[FILE_MAXDIR*2];
|
||||
char *filepath, *libpath;
|
||||
char filepath[FILE_MAX], *libpath;
|
||||
int filesize, recur_depth;
|
||||
|
||||
char dirname[FILE_MAX], filename[FILE_MAX], filename_new[FILE_MAX], dummyname[FILE_MAX];
|
||||
char dirname[FILE_MAX], filename[FILE_MAX], filename_new[FILE_MAX];
|
||||
|
||||
BLI_split_dirfile(str, dirname, dummyname);
|
||||
waitcursor( 1 );
|
||||
|
||||
BLI_split_dirfile_basic(str, dirname, NULL);
|
||||
|
||||
BLI_bpathIterator_init(&bpi);
|
||||
|
||||
while (!BLI_bpathIterator_isDone(&bpi)) {
|
||||
filepath = BLI_bpathIterator_getPath(&bpi);
|
||||
BLI_bpathIterator_getPath(&bpi, filepath);
|
||||
libpath = BLI_bpathIterator_getLib(&bpi);
|
||||
|
||||
/* Check if esc was pressed because searching files can be slow */
|
||||
if (blender_test_break()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (libpath==NULL) {
|
||||
|
||||
BLI_bpathIterator_copyPathExpanded( &bpi, filepath_expanded );
|
||||
BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
|
||||
|
||||
if (!BLI_exists(filepath_expanded)) {
|
||||
/* can the dir be opened? */
|
||||
filesize = -1;
|
||||
recur_depth = 0;
|
||||
BLI_split_dirfile(filepath, dummyname, filename); /* the file to find */
|
||||
BLI_split_dirfile_basic(filepath, NULL, filename); /* the file to find */
|
||||
|
||||
findFileRecursive(filename_new, dirname, filename, &filesize, &recur_depth);
|
||||
if (filesize == -1) { /* could not open dir */
|
||||
@ -543,11 +700,14 @@ void findMissingFiles(char *str) {
|
||||
if (G.relbase_valid)
|
||||
BLI_makestringcode(G.sce, filename_new);
|
||||
|
||||
strcpy( BLI_bpathIterator_getPath( &bpi ), filename_new );
|
||||
BLI_bpathIterator_setPath( &bpi, filename_new );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
BLI_bpathIterator_step(&bpi);
|
||||
}
|
||||
BLI_bpathIterator_free(&bpi);
|
||||
|
||||
waitcursor( 0 );
|
||||
}
|
||||
|
@ -1224,10 +1224,10 @@ char *BLI_gethome(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
#if 0
|
||||
ret = getenv("USERPROFILE");
|
||||
if (ret) {
|
||||
if (BLI_exists(ret)) { /* from fop, also below...
|
||||
if (BLI_exists(ret)) { /* from fop, also below... */
|
||||
sprintf(dir, "%s\\Application Data\\Blender Foundation\\Blender", ret);
|
||||
BLI_recurdir_fileops(dir);
|
||||
if (BLI_exists(dir)) {
|
||||
@ -1236,7 +1236,7 @@ char *BLI_gethome(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
#endif
|
||||
|
||||
/*
|
||||
Saving in the Windows dir is less than desirable.
|
||||
@ -1426,8 +1426,41 @@ int BLI_testextensie(const char *str, const char *ext)
|
||||
return (retval);
|
||||
}
|
||||
|
||||
/*
|
||||
* This is a simple version of BLI_split_dirfile that has the following advantages...
|
||||
*
|
||||
* Converts "/foo/bar.txt" to "/foo/" and "bar.txt"
|
||||
* - wont change 'string'
|
||||
* - wont create any directories
|
||||
* - dosnt use CWD, or deal with relative paths.
|
||||
* - Only fill's in *dir and *file when they are non NULL
|
||||
* */
|
||||
void BLI_split_dirfile_basic(const char *string, char *dir, char *file)
|
||||
{
|
||||
int lslash=0, i = 0;
|
||||
for (i=0; string[i]!='\0'; i++) {
|
||||
if (string[i]=='\\' || string[i]=='/')
|
||||
lslash = i+1;
|
||||
}
|
||||
if (dir) {
|
||||
if (lslash) {
|
||||
BLI_strncpy( dir, string, lslash+1); /* +1 to include the slash and the last char */
|
||||
} else {
|
||||
dir[0] = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
/* warning, can modify 'string' */
|
||||
if (file) {
|
||||
strcpy( file, string+lslash);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Warning,
|
||||
* - May modify 'string' variable
|
||||
* - May create the directory if it dosnt exist
|
||||
* if this is not needed use BLI_split_dirfile_basic(...)
|
||||
*/
|
||||
void BLI_split_dirfile(char *string, char *dir, char *file)
|
||||
{
|
||||
int a;
|
||||
|
@ -121,7 +121,7 @@
|
||||
#include "BKE_customdata.h"
|
||||
#include "BKE_deform.h"
|
||||
#include "BKE_depsgraph.h"
|
||||
#include "BKE_effect.h" // for give_parteff
|
||||
#include "BKE_effect.h" /* give_parteff */
|
||||
#include "BKE_global.h" // for G
|
||||
#include "BKE_group.h"
|
||||
#include "BKE_image.h"
|
||||
@ -5093,7 +5093,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
while(ob) {
|
||||
ob->mass= 1.0f;
|
||||
ob->damping= 0.1f;
|
||||
ob->quat[1]= 1.0f;
|
||||
/*ob->quat[1]= 1.0f;*/ /* quats arnt used yet */
|
||||
ob= ob->id.next;
|
||||
}
|
||||
|
||||
|
@ -523,25 +523,6 @@ static void write_userdef(WriteData *wd)
|
||||
}
|
||||
}
|
||||
|
||||
static void write_effects(WriteData *wd, ListBase *lb)
|
||||
{
|
||||
Effect *eff;
|
||||
|
||||
eff= lb->first;
|
||||
while(eff) {
|
||||
|
||||
switch(eff->type) {
|
||||
case EFF_PARTICLE:
|
||||
writestruct(wd, DATA, "PartEff", 1, eff);
|
||||
break;
|
||||
default:
|
||||
writedata(wd, DATA, MEM_allocN_len(eff), eff);
|
||||
}
|
||||
|
||||
eff= eff->next;
|
||||
}
|
||||
}
|
||||
|
||||
static void write_particlesettings(WriteData *wd, ListBase *idbase)
|
||||
{
|
||||
ParticleSettings *part;
|
||||
@ -908,7 +889,7 @@ static void write_objects(WriteData *wd, ListBase *idbase)
|
||||
|
||||
/* direct data */
|
||||
writedata(wd, DATA, sizeof(void *)*ob->totcol, ob->mat);
|
||||
write_effects(wd, &ob->effect);
|
||||
/* write_effects(wd, &ob->effect); */ /* not used anymore */
|
||||
write_properties(wd, &ob->prop);
|
||||
write_sensors(wd, &ob->sensors);
|
||||
write_controllers(wd, &ob->controllers);
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include <locale.h>
|
||||
#include "libintl.h"
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BKE_font.h"
|
||||
|
||||
#include "../FTF_Settings.h"
|
||||
|
||||
@ -48,49 +49,6 @@
|
||||
|
||||
#define FTF_MAX_STR_SIZE 512
|
||||
|
||||
|
||||
int utf8towchar(wchar_t *w, char *c)
|
||||
{
|
||||
int len=0;
|
||||
if(w==NULL || c==NULL) return(0);
|
||||
//printf("%s\n",c);
|
||||
while(*c)
|
||||
{
|
||||
//Converts Unicode to wchar:
|
||||
|
||||
if(*c & 0x80)
|
||||
{
|
||||
if(*c & 0x40)
|
||||
{
|
||||
if(*c & 0x20)
|
||||
{
|
||||
if(*c & 0x10)
|
||||
{
|
||||
*w=(c[0] & 0x0f)<<18 | (c[1]&0x1f)<<12 | (c[2]&0x3f)<<6 | (c[3]&0x7f);
|
||||
c++;
|
||||
}
|
||||
else
|
||||
*w=(c[0] & 0x1f)<<12 | (c[1]&0x3f)<<6 | (c[2]&0x7f);
|
||||
c++;
|
||||
}
|
||||
else
|
||||
*w=(c[0] &0x3f)<<6 | c[1]&0x7f;
|
||||
c++;
|
||||
}
|
||||
else
|
||||
*w=(c[0] & 0x7f);
|
||||
}
|
||||
else
|
||||
*w=(c[0] & 0x7f);
|
||||
|
||||
c++;
|
||||
w++;
|
||||
len++;
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
FTF_TTFont::FTF_TTFont(void)
|
||||
{
|
||||
#ifdef __APPLE__
|
||||
|
@ -229,6 +229,7 @@ static int isqtime (char *name) {
|
||||
#endif
|
||||
|
||||
#ifdef WITH_FFMPEG
|
||||
extern void do_init_ffmpeg();
|
||||
void do_init_ffmpeg()
|
||||
{
|
||||
static int ffmpeg_init = 0;
|
||||
|
@ -142,6 +142,7 @@ void paste_actdata(void);
|
||||
struct bActionGroup *get_active_actiongroup(struct bAction *act);
|
||||
void set_active_actiongroup(struct bAction *act, struct bActionGroup *agrp, short select);
|
||||
void verify_pchan2achan_grouping(struct bAction *act, struct bPose *pose, char name[]);
|
||||
void sync_pchan2achan_grouping(void);
|
||||
void action_groups_group(short add_group);
|
||||
void action_groups_ungroup(void);
|
||||
|
||||
@ -159,6 +160,7 @@ void action_set_ipo_flags(short mode, short event);
|
||||
|
||||
/* Select */
|
||||
void borderselect_action(void);
|
||||
void borderselect_actionchannels(void);
|
||||
void deselect_action_keys(short test, short sel);
|
||||
void deselect_action_channels(short mode);
|
||||
void deselect_actionchannels(struct bAction *act, short mode);
|
||||
|
@ -92,6 +92,7 @@ void update_changed_seq_and_deps(struct Sequence *seq, int len_change, int ibuf_
|
||||
struct RenderResult;
|
||||
void do_render_seq(struct RenderResult *rr, int cfra);
|
||||
|
||||
#define SEQ_HAS_PATH(seq) (seq->type==SEQ_MOVIE || seq->type==SEQ_HD_SOUND || seq->type==SEQ_RAM_SOUND || seq->type==SEQ_IMAGE)
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -96,6 +96,10 @@
|
||||
|
||||
#define TESTBASE(base) ( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) )
|
||||
#define TESTBASELIB(base) ( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
|
||||
|
||||
/* This is a TESTBASELIB that can work without a 3D view */
|
||||
#define TESTBASELIB_BGMODE(base) ( ((base)->flag & SELECT) && ((base)->lay & (G.vd ? G.vd->lay : G.scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
|
||||
|
||||
#define BASE_SELECTABLE(base) ((base->lay & G.vd->lay) && (base->object->restrictflag & (OB_RESTRICT_SELECT|OB_RESTRICT_VIEW))==0)
|
||||
#define FIRSTBASE G.scene->base.first
|
||||
#define LASTBASE G.scene->base.last
|
||||
|
@ -743,19 +743,12 @@ enum {
|
||||
|
||||
#define B_AUTOTIMEOFS 3403 /* see B_OFSTIMEOFS, B_RANDTIMEOFS also */
|
||||
#define B_FRAMEMAP 3404
|
||||
#define B_NEWEFFECT 3405
|
||||
#define B_PREVEFFECT 3406
|
||||
#define B_NEXTEFFECT 3407
|
||||
#define B_CHANGEEFFECT 3408
|
||||
#define B_CALCEFFECT 3409
|
||||
#define B_DELEFFECT 3410
|
||||
#define B_RECALCAL 3411
|
||||
#define B_RECALC_DEFL 3412
|
||||
#define B_EFFECT_DEP 3413
|
||||
#define B_FIELD_DEP 3414
|
||||
#define B_FIELD_CHANGE 3415
|
||||
#define B_PAF_SET_VG 3416
|
||||
#define B_PAF_SET_VG1 3417
|
||||
#define B_PARTBROWSE 3418
|
||||
#define B_PARTDELETE 3419
|
||||
#define B_PARTALONE 3420
|
||||
|
@ -31,14 +31,5 @@
|
||||
#ifndef PARTICLE_EFFECT_H
|
||||
#define PARTICLE_EFFECT_H
|
||||
|
||||
/* effect.c */
|
||||
extern Effect *add_effect(int type);
|
||||
extern PartEff *give_parteff(Object *ob);
|
||||
extern void where_is_particle(PartEff *paf, Particle *pa, float ctime, float *vec);
|
||||
extern void free_effect(Effect *eff);
|
||||
extern void free_effects(ListBase *lb);
|
||||
extern void copy_effects(ListBase *lbn, ListBase *lb);
|
||||
extern void build_particle_system(Object *ob);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -234,8 +234,8 @@ typedef enum SACTION_FLAG {
|
||||
SACTION_HORIZOPTIMISEON = (1<<5),
|
||||
/* hack for moving pose-markers (temp flag) */
|
||||
SACTION_POSEMARKERS_MOVE = (1<<6),
|
||||
/* draw action channels using group colours (where applicable) */
|
||||
SACTION_DRAWGCOLORS = (1<<7)
|
||||
/* don't draw action channels using group colours (where applicable) */
|
||||
SACTION_NODRAWGCOLORS = (1<<7)
|
||||
} SACTION_FLAG;
|
||||
|
||||
/* SpaceAction AutoSnap Settings (also used by SpaceNLA) */
|
||||
|
@ -43,80 +43,53 @@
|
||||
|
||||
typedef struct ClothSimSettings
|
||||
{
|
||||
short vgroup_mass; /* optional vertexgroup name for assigning weight.*/
|
||||
short vgroup_struct; /* vertex group for scaling structural stiffness */
|
||||
struct LinkNode *cache; /* UNUSED atm */
|
||||
float mingoal; /* see SB */
|
||||
int preroll; /* How many frames of simulation to do before we start. */
|
||||
float Cdis; /* Mechanical damping of springs. */
|
||||
float Cvi; /* Viscous/fluid damping. */
|
||||
int stepsPerFrame; /* Number of time steps per frame. */
|
||||
float gravity [3]; /* Gravity/external force vector. */
|
||||
float ufluid [3]; /* Velocity vector of the fluid. */
|
||||
float dt; /* This is the duration of our time step, computed. */
|
||||
float mass; /* The mass of the entire cloth. */
|
||||
float structural; /* Structural spring stiffness. */
|
||||
float shear; /* Shear spring stiffness. */
|
||||
float bending; /* Flexion spring stiffness. */
|
||||
float padf;
|
||||
int flags; /* flags, see CSIMSETT_FLAGS enum above. */
|
||||
short solver_type; /* which solver should be used? txold */
|
||||
short vgroup_bend; /* vertex group for scaling bending stiffness */
|
||||
float maxgoal; /* see SB */
|
||||
float eff_force_scale;/* Scaling of effector forces (see softbody_calc_forces).*/
|
||||
float eff_wind_scale; /* Scaling of effector wind (see softbody_calc_forces). */
|
||||
float sim_time_old;
|
||||
struct LinkNode *cache; /* UNUSED atm */
|
||||
float defgoal;
|
||||
int goalfrict;
|
||||
float goalspring;
|
||||
int maxspringlen; /* in percent!; if tearing enabled, a spring will get cut */
|
||||
float max_bend; /* max bending scaling value, min is "bending" */
|
||||
float max_struct; /* max structural scaling value, min is "structural" */
|
||||
float max_shear; /* max shear scaling value, UNUSED */
|
||||
float avg_spring_len; /* used for normalized springs */
|
||||
float timescale; /* parameter how fast cloth runs */
|
||||
float maxgoal; /* see SB */
|
||||
float eff_force_scale;/* Scaling of effector forces (see softbody_calc_forces).*/
|
||||
float eff_wind_scale; /* Scaling of effector wind (see softbody_calc_forces). */
|
||||
float sim_time_old;
|
||||
float defgoal;
|
||||
float goalspring;
|
||||
float goalfrict;
|
||||
int stepsPerFrame; /* Number of time steps per frame. */
|
||||
int flags; /* flags, see CSIMSETT_FLAGS enum above. */
|
||||
int preroll; /* How many frames of simulation to do before we start. */
|
||||
int maxspringlen; /* in percent!; if tearing enabled, a spring will get cut */
|
||||
short solver_type; /* which solver should be used? txold */
|
||||
short vgroup_bend; /* vertex group for scaling bending stiffness */
|
||||
short vgroup_mass; /* optional vertexgroup name for assigning weight.*/
|
||||
short vgroup_struct; /* vertex group for scaling structural stiffness */
|
||||
short presets; /* used for presets on GUI */
|
||||
short pad;
|
||||
float timescale; /* parameter how fast cloth runs */
|
||||
int pad2;
|
||||
} ClothSimSettings;
|
||||
|
||||
|
||||
typedef struct ClothCollSettings
|
||||
{
|
||||
struct LinkNode *collision_list; /* e.g. pointer to temp memory for collisions */
|
||||
float epsilon; /* min distance for collisions. */
|
||||
float self_friction; /* Fiction/damping with self contact. */
|
||||
float friction; /* Friction/damping applied on contact with other object.*/
|
||||
float selfepsilon; /* for selfcollision */
|
||||
int flags; /* collision flags defined in BKE_cloth.h */
|
||||
short self_loop_count; /* How many iterations for the selfcollision loop */
|
||||
short loop_count; /* How many iterations for the collision loop. */
|
||||
struct LinkNode *collision_list; /* e.g. pointer to temp memory for collisions */
|
||||
int flags; /* collision flags defined in BKE_cloth.h */
|
||||
float selfepsilon; /* for selfcollision */
|
||||
} ClothCollSettings;
|
||||
|
||||
/**
|
||||
* This structure describes a cloth object against which the
|
||||
* simulation can run.
|
||||
*
|
||||
* The m and n members of this structure represent the assumed
|
||||
* rectangular ordered grid for which the original paper is written.
|
||||
* At some point they need to disappear and we need to determine out
|
||||
* own connectivity of the mesh based on the actual edges in the mesh.
|
||||
*
|
||||
**/
|
||||
typedef struct Cloth
|
||||
{
|
||||
struct ClothVertex *verts; /* The vertices that represent this cloth. */
|
||||
struct LinkNode *springs; /* The springs connecting the mesh. */
|
||||
unsigned int numverts; /* The number of verts == m * n. */
|
||||
unsigned int numsprings; /* The count of springs. */
|
||||
unsigned int numfaces;
|
||||
unsigned char old_solver_type; /* unused, only 1 solver here */
|
||||
unsigned char pad2;
|
||||
short pad3;
|
||||
struct BVH *tree; /* collision tree for this cloth object */
|
||||
struct MFace *mfaces;
|
||||
struct Implicit_Data *implicit; /* our implicit solver connects to this pointer */
|
||||
struct Implicit_Data *implicitEM; /* our implicit solver connects to this pointer */
|
||||
struct EdgeHash *edgehash; /* used for selfcollisions */
|
||||
} Cloth;
|
||||
|
||||
#endif
|
||||
|
@ -97,7 +97,7 @@ typedef struct Object {
|
||||
float loc[3], dloc[3], orig[3];
|
||||
float size[3], dsize[3];
|
||||
float rot[3], drot[3];
|
||||
float quat[4], dquat[4];
|
||||
/* float quat[4], dquat[4]; (not used yet) */
|
||||
float obmat[4][4];
|
||||
float parentinv[4][4]; /* inverse result of parent, so that object doesn't 'stick' to parent */
|
||||
float constinv[4][4]; /* inverse result of constraints. doesn't include effect of parent or object local transform */
|
||||
@ -149,10 +149,6 @@ typedef struct Object {
|
||||
ListBase controllers;
|
||||
ListBase actuators;
|
||||
|
||||
/* now used to store cache particles,
|
||||
* should be renamed see effect.c (Campbell) */
|
||||
void *sumohandle;
|
||||
|
||||
float bbsize[3];
|
||||
short index; /* custom index, for renderpasses */
|
||||
unsigned short actdef; /* current deformation group */
|
||||
|
@ -160,11 +160,11 @@ static void node_dynamic_free_storage_cb(bNode *node)
|
||||
}
|
||||
|
||||
/* Disable pynode when its script fails */
|
||||
static void node_dynamic_disable(bNode *node)
|
||||
/*static void node_dynamic_disable(bNode *node)
|
||||
{
|
||||
node->custom1 = 0;
|
||||
node->custom1 = BSET(node->custom1, NODE_DYNAMIC_ERROR);
|
||||
}
|
||||
}*/
|
||||
|
||||
/* Disable all pynodes using the given text (script) id */
|
||||
static void node_dynamic_disable_all_by_id(ID *id)
|
||||
@ -211,6 +211,8 @@ static void node_dynamic_rem_all_links(bNodeType *tinfo)
|
||||
in = tinfo->inputs ? 1 : 0;
|
||||
out = tinfo->outputs ? 1 : 0;
|
||||
|
||||
if (!in && !out) return;
|
||||
|
||||
for (ma= G.main->mat.first; ma; ma= ma->id.next) {
|
||||
if (ma->nodetree) {
|
||||
bNode *nd;
|
||||
@ -248,6 +250,7 @@ static void node_dynamic_reset(bNode *node, int unlink_text)
|
||||
if (nd->typeinfo == tinfo) {
|
||||
node_dynamic_free_storage_cb(nd);
|
||||
node_dynamic_free_sockets(nd);
|
||||
//node_dynamic_update_socket_links(nd, ma->nodetree);
|
||||
nd->typeinfo = tinfo_default;
|
||||
if (unlink_text) {
|
||||
nd->id = NULL;
|
||||
@ -312,17 +315,69 @@ static void node_dynamic_pyerror_print(bNode *node)
|
||||
PyGILState_Release(gilstate);
|
||||
}
|
||||
|
||||
static void node_dynamic_register_type(bNode *node)
|
||||
{
|
||||
nodeRegisterType(&node_all_shaders, node->typeinfo);
|
||||
/* nodeRegisterType copied it to a new one, so we
|
||||
* free the typeinfo itself, but not what it
|
||||
* points to: */
|
||||
MEM_freeN(node->typeinfo);
|
||||
node->typeinfo = node_dynamic_find_typeinfo(&node_all_shaders, node->id);
|
||||
MEM_freeN(node->typeinfo->name);
|
||||
node->typeinfo->name = BLI_strdup(node->name);
|
||||
}
|
||||
|
||||
/* node_dynamic_get_pynode:
|
||||
* Find the pynode definition from the script */
|
||||
static PyObject *node_dynamic_get_pynode(PyObject *dict)
|
||||
{
|
||||
PyObject *key= NULL;
|
||||
Py_ssize_t pos = 0;
|
||||
PyObject *value = NULL;
|
||||
|
||||
/* script writer specified a node? */
|
||||
value = PyDict_GetItemString(dict, "__node__");
|
||||
|
||||
if (value) {
|
||||
if (PyObject_TypeCheck(value, &PyType_Type)) {
|
||||
Py_INCREF(value);
|
||||
return value;
|
||||
}
|
||||
else {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"expected class object derived from Scripted node");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* case not, search for it in the script's global dictionary */
|
||||
while (PyDict_Next(dict, &pos, &key, &value)) {
|
||||
/* skip names we know belong to other available objects */
|
||||
if (strcmp("Socket", PyString_AsString(key)) == 0)
|
||||
continue;
|
||||
else if (strcmp("Scripted", PyString_AsString(key)) == 0)
|
||||
continue;
|
||||
/* naive: we grab the first ob of type 'type': */
|
||||
else if (PyObject_TypeCheck(value, &PyType_Type)) {
|
||||
Py_INCREF(value);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"no PyNode definition found in the script!");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int node_dynamic_parse(struct bNode *node)
|
||||
{
|
||||
PyObject *dict= NULL;
|
||||
PyObject *key= NULL;
|
||||
PyObject *value= NULL;
|
||||
PyObject *pynode_data= NULL;
|
||||
PyObject *pynode= NULL;
|
||||
PyObject *args= NULL;
|
||||
NodeScriptDict *nsd = NULL;
|
||||
PyObject *pyresult = NULL;
|
||||
char *buf = NULL;
|
||||
Py_ssize_t pos = 0;
|
||||
int is_valid_script = 0;
|
||||
PyGILState_STATE gilstate;
|
||||
|
||||
@ -346,7 +401,7 @@ static int node_dynamic_parse(struct bNode *node)
|
||||
MEM_freeN(buf);
|
||||
|
||||
if (!pyresult) {
|
||||
node_dynamic_disable(node);
|
||||
node_dynamic_disable_all_by_id(node->id);
|
||||
node_dynamic_pyerror_print(node);
|
||||
PyGILState_Release(gilstate);
|
||||
return -1;
|
||||
@ -354,18 +409,17 @@ static int node_dynamic_parse(struct bNode *node)
|
||||
|
||||
Py_DECREF(pyresult);
|
||||
|
||||
while (PyDict_Next( (PyObject *)(nsd->dict), &pos, &key, &value)) {
|
||||
/* look for the node object */
|
||||
if (strcmp("Socket", PyString_AsString(key)) == 0)
|
||||
continue; /* XXX ugly, fix it */
|
||||
if (PyObject_TypeCheck(value, &PyType_Type)==1) {
|
||||
pynode_data = node_dynamic_get_pynode(dict);
|
||||
|
||||
if (pynode_data) {
|
||||
BPy_NodeSocketLists *socklists = Node_CreateSocketLists(node);
|
||||
|
||||
args = Py_BuildValue("(O)", socklists);
|
||||
|
||||
/* init it to get the input and output sockets */
|
||||
pynode = PyObject_Call(value, args, NULL);
|
||||
pynode = PyObject_Call(pynode_data, args, NULL);
|
||||
|
||||
Py_DECREF(pynode_data);
|
||||
Py_DECREF(socklists);
|
||||
Py_DECREF(args);
|
||||
|
||||
@ -382,30 +436,19 @@ static int node_dynamic_parse(struct bNode *node)
|
||||
node->typeinfo->id = node->id;
|
||||
if (BNTST(node->custom1, NODE_DYNAMIC_LOADED))
|
||||
nodeAddSockets(node, node->typeinfo);
|
||||
if (BNTST(node->custom1, NODE_DYNAMIC_REPARSE)) {
|
||||
nodeRegisterType(&node_all_shaders, node->typeinfo);
|
||||
/* nodeRegisterType copied it to a new one, so we
|
||||
* free the typeinfo itself, but not what it
|
||||
* points to: */
|
||||
MEM_freeN(node->typeinfo);
|
||||
node->typeinfo = node_dynamic_find_typeinfo(&node_all_shaders, node->id);
|
||||
MEM_freeN(node->typeinfo->name);
|
||||
node->typeinfo->name = BLI_strdup(node->name);
|
||||
}
|
||||
if (BNTST(node->custom1, NODE_DYNAMIC_REPARSE))
|
||||
node_dynamic_register_type(node);
|
||||
}
|
||||
|
||||
node->custom1 = 0;
|
||||
node->custom1 = BSET(node->custom1, NODE_DYNAMIC_READY);
|
||||
break;
|
||||
}
|
||||
//break;
|
||||
}
|
||||
}
|
||||
|
||||
PyGILState_Release(gilstate);
|
||||
|
||||
if (!is_valid_script) { /* not a valid pynode script */
|
||||
node_dynamic_disable(node);
|
||||
node_dynamic_disable_all_by_id(node->id);
|
||||
node_dynamic_pyerror_print(node);
|
||||
return -1;
|
||||
}
|
||||
@ -470,6 +513,7 @@ static void node_dynamic_setup(bNode *node)
|
||||
else { nodeMakeDynamicType(node); }
|
||||
|
||||
} else {
|
||||
node_dynamic_rem_all_links(node->typeinfo);
|
||||
node_dynamic_free_typeinfo_sockets(node->typeinfo);
|
||||
node_dynamic_update_socket_links(node, NULL);
|
||||
node_dynamic_free_storage_cb(node);
|
||||
|
@ -786,7 +786,7 @@ int BPY_run_script(Script *script)
|
||||
|
||||
if (bpyhome) {
|
||||
BLI_strncpy(ftmp, script->scriptname, sizeof(ftmp));
|
||||
BLI_split_dirfile(ftmp, fpath, fname); /* get the filename only - fname */
|
||||
BLI_split_dirfile_basic(ftmp, NULL, fname); /* get the filename only - fname */
|
||||
BLI_strncpy(fpath, bpy_gethome(1), sizeof(fpath));
|
||||
BLI_add_slash(fpath);
|
||||
strcat(fpath, fname);
|
||||
|
@ -927,7 +927,7 @@ static PyObject *Blender_CountPackedFiles( PyObject * self )
|
||||
static PyObject *Blender_GetPaths( PyObject * self, PyObject *args, PyObject *keywds )
|
||||
{
|
||||
struct BPathIterator bpi;
|
||||
PyObject *list = PyList_New(0), *st;
|
||||
PyObject *list = PyList_New(0), *st; /* stupidly big string to be safe */
|
||||
/* be sure there is low chance of the path being too short */
|
||||
char filepath_expanded[FILE_MAXDIR*2];
|
||||
|
||||
@ -944,18 +944,18 @@ static PyObject *Blender_GetPaths( PyObject * self, PyObject *args, PyObject *ke
|
||||
|
||||
/* build the list */
|
||||
if (absolute) {
|
||||
BLI_bpathIterator_copyPathExpanded( &bpi, filepath_expanded );
|
||||
st = PyString_FromString(filepath_expanded);
|
||||
BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
|
||||
} else {
|
||||
st = PyString_FromString(BLI_bpathIterator_getPath(&bpi));
|
||||
BLI_bpathIterator_getPathExpanded( &bpi, filepath_expanded );
|
||||
}
|
||||
st = PyString_FromString(filepath_expanded);
|
||||
|
||||
PyList_Append(list, st);
|
||||
Py_DECREF(st);
|
||||
|
||||
BLI_bpathIterator_step(&bpi);
|
||||
}
|
||||
|
||||
BLI_bpathIterator_free(&bpi);
|
||||
return list;
|
||||
}
|
||||
|
||||
|
@ -561,34 +561,9 @@ struct PyMethodDef M_Effect_methods[] = {
|
||||
/*****************************************************************************/
|
||||
PyObject *M_Effect_New( PyObject * self, PyObject * args )
|
||||
{
|
||||
Effect *bleffect = 0;
|
||||
Object *ob;
|
||||
char *name = NULL;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "s", &name ) )
|
||||
return EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
"expected string argument" );
|
||||
|
||||
for( ob = G.main->object.first; ob; ob = ob->id.next )
|
||||
if( !strcmp( name, ob->id.name + 2 ) )
|
||||
break;
|
||||
|
||||
if( !ob )
|
||||
return EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"object does not exist" );
|
||||
|
||||
if( ob->type != OB_MESH )
|
||||
return EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"object is not a mesh" );
|
||||
|
||||
bleffect = add_effect( EFF_PARTICLE );
|
||||
if( !bleffect )
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"couldn't create Effect Data in Blender" );
|
||||
|
||||
BLI_addtail( &ob->effect, bleffect );
|
||||
|
||||
return EffectCreatePyObject( bleffect, ob );
|
||||
printf("warning, static particles api removed\n");
|
||||
Py_INCREF( Py_None );
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -597,86 +572,7 @@ PyObject *M_Effect_New( PyObject * self, PyObject * args )
|
||||
/*****************************************************************************/
|
||||
PyObject *M_Effect_Get( PyObject * self, PyObject * args )
|
||||
{
|
||||
/*arguments : string object name
|
||||
int : position of effect in the obj's effect list */
|
||||
char *name = NULL;
|
||||
Object *object_iter;
|
||||
Effect *eff;
|
||||
int num = -1, i;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "|si", &name, &num ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"expected string int argument" ) );
|
||||
|
||||
object_iter = G.main->object.first;
|
||||
|
||||
if( !object_iter )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"Scene contains no object" ) );
|
||||
|
||||
if( name ) { /* (name, num = -1) - try to find the given object */
|
||||
|
||||
while( object_iter ) {
|
||||
|
||||
if( !strcmp( name, object_iter->id.name + 2 ) ) {
|
||||
|
||||
eff = object_iter->effect.first; /*can be NULL: None will be returned*/
|
||||
|
||||
if (num >= 0) { /* return effect in given num position if available */
|
||||
|
||||
for( i = 0; i < num; i++ ) {
|
||||
if (!eff) break;
|
||||
eff = eff->next;
|
||||
}
|
||||
|
||||
if (eff) {
|
||||
return EffectCreatePyObject( eff, object_iter );
|
||||
} else { /* didn't find any effect in the given position */
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
else {/*return a list with all effects linked to the given object*/
|
||||
/* this was pointed by Stephen Swaney */
|
||||
PyObject *effectlist = PyList_New( 0 );
|
||||
|
||||
while (eff) {
|
||||
PyObject *found_eff = EffectCreatePyObject( eff,
|
||||
object_iter );
|
||||
PyList_Append( effectlist, found_eff );
|
||||
Py_DECREF( found_eff ); /* PyList_Append incref'ed it */
|
||||
eff = eff->next;
|
||||
}
|
||||
return effectlist;
|
||||
}
|
||||
}
|
||||
|
||||
object_iter = object_iter->id.next;
|
||||
}
|
||||
|
||||
if (!object_iter)
|
||||
return EXPP_ReturnPyObjError (PyExc_AttributeError,
|
||||
"no such object");
|
||||
}
|
||||
|
||||
else { /* () - return a list with all effects currently in Blender */
|
||||
PyObject *effectlist = PyList_New( 0 );
|
||||
|
||||
while( object_iter ) {
|
||||
if( object_iter->effect.first != NULL ) {
|
||||
eff = object_iter->effect.first;
|
||||
while( eff ) {
|
||||
PyObject *found_eff = EffectCreatePyObject( eff,
|
||||
object_iter );
|
||||
PyList_Append( effectlist, found_eff );
|
||||
Py_DECREF( found_eff );
|
||||
eff = eff->next;
|
||||
}
|
||||
}
|
||||
object_iter = object_iter->id.next;
|
||||
}
|
||||
return effectlist;
|
||||
}
|
||||
printf("warning, static particles api removed\n");
|
||||
Py_INCREF( Py_None );
|
||||
return Py_None;
|
||||
}
|
||||
@ -688,30 +584,8 @@ static PyObject *Effect_FlagsDict( void )
|
||||
PyObject *Flags = PyConstant_New( );
|
||||
|
||||
if( Flags ) {
|
||||
BPy_constant *c = ( BPy_constant * ) Flags;
|
||||
|
||||
PyConstant_Insert( c, "SELECTED",
|
||||
PyInt_FromLong( EFF_SELECT ) );
|
||||
PyConstant_Insert( c, "BSPLINE",
|
||||
PyInt_FromLong( PAF_BSPLINE ) );
|
||||
PyConstant_Insert( c, "STATIC",
|
||||
PyInt_FromLong( PAF_STATIC ) );
|
||||
PyConstant_Insert( c, "FACES",
|
||||
PyInt_FromLong( PAF_FACE ) );
|
||||
PyConstant_Insert( c, "ANIMATED",
|
||||
PyInt_FromLong( PAF_ANIMATED ) );
|
||||
PyConstant_Insert( c, "UNBORN",
|
||||
PyInt_FromLong( PAF_UNBORN ) );
|
||||
PyConstant_Insert( c, "VERTS",
|
||||
PyInt_FromLong( PAF_OFACE ) );
|
||||
PyConstant_Insert( c, "EMESH",
|
||||
PyInt_FromLong( PAF_SHOWE ) );
|
||||
PyConstant_Insert( c, "TRUERAND",
|
||||
PyInt_FromLong( PAF_TRAND ) );
|
||||
PyConstant_Insert( c, "EVENDIST",
|
||||
PyInt_FromLong( PAF_EDISTR ) );
|
||||
PyConstant_Insert( c, "DIED",
|
||||
PyInt_FromLong( PAF_DIED ) );
|
||||
//BPy_constant *c = ( BPy_constant * ) Flags;
|
||||
/* removed */
|
||||
}
|
||||
return Flags;
|
||||
}
|
||||
@ -1290,134 +1164,7 @@ static int Effect_setStaticStep( BPy_Effect * self , PyObject * args )
|
||||
/*****************************************************************************/
|
||||
static PyObject *Effect_getParticlesLoc( BPy_Effect * self )
|
||||
{
|
||||
Object *ob;
|
||||
Effect *eff;
|
||||
PartEff *paf;
|
||||
Particle *pa=0;
|
||||
PyObject *list, *strand_list, *pyvec, *pyvec2;
|
||||
float p_time, c_time, vec[3], vec1[3], cfra, m_time, s_time;
|
||||
int a;
|
||||
short disp=100 ;
|
||||
|
||||
cfra=frame_to_float( G.scene->r.cfra );
|
||||
|
||||
/* as we need to update the particles system we try to retrieve
|
||||
the object to which the effect is connected */
|
||||
eff =(Effect *) self->effect;
|
||||
|
||||
ob= self->object;
|
||||
if(!ob)
|
||||
return ( EXPP_ReturnPyObjError (PyExc_AttributeError,
|
||||
"Effect has no object" ) );
|
||||
/*get the particles data */
|
||||
paf= (PartEff *)eff;
|
||||
|
||||
/* particles->disp reduce the display number of particles */
|
||||
/* as we want the complete list ... we backup the disp value and restore later */
|
||||
if (paf->disp<100)
|
||||
disp= paf->disp; paf->disp=100;
|
||||
|
||||
|
||||
build_particle_system(ob);
|
||||
pa= paf->keys;
|
||||
|
||||
if(!pa)
|
||||
return ( EXPP_ReturnPyObjError (PyExc_AttributeError,
|
||||
"Particles Location : no Keys" ) );
|
||||
|
||||
/* if object is in motion */
|
||||
if( ob->ipoflag & OB_OFFS_PARTICLE )
|
||||
p_time= give_timeoffset(ob);
|
||||
else
|
||||
p_time= 0.0;
|
||||
|
||||
list = PyList_New( 0 );
|
||||
if( !list )
|
||||
return EXPP_ReturnPyObjError( PyExc_MemoryError, "PyList() failed" );
|
||||
|
||||
c_time= bsystem_time( ob, cfra, p_time );
|
||||
|
||||
for( a=0; a < paf->totpart; a++, pa += paf->totkey ) {
|
||||
|
||||
if(paf->flag & PAF_STATIC ) {
|
||||
strand_list = PyList_New( 0 );
|
||||
m_time= pa->time+pa->lifetime+paf->staticstep-1;
|
||||
for(c_time= pa->time; c_time<m_time; c_time+=paf->staticstep) {
|
||||
where_is_particle(paf, pa, c_time, vec);
|
||||
MTC_Mat4MulVecfl(ob->obmat, vec); /* make worldspace like the others */
|
||||
pyvec = newVectorObject(vec, 3, Py_NEW);
|
||||
if( PyList_Append( strand_list, pyvec) < 0 ) {
|
||||
Py_DECREF( list );
|
||||
Py_DECREF( strand_list );
|
||||
Py_XDECREF( pyvec );
|
||||
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"Couldn't append item to PyList" );
|
||||
}
|
||||
Py_DECREF( pyvec );
|
||||
|
||||
}
|
||||
|
||||
if( PyList_Append( list, strand_list) < 0 ) {
|
||||
Py_DECREF( list );
|
||||
Py_DECREF( strand_list );
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"Couldn't append item to PyList" );
|
||||
}
|
||||
Py_DECREF( strand_list );
|
||||
} else {
|
||||
if(c_time > pa->time && c_time < pa->time+pa->lifetime ) {
|
||||
/* vector particles are a tuple of 2 vectors */
|
||||
if( paf->stype==PAF_VECT ) {
|
||||
s_time= c_time;
|
||||
p_time= c_time+1.0f;
|
||||
if(c_time < pa->time) {
|
||||
if(paf->flag & PAF_UNBORN)
|
||||
p_time= pa->time+1.0f;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
if(c_time > pa->time+pa->lifetime) {
|
||||
if(paf->flag & PAF_DIED)
|
||||
s_time= pa->time+pa->lifetime-1.0f;
|
||||
else
|
||||
continue;
|
||||
}
|
||||
where_is_particle(paf, pa, s_time, vec);
|
||||
where_is_particle(paf, pa, p_time, vec1);
|
||||
pyvec = newVectorObject(vec, 3, Py_NEW);
|
||||
pyvec2 = newVectorObject(vec1, 3, Py_NEW);
|
||||
if( PyList_Append( list, Py_BuildValue("[OO]", pyvec, pyvec2)) < 0 ) {
|
||||
Py_DECREF( list );
|
||||
Py_XDECREF( pyvec );
|
||||
Py_XDECREF( pyvec2 );
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"Couldn't append item to PyList" );
|
||||
}
|
||||
Py_DECREF( pyvec );
|
||||
Py_DECREF( pyvec2 );
|
||||
} else { /* not a vector */
|
||||
where_is_particle(paf, pa, c_time, vec);
|
||||
pyvec = newVectorObject(vec, 3, Py_NEW);
|
||||
if( PyList_Append( list, pyvec) < 0 ) {
|
||||
Py_DECREF( list );
|
||||
Py_XDECREF( pyvec );
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"Couldn't append item to PyList" );
|
||||
}
|
||||
Py_DECREF( pyvec );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* restore the real disp value */
|
||||
if (disp<100){
|
||||
paf->disp=disp;
|
||||
build_particle_system(ob);
|
||||
}
|
||||
|
||||
return list;
|
||||
return PyList_New( 0 );
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -1341,7 +1341,7 @@ PyTypeObject Node_Type = {
|
||||
PyObject_HEAD_INIT( NULL ) /* required py macro */
|
||||
0, /* ob_size */
|
||||
/* For printing, in format "<module>.<name>" */
|
||||
"Blender.Node.node", /* char *tp_name; */
|
||||
"Blender.Node.Scripted", /* char *tp_name; */
|
||||
sizeof( BPy_Node ), /* int tp_basicsize; */
|
||||
0, /* tp_itemsize; For allocation */
|
||||
|
||||
|
@ -466,7 +466,7 @@ static PyObject *Object_upAxis(BPy_Object * self);
|
||||
static PyMethodDef BPy_Object_methods[] = {
|
||||
/* name, method, flags, doc */
|
||||
{"buildParts", ( PyCFunction ) Object_buildParts, METH_NOARGS,
|
||||
"Recalcs particle system (if any) "},
|
||||
"Recalcs particle system (if any), (depricated, will always return an empty list in version 2.46)"},
|
||||
{"getIpo", ( PyCFunction ) Object_getIpo, METH_NOARGS,
|
||||
"Returns the ipo of this object (if any) "},
|
||||
{"clrParent", ( PyCFunction ) Object_clrParent, METH_VARARGS,
|
||||
@ -1028,7 +1028,7 @@ static PyObject *M_Object_Duplicate( PyObject * self_unused,
|
||||
|
||||
static PyObject *Object_buildParts( BPy_Object * self )
|
||||
{
|
||||
build_particle_system( self->object );
|
||||
/* This is now handles by modifiers */
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
@ -2986,12 +2986,7 @@ static PyObject *Object_getDupliObjects( BPy_Object * self )
|
||||
|
||||
if(ob->transflag & OB_DUPLI) {
|
||||
/* before make duplis, update particle for current frame */
|
||||
if(ob->transflag & OB_DUPLIVERTS) {
|
||||
PartEff *paf= give_parteff(ob);
|
||||
if(paf) {
|
||||
if(paf->flag & PAF_ANIMATED) build_particle_system(ob);
|
||||
}
|
||||
}
|
||||
/* TODO, build particles for particle dupli's */
|
||||
if(ob->type!=OB_MBALL) {
|
||||
PyObject *list;
|
||||
DupliObject *dupob;
|
||||
@ -3035,23 +3030,7 @@ static int Object_setDupliGroup( BPy_Object * self, PyObject * value )
|
||||
|
||||
static PyObject *Object_getEffects( BPy_Object * self )
|
||||
{
|
||||
PyObject *effect_list, *pyval;
|
||||
Effect *eff;
|
||||
|
||||
effect_list = PyList_New( 0 );
|
||||
if( !effect_list )
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"PyList_New() failed" );
|
||||
|
||||
eff = self->object->effect.first;
|
||||
|
||||
while( eff ) {
|
||||
pyval = EffectCreatePyObject( eff, self->object );
|
||||
PyList_Append( effect_list, pyval );
|
||||
Py_DECREF(pyval);
|
||||
eff = eff->next;
|
||||
}
|
||||
return effect_list;
|
||||
return PyList_New( 0 );
|
||||
}
|
||||
|
||||
static PyObject *Object_getActionStrips( BPy_Object * self )
|
||||
@ -5028,7 +5007,7 @@ static PyGetSetDef BPy_Object_getseters[] = {
|
||||
|
||||
{"effects",
|
||||
(getter)Object_getEffects, (setter)NULL,
|
||||
"The list of particle effects associated with the object",
|
||||
"The list of particle effects associated with the object, (depricated, will always return an empty list in version 2.46)",
|
||||
NULL},
|
||||
{"actionStrips",
|
||||
(getter)Object_getActionStrips, (setter)NULL,
|
||||
|
@ -262,43 +262,9 @@ struct PyMethodDef M_Particle_methods[] = {
|
||||
/*****************************************************************************/
|
||||
PyObject *M_Particle_New( PyObject * self, PyObject * args )
|
||||
{
|
||||
BPy_Effect *pyeffect;
|
||||
Effect *bleffect = 0;
|
||||
Object *ob;
|
||||
char *name = NULL;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "s", &name ) )
|
||||
return EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
"expected string argument" );
|
||||
|
||||
for( ob = G.main->object.first; ob; ob = ob->id.next )
|
||||
if( !strcmp( name, ob->id.name + 2 ) )
|
||||
break;
|
||||
|
||||
if( !ob )
|
||||
return EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"object does not exist" );
|
||||
|
||||
if( ob->type != OB_MESH )
|
||||
return EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"object is not a mesh" );
|
||||
|
||||
pyeffect = ( BPy_Effect * ) PyObject_NEW( BPy_Effect, &Effect_Type );
|
||||
if( !pyeffect )
|
||||
return EXPP_ReturnPyObjError( PyExc_MemoryError,
|
||||
"couldn't create Effect Data object" );
|
||||
|
||||
bleffect = add_effect( EFF_PARTICLE );
|
||||
if( !bleffect ) {
|
||||
Py_DECREF( pyeffect );
|
||||
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
|
||||
"couldn't create Effect Data in Blender" );
|
||||
}
|
||||
|
||||
pyeffect->effect = (PartEff *)bleffect;
|
||||
BLI_addtail( &ob->effect, bleffect );
|
||||
|
||||
return ( PyObject * ) pyeffect;
|
||||
printf("warning, static particles api removed\n");
|
||||
Py_INCREF( Py_None );
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -307,48 +273,7 @@ PyObject *M_Particle_New( PyObject * self, PyObject * args )
|
||||
/*****************************************************************************/
|
||||
PyObject *M_Particle_Get( PyObject * self, PyObject * args )
|
||||
{
|
||||
/*arguments : string object name
|
||||
int : position of effect in the obj's effect list */
|
||||
char *name = 0;
|
||||
Object *object_iter;
|
||||
Effect *eff;
|
||||
BPy_Particle *wanted_eff;
|
||||
int num, i;
|
||||
|
||||
if( !PyArg_ParseTuple( args, "si", &name, &num ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"expected string int argument" ) );
|
||||
|
||||
object_iter = G.main->object.first;
|
||||
if( !object_iter )
|
||||
return EXPP_ReturnPyObjError( PyExc_AttributeError,
|
||||
"Scene contains no object" );
|
||||
|
||||
while( object_iter ) {
|
||||
if( strcmp( name, object_iter->id.name + 2 ) ) {
|
||||
object_iter = object_iter->id.next;
|
||||
continue;
|
||||
}
|
||||
|
||||
if( object_iter->effect.first != NULL ) {
|
||||
eff = object_iter->effect.first;
|
||||
for( i = 0; i < num; i++ ) {
|
||||
if( eff->type != EFF_PARTICLE )
|
||||
continue;
|
||||
eff = eff->next;
|
||||
if( !eff )
|
||||
return ( EXPP_ReturnPyObjError
|
||||
( PyExc_AttributeError,
|
||||
"Object" ) );
|
||||
}
|
||||
wanted_eff =
|
||||
( BPy_Particle * ) PyObject_NEW( BPy_Particle,
|
||||
&Particle_Type );
|
||||
wanted_eff->particle = eff;
|
||||
return ( PyObject * ) wanted_eff;
|
||||
}
|
||||
object_iter = object_iter->id.next;
|
||||
}
|
||||
printf("warning, static particles api removed\n");
|
||||
Py_INCREF( Py_None );
|
||||
return Py_None;
|
||||
}
|
||||
|
@ -3,7 +3,8 @@
|
||||
"""
|
||||
The Blender.Effect submodule
|
||||
|
||||
B{new}: now L{Get}('objname') (without specifying second parameter: 'position') returns a list of all effects linked to object "objname".
|
||||
B{Deprecated}:
|
||||
This module is now maintained but not actively developed.
|
||||
|
||||
Effect
|
||||
======
|
||||
|
@ -383,7 +383,7 @@ class Object:
|
||||
@ivar sel: The selection state of the object in the current scene.
|
||||
True is selected, False is unselected. Setting makes the object active.
|
||||
@type sel: boolean
|
||||
@ivar effects: The list of particle effects associated with the object.
|
||||
@ivar effects: The list of particle effects associated with the object. (depricated, will always return an empty list)
|
||||
Read-only.
|
||||
@type effects: list of Effect objects
|
||||
@ivar parentbonename: The string name of the parent bone (if defined).
|
||||
@ -645,7 +645,7 @@ class Object:
|
||||
def buildParts():
|
||||
"""
|
||||
Recomputes the particle system. This method only applies to an Object of
|
||||
the type Effect.
|
||||
the type Effect. (depricated, does nothing now, use makeDisplayList instead to update the modifier stack)
|
||||
"""
|
||||
|
||||
def insertShapeKey():
|
||||
@ -1195,12 +1195,9 @@ class Object:
|
||||
|
||||
def makeDisplayList():
|
||||
"""
|
||||
Updates this object's display list. Blender uses display lists to store
|
||||
already transformed data (like a mesh with its vertices already modified
|
||||
by coordinate transformations and armature deformation). If the object
|
||||
isn't modified, there's no need to recalculate this data. This method is
|
||||
here for the *few cases* where a script may need it, like when toggling
|
||||
the "SubSurf" mode for a mesh:
|
||||
Forces an update to the objects display data. If the object isn't modified,
|
||||
there's no need to recalculate this data.
|
||||
This method is here for the *few cases* where it is needed.
|
||||
|
||||
Example::
|
||||
import Blender
|
||||
|
@ -1081,6 +1081,10 @@ void RE_InitState(Render *re, Render *source, RenderData *rd, int winx, int winy
|
||||
re->ok= 0;
|
||||
}
|
||||
else {
|
||||
#ifndef WITH_OPENEXR
|
||||
/* can't do this without openexr support */
|
||||
re->r.scemode &= ~R_EXR_TILE_FILE;
|
||||
#endif
|
||||
|
||||
if(!(re->r.scemode & R_EXR_TILE_FILE))
|
||||
re->r.scemode &= ~R_FULL_SAMPLE; /* clear, so we can use this flag for test both */
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2290,7 +2290,6 @@ void fluidsimFilesel(char *selection)
|
||||
void do_object_panels(unsigned short event)
|
||||
{
|
||||
Object *ob;
|
||||
Effect *eff;
|
||||
|
||||
ob= OBACT;
|
||||
if(ob==NULL)
|
||||
@ -2478,21 +2477,6 @@ void do_object_panels(unsigned short event)
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if(event>=B_SELEFFECT && event<B_SELEFFECT+MAX_EFFECT) {
|
||||
int a=B_SELEFFECT;
|
||||
|
||||
eff= ob->effect.first;
|
||||
while(eff) {
|
||||
if(event==a) eff->flag |= SELECT;
|
||||
else eff->flag &= ~SELECT;
|
||||
|
||||
a++;
|
||||
eff= eff->next;
|
||||
}
|
||||
allqueue(REDRAWBUTSOBJECT, 0);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -2849,9 +2833,6 @@ void object_panel_constraint(char *context)
|
||||
void do_effects_panels(unsigned short event)
|
||||
{
|
||||
Object *ob;
|
||||
Base *base;
|
||||
Effect *eff, *effn;
|
||||
PartEff *paf;
|
||||
ModifierData *md;
|
||||
ParticleSystemModifierData *psmd;
|
||||
ParticleSystem *psys;
|
||||
@ -2880,114 +2861,6 @@ void do_effects_panels(unsigned short event)
|
||||
G.scene->r.framelen/= G.scene->r.images;
|
||||
allqueue(REDRAWALL, 0);
|
||||
break;
|
||||
case B_NEWEFFECT:
|
||||
if(ob) {
|
||||
if(ob->fluidsimFlag & OB_FLUIDSIM_ENABLE) {
|
||||
// NT particles and fluid meshes currently dont work together -> switch off beforehand
|
||||
if(ob->fluidsimSettings->type == OB_FLUIDSIM_DOMAIN) {
|
||||
pupmenu("Fluidsim Particle Error%t|Please disable the fluidsim domain before activating particles.%x0");
|
||||
break;
|
||||
//ob->fluidsimFlag = 0; ob->fluidsimSettings->type = 0; allqueue(REDRAWVIEW3D, 0);
|
||||
}
|
||||
}
|
||||
if (BLI_countlist(&ob->effect)==MAX_EFFECT)
|
||||
error("Unable to add: effect limit reached");
|
||||
else
|
||||
copy_act_effect(ob);
|
||||
}
|
||||
DAG_scene_sort(G.scene);
|
||||
BIF_undo_push("New effect");
|
||||
allqueue(REDRAWBUTSOBJECT, 0);
|
||||
break;
|
||||
case B_DELEFFECT:
|
||||
if(ob==NULL || ob->type!=OB_MESH) break;
|
||||
eff= ob->effect.first;
|
||||
while(eff) {
|
||||
effn= eff->next;
|
||||
if(eff->flag & SELECT) {
|
||||
BLI_remlink(&ob->effect, eff);
|
||||
free_effect(eff);
|
||||
break;
|
||||
}
|
||||
eff= effn;
|
||||
}
|
||||
BIF_undo_push("Delete effect");
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
allqueue(REDRAWBUTSOBJECT, 0);
|
||||
break;
|
||||
case B_NEXTEFFECT:
|
||||
if(ob==0 || ob->type!=OB_MESH) break;
|
||||
eff= ob->effect.first;
|
||||
while(eff) {
|
||||
if(eff->flag & SELECT) {
|
||||
if(eff->next) {
|
||||
eff->flag &= ~SELECT;
|
||||
eff->next->flag |= SELECT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
eff= eff->next;
|
||||
}
|
||||
allqueue(REDRAWBUTSOBJECT, 0);
|
||||
break;
|
||||
case B_PREVEFFECT:
|
||||
if(ob==0 || ob->type!=OB_MESH) break;
|
||||
eff= ob->effect.first;
|
||||
while(eff) {
|
||||
if(eff->flag & SELECT) {
|
||||
if(eff->prev) {
|
||||
eff->flag &= ~SELECT;
|
||||
eff->prev->flag |= SELECT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
eff= eff->next;
|
||||
}
|
||||
allqueue(REDRAWBUTSOBJECT, 0);
|
||||
break;
|
||||
case B_EFFECT_DEP:
|
||||
DAG_scene_sort(G.scene);
|
||||
/* no break, pass on */
|
||||
case B_CALCEFFECT:
|
||||
if(ob==NULL || ob->type!=OB_MESH) break;
|
||||
eff= ob->effect.first;
|
||||
while(eff) {
|
||||
if(eff->flag & SELECT) {
|
||||
if(eff->type==EFF_PARTICLE) build_particle_system(ob);
|
||||
}
|
||||
eff= eff->next;
|
||||
}
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
allqueue(REDRAWBUTSOBJECT, 0);
|
||||
break;
|
||||
case B_PAF_SET_VG:
|
||||
|
||||
paf= give_parteff(ob);
|
||||
if(paf) {
|
||||
bDeformGroup *dg= get_named_vertexgroup(ob, paf->vgroupname);
|
||||
if(dg)
|
||||
paf->vertgroup= get_defgroup_num(ob, dg)+1;
|
||||
else
|
||||
paf->vertgroup= 0;
|
||||
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
}
|
||||
break;
|
||||
case B_PAF_SET_VG1:
|
||||
|
||||
paf= give_parteff(ob);
|
||||
if(paf) {
|
||||
bDeformGroup *dg= get_named_vertexgroup(ob, paf->vgroupname_v);
|
||||
if(dg)
|
||||
paf->vertgroup_v= get_defgroup_num(ob, dg)+1;
|
||||
else
|
||||
paf->vertgroup_v= 0;
|
||||
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
}
|
||||
break;
|
||||
case B_PARTBROWSE:
|
||||
if(G.buts->menunr== -2) {
|
||||
activate_databrowse((ID *)G.buts->lockpoin, ID_PA, 0, B_PARTBROWSE, &G.buts->menunr, do_effects_panels);
|
||||
@ -3281,43 +3154,6 @@ void do_effects_panels(unsigned short event)
|
||||
DAG_object_flush_update(G.scene, ob, OB_RECALC_OB);
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
break;
|
||||
case B_RECALCAL:
|
||||
if (G.vd==NULL)
|
||||
break;
|
||||
|
||||
base= FIRSTBASE;
|
||||
while(base) {
|
||||
if(base->lay & G.vd->lay) {
|
||||
ob= base->object;
|
||||
eff= ob->effect.first;
|
||||
while(eff) {
|
||||
if(eff->flag & SELECT) {
|
||||
if(eff->type==EFF_PARTICLE) build_particle_system(ob);
|
||||
}
|
||||
eff= eff->next;
|
||||
}
|
||||
}
|
||||
base= base->next;
|
||||
}
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
break;
|
||||
default:
|
||||
if(event>=B_SELEFFECT && event<B_SELEFFECT+MAX_EFFECT) {
|
||||
ob= OBACT;
|
||||
if(ob) {
|
||||
int a=B_SELEFFECT;
|
||||
|
||||
eff= ob->effect.first;
|
||||
while(eff) {
|
||||
if(event==a) eff->flag |= SELECT;
|
||||
else eff->flag &= ~SELECT;
|
||||
|
||||
a++;
|
||||
eff= eff->next;
|
||||
}
|
||||
allqueue(REDRAWBUTSOBJECT, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -747,10 +747,7 @@ static void seq_panel_input()
|
||||
if(uiNewPanel(curarea, block, "Input", "Sequencer",
|
||||
10, 230, 318, 204) == 0) return;
|
||||
|
||||
if (last_seq->type == SEQ_MOVIE
|
||||
|| last_seq->type == SEQ_IMAGE
|
||||
|| last_seq->type == SEQ_HD_SOUND
|
||||
|| last_seq->type == SEQ_RAM_SOUND) {
|
||||
if (SEQ_HAS_PATH(last_seq)) {
|
||||
uiDefBut(block, TEX,
|
||||
B_SEQ_BUT_RELOAD_FILE, "Dir: ",
|
||||
10,140,240,19, last_seq->strip->dir,
|
||||
@ -2046,12 +2043,15 @@ static void render_panel_output(void)
|
||||
for(b=2; b>=0; b--)
|
||||
for(a=0; a<3; a++)
|
||||
uiDefButBitS(block, TOG, 1<<(3*b+a), 800,"", (short)(10+18*a),(short)(10+14*b),16,12, &G.winpos, 0, 0, 0, 0, "Render window placement on screen");
|
||||
uiBlockEndAlign(block);
|
||||
|
||||
#ifdef WITH_OPENEXR
|
||||
uiBlockBeginAlign(block);
|
||||
uiDefButBitI(block, TOG, R_EXR_TILE_FILE, B_REDR, "Save Buffers", 72, 31, 120, 19, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Save tiles for all RenderLayers and used SceneNodes to files in the temp directory (saves memory, allows Full Sampling)");
|
||||
if(G.scene->r.scemode & R_EXR_TILE_FILE)
|
||||
uiDefButBitI(block, TOG, R_FULL_SAMPLE, B_REDR, "FullSample", 192, 31, 118, 19, &G.scene->r.scemode, 0.0, 0.0, 0, 0, "Saves for every OSA sample the entire RenderLayer results (Higher quality sampling but slower)");
|
||||
uiBlockEndAlign(block);
|
||||
#endif
|
||||
|
||||
uiDefButS(block, MENU, B_REDR, "Render Display %t|Render Window %x1|Image Editor %x0|Full Screen %x2",
|
||||
72, 10, 120, 19, &G.displaymode, 0.0, (float)R_DISPLAYWIN, 0, 0, "Sets render output display");
|
||||
|
@ -635,9 +635,11 @@ static void draw_channel_names(void)
|
||||
else {
|
||||
/* for normal channels
|
||||
* - use 3 shades of color group/standard colour for 3 indention level
|
||||
* - use standard colour if enabled
|
||||
* - only use group colors if allowed to, and if actually feasible
|
||||
*/
|
||||
if ((G.saction->flag & SACTION_DRAWGCOLORS) && (grp)) {
|
||||
if ( !(G.saction->flag & SACTION_NODRAWGCOLORS) &&
|
||||
(grp) && (grp->customCol) )
|
||||
{
|
||||
char cp[3];
|
||||
|
||||
if (indent == 2) {
|
||||
|
@ -2238,7 +2238,7 @@ void drawimagespace(ScrArea *sa, void *spacedata)
|
||||
else if(ibuf->rect_float && ibuf->channels==4)
|
||||
sima_draw_alpha_pixelsf(x1_rep, y1_rep, ibuf->x, ibuf->y, ibuf->rect_float);
|
||||
}
|
||||
else if(sima->flag & SI_SHOW_ZBUF && ((ibuf->zbuf || ibuf->zbuf_float || (ibuf->channels==1)) == 0)) {
|
||||
else if(sima->flag & SI_SHOW_ZBUF && (ibuf->zbuf || ibuf->zbuf_float || (ibuf->channels==1))) {
|
||||
if(ibuf->zbuf)
|
||||
sima_draw_zbuf_pixels(x1_rep, y1_rep, ibuf->x, ibuf->y, ibuf->zbuf);
|
||||
else if(ibuf->zbuf_float)
|
||||
|
@ -53,6 +53,7 @@
|
||||
#include "BLI_winstuff.h"
|
||||
#endif
|
||||
|
||||
#include "BMF_Api.h"
|
||||
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_library.h"
|
||||
@ -217,17 +218,40 @@ static void draw_file(SpaceImaSel *simasel, short sx, short sy, struct direntry
|
||||
short soffs;
|
||||
char fname[FILE_MAXFILE];
|
||||
float sw;
|
||||
float x,y;
|
||||
|
||||
BLI_strncpy(fname,file->relname, FILE_MAXFILE);
|
||||
sw = shorten_string(simasel, fname, simasel->prv_w );
|
||||
soffs = (simasel->prv_w + TILE_BORDER_X*4 - sw) / 2;
|
||||
x = (float)(sx+soffs);
|
||||
y = (float)(sy - simasel->prv_h - TILE_BORDER_Y*2 - U.fontsize);
|
||||
|
||||
ui_rasterpos_safe(sx+soffs, sy - simasel->prv_h - TILE_BORDER_Y*2 - U.fontsize, simasel->aspect);
|
||||
ui_rasterpos_safe(x, y, simasel->aspect);
|
||||
/* handling of international fonts.
|
||||
TODO: proper support for utf8 in languages different from ja_JP abd zh_CH
|
||||
needs update of iconv in lib/windows to support getting the system language string
|
||||
*/
|
||||
#ifdef WITH_ICONV
|
||||
{
|
||||
struct LANGMenuEntry *lme;
|
||||
lme = find_language(U.language);
|
||||
|
||||
if ((lme !=NULL) && (!strcmp(lme->code, "ja_JP") ||
|
||||
!strcmp(lme->code, "zh_CN")))
|
||||
{
|
||||
BIF_RasterPos(x, y);
|
||||
#ifdef WIN32
|
||||
BIF_DrawString(simasel->curfont, fname, ((U.transopts & USER_TR_MENUS) | CONVERT_TO_UTF8));
|
||||
#else
|
||||
BIF_DrawString(simasel->curfont, fname, (U.transopts & USER_TR_MENUS));
|
||||
#endif
|
||||
} else {
|
||||
BMF_DrawString(simasel->curfont, fname);
|
||||
}
|
||||
}
|
||||
#else
|
||||
BMF_DrawString(simasel->curfont, fname);
|
||||
#endif /* WITH_ICONV */
|
||||
}
|
||||
|
||||
static void draw_imasel_bookmarks(ScrArea *sa, SpaceImaSel *simasel)
|
||||
|
@ -2866,143 +2866,6 @@ static int drawDispList(Base *base, int dt)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* ******************************** */
|
||||
|
||||
|
||||
static void draw_particle_system(Base *base, PartEff *paf)
|
||||
{
|
||||
Object *ob= base->object;
|
||||
Particle *pa;
|
||||
float ptime, ctime, vec[3], vec1[3], mat[4][4];
|
||||
int a, totpart;
|
||||
|
||||
pa= paf->keys;
|
||||
// FSPARTICLE always rebuild fluid particle system upon change...
|
||||
if( (pa==NULL)
|
||||
|| ( (ob->fluidsimFlag & OB_FLUIDSIM_ENABLE) && (ob->fluidsimSettings) && (ob->fluidsimSettings->type == OB_FLUIDSIM_PARTICLE))
|
||||
) {
|
||||
build_particle_system(ob);
|
||||
pa= paf->keys;
|
||||
if(pa==NULL) return;
|
||||
}
|
||||
|
||||
myloadmatrix(G.vd->viewmat);
|
||||
/* flag abuse... but I need working code too now. This feature doesnt work for per frame animated objects */
|
||||
if( (base->flag & OB_FROMDUPLI) && (ob->flag & OB_FROMGROUP) ) {
|
||||
Mat4MulMat4(mat, paf->imat, ob->obmat);
|
||||
mymultmatrix(mat);
|
||||
}
|
||||
|
||||
if(ob->ipoflag & OB_OFFS_PARTICLE) ptime= give_timeoffset(ob);
|
||||
else ptime= 0.0;
|
||||
ctime= bsystem_time(ob, (float)(G.scene->r.cfra), ptime);
|
||||
|
||||
glPointSize(1.0);
|
||||
|
||||
if(paf->stype==PAF_VECT) glBegin(GL_LINES);
|
||||
else glBegin(GL_POINTS);
|
||||
|
||||
totpart= (paf->disp*paf->totpart)/100;
|
||||
for(a=0; a<totpart; a++, pa+=paf->totkey) {
|
||||
|
||||
if(ctime > pa->time) {
|
||||
if(ctime < pa->time+pa->lifetime) {
|
||||
|
||||
if(paf->stype==PAF_VECT) {
|
||||
where_is_particle(paf, pa, ctime, vec);
|
||||
where_is_particle(paf, pa, ctime+1.0, vec1);
|
||||
|
||||
glVertex3fv(vec);
|
||||
glVertex3fv(vec1);
|
||||
}
|
||||
else {
|
||||
where_is_particle(paf, pa, ctime, vec);
|
||||
|
||||
glVertex3fv(vec);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
glEnd();
|
||||
|
||||
myloadmatrix(G.vd->viewmat);
|
||||
mymultmatrix(ob->obmat); // bring back local matrix for dtx
|
||||
}
|
||||
|
||||
static void draw_static_particle_system(Object *ob, PartEff *paf, int dt)
|
||||
{
|
||||
Particle *pa;
|
||||
float ctime, mtime, vec[3], veco[3];
|
||||
int a, use_norm=0, totpart;
|
||||
|
||||
pa= paf->keys;
|
||||
// FSPARTICLE always rebuild upon change...
|
||||
if( (pa==NULL)
|
||||
|| ( (ob->fluidsimFlag & OB_FLUIDSIM_ENABLE) && (ob->fluidsimSettings) && (ob->fluidsimSettings->type == OB_FLUIDSIM_PARTICLE))
|
||||
) {
|
||||
build_particle_system(ob);
|
||||
pa= paf->keys;
|
||||
if(pa==NULL) return;
|
||||
}
|
||||
|
||||
if(paf->stype==PAF_VECT) {
|
||||
if(dt>OB_WIRE) {
|
||||
|
||||
/* shaded/texture mode: we still draw solid, so have to set materials */
|
||||
if(dt>OB_SOLID) init_gl_materials(ob, 0);
|
||||
|
||||
glEnable(GL_LIGHTING);
|
||||
set_gl_material(paf->omat);
|
||||
use_norm= 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
glPointSize(1.0);
|
||||
glBegin(GL_POINTS);
|
||||
}
|
||||
|
||||
totpart= (paf->disp*paf->totpart)/100;
|
||||
for(a=0; a<totpart; a++, pa+=paf->totkey) {
|
||||
|
||||
if(paf->stype==PAF_VECT) {
|
||||
|
||||
glBegin(GL_LINE_STRIP);
|
||||
where_is_particle(paf, pa, pa->time, veco);
|
||||
|
||||
mtime= pa->time+pa->lifetime+paf->staticstep;
|
||||
for(ctime= pa->time+paf->staticstep; ctime<mtime; ctime+=paf->staticstep) {
|
||||
|
||||
where_is_particle(paf, pa, ctime, vec);
|
||||
|
||||
if(use_norm) {
|
||||
float no[3];
|
||||
VECSUB(no, vec, veco);
|
||||
glNormal3fv(no);
|
||||
}
|
||||
glVertex3fv(veco);
|
||||
VECCOPY(veco, vec);
|
||||
}
|
||||
|
||||
glVertex3fv(veco);
|
||||
glEnd();
|
||||
}
|
||||
else {
|
||||
mtime= pa->time+pa->lifetime+paf->staticstep-1;
|
||||
for(ctime= pa->time; ctime<mtime; ctime+=paf->staticstep) {
|
||||
where_is_particle(paf, pa, ctime, vec);
|
||||
glVertex3fv(vec);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(paf->stype==PAF_VECT) {
|
||||
glDisable(GL_LIGHTING);
|
||||
}
|
||||
else {
|
||||
glEnd();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* unified drawing of all new particle systems draw types except dupli ob & group */
|
||||
/* mostly tries to use vertex arrays for speed */
|
||||
|
||||
@ -4983,17 +4846,6 @@ void draw_object(Base *base, int flag)
|
||||
if (!(base->flag&OB_RADIO)) {
|
||||
empty_object= draw_mesh_object(base, dt, flag);
|
||||
if(flag!=DRAW_CONSTCOLOR) dtx &= ~OB_DRAWWIRE; // mesh draws wire itself
|
||||
|
||||
if(G.obedit!=ob && warning_recursive==0) {
|
||||
PartEff *paf = give_parteff(ob);
|
||||
|
||||
if(paf) {
|
||||
if(col || (ob->flag & SELECT)) cpack(0xFFFFFF); /* for visibility, also while wpaint */
|
||||
if(paf->flag & PAF_STATIC) draw_static_particle_system(ob, paf, dt);
|
||||
else if((flag & DRAW_PICKING) == 0) draw_particle_system(base, paf); // selection errors happen to easy
|
||||
if(col) cpack(col);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -50,6 +50,7 @@
|
||||
|
||||
#include "BIF_space.h"
|
||||
#include "BIF_drawscene.h"
|
||||
#include "BIF_editseq.h"
|
||||
#include "BIF_poseobject.h"
|
||||
|
||||
#include "BSE_view.h"
|
||||
@ -73,6 +74,8 @@ void set_scene(Scene *sce) /* also see scene.c: set_scene_bg() */
|
||||
|
||||
exit_paint_modes();
|
||||
|
||||
set_last_seq(NULL);
|
||||
|
||||
G.scene= sce;
|
||||
|
||||
sc= G.main->screen.first;
|
||||
|
@ -1178,6 +1178,7 @@ void verify_pchan2achan_grouping (bAction *act, bPose *pose, char name[])
|
||||
}
|
||||
}
|
||||
}
|
||||
grp->customCol= agrp->customCol;
|
||||
|
||||
BLI_addtail(&act->groups, grp);
|
||||
}
|
||||
@ -1188,6 +1189,50 @@ void verify_pchan2achan_grouping (bAction *act, bPose *pose, char name[])
|
||||
}
|
||||
}
|
||||
|
||||
/* This function is used when the user specifically requests to sync changes of pchans + bone groups
|
||||
* to achans + action groups. All achans are detached from their groups, and all groups are destroyed.
|
||||
* They are then recreated when the achans are reassigned to groups.
|
||||
*
|
||||
* Note: This doesn't preserve hand-created groups, and will operate on ALL action-channels regardless of
|
||||
* whether they were selected or active. More specific filtering can be added later.
|
||||
*/
|
||||
void sync_pchan2achan_grouping ()
|
||||
{
|
||||
void *data;
|
||||
short datatype;
|
||||
bAction *act;
|
||||
bActionChannel *achan, *next, *last;
|
||||
bPose *pose;
|
||||
|
||||
/* determine what type of data we are operating on */
|
||||
data = get_action_context(&datatype);
|
||||
if ((datatype != ACTCONT_ACTION) || (data==NULL)) return;
|
||||
if ((G.saction->pin) || (OBACT==NULL) || (OBACT->type != OB_ARMATURE)) {
|
||||
error("Action doesn't belong to active armature");
|
||||
return;
|
||||
}
|
||||
|
||||
/* get data */
|
||||
act= (bAction *)data;
|
||||
pose= OBACT->pose;
|
||||
|
||||
/* remove achan->group links, then delete all groups */
|
||||
for (achan= act->chanbase.first; achan; achan= achan->next)
|
||||
achan->grp = NULL;
|
||||
BLI_freelistN(&act->groups);
|
||||
|
||||
/* loop through all achans, reassigning them to groups (colours are resyncronised) */
|
||||
last= act->chanbase.last;
|
||||
for (achan= act->chanbase.first; achan && achan!=last; achan= next) {
|
||||
next= achan->next;
|
||||
verify_pchan2achan_grouping(act, pose, achan->name);
|
||||
}
|
||||
|
||||
/* undo and redraw */
|
||||
BIF_undo_push("Sync Armature-Data and Action");
|
||||
allqueue(REDRAWACTION, 0);
|
||||
}
|
||||
|
||||
/* **************************************************** */
|
||||
/* TRANSFORM TOOLS */
|
||||
|
||||
@ -3162,6 +3207,106 @@ void column_select_action_keys (int mode)
|
||||
BLI_freelistN(&elems);
|
||||
}
|
||||
|
||||
/* borderselect: for action-channels */
|
||||
void borderselect_actionchannels (void)
|
||||
{
|
||||
ListBase act_data = {NULL, NULL};
|
||||
bActListElem *ale;
|
||||
int filter;
|
||||
void *data;
|
||||
short datatype;
|
||||
|
||||
rcti rect;
|
||||
rctf rectf;
|
||||
int val, selectmode;
|
||||
short mval[2];
|
||||
float ymin, ymax;
|
||||
|
||||
/* determine what type of data we are operating on */
|
||||
data = get_action_context(&datatype);
|
||||
if (data == NULL) return;
|
||||
if (datatype != ACTCONT_ACTION) return;
|
||||
|
||||
/* draw and handle the borderselect stuff (ui) and get the select rect */
|
||||
if ( (val = get_border(&rect, 3)) ) {
|
||||
selectmode= ((val==LEFTMOUSE) ? SELECT_ADD : SELECT_SUBTRACT);
|
||||
|
||||
mval[0]= rect.xmin;
|
||||
mval[1]= rect.ymin+2;
|
||||
areamouseco_to_ipoco(G.v2d, mval, &rectf.xmin, &rectf.ymin);
|
||||
mval[0]= rect.xmax;
|
||||
mval[1]= rect.ymax-2;
|
||||
areamouseco_to_ipoco(G.v2d, mval, &rectf.xmax, &rectf.ymax);
|
||||
|
||||
ymax = CHANNELHEIGHT/2;
|
||||
|
||||
/* filter data */
|
||||
filter= (ACTFILTER_VISIBLE | ACTFILTER_CHANNELS);
|
||||
actdata_filter(&act_data, filter, data, datatype);
|
||||
|
||||
/* loop over data, doing border select */
|
||||
for (ale= act_data.first; ale; ale= ale->next) {
|
||||
ymin=ymax-(CHANNELHEIGHT+CHANNELSKIP);
|
||||
|
||||
/* if channel is within border-select region, alter it */
|
||||
if (!((ymax < rectf.ymin) || (ymin > rectf.ymax))) {
|
||||
/* only the following types can be selected */
|
||||
switch (ale->type) {
|
||||
case ACTTYPE_GROUP: /* action group */
|
||||
{
|
||||
bActionGroup *agrp= (bActionGroup *)ale->data;
|
||||
|
||||
if (selectmode == SELECT_ADD)
|
||||
agrp->flag |= AGRP_SELECTED;
|
||||
else
|
||||
agrp->flag &= ~AGRP_SELECTED;
|
||||
}
|
||||
break;
|
||||
case ACTTYPE_ACHAN: /* action channel */
|
||||
{
|
||||
bActionChannel *achan= (bActionChannel *)ale->data;
|
||||
|
||||
if (selectmode == SELECT_ADD)
|
||||
achan->flag |= ACHAN_SELECTED;
|
||||
else
|
||||
achan->flag &= ~ACHAN_SELECTED;
|
||||
}
|
||||
break;
|
||||
case ACTTYPE_CONCHAN: /* constraint channel */
|
||||
{
|
||||
bConstraintChannel *conchan = (bConstraintChannel *)ale->data;
|
||||
|
||||
if (selectmode == SELECT_ADD)
|
||||
conchan->flag |= CONSTRAINT_CHANNEL_SELECT;
|
||||
else
|
||||
conchan->flag &= ~CONSTRAINT_CHANNEL_SELECT;
|
||||
}
|
||||
break;
|
||||
case ACTTYPE_ICU: /* ipo-curve channel */
|
||||
{
|
||||
IpoCurve *icu = (IpoCurve *)ale->data;
|
||||
|
||||
if (selectmode == SELECT_ADD)
|
||||
icu->flag |= IPO_SELECT;
|
||||
else
|
||||
icu->flag &= ~IPO_SELECT;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ymax=ymin;
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
BLI_freelistN(&act_data);
|
||||
|
||||
BIF_undo_push("Border Select Action");
|
||||
allqueue(REDRAWIPO, 0);
|
||||
allqueue(REDRAWACTION, 0);
|
||||
allqueue(REDRAWNLA, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* some quick defines for borderselect modes */
|
||||
enum {
|
||||
@ -4365,7 +4510,9 @@ void winqreadactionspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
||||
borderselect_markers();
|
||||
}
|
||||
else {
|
||||
if (mval[0] >= ACTWIDTH)
|
||||
if (mval[0] <= ACTWIDTH)
|
||||
borderselect_actionchannels();
|
||||
else
|
||||
borderselect_action();
|
||||
}
|
||||
break;
|
||||
|
@ -319,7 +319,7 @@ void load_3dtext_fs(char *file)
|
||||
{
|
||||
int tmplen;
|
||||
wchar_t *mem = MEM_callocN((sizeof(wchar_t)*filelen)+(4*sizeof(wchar_t)), "temporary");
|
||||
tmplen = utf8towchar_(mem, strp);
|
||||
tmplen = utf8towchar(mem, strp);
|
||||
wcscat(textbuf, mem);
|
||||
MEM_freeN(mem);
|
||||
cu->len += tmplen;
|
||||
@ -686,7 +686,7 @@ void do_textedit(unsigned short event, short val, unsigned long _ascii)
|
||||
if(cu->len+filelen<MAXTEXT) {
|
||||
int tmplen;
|
||||
wchar_t *mem = MEM_callocN((sizeof(wchar_t)*filelen)+(4*sizeof(wchar_t)), "temporary");
|
||||
tmplen = utf8towchar_(mem, strp);
|
||||
tmplen = utf8towchar(mem, strp);
|
||||
wcscat(textbuf, mem);
|
||||
MEM_freeN(mem);
|
||||
cu->len += tmplen;
|
||||
@ -969,7 +969,7 @@ void paste_unicodeText(char *filename)
|
||||
{
|
||||
int tmplen;
|
||||
wchar_t *mem = MEM_callocN((sizeof(wchar_t)*filelen)+(4*sizeof(wchar_t)), "temporary");
|
||||
tmplen = utf8towchar_(mem, strp);
|
||||
tmplen = utf8towchar(mem, strp);
|
||||
// mem =utf8s2wc(strp);
|
||||
wcscat(textbuf, mem);
|
||||
MEM_freeN(mem);
|
||||
@ -1033,7 +1033,7 @@ void paste_editText(void)
|
||||
if(cu->len+filelen<MAXTEXT) {
|
||||
int tmplen;
|
||||
wchar_t *mem = MEM_callocN((sizeof(wchar_t) * filelen) + (4 * sizeof(wchar_t)), "temporary");
|
||||
tmplen = utf8towchar_(mem, strp);
|
||||
tmplen = utf8towchar(mem, strp);
|
||||
wcscat(textbuf, mem);
|
||||
MEM_freeN(mem);
|
||||
cu->len += tmplen;
|
||||
@ -1064,7 +1064,7 @@ void make_editText(void)
|
||||
if(oldstr==NULL) oldstr= MEM_callocN((MAXTEXT+4)*sizeof(wchar_t), "oldstrbuf");
|
||||
|
||||
// Convert the original text to wchar_t
|
||||
utf8towchar_(textbuf, cu->str);
|
||||
utf8towchar(textbuf, cu->str);
|
||||
wcscpy(oldstr, textbuf);
|
||||
|
||||
cu->len= wcslen(textbuf);
|
||||
|
@ -2032,15 +2032,17 @@ IpoCurve *verify_ipocurve(ID *from, short blocktype, char *actname, char *constn
|
||||
#define BEZT_INSERT_THRESH 0.00001
|
||||
|
||||
/* Binary search algorithm for finding where to insert BezTriple. (for use by insert_bezt_icu)
|
||||
* Returns the index to insert before, OR the -(index + 1) to replace.
|
||||
* Caller will need to decrement index if > 0 to add to right place (and avoid segfaults)
|
||||
* Returns the index to insert at (data already at that index will be offset if replace is 0)
|
||||
*/
|
||||
static int binarysearch_bezt_index (BezTriple array[], BezTriple *item, int arraylen)
|
||||
static int binarysearch_bezt_index (BezTriple array[], BezTriple *item, int arraylen, short *replace)
|
||||
{
|
||||
int start=0, end=arraylen;
|
||||
int loopbreaker= 0, maxloop= arraylen * 2;
|
||||
const float frame= (item)? item->vec[1][0] : 0.0f;
|
||||
|
||||
/* initialise replace-flag first */
|
||||
*replace= 0;
|
||||
|
||||
/* sneaky optimisations (don't go through searching process if...):
|
||||
* - keyframe to be added is to be added out of current bounds
|
||||
* - keyframe to be added would replace one of the existing ones on bounds
|
||||
@ -2053,17 +2055,21 @@ static int binarysearch_bezt_index (BezTriple array[], BezTriple *item, int arra
|
||||
/* check whether to add before/after/on */
|
||||
float framenum;
|
||||
|
||||
/* 'First' Keyframe */
|
||||
/* 'First' Keyframe (when only one keyframe, this case is used) */
|
||||
framenum= array[0].vec[1][0];
|
||||
if (IS_EQT(frame, framenum, BEZT_INSERT_THRESH))
|
||||
return -1;
|
||||
if (IS_EQT(frame, framenum, BEZT_INSERT_THRESH)) {
|
||||
*replace = 1;
|
||||
return 0;
|
||||
}
|
||||
else if (frame < framenum)
|
||||
return 0;
|
||||
|
||||
/* 'Last' Keyframe */
|
||||
framenum= array[(arraylen-1)].vec[1][0];
|
||||
if (IS_EQT(frame, framenum, BEZT_INSERT_THRESH))
|
||||
return -(arraylen);
|
||||
if (IS_EQT(frame, framenum, BEZT_INSERT_THRESH)) {
|
||||
*replace= 1;
|
||||
return (arraylen - 1);
|
||||
}
|
||||
else if (frame > framenum)
|
||||
return arraylen;
|
||||
}
|
||||
@ -2078,8 +2084,10 @@ static int binarysearch_bezt_index (BezTriple array[], BezTriple *item, int arra
|
||||
float midfra= array[mid].vec[1][0];
|
||||
|
||||
/* check if exactly equal to midpoint */
|
||||
if (IS_EQT(frame, midfra, BEZT_INSERT_THRESH))
|
||||
return -(mid + 1);
|
||||
if (IS_EQT(frame, midfra, BEZT_INSERT_THRESH)) {
|
||||
*replace = 1;
|
||||
return mid;
|
||||
}
|
||||
|
||||
/* repeat in upper/lower half */
|
||||
if (frame > midfra)
|
||||
@ -2118,19 +2126,17 @@ int insert_bezt_icu (IpoCurve *icu, BezTriple *bezt)
|
||||
icu->totvert= 1;
|
||||
}
|
||||
else {
|
||||
i = binarysearch_bezt_index(icu->bezt, bezt, icu->totvert);
|
||||
|
||||
if (i < 0) {
|
||||
/* replace existing item (need to 'invert' i first and decremement by 1) */
|
||||
i = -i - 1;
|
||||
short replace = -1;
|
||||
i = binarysearch_bezt_index(icu->bezt, bezt, icu->totvert, &replace);
|
||||
|
||||
if (replace) {
|
||||
/* sanity check: 'i' may in rare cases exceed arraylen */
|
||||
if (i < icu->totvert)
|
||||
if ((i >= 0) && (i < icu->totvert))
|
||||
*(icu->bezt + i) = *bezt;
|
||||
}
|
||||
else {
|
||||
/* add new */
|
||||
newb= MEM_callocN( (icu->totvert+1)*sizeof(BezTriple), "beztriple");
|
||||
newb= MEM_callocN((icu->totvert+1)*sizeof(BezTriple), "beztriple");
|
||||
|
||||
/* add the beztriples that should occur before the beztriple to be pasted (originally in ei->icu) */
|
||||
if (i > 0)
|
||||
|
@ -907,15 +907,15 @@ void apply_obmat(Object *ob)
|
||||
Mat3CpyMat4(mat, ob->obmat);
|
||||
|
||||
VECCOPY(ob->loc, ob->obmat[3]);
|
||||
|
||||
if(ob->transflag & OB_QUAT) {
|
||||
/* Quats arnt used yet */
|
||||
/*if(ob->transflag & OB_QUAT) {
|
||||
Mat3ToQuat(mat, ob->quat);
|
||||
QuatToMat3(ob->quat, tmat);
|
||||
}
|
||||
else {
|
||||
else {*/
|
||||
Mat3ToEul(mat, ob->rot);
|
||||
EulToMat3(ob->rot, tmat);
|
||||
}
|
||||
/*}*/
|
||||
Mat3Inv(imat, tmat);
|
||||
|
||||
Mat3MulMat3(tmat, imat, mat);
|
||||
@ -1050,8 +1050,8 @@ void clear_object(char mode)
|
||||
/* quats here are not really used anymore anywhere, so it probably doesn't
|
||||
* matter to not clear them whether the euler-based rotation is used
|
||||
*/
|
||||
QuatOne(ob->quat);
|
||||
QuatOne(ob->dquat);
|
||||
/*QuatOne(ob->quat);
|
||||
QuatOne(ob->dquat);*/
|
||||
|
||||
#ifdef WITH_VERSE
|
||||
if(ob->vnode) {
|
||||
@ -3422,8 +3422,9 @@ void copy_attr(short event)
|
||||
else if(event==2) { /* rot */
|
||||
VECCOPY(base->object->rot, ob->rot);
|
||||
VECCOPY(base->object->drot, ob->drot);
|
||||
VECCOPY(base->object->quat, ob->quat);
|
||||
VECCOPY(base->object->dquat, ob->dquat);
|
||||
/* Quats arnt used yet */
|
||||
/*VECCOPY(base->object->quat, ob->quat);
|
||||
VECCOPY(base->object->dquat, ob->dquat);*/
|
||||
}
|
||||
else if(event==3) { /* size */
|
||||
VECCOPY(base->object->size, ob->size);
|
||||
@ -3534,32 +3535,6 @@ void copy_attr(short event)
|
||||
base->object->recalc |= OB_RECALC_DATA;
|
||||
}
|
||||
}
|
||||
else if(event==20) { /* particle settings */
|
||||
PartEff *pa1, *pa2;
|
||||
char *p1, *p2;
|
||||
|
||||
pa1= give_parteff(ob);
|
||||
pa2= give_parteff(base->object);
|
||||
|
||||
if(pa1==0 && pa2) {
|
||||
BLI_remlink( &(base->object->effect), pa2);
|
||||
free_effect( (Effect *) pa2);
|
||||
}
|
||||
else if(pa1 && pa2==0) {
|
||||
free_effects(&(base->object->effect));
|
||||
copy_effects(&(base->object->effect), &ob->effect);
|
||||
build_particle_system(base->object);
|
||||
}
|
||||
else if(pa1 && pa2) {
|
||||
if(pa2->keys) MEM_freeN(pa2->keys);
|
||||
|
||||
p1= (char *)pa1; p2= (char *)pa2;
|
||||
memcpy( p2+8, p1+8, sizeof(PartEff) - 8);
|
||||
pa2->keys= 0;
|
||||
|
||||
build_particle_system(base->object);
|
||||
}
|
||||
}
|
||||
else if(event==21){
|
||||
if (base->object->type==OB_MESH) {
|
||||
ModifierData *md = modifiers_findByType(ob, eModifierType_Subsurf);
|
||||
@ -3690,8 +3665,6 @@ void copy_attr_menu()
|
||||
strcat(str, "|Subsurf Settings%x21|AutoSmooth%x27");
|
||||
}
|
||||
|
||||
if( give_parteff(ob) ) strcat(str, "|Particle Settings%x20");
|
||||
|
||||
if(ob->soft) strcat(str, "|Soft Body Settings%x23");
|
||||
|
||||
strcat(str, "|Pass Index%x30");
|
||||
@ -3896,7 +3869,7 @@ void make_links(short event)
|
||||
void apply_objects_locrot( void )
|
||||
{
|
||||
Base *base, *basact;
|
||||
Object *ob;
|
||||
Object *ob, *ob_child;
|
||||
bArmature *arm;
|
||||
Mesh *me;
|
||||
Curve *cu;
|
||||
@ -3907,6 +3880,7 @@ void apply_objects_locrot( void )
|
||||
float mat[3][3];
|
||||
int a, change = 0;
|
||||
|
||||
|
||||
/* first check if we can execute */
|
||||
for (base= FIRSTBASE; base; base= base->next) {
|
||||
if TESTBASELIB(base) {
|
||||
@ -3965,7 +3939,7 @@ void apply_objects_locrot( void )
|
||||
}
|
||||
ob->size[0]= ob->size[1]= ob->size[2]= 1.0;
|
||||
ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0;
|
||||
QuatOne(ob->quat);
|
||||
/*QuatOne(ob->quat);*/ /* Quats arnt used yet */
|
||||
|
||||
where_is_object(ob);
|
||||
|
||||
@ -3988,7 +3962,7 @@ void apply_objects_locrot( void )
|
||||
/* Reset the object's transforms */
|
||||
ob->size[0]= ob->size[1]= ob->size[2]= 1.0;
|
||||
ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0;
|
||||
QuatOne(ob->quat);
|
||||
/*QuatOne(ob->quat); (not used anymore)*/
|
||||
|
||||
where_is_object(ob);
|
||||
|
||||
@ -4028,7 +4002,7 @@ void apply_objects_locrot( void )
|
||||
|
||||
ob->size[0]= ob->size[1]= ob->size[2]= 1.0;
|
||||
ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0;
|
||||
QuatOne(ob->quat);
|
||||
/*QuatOne(ob->quat); (quats arnt used anymore)*/
|
||||
|
||||
where_is_object(ob);
|
||||
|
||||
@ -4040,6 +4014,17 @@ void apply_objects_locrot( void )
|
||||
BASACT= basact;
|
||||
|
||||
change = 1;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
/* a change was made, adjust the children to compensate */
|
||||
for (ob_child=G.main->object.first; ob_child; ob_child=ob_child->id.next) {
|
||||
if (ob_child->parent == ob) {
|
||||
apply_obmat(ob_child);
|
||||
what_does_parent(ob_child);
|
||||
Mat4Invert(ob_child->parentinv, workob.obmat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1589,7 +1589,7 @@ void mainwindow_set_filename_to_title(char *filename)
|
||||
char dir[FILE_MAXDIR];
|
||||
char file[FILE_MAXFILE];
|
||||
|
||||
BLI_split_dirfile(filename, dir, file);
|
||||
BLI_split_dirfile_basic(filename, dir, file);
|
||||
|
||||
if(BLI_streq(file, ".B.blend") || filename[0] =='\0')
|
||||
sprintf(str, "Blender");
|
||||
|
@ -100,6 +100,7 @@ enum {
|
||||
|
||||
enum {
|
||||
ACTMENU_SEL_BORDER = 0,
|
||||
ACTMENU_SEL_BORDERC,
|
||||
ACTMENU_SEL_BORDERM,
|
||||
ACTMENU_SEL_ALL_KEYS,
|
||||
ACTMENU_SEL_ALL_CHAN,
|
||||
@ -136,7 +137,8 @@ enum {
|
||||
enum {
|
||||
ACTMENU_CHANNELS_GROUP_ADD_TOACTIVE = 0,
|
||||
ACTMENU_CHANNELS_GROUP_ADD_TONEW,
|
||||
ACTMENU_CHANNELS_GROUP_REMOVE
|
||||
ACTMENU_CHANNELS_GROUP_REMOVE,
|
||||
ACTMENU_CHANNELS_GROUP_SYNCPOSE
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -346,7 +348,7 @@ static void do_action_viewmenu(void *arg, int event)
|
||||
G.saction->flag ^= SACTION_HORIZOPTIMISEON;
|
||||
break;
|
||||
case ACTMENU_VIEW_GCOLORS: /* Draw grouped-action channels using its group's color */
|
||||
G.saction->flag ^= SACTION_DRAWGCOLORS;
|
||||
G.saction->flag ^= SACTION_NODRAWGCOLORS;
|
||||
break;
|
||||
}
|
||||
allqueue(REDRAWVIEW3D, 0);
|
||||
@ -394,7 +396,7 @@ static uiBlock *action_viewmenu(void *arg_unused)
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 1,
|
||||
ACTMENU_VIEW_NOHIDE, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, (G.saction->flag & SACTION_DRAWGCOLORS)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT,
|
||||
uiDefIconTextBut(block, BUTM, 1, (G.saction->flag & SACTION_NODRAWGCOLORS)?ICON_CHECKBOX_DEHLT:ICON_CHECKBOX_HLT,
|
||||
"Use Group Colors|", 0, yco-=20,
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 1,
|
||||
ACTMENU_VIEW_GCOLORS, "");
|
||||
@ -549,6 +551,10 @@ static void do_action_selectmenu(void *arg, int event)
|
||||
borderselect_action();
|
||||
break;
|
||||
|
||||
case ACTMENU_SEL_BORDERC: /* Border Select */
|
||||
borderselect_actionchannels();
|
||||
break;
|
||||
|
||||
case ACTMENU_SEL_BORDERM: /* Border Select */
|
||||
borderselect_markers();
|
||||
break;
|
||||
@ -622,6 +628,10 @@ static uiBlock *action_selectmenu(void *arg_unused)
|
||||
"Border Select Keys|B", 0, yco-=20,
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 0,
|
||||
ACTMENU_SEL_BORDER, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
|
||||
"Border Select Channels|B", 0, yco-=20,
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 0,
|
||||
ACTMENU_SEL_BORDERC, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
|
||||
"Border Select Markers|Ctrl B", 0, yco-=20,
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 0,
|
||||
@ -762,6 +772,9 @@ static void do_action_channelmenu_groupmenu(void *arg, int event)
|
||||
case ACTMENU_CHANNELS_GROUP_REMOVE:
|
||||
action_groups_ungroup();
|
||||
break;
|
||||
case ACTMENU_CHANNELS_GROUP_SYNCPOSE: /* Syncronise Pose-data and Action-data */
|
||||
sync_pchan2achan_grouping();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -791,6 +804,14 @@ static uiBlock *action_channelmenu_groupmenu(void *arg_unused)
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 0,
|
||||
ACTMENU_CHANNELS_GROUP_REMOVE, "");
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6,
|
||||
menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
|
||||
"Synchronise with Armature", 0, yco-=20,
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 0,
|
||||
ACTMENU_CHANNELS_GROUP_SYNCPOSE, "");
|
||||
|
||||
uiBlockSetDirection(block, UI_RIGHT);
|
||||
uiTextBoundsBlock(block, 60);
|
||||
|
||||
|
@ -1286,7 +1286,7 @@ void image_buttons(void)
|
||||
}
|
||||
if(ibuf) {
|
||||
if(ibuf->zbuf || ibuf->zbuf_float || (ibuf->channels==1)) {
|
||||
uiDefIconButBitI(block, TOG, SI_SHOW_ZBUF, B_SIMA_SHOW_ZBUF, ICON_SOLID, xco,0,XIC,YIC, &G.sima->flag, 0, 0, 0, 0, "Draws zbuffer values");
|
||||
uiDefIconButBitI(block, TOG, SI_SHOW_ZBUF, B_SIMA_SHOW_ZBUF, ICON_SOLID, xco,0,XIC,YIC, &G.sima->flag, 0, 0, 0, 0, "Draws zbuffer values (mapped from camera clip start to end)");
|
||||
xco+= XIC;
|
||||
}
|
||||
}
|
||||
|
@ -2213,11 +2213,6 @@ static uiBlock *view3d_edit_object_copyattrmenu(void *arg_unused)
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Subsurf Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 21, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Modifiers ...|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 24, "");
|
||||
}
|
||||
|
||||
if( give_parteff(ob) ) {
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Particle Settings|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 20, "");
|
||||
}
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Object Pass Index|Ctrl C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 30, "");
|
||||
}
|
||||
|
||||
|
@ -164,7 +164,7 @@ int join_mesh(void)
|
||||
/* count & check */
|
||||
base= FIRSTBASE;
|
||||
while(base) {
|
||||
if TESTBASELIB(base) {
|
||||
if TESTBASELIB_BGMODE(base) { /* BGMODE since python can access */
|
||||
if(base->object->type==OB_MESH) {
|
||||
me= base->object->data;
|
||||
totvert+= me->totvert;
|
||||
@ -200,7 +200,7 @@ int join_mesh(void)
|
||||
|
||||
/* if needed add edges to other meshes */
|
||||
for(base= FIRSTBASE; base; base= base->next) {
|
||||
if TESTBASELIB(base) {
|
||||
if TESTBASELIB_BGMODE(base) {
|
||||
if(base->object->type==OB_MESH) {
|
||||
me= base->object->data;
|
||||
totedge += me->totedge;
|
||||
@ -221,7 +221,7 @@ int join_mesh(void)
|
||||
|
||||
base= FIRSTBASE;
|
||||
while(base) {
|
||||
if TESTBASELIB(base) {
|
||||
if TESTBASELIB_BGMODE(base) {
|
||||
if(ob!=base->object && base->object->type==OB_MESH) {
|
||||
me= base->object->data;
|
||||
|
||||
@ -288,7 +288,7 @@ int join_mesh(void)
|
||||
base= FIRSTBASE;
|
||||
while(base) {
|
||||
nextb= base->next;
|
||||
if TESTBASELIB(base) {
|
||||
if TESTBASELIB_BGMODE(base) {
|
||||
if(base->object->type==OB_MESH) {
|
||||
|
||||
me= base->object->data;
|
||||
|
@ -830,15 +830,16 @@ static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *i
|
||||
IpoCurve *icu;
|
||||
Object *lastadded= NULL;
|
||||
|
||||
for(icu= ipo->curve.first; icu; icu= icu->next) {
|
||||
if(icu->driver && icu->driver->ob) {
|
||||
if(lastadded!=icu->driver->ob) {
|
||||
for (icu= ipo->curve.first; icu; icu= icu->next) {
|
||||
if (icu->driver && icu->driver->ob) {
|
||||
if (lastadded != icu->driver->ob) {
|
||||
outliner_add_element(soops, &te->subtree, icu->driver->ob, te, TSE_LINKED_OB, 0);
|
||||
lastadded= icu->driver->ob;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ID_AC:
|
||||
{
|
||||
bAction *act= (bAction *)id;
|
||||
|
@ -374,8 +374,9 @@ void poselib_add_current_pose (Object *ob, int val)
|
||||
/* check if available */
|
||||
if ((pchan->bone) && (arm->layer & pchan->bone->layer)) {
|
||||
if (pchan->bone->flag & (BONE_SELECTED|BONE_ACTIVE)) {
|
||||
/* make action-channel if needed */
|
||||
/* make action-channel if needed (action groups are also created) */
|
||||
achan= verify_action_channel(act, pchan->name);
|
||||
verify_pchan2achan_grouping(act, pose, pchan->name);
|
||||
|
||||
/* make ipo if needed... */
|
||||
if (achan->ipo == NULL)
|
||||
|
@ -742,6 +742,8 @@ int blenderqread(unsigned short event, short val)
|
||||
}
|
||||
}
|
||||
else if(G.qual&LR_CTRLKEY && G.qual&LR_SHIFTKEY){
|
||||
if(!(G.f & G_PARTICLEEDIT))
|
||||
exit_paint_modes();
|
||||
PE_set_particle_edit();
|
||||
}
|
||||
break;
|
||||
|
@ -3188,7 +3188,7 @@ void autokeyframe_ob_cb_func(Object *ob, int tmode)
|
||||
actname= "Object";
|
||||
|
||||
if (IS_AUTOKEY_FLAG(INSERTAVAIL)) {
|
||||
if (ob->ipo || ob->action) {
|
||||
if ((ob->ipo) || (ob->action)) {
|
||||
ID *id= (ID *)(ob);
|
||||
|
||||
if (ob->ipo) {
|
||||
@ -3215,6 +3215,7 @@ void autokeyframe_ob_cb_func(Object *ob, int tmode)
|
||||
}
|
||||
}
|
||||
else if (IS_AUTOKEY_FLAG(INSERTNEEDED)) {
|
||||
ID *id= (ID *)(ob);
|
||||
short doLoc=0, doRot=0, doScale=0;
|
||||
|
||||
/* filter the conditions when this happens (assume that curarea->spacetype==SPACE_VIE3D) */
|
||||
@ -3245,33 +3246,35 @@ void autokeyframe_ob_cb_func(Object *ob, int tmode)
|
||||
}
|
||||
|
||||
if (doLoc) {
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_LOC_X);
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_LOC_Y);
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_LOC_Z);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_LOC_X);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_LOC_Y);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_LOC_Z);
|
||||
}
|
||||
if (doRot) {
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_ROT_X);
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_ROT_Y);
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_ROT_Z);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_ROT_X);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_ROT_Y);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_ROT_Z);
|
||||
}
|
||||
if (doScale) {
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_SIZE_X);
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_SIZE_Y);
|
||||
insertkey_smarter(&ob->id, ID_OB, actname, NULL, OB_SIZE_Z);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_SIZE_X);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_SIZE_Y);
|
||||
insertkey_smarter(id, ID_OB, actname, NULL, OB_SIZE_Z);
|
||||
}
|
||||
}
|
||||
else {
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_LOC_X, 0);
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_LOC_Y, 0);
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_LOC_Z, 0);
|
||||
ID *id= (ID *)(ob);
|
||||
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_ROT_X, 0);
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_ROT_Y, 0);
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_ROT_Z, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_LOC_X, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_LOC_Y, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_LOC_Z, 0);
|
||||
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_SIZE_X, 0);
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_SIZE_Y, 0);
|
||||
insertkey(&ob->id, ID_OB, actname, NULL, OB_SIZE_Z, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_ROT_X, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_ROT_Y, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_ROT_Z, 0);
|
||||
|
||||
insertkey(id, ID_OB, actname, NULL, OB_SIZE_X, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_SIZE_Y, 0);
|
||||
insertkey(id, ID_OB, actname, NULL, OB_SIZE_Z, 0);
|
||||
}
|
||||
|
||||
remake_object_ipos(ob);
|
||||
@ -3286,6 +3289,7 @@ void autokeyframe_ob_cb_func(Object *ob, int tmode)
|
||||
*/
|
||||
void autokeyframe_pose_cb_func(Object *ob, int tmode, short targetless_ik)
|
||||
{
|
||||
ID *id= (ID *)(ob);
|
||||
bArmature *arm= ob->data;
|
||||
bAction *act;
|
||||
bPose *pose;
|
||||
@ -3348,36 +3352,36 @@ void autokeyframe_pose_cb_func(Object *ob, int tmode, short targetless_ik)
|
||||
}
|
||||
|
||||
if (doLoc) {
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_LOC_X);
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_LOC_Y);
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_LOC_Z);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_LOC_X);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_LOC_Y);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_LOC_Z);
|
||||
}
|
||||
if (doRot) {
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_W);
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_X);
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_Y);
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_Z);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_QUAT_W);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_QUAT_X);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_QUAT_Y);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_QUAT_Z);
|
||||
}
|
||||
if (doScale) {
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_SIZE_X);
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_SIZE_Y);
|
||||
insertkey_smarter(&ob->id, ID_PO, pchan->name, NULL, AC_SIZE_Z);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_SIZE_X);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_SIZE_Y);
|
||||
insertkey_smarter(id, ID_PO, pchan->name, NULL, AC_SIZE_Z);
|
||||
}
|
||||
}
|
||||
/* insert keyframe in any channel that's appropriate */
|
||||
else {
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_SIZE_X, 0);
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_SIZE_Y, 0);
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_SIZE_Z, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_SIZE_X, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_SIZE_Y, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_SIZE_Z, 0);
|
||||
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_W, 0);
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_X, 0);
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_Y, 0);
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_QUAT_Z, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_QUAT_W, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_QUAT_X, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_QUAT_Y, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_QUAT_Z, 0);
|
||||
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_LOC_X, 0);
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_LOC_Y, 0);
|
||||
insertkey(&ob->id, ID_PO, pchan->name, NULL, AC_LOC_Z, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_LOC_X, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_LOC_Y, 0);
|
||||
insertkey(id, ID_PO, pchan->name, NULL, AC_LOC_Z, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -782,7 +782,7 @@ static void readBlog(void)
|
||||
fsmenu_append_separator();
|
||||
|
||||
/* add last saved file */
|
||||
BLI_split_dirfile(G.sce, name, filename); /* G.sce shouldn't be relative */
|
||||
BLI_split_dirfile_basic(G.sce, name, filename); /* G.sce shouldn't be relative */
|
||||
|
||||
fsmenu_insert_entry(name, 0, 0);
|
||||
|
||||
|
@ -1529,11 +1529,12 @@ void setcameratoview3d(void)
|
||||
VECCOPY(ob->loc, dvec);
|
||||
VecSubf(ob->loc, ob->loc, G.vd->ofs);
|
||||
G.vd->viewquat[0]= -G.vd->viewquat[0];
|
||||
if (ob->transflag & OB_QUAT) {
|
||||
/* */
|
||||
/*if (ob->transflag & OB_QUAT) {
|
||||
QUATCOPY(ob->quat, G.vd->viewquat);
|
||||
} else {
|
||||
} else {*/
|
||||
QuatToEul(G.vd->viewquat, ob->rot);
|
||||
}
|
||||
/*}*/
|
||||
G.vd->viewquat[0]= -G.vd->viewquat[0];
|
||||
}
|
||||
|
||||
|
@ -172,18 +172,14 @@ IF(WIN32)
|
||||
POST_BUILD
|
||||
MAIN_DEPENDENCY blender
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avcodec-51.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avformat-51.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avformat-52.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avdevice-52.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\avutil-49.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libdts.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaac.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaad.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libgsm.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaac-0.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libfaad-0.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libmp3lame-0.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libogg-0.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libvorbis-0.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libvorbisenc-2.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libx264-54.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\postproc-51.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\libx264-59.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\swscale-0.dll\" \"$\(TargetDir\)\\\"
|
||||
COMMAND copy /Y \"${WIN_LIBDIR}\\ffmpeg\\lib\\xvidcore.dll\" \"$\(TargetDir\)\\\"
|
||||
)
|
||||
ENDIF(WITH_FFMPEG)
|
||||
|
@ -263,8 +263,6 @@ static void main_init_screen( void )
|
||||
if(G.main->scene.first==0) {
|
||||
set_scene( add_scene("1") );
|
||||
}
|
||||
|
||||
screenmain();
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
@ -816,6 +814,8 @@ int main(int argc, char **argv)
|
||||
main_init_screen();
|
||||
}
|
||||
|
||||
screenmain(); /* main display loop */
|
||||
|
||||
return 0;
|
||||
} /* end of int main(argc,argv) */
|
||||
|
||||
|
@ -46,6 +46,15 @@ public:
|
||||
SCA_IActuator(SCA_IObject* gameobj,
|
||||
PyTypeObject* T =&Type);
|
||||
|
||||
/**
|
||||
* UnlinkObject(...)
|
||||
* Certain actuator use gameobject pointers (like TractTo actuator)
|
||||
* This function can be called when an object is removed to make
|
||||
* sure that the actuator will not use it anymore.
|
||||
*/
|
||||
|
||||
virtual bool UnlinkObject(SCA_IObject* clientobj) { return false; }
|
||||
|
||||
/**
|
||||
* Update(...)
|
||||
* Update the actuator based upon the events received since
|
||||
|
@ -62,6 +62,10 @@ SCA_IObject::~SCA_IObject()
|
||||
((CValue*)(*itc))->Release();
|
||||
}
|
||||
SCA_ActuatorList::iterator ita;
|
||||
for (ita = m_registeredActuators.begin(); !(ita==m_registeredActuators.end()); ++ita)
|
||||
{
|
||||
(*ita)->UnlinkObject(this);
|
||||
}
|
||||
for (ita = m_actuators.begin(); !(ita==m_actuators.end()); ++ita)
|
||||
{
|
||||
((CValue*)(*ita))->Release();
|
||||
@ -118,7 +122,24 @@ void SCA_IObject::AddActuator(SCA_IActuator* act)
|
||||
m_actuators.push_back(act);
|
||||
}
|
||||
|
||||
void SCA_IObject::RegisterActuator(SCA_IActuator* act)
|
||||
{
|
||||
// don't increase ref count, it would create dead lock
|
||||
m_registeredActuators.push_back(act);
|
||||
}
|
||||
|
||||
void SCA_IObject::UnregisterActuator(SCA_IActuator* act)
|
||||
{
|
||||
SCA_ActuatorList::iterator ita;
|
||||
for (ita = m_registeredActuators.begin(); ita != m_registeredActuators.end(); ita++)
|
||||
{
|
||||
if ((*ita) == act) {
|
||||
(*ita) = m_registeredActuators.back();
|
||||
m_registeredActuators.pop_back();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SCA_IObject::SetIgnoreActivityCulling(bool b)
|
||||
{
|
||||
@ -168,6 +189,8 @@ void SCA_IObject::ReParentLogic()
|
||||
newactuator->SetActive(false);
|
||||
oldactuators[act++] = newactuator;
|
||||
}
|
||||
// a new object cannot be client of any actuator
|
||||
m_registeredActuators.clear();
|
||||
|
||||
}
|
||||
|
||||
|
@ -55,6 +55,7 @@ protected:
|
||||
SCA_SensorList m_sensors;
|
||||
SCA_ControllerList m_controllers;
|
||||
SCA_ActuatorList m_actuators;
|
||||
SCA_ActuatorList m_registeredActuators; // actuators that use a pointer to this object
|
||||
static class MT_Point3 m_sDummy;
|
||||
|
||||
/**
|
||||
@ -79,6 +80,8 @@ public:
|
||||
void AddSensor(SCA_ISensor* act);
|
||||
void AddController(SCA_IController* act);
|
||||
void AddActuator(SCA_IActuator* act);
|
||||
void RegisterActuator(SCA_IActuator* act);
|
||||
void UnregisterActuator(SCA_IActuator* act);
|
||||
|
||||
SCA_ISensor* FindSensor(const STR_String& sensorname);
|
||||
SCA_IActuator* FindActuator(const STR_String& actuatorname);
|
||||
|
@ -174,6 +174,14 @@ void SCA_LogicManager::RemoveSensor(SCA_ISensor* sensor)
|
||||
}
|
||||
}
|
||||
|
||||
void SCA_LogicManager::RemoveController(SCA_IController* controller)
|
||||
{
|
||||
std::map<SCA_ISensor*,controllerlist>::iterator sit;
|
||||
for (sit = m_sensorcontrollermapje.begin();!(sit==m_sensorcontrollermapje.end());++sit)
|
||||
{
|
||||
(*sit).second.remove(controller);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void SCA_LogicManager::RemoveDestroyedActuator(SCA_IActuator* actuator)
|
||||
|
@ -315,7 +315,6 @@ void KX_GameObject::ApplyRotation(const MT_Vector3& drot,bool local)
|
||||
GetSGNode()->RelativeRotate(rotmat,local);
|
||||
|
||||
if (m_pPhysicsController1) { // (IsDynamic())
|
||||
rotmat.transpose();
|
||||
m_pPhysicsController1->RelativeRotate(rotmat,local);
|
||||
}
|
||||
}
|
||||
|
@ -754,6 +754,7 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
|
||||
{
|
||||
(*itc)->UnlinkAllSensors();
|
||||
(*itc)->UnlinkAllActuators();
|
||||
m_logicmgr->RemoveController(*itc);
|
||||
}
|
||||
|
||||
SCA_ActuatorList& actuators = newobj->GetActuators();
|
||||
|
@ -70,6 +70,7 @@ KX_TrackToActuator::KX_TrackToActuator(SCA_IObject *gameobj,
|
||||
m_parentobj = 0;
|
||||
|
||||
if (m_object){
|
||||
m_object->RegisterActuator(this);
|
||||
KX_GameObject* curobj = (KX_GameObject*) GetParent();
|
||||
|
||||
m_parentobj = curobj->GetParent(); // check if the object is parented
|
||||
@ -177,11 +178,30 @@ MT_Matrix3x3 matrix3x3_interpol(MT_Matrix3x3 oldmat, MT_Matrix3x3 mat, int m_tim
|
||||
|
||||
KX_TrackToActuator::~KX_TrackToActuator()
|
||||
{
|
||||
// there's nothing to be done here, really....
|
||||
if (m_object)
|
||||
m_object->UnregisterActuator(this);
|
||||
} /* end of destructor */
|
||||
|
||||
void KX_TrackToActuator::ProcessReplica()
|
||||
{
|
||||
// the replica is tracking the same object => register it
|
||||
if (m_object)
|
||||
m_object->RegisterActuator(this);
|
||||
SCA_IActuator::ProcessReplica();
|
||||
}
|
||||
|
||||
|
||||
bool KX_TrackToActuator::UnlinkObject(SCA_IObject* clientobj)
|
||||
{
|
||||
if (clientobj == m_object)
|
||||
{
|
||||
// this object is being deleted, we cannot continue to track it.
|
||||
m_object = NULL;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool KX_TrackToActuator::Update(double curtime, bool frame)
|
||||
{
|
||||
bool result = false;
|
||||
@ -430,8 +450,11 @@ PyObject* KX_TrackToActuator::PySetObject(PyObject* self, PyObject* args, PyObje
|
||||
PyObject* gameobj;
|
||||
if (PyArg_ParseTuple(args, "O!", &KX_GameObject::Type, &gameobj))
|
||||
{
|
||||
if (m_object != NULL)
|
||||
m_object->UnregisterActuator(this);
|
||||
m_object = (SCA_IObject*)gameobj;
|
||||
|
||||
if (m_object)
|
||||
m_object->RegisterActuator(this);
|
||||
Py_Return;
|
||||
}
|
||||
PyErr_Clear();
|
||||
@ -439,8 +462,11 @@ PyObject* KX_TrackToActuator::PySetObject(PyObject* self, PyObject* args, PyObje
|
||||
char* objectname;
|
||||
if (PyArg_ParseTuple(args, "s", &objectname))
|
||||
{
|
||||
if (m_object != NULL)
|
||||
m_object->UnregisterActuator(this);
|
||||
m_object= static_cast<SCA_IObject*>(SCA_ILogicBrick::m_sCurrentLogicManager->GetGameObjectByName(STR_String(objectname)));
|
||||
|
||||
if (m_object)
|
||||
m_object->RegisterActuator(this);
|
||||
Py_Return;
|
||||
}
|
||||
|
||||
|
@ -66,6 +66,8 @@ class KX_TrackToActuator : public SCA_IActuator
|
||||
return replica;
|
||||
};
|
||||
|
||||
virtual void ProcessReplica();
|
||||
virtual bool UnlinkObject(SCA_IObject* clientobj);
|
||||
virtual bool Update(double curtime, bool frame);
|
||||
|
||||
/* Python part */
|
||||
|
@ -290,9 +290,9 @@ void CcdPhysicsController::RelativeRotate(const float rotval[9],bool local)
|
||||
m_body->setCollisionFlags(m_body->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
|
||||
}
|
||||
|
||||
btMatrix3x3 drotmat( rotval[0],rotval[1],rotval[2],
|
||||
rotval[4],rotval[5],rotval[6],
|
||||
rotval[8],rotval[9],rotval[10]);
|
||||
btMatrix3x3 drotmat( rotval[0],rotval[4],rotval[8],
|
||||
rotval[1],rotval[5],rotval[9],
|
||||
rotval[2],rotval[6],rotval[10]);
|
||||
|
||||
|
||||
btMatrix3x3 currentOrn;
|
||||
|
@ -4,6 +4,7 @@
|
||||
class SM_Callback {
|
||||
public:
|
||||
virtual void do_me() = 0;
|
||||
virtual ~SM_Callback() {}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -2,7 +2,10 @@
|
||||
import os
|
||||
import os.path
|
||||
import SCons.Options
|
||||
import SCons.Options.BoolOption
|
||||
try:
|
||||
import SCons.Options.BoolOption
|
||||
except ImportError:
|
||||
pass
|
||||
try:
|
||||
import subprocess
|
||||
except ImportError:
|
||||
@ -31,7 +34,7 @@ def validate_arguments(args, bc):
|
||||
'WITH_BF_FMOD',
|
||||
'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH',
|
||||
'WITH_BF_DDS',
|
||||
'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB', 'BF_FFMPEG', 'BF_FFMPEG_INC',
|
||||
'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG', 'BF_FFMPEG_INC',
|
||||
'WITH_BF_JPEG', 'BF_JPEG', 'BF_JPEG_INC', 'BF_JPEG_LIB', 'BF_JPEG_LIBPATH',
|
||||
'WITH_BF_PNG', 'BF_PNG', 'BF_PNG_INC', 'BF_PNG_LIB', 'BF_PNG_LIBPATH',
|
||||
'BF_TIFF', 'BF_TIFF_INC',
|
||||
@ -66,7 +69,7 @@ def validate_arguments(args, bc):
|
||||
arg_list = ['BF_DEBUG', 'BF_QUIET', 'BF_CROSS', 'BF_UPDATE',
|
||||
'BF_INSTALLDIR', 'BF_TOOLSET', 'BF_BINNAME',
|
||||
'BF_BUILDDIR', 'BF_FANCY', 'BF_QUICK', 'BF_PROFILE',
|
||||
'BF_DEBUG_FLAGS', 'BF_BSC',
|
||||
'BF_DEBUG_FLAGS', 'BF_BSC', 'BF_CONFIG',
|
||||
'BF_PRIORITYLIST', 'BF_BUILDINFO','CC', 'CXX', "BF_QUICKDEBUG", "BF_LISTDEBUG", 'LCGDIR']
|
||||
|
||||
all_list = opts_list + arg_list
|
||||
@ -174,6 +177,7 @@ def read_opts(cfg, args):
|
||||
(BoolOption('WITH_BF_FFMPEG', 'Use FFMPEG if true', 'false')),
|
||||
('BF_FFMPEG', 'FFMPEG base path', ''),
|
||||
('BF_FFMPEG_LIB', 'FFMPEG library', ''),
|
||||
('BF_FFMPEG_EXTRA', 'FFMPEG flags that must be preserved', ''),
|
||||
|
||||
('BF_FFMPEG_INC', 'FFMPEG includes', ''),
|
||||
('BF_FFMPEG_LIBPATH', 'FFMPEG library path', ''),
|
||||
|
Loading…
Reference in New Issue
Block a user