forked from bartvdbraak/blender
Merge from 2.5 r21160 through r21285
This commit is contained in:
commit
87a7dd3773
@ -61,7 +61,7 @@ MACRO(SETUP_LIBLINKS
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS} ")
|
||||
#TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${PYTHON_LIB} ${PYTHON_LINKFLAGS} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB} ${SDL_LIB} ${LLIBS})
|
||||
|
||||
TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${PYTHON_LINKFLAGS} ${JPEG_LIB} ${PNG_LIB} ${ZLIB_LIB} ${SDL_LIB} ${LLIBS})
|
||||
TARGET_LINK_LIBRARIES(${target} ${OPENGL_gl_LIBRARY} ${OPENGL_glu_LIBRARY} ${PYTHON_LINKFLAGS} ${JPEG_LIBRARY} ${PNG_LIBRARIES} ${ZLIB_LIBRARIES} ${SDL_LIB} ${LLIBS})
|
||||
|
||||
# since we are using the local libs for python when compiling msvc projects, we need to add _d when compiling debug versions
|
||||
|
||||
|
@ -89,7 +89,7 @@ INCLUDE(CMake/macros.cmake)
|
||||
|
||||
IF(UNIX)
|
||||
IF(WITH_OPENAL)
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/FindOpenAL.cmake)
|
||||
FIND_PACKAGE(OpenAL)
|
||||
IF(OPENAL_FOUND)
|
||||
SET(WITH_OPENAL ON)
|
||||
SET(OPENAL_LIB ${OPENAL_LIBRARY})
|
||||
@ -102,22 +102,12 @@ IF(UNIX)
|
||||
FIND_LIBRARY(INTL_LIBRARY
|
||||
NAMES intl
|
||||
PATHS
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
/sw/lib
|
||||
/opt/local/lib
|
||||
/opt/csw/lib
|
||||
/opt/lib
|
||||
)
|
||||
FIND_LIBRARY(ICONV_LIBRARY
|
||||
NAMES iconv
|
||||
PATHS
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
/sw/lib
|
||||
/opt/local/lib
|
||||
/opt/csw/lib
|
||||
/opt/lib
|
||||
)
|
||||
IF(INTL_LIBRARY AND ICONV_LIBRARY)
|
||||
SET(GETTEXT_LIB ${INTL_LIBRARY} ${ICONV_LIBRARY})
|
||||
@ -136,14 +126,14 @@ IF(UNIX)
|
||||
)
|
||||
SET(FREETYPE_LIB freetype)
|
||||
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/FindPythonLibs.cmake)
|
||||
FIND_PACKAGE(PythonLibs)
|
||||
SET(PYTHON_INC "${PYTHON_INCLUDE_PATH}" CACHE STRING "")
|
||||
SET(PYTHON_LIB "${PYTHON_LIBRARIES}" CACHE STRING "")
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/FindPythonInterp.cmake)
|
||||
FIND_PACKAGE(PythonInterp)
|
||||
SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
|
||||
SET(PYTHON_LINKFLAGS "-Xlinker -export-dynamic")
|
||||
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/FindSDL.cmake)
|
||||
FIND_PACKAGE(SDL)
|
||||
SET(SDL_INC ${SDL_INCLUDE_DIR})
|
||||
SET(SDL_LIB ${SDL_LIBRARY})
|
||||
|
||||
@ -164,11 +154,11 @@ IF(UNIX)
|
||||
SET(FFMPEG_LIB avformat avcodec avutil avdevice swscale)
|
||||
SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
|
||||
|
||||
SET(JPEG_LIB jpeg)
|
||||
FIND_PACKAGE(JPEG REQUIRED)
|
||||
|
||||
SET(PNG_LIB png)
|
||||
FIND_PACKAGE(PNG REQUIRED)
|
||||
|
||||
SET(ZLIB_LIB z)
|
||||
FIND_PACKAGE(ZLIB REQUIRED)
|
||||
|
||||
SET(LLIBS "-lXi -lutil -lc -lm -lpthread -lstdc++ -lX11 -ldl")
|
||||
|
||||
@ -186,12 +176,13 @@ IF(UNIX)
|
||||
# Better warnings
|
||||
SET(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wnested-externs -Wdeclaration-after-statement")
|
||||
|
||||
INCLUDE_DIRECTORIES(/usr/include /usr/local/include)
|
||||
INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR} ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
|
||||
ENDIF(UNIX)
|
||||
|
||||
IF(WIN32)
|
||||
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
|
||||
# this file is included anyway when building under Windows with cl.exe
|
||||
# INCLUDE(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
|
||||
|
||||
SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
|
||||
|
||||
@ -202,10 +193,10 @@ IF(WIN32)
|
||||
ENDIF(CMAKE_CL_64)
|
||||
|
||||
SET(PYTHON ${LIBDIR}/python)
|
||||
SET(PYTHON_VERSION 2.5)
|
||||
SET(PYTHON_VERSION 2.6)
|
||||
SET(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}")
|
||||
SET(PYTHON_BINARY python)
|
||||
SET(PYTHON_LIB python25)
|
||||
SET(PYTHON_LIB python26)
|
||||
SET(PYTHON_LIBPATH ${PYTHON}/lib)
|
||||
|
||||
IF(CMAKE_CL_64)
|
||||
@ -219,15 +210,15 @@ IF(WIN32)
|
||||
ENDIF(CMAKE_CL_64)
|
||||
|
||||
IF(CMAKE_CL_64)
|
||||
SET(PNG_LIB libpng)
|
||||
SET(PNG_LIBRARIES libpng)
|
||||
ELSE(CMAKE_CL_64)
|
||||
SET(PNG_LIB libpng_st)
|
||||
SET(PNG_LIBRARIES libpng_st)
|
||||
ENDIF(CMAKE_CL_64)
|
||||
SET(JPEG_LIB libjpeg)
|
||||
SET(JPEG_LIBRARY libjpeg)
|
||||
|
||||
SET(ZLIB ${LIBDIR}/zlib)
|
||||
SET(ZLIB_INC ${ZLIB}/include)
|
||||
SET(ZLIB_LIB libz)
|
||||
SET(ZLIB_LIBRARIES zlib)
|
||||
SET(ZLIB_LIBPATH ${ZLIB}/lib)
|
||||
|
||||
SET(PTHREADS ${LIBDIR}/pthreads)
|
||||
@ -335,7 +326,7 @@ IF(APPLE)
|
||||
ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES i386)
|
||||
|
||||
IF(WITH_OPENAL)
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/FindOpenAL.cmake)
|
||||
FIND_PACKAGE(OpenAL)
|
||||
IF(OPENAL_FOUND)
|
||||
SET(WITH_OPENAL ON)
|
||||
SET(OPENAL_LIB ${OPENAL_LIBRARY})
|
||||
@ -362,12 +353,12 @@ IF(APPLE)
|
||||
SET(GETTEXT_LIB intl iconv)
|
||||
SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
|
||||
|
||||
SET(PNG_LIB png)
|
||||
SET(JPEG_LIB jpeg)
|
||||
SET(PNG_LIBRARIES png)
|
||||
SET(JPEG_LIBRARY jpeg)
|
||||
|
||||
SET(ZLIB /usr)
|
||||
SET(ZLIB_INC "${ZLIB}/include")
|
||||
SET(ZLIB_LIB z)
|
||||
SET(ZLIB_LIBRARIES z)
|
||||
|
||||
SET(FREETYPE ${LIBDIR}/freetype)
|
||||
SET(FREETYPE_INC ${FREETYPE}/include ${FREETYPE}/include/freetype2)
|
||||
@ -438,7 +429,7 @@ ENDIF(WITH_WEBPLUGIN)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Configure OpenGL.
|
||||
INCLUDE(${CMAKE_ROOT}/Modules/FindOpenGL.cmake)
|
||||
FIND_PACKAGE(OpenGL)
|
||||
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
|
||||
#-----------------------------------------------------------------------------
|
||||
# Extra compile flags
|
||||
|
@ -559,7 +559,8 @@ STR_String& STR_String::TrimLeft()
|
||||
{
|
||||
int skip;
|
||||
assertd(pData != NULL);
|
||||
for (skip=0; isSpace(pData[skip]); skip++, Len--);
|
||||
for (skip=0; isSpace(pData[skip]); skip++, Len--)
|
||||
{};
|
||||
memmove(pData, pData+skip, Len+1);
|
||||
return *this;
|
||||
}
|
||||
@ -598,7 +599,8 @@ STR_String& STR_String::TrimLeft(char *set)
|
||||
{
|
||||
int skip;
|
||||
assertd(pData != NULL);
|
||||
for (skip=0; Len && strchr(set, pData[skip]); skip++, Len--);
|
||||
for (skip=0; Len && strchr(set, pData[skip]); skip++, Len--)
|
||||
{};
|
||||
memmove(pData, pData+skip, Len+1);
|
||||
return *this;
|
||||
}
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -120,7 +120,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -197,7 +197,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -274,7 +274,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\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\makesrna;..\..\..\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;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -73,12 +73,12 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python25.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python26.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
|
||||
ShowProgress="0"
|
||||
OutputFile="..\..\..\install\msvc_9\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\lib25_vs2008;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_9\libs\intern;..\..\..\build\msvc_9\libs\extern;..\..\..\lib\windows\ffmpeg\lib"
|
||||
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\lib26_vs2008;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_9\libs\intern;..\..\..\build\msvc_9\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"
|
||||
GenerateDebugInformation="true"
|
||||
@ -107,7 +107,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\blender.lib ..\..\..\build\msvc_9\libs
MOVE /Y ..\..\bin\blender.exp ..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\python\lib\lib25_vs2008\python25.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9\.blender MKDIR ..\..\..\install\msvc_9\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9\.blender\scripts MKDIR ..\..\..\install\msvc_9\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\bin\.blender\ui MKDIR ..\..\..\install\msvc_9\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9 /E
ECHO Done
"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\blender.lib ..\..\..\build\msvc_9\libs
MOVE /Y ..\..\bin\blender.exp ..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\python\lib\lib26_vs2008\python26.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9\.blender MKDIR ..\..\..\install\msvc_9\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9\.blender\scripts MKDIR ..\..\..\install\msvc_9\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\bin\.blender\ui MKDIR ..\..\..\install\msvc_9\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9 /E
ECHO Done
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -168,12 +168,12 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386
"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib avcodec-52.lib avformat-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib"
|
||||
AdditionalDependencies="SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python26_d.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib avcodec-52.lib avformat-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib"
|
||||
ShowProgress="0"
|
||||
OutputFile="..\..\..\install\msvc_9d\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\lib25_vs2008;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\lib\windows\ffmpeg\lib;..\..\..\build\msvc_9\libs\intern\debug;..\..\..\build\msvc_9\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\lib26_vs2008;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\lib\windows\ffmpeg\lib;..\..\..\build\msvc_9\libs\intern\debug;..\..\..\build\msvc_9\libs\extern\debug"
|
||||
IgnoreDefaultLibraryNames="libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, odbc32.lib, odbccp32.lib"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="..\..\..\build\msvc_9\libs\debug\blender.pdb"
|
||||
@ -201,7 +201,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\debug\blender.lib ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.exp ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.ilk ..\..\..\build\msvc_9\libs\debug
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\python\lib\lib25_vs2008\python25_d.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9d
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9d\.blender MKDIR ..\..\..\install\msvc_9d\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9d\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\scripts MKDIR ..\..\..\install\msvc_9d\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9d\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\ui MKDIR ..\..\..\install\msvc_9d\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9d\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9d /E
ECHO Done
"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\debug\blender.lib ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.exp ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.ilk ..\..\..\build\msvc_9\libs\debug
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\python\lib\lib26_vs2008\python26_d.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9d
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9d\.blender MKDIR ..\..\..\install\msvc_9d\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9d\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\scripts MKDIR ..\..\..\install\msvc_9d\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9d\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\ui MKDIR ..\..\..\install\msvc_9d\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9d\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9d /E
ECHO Done
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_OPENEXR;WITH_DDS;WITH_BULLET;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -193,7 +193,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -268,7 +268,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -343,7 +343,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -418,7 +418,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_FFMPEG"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -652,7 +652,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\blender\blenlib\intern\BLI_fileops.h"
|
||||
RelativePath="..\..\..\source\blender\blenlib\BLI_fileops.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\blenkey\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\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\editors\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\windowmanager;..\..\..\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_9\extern\verse\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\blenkey\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\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\editors\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\windowmanager;..\..\..\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_9\extern\verse\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;_CONSOLE;GAMEBLENDER=1;WITH_QUICKTIME;INTERNATIONAL;WITH_FREETYPE2;WITH_INTERNATIONAL;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\blenkey\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\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\editors\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\windowmanager;..\..\..\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_9\extern\verse\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\QTDevWin\CIncludes;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\blenkey\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\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\editors\include;..\..\..\source\blender\renderui;..\..\..\source\blender\blenloader;..\..\..\source\blender\quicktime;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\windowmanager;..\..\..\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_9\extern\verse\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;_CONSOLE;GAMEBLENDER=1;WITH_QUICKTIME;INTERNATIONAL;WITH_BF_INTERNATIONAL;WITH_FREETYPE2;WITH_OPENEXR;WITH_DDS;WITH_BULLET = 1;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -762,6 +762,10 @@
|
||||
RelativePath="..\..\..\source\blender\editors\space_file\file_ops.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\blender\editors\space_file\file_panels.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\blender\editors\space_file\filelist.c"
|
||||
>
|
||||
@ -795,11 +799,11 @@
|
||||
Name="space_info"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\..\source\blender\editors\space_info\info_header.c"
|
||||
RelativePath="..\..\..\source\blender\editors\space_info\info_intern.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\blender\editors\space_info\info_intern.h"
|
||||
RelativePath="..\..\..\source\blender\editors\space_info\info_ops.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
|
@ -138,7 +138,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\editors\include;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\windowmanager"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\windowmanager"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -114,7 +114,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
|
||||
MinimalRebuild="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -42,7 +42,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -112,7 +112,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="0"
|
||||
@ -182,7 +182,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_OPENEXR"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -252,7 +252,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\zlib\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\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_9\extern\verse\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_OPENEXR"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont"
|
||||
PreprocessorDefinitions="WIN32;_LIB;_DEBUG;WITH_GLEXT;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -119,7 +119,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;WITH_FFMPEG"
|
||||
StringPooling="true"
|
||||
BasicRuntimeChecks="0"
|
||||
|
@ -42,7 +42,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -117,7 +117,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,USE_SUMO_SOLID"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -193,7 +193,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -268,7 +268,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,USE_SUMO_SOLID"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -344,7 +344,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -419,7 +419,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\ode;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\gameengine\soundsystem\snd_blenderwavecache;..\..\..\source\sumo\include;..\..\..\source\sumo\Fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,USE_SUMO_SOLID"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
PreprocessorDefinitions="WIN32,_LIB,EXP_PYTHON_EMBEDDING,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -193,7 +193,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -268,7 +268,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -343,7 +343,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -418,7 +418,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\SceneGraph;..\..\..\source\blender\blenloader"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -193,7 +193,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -268,7 +268,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="WIN32,_LIB,EXP_PYTHON_EMBEDDING,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -343,7 +343,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -418,7 +418,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Rasterizer;..\..\..\source\blender\makesdna;..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,EXP_PYTHON_EMBEDDING"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -53,7 +53,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\include;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\GamePlayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\include;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\GamePlayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include"
|
||||
PreprocessorDefinitions="_DEBUG, _MT, _DLL,WIN32"
|
||||
IgnoreStandardIncludePath="false"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -162,7 +162,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\include;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\GamePlayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\include;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\GamePlayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
|
@ -42,7 +42,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -117,7 +117,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -191,7 +191,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -265,7 +265,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\lib\windows\zlib\include;..\..\..\..\..\lib\windows\png\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\Converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\GamePlayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\soundsystem\snd_dummy;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\Physics\Sumo;..\..\..\..\source\gameengine\Physics\common;..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -44,7 +44,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="WIN32,_CONSOLE,dSINGLE, _DEBUG;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -137,7 +137,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE;WITH_FFMPEG"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -42,7 +42,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -193,7 +193,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -269,7 +269,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -345,7 +345,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -421,7 +421,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -193,7 +193,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -268,7 +268,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -343,7 +343,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -418,7 +418,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Network;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\GameLogic;..\..\..\..\source\gameengine\Scenegraph"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -42,7 +42,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -110,7 +110,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="0"
|
||||
UsePrecompiledHeader="0"
|
||||
@ -176,7 +176,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="0"
|
||||
UsePrecompiledHeader="0"
|
||||
@ -243,7 +243,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -312,7 +312,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -380,7 +380,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna;..\..\..\..\..\source\blender\blenkernel;..\..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
|
@ -43,7 +43,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -193,7 +193,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -268,7 +268,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -343,7 +343,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -418,7 +418,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python2.6;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -42,7 +42,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\GameLogic;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\Rasterizer;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\gpu;..\..\..\source\kernel\gen_system;..\..\..\intern\string;..\..\..\intern\moto\include;..\..\..\intern\guardedalloc;..\..\..\intern\SoundSystem;..\..\..\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\GameLogic;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\Rasterizer;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\gpu;..\..\..\source\kernel\gen_system;..\..\..\intern\string;..\..\..\intern\moto\include;..\..\..\intern\guardedalloc;..\..\..\intern\SoundSystem;..\..\..\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;WITH_FFMPEG;__STDC_CONSTANT_MACROS"
|
||||
StringPooling="false"
|
||||
BasicRuntimeChecks="3"
|
||||
@ -113,7 +113,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\GameLogic;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\Rasterizer;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\gpu;..\..\..\source\kernel\gen_system;..\..\..\intern\string;..\..\..\intern\moto\include;..\..\..\intern\guardedalloc;..\..\..\intern\SoundSystem;..\..\..\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\python\include\python2.6;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\gameengine\Ketsji;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\GameLogic;..\..\..\source\gameengine\SceneGraph;..\..\..\source\gameengine\Rasterizer;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\BlenderRoutines;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\gpu;..\..\..\source\kernel\gen_system;..\..\..\intern\string;..\..\..\intern\moto\include;..\..\..\intern\guardedalloc;..\..\..\intern\SoundSystem;..\..\..\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;WITH_FFMPEG;__STDC_CONSTANT_MACROS"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -42,7 +42,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -117,7 +117,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
|
@ -74,6 +74,18 @@ class DATA_PT_materials(DataButtonsPanel):
|
||||
row.itemO("OBJECT_OT_material_slot_select", text="Select");
|
||||
row.itemO("OBJECT_OT_material_slot_deselect", text="Deselect");
|
||||
|
||||
layout.itemS()
|
||||
|
||||
box= layout.box()
|
||||
|
||||
row = box.row()
|
||||
row.template_list(ob, "materials", "active_material_index", compact=True)
|
||||
|
||||
subrow = row.row(align=True)
|
||||
subrow.itemO("OBJECT_OT_material_slot_add", icon="ICON_ZOOMIN", text="")
|
||||
subrow.itemO("OBJECT_OT_material_slot_remove", icon="ICON_ZOOMOUT", text="")
|
||||
|
||||
|
||||
bpy.types.register(DATA_PT_mesh)
|
||||
bpy.types.register(DATA_PT_materials)
|
||||
|
||||
|
@ -23,68 +23,68 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
|
||||
if box:
|
||||
if md.type == 'ARMATURE':
|
||||
self.armature(box, md)
|
||||
self.armature(box, ob, md)
|
||||
if md.type == 'ARRAY':
|
||||
self.array(box, md)
|
||||
self.array(box, ob, md)
|
||||
if md.type == 'BEVEL':
|
||||
self.bevel(box, md)
|
||||
self.bevel(box, ob, md)
|
||||
if md.type == 'BOOLEAN':
|
||||
self.boolean(box, md)
|
||||
self.boolean(box, ob, md)
|
||||
if md.type == 'BUILD':
|
||||
self.build(box, md)
|
||||
self.build(box, ob, md)
|
||||
if md.type == 'CAST':
|
||||
self.cast(box, md)
|
||||
self.cast(box, ob, md)
|
||||
if md.type == 'CLOTH':
|
||||
self.cloth(box, md)
|
||||
self.cloth(box, ob, md)
|
||||
if md.type == 'COLLISION':
|
||||
self.collision(box, md)
|
||||
self.collision(box, ob, md)
|
||||
if md.type == 'CURVE':
|
||||
self.curve(box, md)
|
||||
self.curve(box, ob, md)
|
||||
if md.type == 'DECIMATE':
|
||||
self.decimate(box, md)
|
||||
self.decimate(box, ob, md)
|
||||
if md.type == 'DISPLACE':
|
||||
self.displace(box, md)
|
||||
self.displace(box, ob, md)
|
||||
if md.type == 'EDGE_SPLIT':
|
||||
self.edgesplit(box, md)
|
||||
self.edgesplit(box, ob, md)
|
||||
if md.type == 'EXPLODE':
|
||||
self.explode(box, md)
|
||||
self.explode(box, ob, md)
|
||||
if md.type == 'FLUID_SIMULATION':
|
||||
self.fluid(box, md)
|
||||
self.fluid(box, ob, md)
|
||||
if md.type == 'HOOK':
|
||||
self.hook(box, md)
|
||||
self.hook(box, ob, md)
|
||||
if md.type == 'LATTICE':
|
||||
self.lattice(box, md)
|
||||
self.lattice(box, ob, md)
|
||||
if md.type == 'MASK':
|
||||
self.mask(box, md)
|
||||
self.mask(box, ob, md)
|
||||
if md.type == 'MESH_DEFORM':
|
||||
self.mesh_deform(box, md)
|
||||
self.mesh_deform(box, ob, md)
|
||||
if md.type == 'MIRROR':
|
||||
self.mirror(box, md)
|
||||
self.mirror(box, ob, md)
|
||||
if md.type == 'MULTIRES':
|
||||
self.multires(box, md)
|
||||
self.multires(box, ob, md)
|
||||
if md.type == 'PARTICLE_INSTANCE':
|
||||
self.particleinstance(box, md)
|
||||
self.particleinstance(box, ob, md)
|
||||
if md.type == 'PARTICLE_SYSTEM':
|
||||
self.particlesystem(box, md)
|
||||
self.particlesystem(box, ob, md)
|
||||
if md.type == 'SHRINKWRAP':
|
||||
self.shrinkwrap(box, md)
|
||||
self.shrinkwrap(box, ob, md)
|
||||
if md.type == 'SIMPLE_DEFORM':
|
||||
self.simpledeform(box, md)
|
||||
self.simpledeform(box, ob, md)
|
||||
if md.type == 'SMOOTH':
|
||||
self.smooth(box, md)
|
||||
self.smooth(box, ob, md)
|
||||
if md.type == 'SOFTBODY':
|
||||
self.softbody(box, md)
|
||||
self.softbody(box, ob, md)
|
||||
if md.type == 'SUBSURF':
|
||||
self.subsurf(box, md)
|
||||
self.subsurf(box, ob, md)
|
||||
if md.type == 'UV_PROJECT':
|
||||
self.uvproject(box, md)
|
||||
self.uvproject(box, ob, md)
|
||||
if md.type == 'WAVE':
|
||||
self.wave(box, md)
|
||||
self.wave(box, ob, md)
|
||||
|
||||
def armature(self, layout, md):
|
||||
def armature(self, layout, ob, md):
|
||||
layout.itemR(md, "object")
|
||||
row = layout.row()
|
||||
row.itemR(md, "vertex_group")
|
||||
row.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
row.itemR(md, "invert")
|
||||
flow = layout.column_flow()
|
||||
flow.itemR(md, "use_vertex_groups", text="Vertex Groups")
|
||||
@ -92,7 +92,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
flow.itemR(md, "quaternion")
|
||||
flow.itemR(md, "multi_modifier")
|
||||
|
||||
def array(self, layout, md):
|
||||
def array(self, layout, ob, md):
|
||||
layout.itemR(md, "fit_type")
|
||||
if md.fit_type == 'FIXED_COUNT':
|
||||
layout.itemR(md, "count")
|
||||
@ -141,7 +141,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.itemR(md, "start_cap")
|
||||
col.itemR(md, "end_cap")
|
||||
|
||||
def bevel(self, layout, md):
|
||||
def bevel(self, layout, ob, md):
|
||||
row = layout.row()
|
||||
row.itemR(md, "width")
|
||||
row.itemR(md, "only_vertices")
|
||||
@ -156,11 +156,11 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
row = layout.row()
|
||||
row.itemR(md, "edge_weight_method", expand=True)
|
||||
|
||||
def boolean(self, layout, md):
|
||||
def boolean(self, layout, ob, md):
|
||||
layout.itemR(md, "operation")
|
||||
layout.itemR(md, "object")
|
||||
|
||||
def build(self, layout, md):
|
||||
def build(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
@ -175,7 +175,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
|
||||
|
||||
|
||||
def cast(self, layout, md):
|
||||
def cast(self, layout, ob, md):
|
||||
layout.itemR(md, "cast_type")
|
||||
col = layout.column_flow()
|
||||
col.itemR(md, "x")
|
||||
@ -184,26 +184,26 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.itemR(md, "factor")
|
||||
col.itemR(md, "radius")
|
||||
col.itemR(md, "size")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
#Missing: "OB" and "From Radius"
|
||||
|
||||
def cloth(self, layout, md):
|
||||
def cloth(self, layout, ob, md):
|
||||
layout.itemL(text="See Cloth panel.")
|
||||
|
||||
def collision(self, layout, md):
|
||||
def collision(self, layout, ob, md):
|
||||
layout.itemL(text="See Collision panel.")
|
||||
|
||||
def curve(self, layout, md):
|
||||
def curve(self, layout, ob, md):
|
||||
layout.itemR(md, "object")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "deform_axis")
|
||||
|
||||
def decimate(self, layout, md):
|
||||
def decimate(self, layout, ob, md):
|
||||
layout.itemR(md, "ratio")
|
||||
layout.itemR(md, "face_count")
|
||||
|
||||
def displace(self, layout, md):
|
||||
layout.itemR(md, "vertex_group")
|
||||
def displace(self, layout, ob, md):
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "texture")
|
||||
layout.itemR(md, "midlevel")
|
||||
layout.itemR(md, "strength")
|
||||
@ -211,10 +211,10 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
layout.itemR(md, "texture_coordinates")
|
||||
if md.texture_coordinates == 'OBJECT':
|
||||
layout.itemR(md, "texture_coordinate_object", text="Object")
|
||||
if md.texture_coordinates == 'UV':
|
||||
layout.itemR(md, "uv_layer")
|
||||
if md.texture_coordinates == 'UV' and ob.type == 'MESH':
|
||||
layout.item_pointerR(md, "uv_layer", ob.data, "uv_layers")
|
||||
|
||||
def edgesplit(self, layout, md):
|
||||
def edgesplit(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
@ -225,8 +225,8 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col = split.column()
|
||||
col.itemR(md, "use_sharp", text="Sharp Edges")
|
||||
|
||||
def explode(self, layout, md):
|
||||
layout.itemR(md, "vertex_group")
|
||||
def explode(self, layout, ob, md):
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "protect")
|
||||
layout.itemR(md, "split_edges")
|
||||
layout.itemR(md, "unborn")
|
||||
@ -234,31 +234,31 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
layout.itemR(md, "dead")
|
||||
# Missing: "Refresh" and "Clear Vertex Group" ?
|
||||
|
||||
def fluid(self, layout, md):
|
||||
def fluid(self, layout, ob, md):
|
||||
layout.itemL(text="See Fluidsim panel.")
|
||||
|
||||
def hook(self, layout, md):
|
||||
def hook(self, layout, ob, md):
|
||||
layout.itemR(md, "falloff")
|
||||
layout.itemR(md, "force", slider=True)
|
||||
layout.itemR(md, "object")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
# Missing: "Reset" and "Recenter"
|
||||
|
||||
def lattice(self, layout, md):
|
||||
def lattice(self, layout, ob, md):
|
||||
layout.itemR(md, "object")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
|
||||
def mask(self, layout, md):
|
||||
def mask(self, layout, ob, md):
|
||||
layout.itemR(md, "mode")
|
||||
if md.mode == 'ARMATURE':
|
||||
layout.itemR(md, "armature")
|
||||
if md.mode == 'VERTEX_GROUP':
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "inverse")
|
||||
|
||||
def mesh_deform(self, layout, md):
|
||||
def mesh_deform(self, layout, ob, md):
|
||||
layout.itemR(md, "object")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "invert")
|
||||
|
||||
layout.itemS()
|
||||
@ -267,7 +267,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
row.itemR(md, "precision")
|
||||
row.itemR(md, "dynamic")
|
||||
|
||||
def mirror(self, layout, md):
|
||||
def mirror(self, layout, ob, md):
|
||||
layout.itemR(md, "merge_limit")
|
||||
split = layout.split()
|
||||
|
||||
@ -285,12 +285,12 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
|
||||
layout.itemR(md, "mirror_object")
|
||||
|
||||
def multires(self, layout, md):
|
||||
def multires(self, layout, ob, md):
|
||||
layout.itemR(md, "subdivision_type")
|
||||
layout.itemO("OBJECT_OT_multires_subdivide", text="Subdivide")
|
||||
layout.itemR(md, "level")
|
||||
|
||||
def particleinstance(self, layout, md):
|
||||
def particleinstance(self, layout, ob, md):
|
||||
layout.itemR(md, "object")
|
||||
layout.itemR(md, "particle_system_number")
|
||||
|
||||
@ -302,12 +302,12 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.itemR(md, "alive")
|
||||
col.itemR(md, "dead")
|
||||
|
||||
def particlesystem(self, layout, md):
|
||||
def particlesystem(self, layout, ob, md):
|
||||
layout.itemL(text="See Particle panel.")
|
||||
|
||||
def shrinkwrap(self, layout, md):
|
||||
def shrinkwrap(self, layout, ob, md):
|
||||
layout.itemR(md, "target")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "offset")
|
||||
layout.itemR(md, "subsurf_levels")
|
||||
layout.itemR(md, "mode")
|
||||
@ -329,9 +329,9 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
layout.itemR(md, "keep_above_surface")
|
||||
# To-Do: Validate if structs
|
||||
|
||||
def simpledeform(self, layout, md):
|
||||
def simpledeform(self, layout, ob, md):
|
||||
layout.itemR(md, "mode")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "origin")
|
||||
layout.itemR(md, "relative")
|
||||
layout.itemR(md, "factor")
|
||||
@ -340,7 +340,7 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
layout.itemR(md, "lock_x_axis")
|
||||
layout.itemR(md, "lock_y_axis")
|
||||
|
||||
def smooth(self, layout, md):
|
||||
def smooth(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
sub = split.column()
|
||||
sub.itemR(md, "x")
|
||||
@ -350,12 +350,12 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
sub.itemR(md, "factor")
|
||||
sub.itemR(md, "repeat")
|
||||
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.template_pointer(md, "vertex_group", ob, "vertex_groups")
|
||||
|
||||
def softbody(self, layout, md):
|
||||
def softbody(self, layout, ob, md):
|
||||
layout.itemL(text="See Softbody panel.")
|
||||
|
||||
def subsurf(self, layout, md):
|
||||
def subsurf(self, layout, ob, md):
|
||||
layout.itemR(md, "subdivision_type")
|
||||
col = layout.column_flow()
|
||||
col.itemR(md, "levels", text="Preview")
|
||||
@ -363,16 +363,17 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.itemR(md, "optimal_draw", text="Optimal Display")
|
||||
col.itemR(md, "subsurf_uv")
|
||||
|
||||
def uvproject(self, layout, md):
|
||||
layout.itemR(md, "uv_layer")
|
||||
layout.itemR(md, "projectors")
|
||||
layout.itemR(md, "image")
|
||||
layout.itemR(md, "horizontal_aspect_ratio")
|
||||
layout.itemR(md, "vertical_aspect_ratio")
|
||||
layout.itemR(md, "override_image")
|
||||
#"Projectors" don't work.
|
||||
def uvproject(self, layout, ob, md):
|
||||
if ob.type == 'MESH':
|
||||
layout.item_pointerR(md, "uv_layer", ob.data, "uv_layers")
|
||||
layout.itemR(md, "projectors")
|
||||
layout.itemR(md, "image")
|
||||
layout.itemR(md, "horizontal_aspect_ratio")
|
||||
layout.itemR(md, "vertical_aspect_ratio")
|
||||
layout.itemR(md, "override_image")
|
||||
#"Projectors" don't work.
|
||||
|
||||
def wave(self, layout, md):
|
||||
def wave(self, layout, ob, md):
|
||||
split = layout.split()
|
||||
|
||||
sub = split.column()
|
||||
@ -398,11 +399,11 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.itemR(md, "start_position_y")
|
||||
|
||||
layout.itemR(md, "start_position_object")
|
||||
layout.itemR(md, "vertex_group")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "texture")
|
||||
layout.itemR(md, "texture_coordinates")
|
||||
if md.texture_coordinates == 'MAP_UV':
|
||||
layout.itemR(md, "uv_layer")
|
||||
if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH':
|
||||
layout.item_pointerR(md, "uv_layer", ob.data, "uv_layers")
|
||||
if md.texture_coordinates == 'OBJECT':
|
||||
layout.itemR(md, "texture_coordinates_object")
|
||||
|
||||
@ -412,4 +413,4 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col.itemR(md, "width", slider=True)
|
||||
col.itemR(md, "narrowness", slider=True)
|
||||
|
||||
bpy.types.register(DATA_PT_modifiers)
|
||||
bpy.types.register(DATA_PT_modifiers)
|
||||
|
@ -77,13 +77,14 @@ class ConstraintButtonsPanel(bpy.types.Panel):
|
||||
|
||||
if con.target and subtargets:
|
||||
if con.target.type == "ARMATURE":
|
||||
layout.itemR(con, "subtarget", text="Bone") # XXX autocomplete
|
||||
layout.item_pointerR(con, "subtarget", con.target.data, "bones", text="Bone")
|
||||
|
||||
row = layout.row()
|
||||
row.itemL(text="Head/Tail:")
|
||||
row.itemR(con, "head_tail", text="")
|
||||
if con.type == 'COPY_LOCATION':
|
||||
row = layout.row()
|
||||
row.itemL(text="Head/Tail:")
|
||||
row.itemR(con, "head_tail", text="")
|
||||
elif con.target.type in ("MESH", "LATTICE"):
|
||||
layout.itemR(con, "subtarget", text="Vertex Group") # XXX autocomplete
|
||||
layout.item_pointerR(con, "subtarget", con.target, "vertex_groups", text="Vertex Group")
|
||||
|
||||
def child_of(self, layout, con):
|
||||
self.target_template(layout, con)
|
||||
@ -528,20 +529,20 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel):
|
||||
class BONE_PT_constraints(ConstraintButtonsPanel):
|
||||
__idname__ = "BONE_PT_constraints"
|
||||
__label__ = "Bone Constraints"
|
||||
__context__ = "constraint"
|
||||
__context__ = "bone"
|
||||
|
||||
def poll(self, context):
|
||||
ob = context.object
|
||||
return (ob and ob.type == "ARMATURE")
|
||||
return (ob and ob.type == "ARMATURE" and context.bone)
|
||||
|
||||
def draw(self, context):
|
||||
ob = context.object
|
||||
pchan = ob.pose.pose_channels[0] # XXX
|
||||
pchan = ob.pose.pose_channels[context.bone.name]
|
||||
layout = self.layout
|
||||
|
||||
#row = layout.row()
|
||||
#row.item_menu_enumO("BONE_OT_constraint_add", "type")
|
||||
#row.itemL();
|
||||
row = layout.row()
|
||||
row.item_menu_enumO("OBJECT_OT_constraint_add", "type")
|
||||
row.itemL();
|
||||
|
||||
for con in pchan.constraints:
|
||||
self.draw_constraint(con)
|
||||
|
@ -43,7 +43,54 @@ class Physic_PT_cloth(PhysicButtonsPanel):
|
||||
col.itemR(cloth, "goal_spring", text="Stiffness")
|
||||
col.itemR(cloth, "goal_friction", text="Friction")
|
||||
"""
|
||||
|
||||
class PHYSICS_PT_cloth_cache(PhysicButtonsPanel):
|
||||
__idname__= "PHYSICS_PT_cloth_cache"
|
||||
__label__ = "Cache"
|
||||
__default_closed__ = True
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
cache = context.cloth.point_cache
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(cache, "name")
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(cache, "start_frame")
|
||||
row.itemR(cache, "end_frame")
|
||||
|
||||
row = layout.row()
|
||||
|
||||
if cache.baked == True:
|
||||
row.itemO("PTCACHE_OT_free_bake_cloth", text="Free Bake")
|
||||
else:
|
||||
row.item_booleanO("PTCACHE_OT_cache_cloth", "bake", True, text="Bake")
|
||||
|
||||
subrow = row.row()
|
||||
subrow.enabled = cache.frames_skipped or cache.outdated
|
||||
subrow.itemO("PTCACHE_OT_cache_cloth", text="Calculate to Current Frame")
|
||||
|
||||
row = layout.row()
|
||||
#row.enabled = particle_panel_enabled(psys)
|
||||
row.itemO("PTCACHE_OT_bake_from_cloth_cache", text="Current Cache to Bake")
|
||||
row.itemR(cache, "step");
|
||||
|
||||
row = layout.row()
|
||||
#row.enabled = particle_panel_enabled(psys)
|
||||
row.itemR(cache, "quick_cache")
|
||||
row.itemR(cache, "disk_cache")
|
||||
|
||||
layout.itemL(text=cache.info)
|
||||
|
||||
layout.itemS()
|
||||
|
||||
row = layout.row()
|
||||
row.itemO("PTCACHE_OT_bake_all", "bake", True, text="Bake All Dynamics")
|
||||
row.itemO("PTCACHE_OT_free_bake_all", text="Free All Bakes")
|
||||
layout.itemO("PTCACHE_OT_bake_all", text="Update All Dynamics to current frame")
|
||||
|
||||
class Physic_PT_cloth_collision(PhysicButtonsPanel):
|
||||
__idname__ = "Physic_PT_clothcollision"
|
||||
__label__ = "Cloth Collision"
|
||||
@ -102,5 +149,6 @@ class Physic_PT_cloth_stiffness(PhysicButtonsPanel):
|
||||
sub.itemR(cloth, "bending_stiffness_max", text="Max")
|
||||
|
||||
bpy.types.register(Physic_PT_cloth)
|
||||
bpy.types.register(PHYSICS_PT_cloth_cache)
|
||||
bpy.types.register(Physic_PT_cloth_collision)
|
||||
bpy.types.register(Physic_PT_cloth_stiffness)
|
@ -11,7 +11,7 @@ class Buttons_HT_header(bpy.types.Header):
|
||||
so = context.space_data
|
||||
scene = context.scene
|
||||
|
||||
layout.template_header(context)
|
||||
layout.template_header()
|
||||
|
||||
if context.area.show_menus:
|
||||
row = layout.row(align=True)
|
||||
|
65
release/ui/space_filebrowser.py
Normal file
65
release/ui/space_filebrowser.py
Normal file
@ -0,0 +1,65 @@
|
||||
|
||||
import bpy
|
||||
|
||||
|
||||
class FILEBROWSER_HT_header(bpy.types.Header):
|
||||
__space_type__ = "FILE_BROWSER"
|
||||
__idname__ = "FILEBROWSER_HT_header"
|
||||
|
||||
def draw(self, context):
|
||||
st = context.space_data
|
||||
layout = self.layout
|
||||
|
||||
params = st.params
|
||||
layout.template_header()
|
||||
|
||||
if context.area.show_menus:
|
||||
row = layout.row()
|
||||
row.itemM("FILEBROWSER_MT_directory")
|
||||
row.itemM("FILEBROWSER_MT_bookmarks")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemO("FILE_OT_parent", text="", icon='ICON_FILE_PARENT')
|
||||
row.itemO("FILE_OT_refresh", text="", icon='ICON_FILE_REFRESH')
|
||||
|
||||
layout.itemR(params, "display", expand=True, text="")
|
||||
layout.itemR(params, "sort", expand=True, text="")
|
||||
|
||||
layout.itemR(params, "hide_dot")
|
||||
layout.itemR(params, "do_filter")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemR(params, "filter_folder", text="");
|
||||
row.itemR(params, "filter_blender", text="");
|
||||
row.itemR(params, "filter_image", text="");
|
||||
row.itemR(params, "filter_movie", text="");
|
||||
row.itemR(params, "filter_script", text="");
|
||||
row.itemR(params, "filter_font", text="");
|
||||
row.itemR(params, "filter_sound", text="");
|
||||
row.itemR(params, "filter_text", text="");
|
||||
|
||||
row.active = params.do_filter
|
||||
|
||||
class FILEBROWSER_MT_directory(bpy.types.Menu):
|
||||
__space_type__ = "FILE_BROWSER"
|
||||
__label__ = "Directory"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("FILE_OT_refresh", text="Refresh", icon='ICON_FILE_REFRESH')
|
||||
layout.itemO("FILE_OT_parent", text="Parent", icon='ICON_FILE_PARENT')
|
||||
|
||||
class FILEBROWSER_MT_bookmarks(bpy.types.Menu):
|
||||
__space_type__ = "FILE_BROWSER"
|
||||
__label__ = "Bookmarks"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("FILE_OT_add_bookmark", text="Add current directory", icon='ICON_BOOKMARKS')
|
||||
|
||||
|
||||
bpy.types.register(FILEBROWSER_HT_header)
|
||||
bpy.types.register(FILEBROWSER_MT_directory)
|
||||
bpy.types.register(FILEBROWSER_MT_bookmarks)
|
@ -96,9 +96,9 @@ class IMAGE_MT_image(bpy.types.Menu):
|
||||
else:
|
||||
layout.itemO("IMAGE_OT_pack")
|
||||
|
||||
# only for dirty && specific image types : XXX poll?
|
||||
#if(ibuf && (ibuf->userflags & IB_BITMAPDIRTY))
|
||||
if False:
|
||||
# only for dirty && specific image types, perhaps
|
||||
# this could be done in operator poll too
|
||||
if ima.dirty:
|
||||
if ima.source in ("FILE", "GENERATED") and ima.type != "MULTILAYER":
|
||||
layout.item_booleanO("IMAGE_OT_pack", "as_png", True, text="Pack As PNG")
|
||||
|
||||
@ -215,8 +215,10 @@ class IMAGE_HT_header(bpy.types.Header):
|
||||
if show_uvedit:
|
||||
row.itemM("IMAGE_MT_select")
|
||||
|
||||
# XXX menuname= (ibuf && (ibuf->userflags & IB_BITMAPDIRTY))? "Image*": "Image";
|
||||
row.itemM("IMAGE_MT_image")
|
||||
if ima and ima.dirty:
|
||||
row.itemM("IMAGE_MT_image", text="Image*")
|
||||
else:
|
||||
row.itemM("IMAGE_MT_image", text="Image")
|
||||
|
||||
if show_uvedit:
|
||||
row.itemM("IMAGE_MT_uvs")
|
||||
@ -273,16 +275,8 @@ class IMAGE_HT_header(bpy.types.Header):
|
||||
row.itemR(settings, "snap_mode", text="")
|
||||
|
||||
"""
|
||||
/* uv layers */
|
||||
{
|
||||
Object *obedit= CTX_data_edit_object(C);
|
||||
char menustr[34*MAX_MTFACE];
|
||||
static int act;
|
||||
|
||||
image_menu_uvlayers(obedit, menustr, &act);
|
||||
|
||||
but = uiDefButI(block, MENU, B_NOP, menustr ,xco,yco,85,YIC, &act, 0, 0, 0, 0, "Active UV Layer for editing.");
|
||||
// uiButSetFunc(but, do_image_buttons_set_uvlayer_callback, &act, NULL);
|
||||
mesh = context.edit_object.data
|
||||
row.item_pointerR(mesh, "active_uv_layer", mesh, "uv_layers")
|
||||
"""
|
||||
|
||||
if ima:
|
||||
@ -352,6 +346,10 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
|
||||
__region_type__ = "UI"
|
||||
__label__ = "View Properties"
|
||||
|
||||
def poll(self, context):
|
||||
sima = context.space_data
|
||||
return (sima and (sima.image or sima.show_uvedit))
|
||||
|
||||
def draw(self, context):
|
||||
sima = context.space_data
|
||||
layout = self.layout
|
||||
@ -366,10 +364,12 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
|
||||
if ima:
|
||||
col.itemR(ima, "display_aspect")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(sima, "draw_repeated", text="Repeat")
|
||||
if show_uvedit:
|
||||
col.itemR(uvedit, "normalized_coordinates")
|
||||
col = split.column()
|
||||
col.itemR(sima, "draw_repeated", text="Repeat")
|
||||
if show_uvedit:
|
||||
col.itemR(uvedit, "normalized_coordinates", text="Normalized")
|
||||
elif show_uvedit:
|
||||
col.itemR(uvedit, "normalized_coordinates", text="Normalized")
|
||||
|
||||
if show_uvedit:
|
||||
col = layout.column()
|
||||
@ -385,21 +385,6 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
|
||||
#col.itemR(uvedit, "draw_edges")
|
||||
#col.itemR(uvedit, "draw_faces")
|
||||
|
||||
class IMAGE_PT_curves(bpy.types.Panel):
|
||||
__space_type__ = "IMAGE_EDITOR"
|
||||
__region_type__ = "UI"
|
||||
__label__ = "Curves"
|
||||
|
||||
def poll(self, context):
|
||||
sima = context.space_data
|
||||
return (sima and sima.image)
|
||||
|
||||
def draw(self, context):
|
||||
sima = context.space_data
|
||||
layout = self.layout
|
||||
|
||||
layout.template_curve_mapping(sima.curves)
|
||||
|
||||
bpy.types.register(IMAGE_MT_view)
|
||||
bpy.types.register(IMAGE_MT_select)
|
||||
bpy.types.register(IMAGE_MT_image)
|
||||
@ -411,5 +396,4 @@ bpy.types.register(IMAGE_MT_uvs)
|
||||
bpy.types.register(IMAGE_HT_header)
|
||||
bpy.types.register(IMAGE_PT_game_properties)
|
||||
bpy.types.register(IMAGE_PT_view_properties)
|
||||
#bpy.types.register(IMAGE_PT_curves)
|
||||
|
||||
|
119
release/ui/space_info.py
Normal file
119
release/ui/space_info.py
Normal file
@ -0,0 +1,119 @@
|
||||
|
||||
import bpy
|
||||
|
||||
class INFO_HT_header(bpy.types.Header):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__idname__ = "INFO_HT_header"
|
||||
|
||||
def draw(self, context):
|
||||
st = context.space_data
|
||||
layout = self.layout
|
||||
|
||||
layout.template_header()
|
||||
|
||||
if context.area.show_menus:
|
||||
row = layout.row()
|
||||
row.itemM("INFO_MT_file")
|
||||
row.itemM("INFO_MT_add")
|
||||
row.itemM("INFO_MT_timeline")
|
||||
row.itemM("INFO_MT_game")
|
||||
row.itemM("INFO_MT_render")
|
||||
row.itemM("INFO_MT_help")
|
||||
|
||||
layout.template_ID(context.window, "screen") #, new="SCREEN_OT_new", open="SCREEN_OT_unlink")
|
||||
layout.template_ID(context.screen, "scene") #, new="SCENE_OT_new", unlink="SCENE_OT_unlink")
|
||||
|
||||
layout.itemS()
|
||||
|
||||
layout.template_operator_search()
|
||||
layout.template_running_jobs()
|
||||
|
||||
class INFO_MT_file(bpy.types.Menu):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__label__ = "File"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_context = "EXEC_AREA"
|
||||
layout.itemO("WM_OT_read_homefile")
|
||||
layout.operator_context = "INVOKE_AREA"
|
||||
layout.itemO("WM_OT_open_mainfile")
|
||||
|
||||
layout.itemS()
|
||||
|
||||
layout.operator_context = "EXEC_AREA"
|
||||
layout.itemO("WM_OT_save_mainfile")
|
||||
layout.operator_context = "INVOKE_AREA"
|
||||
layout.itemO("WM_OT_save_as_mainfile")
|
||||
|
||||
layout.itemS()
|
||||
|
||||
layout.itemM("INFO_MT_file_external_data")
|
||||
|
||||
class INFO_MT_file_external_data(bpy.types.Menu):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__label__ = "External Data"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("FILE_OT_pack_all", text="Pack into .blend file")
|
||||
layout.itemO("FILE_OT_unpack_all", text="Unpack into Files...")
|
||||
|
||||
layout.itemS()
|
||||
|
||||
layout.itemO("FILE_OT_make_paths_relative")
|
||||
layout.itemO("FILE_OT_make_paths_absolute")
|
||||
layout.itemO("FILE_OT_report_missing_files")
|
||||
layout.itemO("FILE_OT_find_missing_files")
|
||||
|
||||
class INFO_MT_add(bpy.types.Menu):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__label__ = "Add"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.itemL(text="Nothing yet")
|
||||
|
||||
class INFO_MT_timeline(bpy.types.Menu):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__label__ = "Timeline"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.itemL(text="Nothing yet")
|
||||
|
||||
class INFO_MT_game(bpy.types.Menu):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__label__ = "Game"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.itemL(text="Nothing yet")
|
||||
|
||||
class INFO_MT_render(bpy.types.Menu):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__label__ = "Render"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.itemL(text="Nothing yet")
|
||||
|
||||
class INFO_MT_help(bpy.types.Menu):
|
||||
__space_type__ = "USER_PREFERENCES"
|
||||
__label__ = "Help"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.itemL(text="Nothing yet")
|
||||
|
||||
bpy.types.register(INFO_HT_header)
|
||||
bpy.types.register(INFO_MT_file)
|
||||
bpy.types.register(INFO_MT_file_external_data)
|
||||
bpy.types.register(INFO_MT_add)
|
||||
bpy.types.register(INFO_MT_timeline)
|
||||
bpy.types.register(INFO_MT_game)
|
||||
bpy.types.register(INFO_MT_render)
|
||||
bpy.types.register(INFO_MT_help)
|
||||
|
@ -29,7 +29,7 @@ class TEXT_HT_header(bpy.types.Header):
|
||||
row.itemR(st, "word_wrap", text="")
|
||||
row.itemR(st, "syntax_highlight", text="")
|
||||
|
||||
layout.template_ID(st, "text", new="TEXT_OT_new", open="TEXT_OT_open", unlink="TEXT_OT_unlink")
|
||||
layout.template_ID(st, "text", new="TEXT_OT_new", unlink="TEXT_OT_unlink")
|
||||
|
||||
if text:
|
||||
row = layout.row()
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "DNA_meshdata_types.h"
|
||||
#include "DNA_modifier_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BKE_collision.h"
|
||||
|
||||
@ -245,8 +246,8 @@ void bvhtree_update_from_cloth ( ClothModifierData *clmd, int moving );
|
||||
void bvhselftree_update_from_cloth ( ClothModifierData *clmd, int moving );
|
||||
|
||||
// needed for editmesh.c
|
||||
void cloth_write_cache ( Object *ob, ClothModifierData *clmd, float framenr );
|
||||
int cloth_read_cache ( Object *ob, ClothModifierData *clmd, float framenr );
|
||||
void cloth_write_cache( Object *ob, ClothModifierData *clmd, int framenr );
|
||||
int cloth_read_cache( Scene *scene, Object *ob, ClothModifierData *clmd, float framenr, int *old_framenr );
|
||||
|
||||
// needed for button_object.c
|
||||
void cloth_clear_cache ( Object *ob, ClothModifierData *clmd, float framenr );
|
||||
|
@ -31,31 +31,43 @@
|
||||
#ifndef BKE_PACKEDFILE_H
|
||||
#define BKE_PACKEDFILE_H
|
||||
|
||||
#define RET_OK 0
|
||||
#define RET_ERROR 1
|
||||
#define RET_OK 0
|
||||
#define RET_ERROR 1
|
||||
|
||||
struct PackedFile;
|
||||
struct VFont;
|
||||
struct bSample;
|
||||
struct bSound;
|
||||
struct Image;
|
||||
struct Main;
|
||||
struct PackedFile;
|
||||
struct ReportList;
|
||||
struct VFont;
|
||||
|
||||
struct PackedFile * newPackedFile(char * filename);
|
||||
struct PackedFile * newPackedFileMemory(void *mem, int memlen);
|
||||
/* pack */
|
||||
struct PackedFile *newPackedFile(struct ReportList *reports, char *filename);
|
||||
struct PackedFile *newPackedFileMemory(void *mem, int memlen);
|
||||
|
||||
void packAll(struct Main *bmain, struct ReportList *reports);
|
||||
|
||||
/* unpack */
|
||||
char *unpackFile(struct ReportList *reports, char *abs_name, char *local_name, struct PackedFile *pf, int how);
|
||||
int unpackVFont(struct ReportList *reports, struct VFont *vfont, int how);
|
||||
int unpackSample(struct ReportList *reports, struct bSample *sample, int how);
|
||||
int unpackImage(struct ReportList *reports, struct Image *ima, int how);
|
||||
void unpackAll(struct Main *bmain, struct ReportList *reports, int how);
|
||||
|
||||
int writePackedFile(struct ReportList *reports, char *filename, struct PackedFile *pf, int guimode);
|
||||
|
||||
/* free */
|
||||
void freePackedFile(struct PackedFile *pf);
|
||||
|
||||
/* info */
|
||||
int countPackedFiles(struct Main *bmain);
|
||||
int checkPackedFile(char *filename, struct PackedFile *pf);
|
||||
|
||||
/* read */
|
||||
int seekPackedFile(struct PackedFile *pf, int offset, int whence);
|
||||
void rewindPackedFile(struct PackedFile *pf);
|
||||
int readPackedFile(struct PackedFile *pf, void *data, int size);
|
||||
|
||||
int seekPackedFile(struct PackedFile * pf, int offset, int whence);
|
||||
void rewindPackedFile(struct PackedFile * pf);
|
||||
int readPackedFile(struct PackedFile * pf, void * data, int size);
|
||||
int countPackedFiles(void);
|
||||
void freePackedFile(struct PackedFile * pf);
|
||||
void packAll(void);
|
||||
int writePackedFile(char * filename, struct PackedFile *pf, int guimode);
|
||||
int checkPackedFile(char * filename, struct PackedFile * pf);
|
||||
char * unpackFile(char * abs_name, char * local_name, struct PackedFile * pf, int how);
|
||||
int unpackVFont(struct VFont * vfont, int how);
|
||||
int unpackSample(struct bSample *sample, int how);
|
||||
int unpackImage(struct Image * ima, int how);
|
||||
void unpackAll(int how);
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -217,6 +217,7 @@ char *psys_menu_string(struct Object *ob, int for_sb);
|
||||
|
||||
struct ParticleSystem *psys_get_current(struct Object *ob);
|
||||
short psys_get_current_num(struct Object *ob);
|
||||
void psys_set_current_num(Object *ob, int index);
|
||||
struct Object *psys_find_object(struct Scene *scene, struct ParticleSystem *psys);
|
||||
//struct ParticleSystem *psys_get(struct Object *ob, int index);
|
||||
struct ParticleData *psys_get_selected_particle(struct ParticleSystem *psys, int *index);
|
||||
@ -250,9 +251,10 @@ void copy_particle_key(struct ParticleKey *to, struct ParticleKey *from, int tim
|
||||
void psys_particle_on_emitter(struct ParticleSystemModifierData *psmd, int distr, int index, int index_dmcache, float *fuv, float foffset, float *vec, float *nor, float *utan, float *vtan, float *orco, float *ornor);
|
||||
struct ParticleSystemModifierData *psys_get_modifier(struct Object *ob, struct ParticleSystem *psys);
|
||||
|
||||
void object_add_particle_system(struct Scene *scene, struct Object *ob);
|
||||
void object_remove_particle_system(struct Scene *scene, struct Object *ob);
|
||||
struct ParticleSettings *psys_new_settings(char *name, struct Main *main);
|
||||
struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part);
|
||||
int psys_count_autocache(struct Scene *scene, struct ParticleSettings *part);
|
||||
void psys_flush_particle_settings(struct Scene *scene, struct ParticleSettings *part, int recalc);
|
||||
void make_local_particlesettings(struct ParticleSettings *part);
|
||||
|
||||
|
@ -93,7 +93,7 @@ typedef struct PTCacheWriter {
|
||||
int cfra;
|
||||
int totelem;
|
||||
|
||||
float *(*elem_ptr)(int index, void *calldata);
|
||||
void (*set_elem)(int index, void *calldata, float *data);
|
||||
void *calldata;
|
||||
} PTCacheWriter;
|
||||
|
||||
@ -103,12 +103,10 @@ typedef struct PTCacheReader {
|
||||
float cfra;
|
||||
int totelem;
|
||||
|
||||
void (*set_elem)(int index, void *calldata, float *data);
|
||||
void (*interpolate_elem)(int index, void *calldata, float frs_sec, float cfra, int cfra1, int cfra2, float *data1, float *data2);
|
||||
void (*set_elem)(int elem_index, void *calldata, float *data);
|
||||
void (*interpolate_elem)(int index, void *calldata, float frs_sec, float cfra, float cfra1, float cfra2, float *data1, float *data2);
|
||||
void *calldata;
|
||||
|
||||
int allow_interpolate;
|
||||
int allow_old;
|
||||
int *old_frame;
|
||||
} PTCacheReader;
|
||||
|
||||
@ -116,6 +114,7 @@ typedef struct PTCacheBaker {
|
||||
struct Scene *scene;
|
||||
int bake;
|
||||
int render;
|
||||
int quick_step;
|
||||
struct PTCacheID *pid;
|
||||
int (*break_test)(void *data);
|
||||
void *break_data;
|
||||
@ -146,6 +145,8 @@ void BKE_ptcache_file_close(PTCacheFile *pf);
|
||||
int BKE_ptcache_file_read_floats(PTCacheFile *pf, float *f, int tot);
|
||||
int BKE_ptcache_file_write_floats(PTCacheFile *pf, float *f, int tot);
|
||||
|
||||
void BKE_ptcache_update_info(PTCacheID *pid);
|
||||
|
||||
/* General cache reading/writing */
|
||||
int BKE_ptcache_read_cache(PTCacheReader *reader);
|
||||
int BKE_ptcache_write_cache(PTCacheWriter *writer);
|
||||
@ -160,7 +161,7 @@ void BKE_ptcache_free(struct PointCache *cache);
|
||||
struct PointCache *BKE_ptcache_copy(struct PointCache *cache);
|
||||
|
||||
/* Baking */
|
||||
void BKE_ptcache_autocache_all(struct Scene *scene);
|
||||
void BKE_ptcache_quick_cache_all(struct Scene *scene);
|
||||
void BKE_ptcache_make_cache(struct PTCacheBaker* baker);
|
||||
void BKE_ptcache_toggle_disk_cache(struct PTCacheID *pid);
|
||||
|
||||
|
@ -34,7 +34,10 @@ extern "C" {
|
||||
|
||||
#include "DNA_listBase.h"
|
||||
|
||||
/* Reporting Information and Errors */
|
||||
/* Reporting Information and Errors
|
||||
*
|
||||
* These functions also accept NULL in case no error reporting
|
||||
* is needed. */
|
||||
|
||||
typedef enum ReportType {
|
||||
RPT_DEBUG = 0,
|
||||
|
@ -1220,7 +1220,7 @@ void CDDM_calc_edges(DerivedMesh *dm)
|
||||
BLI_edgehashIterator_free(ehi);
|
||||
|
||||
/* free old CustomData and assign new one */
|
||||
CustomData_free(&dm->edgeData, dm->numVertData);
|
||||
CustomData_free(&dm->edgeData, dm->numEdgeData);
|
||||
dm->edgeData = edgeData;
|
||||
dm->numEdgeData = numEdges;
|
||||
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "DNA_mesh_types.h"
|
||||
#include "DNA_object_force.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_particle_types.h"
|
||||
|
||||
#include "BKE_deform.h"
|
||||
#include "BKE_DerivedMesh.h"
|
||||
@ -42,6 +43,7 @@
|
||||
#include "BKE_object.h"
|
||||
#include "BKE_modifier.h"
|
||||
#include "BKE_utildefines.h"
|
||||
#include "BKE_particle.h"
|
||||
|
||||
#include "BKE_pointcache.h"
|
||||
|
||||
@ -339,43 +341,88 @@ void bvhselftree_update_from_cloth(ClothModifierData *clmd, int moving)
|
||||
}
|
||||
|
||||
int modifiers_indexInObject(Object *ob, ModifierData *md_seek);
|
||||
|
||||
int cloth_read_cache(Object *ob, ClothModifierData *clmd, float framenr)
|
||||
static void cloth_write_state(int index, Cloth *cloth, float *data)
|
||||
{
|
||||
PTCacheID pid;
|
||||
PTCacheFile *pf;
|
||||
Cloth *cloth = clmd->clothObject;
|
||||
unsigned int a, ret = 1;
|
||||
ClothVertex *vert = cloth->verts + index;
|
||||
|
||||
memcpy(data, vert->x, 3 * sizeof(float));
|
||||
memcpy(data + 3, vert->xconst, 3 * sizeof(float));
|
||||
memcpy(data + 6, vert->v, 3 * sizeof(float));
|
||||
}
|
||||
static void cloth_read_state(int index, Cloth *cloth, float *data)
|
||||
{
|
||||
ClothVertex *vert = cloth->verts + index;
|
||||
|
||||
if(!cloth)
|
||||
return 0;
|
||||
|
||||
BKE_ptcache_id_from_cloth(&pid, ob, clmd);
|
||||
pf = BKE_ptcache_file_open(&pid, PTCACHE_FILE_READ, framenr);
|
||||
if(pf) {
|
||||
for(a = 0; a < cloth->numverts; a++) {
|
||||
if(!BKE_ptcache_file_read_floats(pf, cloth->verts[a].x, 3)) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
if(!BKE_ptcache_file_read_floats(pf, cloth->verts[a].xconst, 3)) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
if(!BKE_ptcache_file_read_floats(pf, cloth->verts[a].v, 3)) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
BKE_ptcache_file_close(pf);
|
||||
memcpy(vert->x, data, 3 * sizeof(float));
|
||||
memcpy(vert->xconst, data + 3, 3 * sizeof(float));
|
||||
memcpy(vert->v, data + 6, 3 * sizeof(float));
|
||||
}
|
||||
static void cloth_cache_interpolate(int index, Cloth *cloth, float frs_sec, float cfra, float cfra1, float cfra2, float *data1, float *data2)
|
||||
{
|
||||
ClothVertex *vert = cloth->verts + index;
|
||||
ParticleKey keys[4];
|
||||
float dfra;
|
||||
|
||||
if(cfra1 == cfra2) {
|
||||
cloth_read_state(index, cloth, data1);
|
||||
return;
|
||||
}
|
||||
else
|
||||
ret = 0;
|
||||
|
||||
return ret;
|
||||
|
||||
memcpy(keys[1].co, data1, 3 * sizeof(float));
|
||||
memcpy(keys[1].vel, data1 + 6, 3 * sizeof(float));
|
||||
|
||||
memcpy(keys[2].co, data2, 3 * sizeof(float));
|
||||
memcpy(keys[2].vel, data2 + 6, 3 * sizeof(float));
|
||||
|
||||
dfra = cfra2 - cfra1;
|
||||
|
||||
VecMulf(keys[1].vel, dfra);
|
||||
VecMulf(keys[2].vel, dfra);
|
||||
|
||||
psys_interpolate_particle(-1, keys, (cfra - cfra1) / dfra, keys, 1);
|
||||
|
||||
VecMulf(keys->vel, 1.0f / dfra);
|
||||
|
||||
memcpy(vert->x, keys->co, 3 * sizeof(float));
|
||||
memcpy(vert->v, keys->vel, 3 * sizeof(float));
|
||||
|
||||
/* not sure what to do with this - jahka */
|
||||
memcpy(vert->xconst, data1 + 3, 3 * sizeof(float));
|
||||
}
|
||||
void cloth_write_cache(Object *ob, ClothModifierData *clmd, int cfra)
|
||||
{
|
||||
PTCacheWriter writer;
|
||||
PTCacheID pid;
|
||||
|
||||
BKE_ptcache_id_from_cloth(&pid, ob, clmd);
|
||||
|
||||
writer.calldata = clmd->clothObject;
|
||||
writer.cfra = cfra;
|
||||
writer.set_elem = cloth_write_state;
|
||||
writer.pid = &pid;
|
||||
writer.totelem = clmd->clothObject->numverts;
|
||||
|
||||
BKE_ptcache_write_cache(&writer);
|
||||
}
|
||||
|
||||
int cloth_read_cache(Scene *scene, Object *ob, ClothModifierData *clmd, float cfra, int *old_framenr)
|
||||
{
|
||||
PTCacheReader reader;
|
||||
PTCacheID pid;
|
||||
|
||||
BKE_ptcache_id_from_cloth(&pid, ob, clmd);
|
||||
|
||||
reader.calldata = clmd->clothObject;
|
||||
reader.cfra = cfra;
|
||||
reader.interpolate_elem = cloth_cache_interpolate;
|
||||
reader.old_frame = old_framenr;
|
||||
reader.pid = &pid;
|
||||
reader.scene = scene;
|
||||
reader.set_elem = cloth_read_state;
|
||||
reader.totelem = clmd->clothObject->numverts;
|
||||
|
||||
return BKE_ptcache_read_cache(&reader);
|
||||
}
|
||||
void cloth_clear_cache(Object *ob, ClothModifierData *clmd, float framenr)
|
||||
{
|
||||
PTCacheID pid;
|
||||
@ -389,30 +436,6 @@ void cloth_clear_cache(Object *ob, ClothModifierData *clmd, float framenr)
|
||||
BKE_ptcache_id_clear(&pid, PTCACHE_CLEAR_AFTER, framenr);
|
||||
}
|
||||
|
||||
void cloth_write_cache(Object *ob, ClothModifierData *clmd, float framenr)
|
||||
{
|
||||
Cloth *cloth = clmd->clothObject;
|
||||
PTCacheID pid;
|
||||
PTCacheFile *pf;
|
||||
unsigned int a;
|
||||
|
||||
if(!cloth)
|
||||
return;
|
||||
|
||||
BKE_ptcache_id_from_cloth(&pid, ob, clmd);
|
||||
pf = BKE_ptcache_file_open(&pid, PTCACHE_FILE_WRITE, framenr);
|
||||
if(!pf)
|
||||
return;
|
||||
|
||||
for(a = 0; a < cloth->numverts; a++) {
|
||||
BKE_ptcache_file_write_floats(pf, cloth->verts[a].x, 3);
|
||||
BKE_ptcache_file_write_floats(pf, cloth->verts[a].xconst, 3);
|
||||
BKE_ptcache_file_write_floats(pf, cloth->verts[a].v, 3);
|
||||
}
|
||||
|
||||
BKE_ptcache_file_close(pf);
|
||||
}
|
||||
|
||||
static int do_init_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *result, int framenr)
|
||||
{
|
||||
PointCache *cache;
|
||||
@ -486,6 +509,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
PTCacheID pid;
|
||||
float timescale;
|
||||
int framedelta, framenr, startframe, endframe;
|
||||
int cache_result, old_framenr;
|
||||
|
||||
clmd->scene= scene; /* nice to pass on later :) */
|
||||
framenr= (int)scene->r.cfra;
|
||||
@ -499,6 +523,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
if(!result) {
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= 0;
|
||||
cache->last_exact= 0;
|
||||
return dm;
|
||||
}
|
||||
|
||||
@ -510,6 +535,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
if(result->getNumVerts(result) != clmd->clothObject->numverts) {
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= 0;
|
||||
cache->last_exact= 0;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -521,6 +547,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
if(BKE_ptcache_get_continue_physics()) {
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= 0;
|
||||
cache->last_exact= 0;
|
||||
|
||||
/* do simulation */
|
||||
if(!do_init_cloth(ob, clmd, result, framenr))
|
||||
@ -536,6 +563,7 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
if(framenr < startframe) {
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= 0;
|
||||
cache->last_exact= 0;
|
||||
return result;
|
||||
}
|
||||
else if(framenr > endframe) {
|
||||
@ -552,7 +580,9 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
return result;
|
||||
|
||||
/* try to read from cache */
|
||||
if(cloth_read_cache(ob, clmd, framenr)) {
|
||||
cache_result = cloth_read_cache(scene, ob, clmd, framenr, &old_framenr);
|
||||
|
||||
if(cache_result == PTCACHE_READ_EXACT || cache_result == PTCACHE_READ_INTERPOLATED) {
|
||||
cache->flag |= PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= framenr;
|
||||
|
||||
@ -561,25 +591,40 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
|
||||
return result;
|
||||
}
|
||||
else if(cache_result==PTCACHE_READ_OLD) {
|
||||
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_FREE);
|
||||
|
||||
implicit_set_positions(clmd);
|
||||
|
||||
cache->flag |= PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= old_framenr;
|
||||
}
|
||||
else if(ob->id.lib || (cache->flag & PTCACHE_BAKED)) {
|
||||
/* if baked and nothing in cache, do nothing */
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= 0;
|
||||
cache->last_exact= 0;
|
||||
return result;
|
||||
}
|
||||
|
||||
if(framenr == startframe) {
|
||||
if(cache->flag & PTCACHE_REDO_NEEDED) {
|
||||
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED);
|
||||
do_init_cloth(ob, clmd, result, framenr);
|
||||
}
|
||||
cache->flag |= PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= framenr;
|
||||
|
||||
/* don't write cache on first frame, but on second frame write
|
||||
* cache for frame 1 and 2 */
|
||||
}
|
||||
else if(framedelta == 1) {
|
||||
else {
|
||||
/* if on second frame, write cache for first frame */
|
||||
if(framenr == startframe+1)
|
||||
if(cache->simframe == startframe && (cache->flag & PTCACHE_OUTDATED || cache->last_exact==0))
|
||||
cloth_write_cache(ob, clmd, startframe);
|
||||
|
||||
clmd->sim_parms->timescale *= framenr - cache->simframe;
|
||||
|
||||
/* do simulation */
|
||||
cache->flag |= PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= framenr;
|
||||
@ -587,16 +632,13 @@ DerivedMesh *clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob,
|
||||
if(!do_step_cloth(ob, clmd, result, framenr)) {
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= 0;
|
||||
cache->last_exact= 0;
|
||||
}
|
||||
else
|
||||
cloth_write_cache(ob, clmd, framenr);
|
||||
|
||||
cloth_to_object (ob, clmd, result);
|
||||
}
|
||||
else {
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
cache->simframe= 0;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -358,6 +358,9 @@ static int ctx_data_collection_get(const bContext *C, const char *member, ListBa
|
||||
return 1;
|
||||
}
|
||||
|
||||
list->first= NULL;
|
||||
list->last= NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -559,7 +559,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O
|
||||
|
||||
dag_add_relation(dag, node, node, DAG_RL_OB_DATA, "Particle-Object Relation");
|
||||
|
||||
if(psys->flag & PSYS_DISABLED || psys->flag & PSYS_DELETE)
|
||||
if(!psys_check_enabled(ob, psys))
|
||||
continue;
|
||||
|
||||
if(part->phystype==PART_PHYS_KEYED && psys->keyed_ob &&
|
||||
|
@ -315,13 +315,19 @@ static void init_fastshade_shadeinput(Render *re)
|
||||
|
||||
static Render *fastshade_get_render(Scene *scene)
|
||||
{
|
||||
Render *re= RE_GetRender("_Shade View_");
|
||||
if(re==NULL) {
|
||||
re= RE_NewRender("_Shade View_");
|
||||
|
||||
RE_Database_Baking(re, scene, 0, 0); /* 0= no faces */
|
||||
/* XXX ugly global still, but we can't do preview while rendering */
|
||||
if(G.rendering==0) {
|
||||
|
||||
Render *re= RE_GetRender("_Shade View_");
|
||||
if(re==NULL) {
|
||||
re= RE_NewRender("_Shade View_");
|
||||
|
||||
RE_Database_Baking(re, scene, 0, 0); /* 0= no faces */
|
||||
}
|
||||
return re;
|
||||
}
|
||||
return re;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* called on file reading */
|
||||
@ -611,18 +617,20 @@ static void mesh_create_shadedColors(Render *re, Object *ob, int onlyForMesh, un
|
||||
|
||||
void shadeMeshMCol(Scene *scene, Object *ob, Mesh *me)
|
||||
{
|
||||
Render *re= fastshade_get_render(scene);
|
||||
int a;
|
||||
char *cp;
|
||||
unsigned int *mcol= (unsigned int*)me->mcol;
|
||||
|
||||
Render *re= fastshade_get_render(scene);
|
||||
mesh_create_shadedColors(re, ob, 1, &mcol, NULL);
|
||||
me->mcol= (MCol*)mcol;
|
||||
if(re) {
|
||||
mesh_create_shadedColors(re, ob, 1, &mcol, NULL);
|
||||
me->mcol= (MCol*)mcol;
|
||||
|
||||
/* swap bytes */
|
||||
for(cp= (char *)me->mcol, a= 4*me->totface; a>0; a--, cp+=4) {
|
||||
SWAP(char, cp[0], cp[3]);
|
||||
SWAP(char, cp[1], cp[2]);
|
||||
/* swap bytes */
|
||||
for(cp= (char *)me->mcol, a= 4*me->totface; a>0; a--, cp+=4) {
|
||||
SWAP(char, cp[0], cp[3]);
|
||||
SWAP(char, cp[1], cp[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -641,6 +649,8 @@ void shadeDispList(Scene *scene, Base *base)
|
||||
int a, need_orco;
|
||||
|
||||
re= fastshade_get_render(scene);
|
||||
if(re==NULL)
|
||||
return;
|
||||
|
||||
dl = find_displist(&ob->disp, DL_VERTCOL);
|
||||
if (dl) {
|
||||
|
@ -333,11 +333,11 @@ static VFontData *vfont_get_data(VFont *vfont)
|
||||
BLI_addtail(&ttfdata, tmpfnt);
|
||||
}
|
||||
} else {
|
||||
pf= newPackedFile(vfont->name);
|
||||
pf= newPackedFile(NULL, vfont->name);
|
||||
|
||||
if(!tmpfnt)
|
||||
{
|
||||
tpf= newPackedFile(vfont->name);
|
||||
tpf= newPackedFile(NULL, vfont->name);
|
||||
|
||||
// Add temporary packed file to globals
|
||||
tmpfnt= (struct TmpFont *) MEM_callocN(sizeof(struct TmpFont), "temp_font");
|
||||
@ -385,8 +385,8 @@ VFont *load_vfont(char *name)
|
||||
strcpy(dir, name);
|
||||
BLI_splitdirstring(dir, filename);
|
||||
|
||||
pf= newPackedFile(name);
|
||||
tpf= newPackedFile(name);
|
||||
pf= newPackedFile(NULL, name);
|
||||
tpf= newPackedFile(NULL, name);
|
||||
|
||||
is_builtin= 0;
|
||||
}
|
||||
|
@ -1431,7 +1431,7 @@ void BKE_image_signal(Image *ima, ImageUser *iuser, int signal)
|
||||
/* try to repack file */
|
||||
if(ima->packedfile) {
|
||||
PackedFile *pf;
|
||||
pf = newPackedFile(ima->name);
|
||||
pf = newPackedFile(NULL, ima->name);
|
||||
if (pf) {
|
||||
freePackedFile(ima->packedfile);
|
||||
ima->packedfile = pf;
|
||||
@ -1750,7 +1750,7 @@ static ImBuf *image_load_image_file(Image *ima, ImageUser *iuser, int cfra)
|
||||
|
||||
/* make packed file for autopack */
|
||||
if ((ima->packedfile == NULL) && (G.fileflags & G_AUTOPACK))
|
||||
ima->packedfile = newPackedFile(str);
|
||||
ima->packedfile = newPackedFile(NULL, str);
|
||||
}
|
||||
|
||||
if(ima->flag & IMA_DO_PREMUL)
|
||||
@ -1812,7 +1812,7 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser)
|
||||
Render *re= NULL;
|
||||
RenderResult *rr= NULL;
|
||||
|
||||
if(iuser->scene) {
|
||||
if(iuser && iuser->scene) {
|
||||
re= RE_GetRender(iuser->scene->id.name);
|
||||
rr= RE_GetResult(re);
|
||||
}
|
||||
|
@ -1600,6 +1600,10 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase
|
||||
|
||||
if(clmd->coll_parms->flags & CLOTH_COLLSETTINGS_FLAG_ENABLED)
|
||||
{
|
||||
float temp = clmd->sim_parms->stepsPerFrame;
|
||||
/* not too nice hack, but collisions need this correction -jahka */
|
||||
clmd->sim_parms->stepsPerFrame /= clmd->sim_parms->timescale;
|
||||
|
||||
// collisions
|
||||
// itstart();
|
||||
|
||||
@ -1614,7 +1618,7 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase
|
||||
|
||||
// call collision function
|
||||
// TODO: check if "step" or "step+dt" is correct - dg
|
||||
result = cloth_bvh_objcollision(ob, clmd, step, dt);
|
||||
result = cloth_bvh_objcollision(ob, clmd, step/clmd->sim_parms->timescale, dt/clmd->sim_parms->timescale);
|
||||
|
||||
// correct velocity again, just to be sure we had to change it due to adaptive collisions
|
||||
for(i = 0; i < numverts; i++)
|
||||
@ -1637,6 +1641,9 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase
|
||||
}
|
||||
}
|
||||
|
||||
/* restore original stepsPerFrame */
|
||||
clmd->sim_parms->stepsPerFrame = temp;
|
||||
|
||||
// X = Xnew;
|
||||
cp_lfvector(id->X, id->Xnew, numverts);
|
||||
|
||||
@ -1654,7 +1661,6 @@ int implicit_solver (Object *ob, float frame, ClothModifierData *clmd, ListBase
|
||||
|
||||
simulate_implicit_euler(id->Vnew, id->X, id->V, id->F, id->dFdV, id->dFdX, dt / 2.0f, id->A, id->B, id->dV, id->S, id->z, id->olddV, id->P, id->Pinv, id->M, id->bigI);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -3543,7 +3543,7 @@ static void displaceModifier_updateDepgraph(
|
||||
}
|
||||
}
|
||||
|
||||
static void validate_layer_name(const CustomData *data, int type, char *name)
|
||||
static void validate_layer_name(const CustomData *data, int type, char *name, char *outname)
|
||||
{
|
||||
int index = -1;
|
||||
|
||||
@ -3556,8 +3556,10 @@ static void validate_layer_name(const CustomData *data, int type, char *name)
|
||||
* deleted, so assign the active layer to name
|
||||
*/
|
||||
index = CustomData_get_active_layer_index(data, CD_MTFACE);
|
||||
strcpy(name, data->layers[index].name);
|
||||
strcpy(outname, data->layers[index].name);
|
||||
}
|
||||
else
|
||||
strcpy(outname, name);
|
||||
}
|
||||
|
||||
static void get_texture_coords(DisplaceModifierData *dmd, Object *ob,
|
||||
@ -3583,12 +3585,11 @@ static void get_texture_coords(DisplaceModifierData *dmd, Object *ob,
|
||||
char *done = MEM_callocN(sizeof(*done) * numVerts,
|
||||
"get_texture_coords done");
|
||||
int numFaces = dm->getNumFaces(dm);
|
||||
char uvname[32];
|
||||
MTFace *tf;
|
||||
|
||||
validate_layer_name(&dm->faceData, CD_MTFACE, dmd->uvlayer_name);
|
||||
|
||||
tf = CustomData_get_layer_named(&dm->faceData, CD_MTFACE,
|
||||
dmd->uvlayer_name);
|
||||
validate_layer_name(&dm->faceData, CD_MTFACE, dmd->uvlayer_name, uvname);
|
||||
tf = CustomData_get_layer_named(&dm->faceData, CD_MTFACE, uvname);
|
||||
|
||||
/* verts are given the UV from the first face that uses them */
|
||||
for(i = 0, mf = mface; i < numFaces; ++i, ++mf, ++tf) {
|
||||
@ -3884,6 +3885,7 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
|
||||
Projector projectors[MOD_UVPROJECT_MAXPROJECTORS];
|
||||
int num_projectors = 0;
|
||||
float aspect;
|
||||
char uvname[32];
|
||||
|
||||
if(umd->aspecty != 0) aspect = umd->aspectx / umd->aspecty;
|
||||
else aspect = 1.0f;
|
||||
@ -3898,12 +3900,11 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
|
||||
if(!dm->getFaceDataArray(dm, CD_MTFACE)) return dm;
|
||||
|
||||
/* make sure we're using an existing layer */
|
||||
validate_layer_name(&dm->faceData, CD_MTFACE, umd->uvlayer_name);
|
||||
validate_layer_name(&dm->faceData, CD_MTFACE, umd->uvlayer_name, uvname);
|
||||
|
||||
/* make sure we are not modifying the original UV layer */
|
||||
tface = CustomData_duplicate_referenced_layer_named(&dm->faceData,
|
||||
CD_MTFACE,
|
||||
umd->uvlayer_name);
|
||||
CD_MTFACE, uvname);
|
||||
|
||||
numVerts = dm->getNumVerts(dm);
|
||||
|
||||
@ -5185,12 +5186,11 @@ static void wavemod_get_texture_coords(WaveModifierData *wmd, Object *ob,
|
||||
char *done = MEM_callocN(sizeof(*done) * numVerts,
|
||||
"get_texture_coords done");
|
||||
int numFaces = dm->getNumFaces(dm);
|
||||
char uvname[32];
|
||||
MTFace *tf;
|
||||
|
||||
validate_layer_name(&dm->faceData, CD_MTFACE, wmd->uvlayer_name);
|
||||
|
||||
tf = CustomData_get_layer_named(&dm->faceData, CD_MTFACE,
|
||||
wmd->uvlayer_name);
|
||||
validate_layer_name(&dm->faceData, CD_MTFACE, wmd->uvlayer_name, uvname);
|
||||
tf = CustomData_get_layer_named(&dm->faceData, CD_MTFACE, uvname);
|
||||
|
||||
/* verts are given the UV from the first face that uses them */
|
||||
for(i = 0, mf = mface; i < numFaces; ++i, ++mf, ++tf) {
|
||||
@ -6295,6 +6295,9 @@ CustomDataMask particleSystemModifier_requiredDataMask(Object *ob, ModifierData
|
||||
MTex *mtex;
|
||||
int i;
|
||||
|
||||
if(!psmd->psys->part)
|
||||
return 0;
|
||||
|
||||
ma= give_current_material(ob, psmd->psys->part->omat);
|
||||
if(ma) {
|
||||
for(i=0; i<MAX_MTEX; i++) {
|
||||
|
@ -61,8 +61,9 @@
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_font.h"
|
||||
#include "BKE_packedFile.h"
|
||||
#include "BKE_report.h"
|
||||
|
||||
int seekPackedFile(PackedFile * pf, int offset, int whence)
|
||||
int seekPackedFile(PackedFile *pf, int offset, int whence)
|
||||
{
|
||||
int oldseek = -1, seek = 0;
|
||||
|
||||
@ -92,12 +93,12 @@ int seekPackedFile(PackedFile * pf, int offset, int whence)
|
||||
return(oldseek);
|
||||
}
|
||||
|
||||
void rewindPackedFile(PackedFile * pf)
|
||||
void rewindPackedFile(PackedFile *pf)
|
||||
{
|
||||
seekPackedFile(pf, 0, SEEK_SET);
|
||||
}
|
||||
|
||||
int readPackedFile(PackedFile * pf, void * data, int size)
|
||||
int readPackedFile(PackedFile *pf, void *data, int size)
|
||||
{
|
||||
if ((pf != NULL) && (size >= 0) && (data != NULL)) {
|
||||
if (size + pf->seek > pf->size) {
|
||||
@ -118,66 +119,55 @@ int readPackedFile(PackedFile * pf, void * data, int size)
|
||||
return(size);
|
||||
}
|
||||
|
||||
int countPackedFiles()
|
||||
int countPackedFiles(Main *bmain)
|
||||
{
|
||||
int count = 0;
|
||||
Image *ima;
|
||||
VFont *vf;
|
||||
bSample *sample;
|
||||
int count = 0;
|
||||
|
||||
// let's check if there are packed files...
|
||||
ima = G.main->image.first;
|
||||
while (ima) {
|
||||
if (ima->packedfile) {
|
||||
for(ima=bmain->image.first; ima; ima=ima->id.next)
|
||||
if(ima->packedfile)
|
||||
count++;
|
||||
}
|
||||
ima= ima->id.next;
|
||||
}
|
||||
|
||||
vf = G.main->vfont.first;
|
||||
while (vf) {
|
||||
if (vf->packedfile) {
|
||||
for(vf=bmain->vfont.first; vf; vf=vf->id.next)
|
||||
if(vf->packedfile)
|
||||
count++;
|
||||
}
|
||||
vf = vf->id.next;
|
||||
}
|
||||
|
||||
sample = samples->first;
|
||||
while (sample) {
|
||||
if (sample->packedfile) {
|
||||
count++;
|
||||
}
|
||||
sample = sample->id.next;
|
||||
}
|
||||
if(samples)
|
||||
for(sample=samples->first; sample; sample=sample->id.next)
|
||||
if(sample->packedfile)
|
||||
count++;
|
||||
|
||||
return(count);
|
||||
return count;
|
||||
}
|
||||
|
||||
void freePackedFile(PackedFile * pf)
|
||||
void freePackedFile(PackedFile *pf)
|
||||
{
|
||||
if (pf) {
|
||||
if(pf) {
|
||||
MEM_freeN(pf->data);
|
||||
MEM_freeN(pf);
|
||||
} else {
|
||||
printf("freePackedFile: Trying to free a NULL pointer\n");
|
||||
}
|
||||
else
|
||||
printf("freePackedFile: Trying to free a NULL pointer\n");
|
||||
}
|
||||
|
||||
PackedFile * newPackedFileMemory(void *mem, int memlen)
|
||||
PackedFile *newPackedFileMemory(void *mem, int memlen)
|
||||
{
|
||||
PackedFile * pf = MEM_callocN(sizeof(*pf), "PackedFile");
|
||||
PackedFile *pf = MEM_callocN(sizeof(*pf), "PackedFile");
|
||||
pf->data = mem;
|
||||
pf->size = memlen;
|
||||
|
||||
return pf;
|
||||
}
|
||||
|
||||
PackedFile * newPackedFile(char * filename)
|
||||
PackedFile *newPackedFile(ReportList *reports, char *filename)
|
||||
{
|
||||
PackedFile * pf = NULL;
|
||||
PackedFile *pf = NULL;
|
||||
int file, filelen;
|
||||
char name[FILE_MAXDIR+FILE_MAXFILE];
|
||||
void * data;
|
||||
void *data;
|
||||
|
||||
//XXX waitcursor(1);
|
||||
|
||||
@ -191,7 +181,7 @@ PackedFile * newPackedFile(char * filename)
|
||||
|
||||
file= open(name, O_BINARY|O_RDONLY);
|
||||
if (file <= 0) {
|
||||
// error("Can't open file: %s", name);
|
||||
BKE_reportf(reports, RPT_ERROR, "Can't open file: %s", name);
|
||||
} else {
|
||||
filelen = BLI_filesize(file);
|
||||
|
||||
@ -214,36 +204,24 @@ PackedFile * newPackedFile(char * filename)
|
||||
return (pf);
|
||||
}
|
||||
|
||||
void packAll()
|
||||
void packAll(Main *bmain, ReportList *reports)
|
||||
{
|
||||
Image *ima;
|
||||
VFont *vf;
|
||||
bSample *sample;
|
||||
|
||||
ima = G.main->image.first;
|
||||
while (ima) {
|
||||
if (ima->packedfile == NULL) {
|
||||
ima->packedfile = newPackedFile(ima->name);
|
||||
}
|
||||
ima= ima->id.next;
|
||||
}
|
||||
|
||||
vf = G.main->vfont.first;
|
||||
while (vf) {
|
||||
if (vf->packedfile == NULL) {
|
||||
vf->packedfile = newPackedFile(vf->name);
|
||||
}
|
||||
vf = vf->id.next;
|
||||
}
|
||||
for(ima=bmain->image.first; ima; ima=ima->id.next)
|
||||
if(ima->packedfile == NULL)
|
||||
ima->packedfile = newPackedFile(reports, ima->name);
|
||||
|
||||
for(vf=bmain->vfont.first; vf; vf=vf->id.next)
|
||||
if(vf->packedfile == NULL)
|
||||
vf->packedfile = newPackedFile(reports, vf->name);
|
||||
|
||||
sample = samples->first;
|
||||
while (sample) {
|
||||
if (sample->packedfile == NULL) {
|
||||
sound_set_packedfile(sample, newPackedFile(sample->name));
|
||||
}
|
||||
sample = sample->id.next;
|
||||
}
|
||||
if(samples)
|
||||
for(sample=samples->first; sample; sample=sample->id.next)
|
||||
if(sample->packedfile == NULL)
|
||||
sound_set_packedfile(sample, newPackedFile(reports, sample->name));
|
||||
}
|
||||
|
||||
|
||||
@ -252,10 +230,10 @@ void packAll()
|
||||
// attempt to create a function that generates an unique filename
|
||||
// this will work when all funtions in fileops.c understand relative filenames...
|
||||
|
||||
char * find_new_name(char * name)
|
||||
char *find_new_name(char *name)
|
||||
{
|
||||
char tempname[FILE_MAXDIR + FILE_MAXFILE];
|
||||
char * newname;
|
||||
char *newname;
|
||||
|
||||
if (fop_exists(name)) {
|
||||
for (number = 1; number <= 999; number++) {
|
||||
@ -274,13 +252,13 @@ char * find_new_name(char * name)
|
||||
|
||||
*/
|
||||
|
||||
int writePackedFile(char * filename, PackedFile *pf, int guimode)
|
||||
int writePackedFile(ReportList *reports, char *filename, PackedFile *pf, int guimode)
|
||||
{
|
||||
int file, number, remove_tmp = FALSE;
|
||||
int ret_value = RET_OK;
|
||||
char name[FILE_MAXDIR + FILE_MAXFILE];
|
||||
char tempname[FILE_MAXDIR + FILE_MAXFILE];
|
||||
/* void * data; */
|
||||
/* void *data; */
|
||||
|
||||
if (guimode); //XXX waitcursor(1);
|
||||
|
||||
@ -305,23 +283,23 @@ int writePackedFile(char * filename, PackedFile *pf, int guimode)
|
||||
file = open(name, O_BINARY + O_WRONLY + O_CREAT + O_TRUNC, 0666);
|
||||
if (file >= 0) {
|
||||
if (write(file, pf->data, pf->size) != pf->size) {
|
||||
if(guimode) ; //XXX error("Error writing file: %s", name);
|
||||
BKE_reportf(reports, RPT_ERROR, "Error writing file: %s", name);
|
||||
ret_value = RET_ERROR;
|
||||
}
|
||||
close(file);
|
||||
} else {
|
||||
if(guimode); //XXX error("Error creating file: %s", name);
|
||||
BKE_reportf(reports, RPT_ERROR, "Error creating file: %s", name);
|
||||
ret_value = RET_ERROR;
|
||||
}
|
||||
|
||||
if (remove_tmp) {
|
||||
if (ret_value == RET_ERROR) {
|
||||
if (BLI_rename(tempname, name) != 0) {
|
||||
if(guimode); //XXX error("Error restoring tempfile. Check files: '%s' '%s'", tempname, name);
|
||||
BKE_reportf(reports, RPT_ERROR, "Error restoring tempfile. Check files: '%s' '%s'", tempname, name);
|
||||
}
|
||||
} else {
|
||||
if (BLI_delete(tempname, 0, 0) != 0) {
|
||||
if(guimode); //XXX error("Error deleting '%s' (ignored)");
|
||||
BKE_reportf(reports, RPT_ERROR, "Error deleting '%s' (ignored)", tempname);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -342,7 +320,7 @@ PF_NOFILE - the original file doens't exist
|
||||
|
||||
*/
|
||||
|
||||
int checkPackedFile(char * filename, PackedFile * pf)
|
||||
int checkPackedFile(char *filename, PackedFile *pf)
|
||||
{
|
||||
struct stat st;
|
||||
int ret_val, i, len, file;
|
||||
@ -390,68 +368,23 @@ int checkPackedFile(char * filename, PackedFile * pf)
|
||||
|
||||
/*
|
||||
|
||||
unpackFile() looks at the existing files (abs_name, local_name) and a packed file.
|
||||
If how == PF_ASK it offers the user a couple of options what to do with the packed file.
|
||||
unpackFile() looks at the existing files (abs_name, local_name) and a packed file.
|
||||
|
||||
It returns a char * to the existing file name / new file name or NULL when
|
||||
It returns a char *to the existing file name / new file name or NULL when
|
||||
there was an error or when the user desides to cancel the operation.
|
||||
|
||||
*/
|
||||
|
||||
char *unpackFile(char * abs_name, char * local_name, PackedFile * pf, int how)
|
||||
char *unpackFile(ReportList *reports, char *abs_name, char *local_name, PackedFile *pf, int how)
|
||||
{
|
||||
char menu[6 * (FILE_MAXDIR + FILE_MAXFILE + 100)];
|
||||
char menu[6 *(FILE_MAXDIR + FILE_MAXFILE + 100)];
|
||||
char line[FILE_MAXDIR + FILE_MAXFILE + 100];
|
||||
char * newname = NULL, * temp = NULL;
|
||||
char *newname = NULL, *temp = NULL;
|
||||
|
||||
// char newabs[FILE_MAXDIR + FILE_MAXFILE];
|
||||
// char newlocal[FILE_MAXDIR + FILE_MAXFILE];
|
||||
|
||||
if (pf != NULL) {
|
||||
if (how == PF_ASK) {
|
||||
sprintf(menu, "UnPack file%%t|Remove Pack %%x%d", PF_REMOVE);
|
||||
|
||||
if (strcmp(abs_name, local_name)) {
|
||||
switch (checkPackedFile(local_name, pf)) {
|
||||
case PF_NOFILE:
|
||||
sprintf(line, "|Create %s%%x%d", local_name, PF_WRITE_LOCAL);
|
||||
strcat(menu, line);
|
||||
break;
|
||||
case PF_EQUAL:
|
||||
sprintf(line, "|Use %s (identical)%%x%d", local_name, PF_USE_LOCAL);
|
||||
strcat(menu, line);
|
||||
break;
|
||||
case PF_DIFFERS:
|
||||
sprintf(line, "|Use %s (differs)%%x%d", local_name, PF_USE_LOCAL);
|
||||
strcat(menu, line);
|
||||
sprintf(line, "|Overwrite %s%%x%d", local_name, PF_WRITE_LOCAL);
|
||||
strcat(menu, line);
|
||||
break;
|
||||
}
|
||||
// sprintf(line, "|%%x%d", PF_INVALID);
|
||||
// strcat(menu, line);
|
||||
}
|
||||
|
||||
switch (checkPackedFile(abs_name, pf)) {
|
||||
case PF_NOFILE:
|
||||
sprintf(line, "|Create %s%%x%d", abs_name, PF_WRITE_ORIGINAL);
|
||||
strcat(menu, line);
|
||||
break;
|
||||
case PF_EQUAL:
|
||||
sprintf(line, "|Use %s (identical)%%x%d", abs_name, PF_USE_ORIGINAL);
|
||||
strcat(menu, line);
|
||||
break;
|
||||
case PF_DIFFERS:
|
||||
sprintf(line, "|Use %s (differs)%%x%d", abs_name, PF_USE_ORIGINAL);
|
||||
strcat(menu, line);
|
||||
sprintf(line, "|Overwrite %s%%x%d", abs_name, PF_WRITE_ORIGINAL);
|
||||
strcat(menu, line);
|
||||
break;
|
||||
}
|
||||
|
||||
//XXX how = pupmenu(menu);
|
||||
}
|
||||
|
||||
switch (how) {
|
||||
case -1:
|
||||
case PF_KEEP:
|
||||
@ -467,7 +400,7 @@ char *unpackFile(char * abs_name, char * local_name, PackedFile * pf, int how)
|
||||
}
|
||||
// else fall through and create it
|
||||
case PF_WRITE_LOCAL:
|
||||
if (writePackedFile(local_name, pf, 1) == RET_OK) {
|
||||
if (writePackedFile(reports, local_name, pf, 1) == RET_OK) {
|
||||
temp = local_name;
|
||||
}
|
||||
break;
|
||||
@ -479,7 +412,7 @@ char *unpackFile(char * abs_name, char * local_name, PackedFile * pf, int how)
|
||||
}
|
||||
// else fall through and create it
|
||||
case PF_WRITE_ORIGINAL:
|
||||
if (writePackedFile(abs_name, pf, 1) == RET_OK) {
|
||||
if (writePackedFile(reports, abs_name, pf, 1) == RET_OK) {
|
||||
temp = abs_name;
|
||||
}
|
||||
break;
|
||||
@ -498,10 +431,10 @@ char *unpackFile(char * abs_name, char * local_name, PackedFile * pf, int how)
|
||||
}
|
||||
|
||||
|
||||
int unpackVFont(VFont * vfont, int how)
|
||||
int unpackVFont(ReportList *reports, VFont *vfont, int how)
|
||||
{
|
||||
char localname[FILE_MAXDIR + FILE_MAXFILE], fi[FILE_MAXFILE];
|
||||
char * newname;
|
||||
char *newname;
|
||||
int ret_value = RET_ERROR;
|
||||
|
||||
if (vfont != NULL) {
|
||||
@ -510,7 +443,7 @@ int unpackVFont(VFont * vfont, int how)
|
||||
|
||||
sprintf(localname, "//fonts/%s", fi);
|
||||
|
||||
newname = unpackFile(vfont->name, localname, vfont->packedfile, how);
|
||||
newname = unpackFile(reports, vfont->name, localname, vfont->packedfile, how);
|
||||
if (newname != NULL) {
|
||||
ret_value = RET_OK;
|
||||
freePackedFile(vfont->packedfile);
|
||||
@ -523,10 +456,10 @@ int unpackVFont(VFont * vfont, int how)
|
||||
return (ret_value);
|
||||
}
|
||||
|
||||
int unpackSample(bSample *sample, int how)
|
||||
int unpackSample(ReportList *reports, bSample *sample, int how)
|
||||
{
|
||||
char localname[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX];
|
||||
char * newname;
|
||||
char *newname;
|
||||
int ret_value = RET_ERROR;
|
||||
PackedFile *pf;
|
||||
|
||||
@ -535,7 +468,7 @@ int unpackSample(bSample *sample, int how)
|
||||
BLI_splitdirstring(localname, fi);
|
||||
sprintf(localname, "//samples/%s", fi);
|
||||
|
||||
newname = unpackFile(sample->name, localname, sample->packedfile, how);
|
||||
newname = unpackFile(reports, sample->name, localname, sample->packedfile, how);
|
||||
if (newname != NULL) {
|
||||
strcpy(sample->name, newname);
|
||||
MEM_freeN(newname);
|
||||
@ -553,10 +486,10 @@ int unpackSample(bSample *sample, int how)
|
||||
return(ret_value);
|
||||
}
|
||||
|
||||
int unpackImage(Image * ima, int how)
|
||||
int unpackImage(ReportList *reports, Image *ima, int how)
|
||||
{
|
||||
char localname[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX];
|
||||
char * newname;
|
||||
char *newname;
|
||||
int ret_value = RET_ERROR;
|
||||
|
||||
if (ima != NULL) {
|
||||
@ -564,7 +497,7 @@ int unpackImage(Image * ima, int how)
|
||||
BLI_splitdirstring(localname, fi);
|
||||
sprintf(localname, "//textures/%s", fi);
|
||||
|
||||
newname = unpackFile(ima->name, localname, ima->packedfile, how);
|
||||
newname = unpackFile(reports, ima->name, localname, ima->packedfile, how);
|
||||
if (newname != NULL) {
|
||||
ret_value = RET_OK;
|
||||
freePackedFile(ima->packedfile);
|
||||
@ -578,33 +511,23 @@ int unpackImage(Image * ima, int how)
|
||||
return(ret_value);
|
||||
}
|
||||
|
||||
void unpackAll(int how)
|
||||
void unpackAll(Main *bmain, ReportList *reports, int how)
|
||||
{
|
||||
Image *ima;
|
||||
VFont *vf;
|
||||
bSample *sample;
|
||||
|
||||
ima = G.main->image.first;
|
||||
while (ima) {
|
||||
if (ima->packedfile) {
|
||||
unpackImage(ima, how);
|
||||
}
|
||||
ima= ima->id.next;
|
||||
}
|
||||
|
||||
vf = G.main->vfont.first;
|
||||
while (vf) {
|
||||
if (vf->packedfile) {
|
||||
unpackVFont(vf, how);
|
||||
}
|
||||
vf = vf->id.next;
|
||||
}
|
||||
|
||||
sample = samples->first;
|
||||
while (sample) {
|
||||
if (sample->packedfile) {
|
||||
unpackSample(sample, how);
|
||||
}
|
||||
sample = sample->id.next;
|
||||
}
|
||||
for(ima=bmain->image.first; ima; ima=ima->id.next)
|
||||
if(ima->packedfile)
|
||||
unpackImage(reports, ima, how);
|
||||
|
||||
for(vf=bmain->vfont.first; vf; vf=vf->id.next)
|
||||
if(vf->packedfile)
|
||||
unpackVFont(reports, vf, how);
|
||||
|
||||
if(samples)
|
||||
for(sample=samples->first; sample; sample=sample->id.next)
|
||||
if(sample->packedfile)
|
||||
unpackSample(reports, sample, how);
|
||||
}
|
||||
|
||||
|
@ -222,6 +222,20 @@ short psys_get_current_num(Object *ob)
|
||||
|
||||
return i;
|
||||
}
|
||||
void psys_set_current_num(Object *ob, int index)
|
||||
{
|
||||
ParticleSystem *psys;
|
||||
short i;
|
||||
|
||||
if(ob==0) return;
|
||||
|
||||
for(psys=ob->particlesystem.first, i=0; psys; psys=psys->next, i++) {
|
||||
if(i == index - 1)
|
||||
psys->flag |= PSYS_CURRENT;
|
||||
else
|
||||
psys->flag &= ~PSYS_CURRENT;
|
||||
}
|
||||
}
|
||||
Object *psys_find_object(Scene *scene, ParticleSystem *psys)
|
||||
{
|
||||
Base *base = scene->base.first;
|
||||
@ -236,31 +250,6 @@ Object *psys_find_object(Scene *scene, ParticleSystem *psys)
|
||||
|
||||
return NULL;
|
||||
}
|
||||
int psys_count_autocache(Scene *scene, ParticleSettings *part)
|
||||
{
|
||||
Base *base = scene->base.first;
|
||||
ParticleSystem *psys;
|
||||
PTCacheID pid;
|
||||
int autocache_count= 0;
|
||||
|
||||
for(base = scene->base.first; base; base = base->next) {
|
||||
for(psys = base->object->particlesystem.first; psys; psys=psys->next) {
|
||||
if(part && psys->part != part)
|
||||
continue;
|
||||
|
||||
BKE_ptcache_id_from_particles(&pid, base->object, psys);
|
||||
|
||||
if((psys->pointcache->flag & PTCACHE_BAKED)
|
||||
|| (psys->pointcache->flag & PTCACHE_AUTOCACHE)==0)
|
||||
continue;
|
||||
|
||||
if((psys->pointcache->flag & PTCACHE_OUTDATED)
|
||||
|| BKE_ptcache_id_exist(&pid, CFRA)==0)
|
||||
autocache_count++;
|
||||
}
|
||||
}
|
||||
return autocache_count;
|
||||
}
|
||||
/* change object's active particle system */
|
||||
void psys_change_act(void *ob_v, void *act_v)
|
||||
{
|
||||
@ -332,7 +321,7 @@ int psys_check_enabled(Object *ob, ParticleSystem *psys)
|
||||
ParticleSystemModifierData *psmd;
|
||||
Mesh *me;
|
||||
|
||||
if(psys->flag & PSYS_DISABLED || psys->flag & PSYS_DELETE)
|
||||
if(psys->flag & PSYS_DISABLED || psys->flag & PSYS_DELETE || !psys->part)
|
||||
return 0;
|
||||
|
||||
if(ob->type == OB_MESH) {
|
||||
@ -2940,6 +2929,61 @@ void psys_mat_hair_to_global(Object *ob, DerivedMesh *dm, short from, ParticleDa
|
||||
/************************************************/
|
||||
/* ParticleSettings handling */
|
||||
/************************************************/
|
||||
void object_add_particle_system(Scene *scene, Object *ob)
|
||||
{
|
||||
ParticleSystem *psys;
|
||||
ModifierData *md;
|
||||
ParticleSystemModifierData *psmd;
|
||||
|
||||
if(!ob || ob->type != OB_MESH)
|
||||
return;
|
||||
|
||||
psys = ob->particlesystem.first;
|
||||
for(; psys; psys=psys->next)
|
||||
psys->flag &= ~PSYS_CURRENT;
|
||||
|
||||
psys = MEM_callocN(sizeof(ParticleSystem), "particle_system");
|
||||
psys->pointcache = BKE_ptcache_add();
|
||||
BLI_addtail(&ob->particlesystem, psys);
|
||||
|
||||
psys->part = psys_new_settings("PSys", NULL);
|
||||
|
||||
md= modifier_new(eModifierType_ParticleSystem);
|
||||
sprintf(md->name, "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
|
||||
psmd= (ParticleSystemModifierData*) md;
|
||||
psmd->psys=psys;
|
||||
BLI_addtail(&ob->modifiers, md);
|
||||
|
||||
psys->totpart=0;
|
||||
psys->flag = PSYS_ENABLED|PSYS_CURRENT;
|
||||
psys->cfra=bsystem_time(scene,ob,scene->r.cfra+1,0.0);
|
||||
|
||||
DAG_scene_sort(scene);
|
||||
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
|
||||
}
|
||||
void object_remove_particle_system(Scene *scene, Object *ob)
|
||||
{
|
||||
ParticleSystem *psys = psys_get_current(ob);
|
||||
ParticleSystemModifierData *psmd;
|
||||
|
||||
if(!psys)
|
||||
return;
|
||||
|
||||
/* clear modifier */
|
||||
psmd= psys_get_modifier(ob, psys);
|
||||
BLI_remlink(&ob->modifiers, psmd);
|
||||
modifier_free((ModifierData *)psmd);
|
||||
|
||||
/* clear particle system */
|
||||
BLI_remlink(&ob->particlesystem, psys);
|
||||
psys_free(ob,psys);
|
||||
|
||||
if(ob->particlesystem.first)
|
||||
((ParticleSystem *) ob->particlesystem.first)->flag |= PSYS_CURRENT;
|
||||
|
||||
DAG_scene_sort(scene);
|
||||
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
|
||||
}
|
||||
static void default_particle_settings(ParticleSettings *part)
|
||||
{
|
||||
int i;
|
||||
@ -3026,6 +3070,9 @@ ParticleSettings *psys_new_settings(char *name, Main *main)
|
||||
{
|
||||
ParticleSettings *part;
|
||||
|
||||
if(main==NULL)
|
||||
main = G.main;
|
||||
|
||||
part= alloc_libblock(&main->particle, ID_PA, name);
|
||||
|
||||
default_particle_settings(part);
|
||||
@ -3740,6 +3787,8 @@ int psys_get_particle_state(struct Scene *scene, Object *ob, ParticleSystem *psy
|
||||
if((pa->alive==PARS_UNBORN && (part->flag & PART_UNBORN)==0)
|
||||
|| (pa->alive==PARS_DEAD && (part->flag & PART_DIED)==0))
|
||||
return 0;
|
||||
|
||||
state->time = MIN2(state->time, pa->dietime);
|
||||
}
|
||||
|
||||
if(psys->flag & PSYS_KEYED){
|
||||
|
@ -2205,11 +2205,9 @@ void psys_get_pointcache_start_end(Scene *scene, ParticleSystem *psys, int *sfra
|
||||
*sfra = MAX2(1, (int)part->sta);
|
||||
*efra = MIN2((int)(part->end + part->lifetime + 1.0), scene->r.efra);
|
||||
}
|
||||
static float *particle_state_ptr(int index, void *psys_ptr)
|
||||
static void particle_write_state(int index, ParticleSystem *psys, float *data)
|
||||
{
|
||||
ParticleSystem *psys= psys_ptr;
|
||||
|
||||
return (float *)(&(psys->particles+index)->state);
|
||||
memcpy(data, (float *)(&(psys->particles+index)->state), sizeof(ParticleKey));
|
||||
}
|
||||
static void particle_read_state(int index, void *psys_ptr, float *data)
|
||||
{
|
||||
@ -2222,24 +2220,35 @@ static void particle_read_state(int index, void *psys_ptr, float *data)
|
||||
|
||||
copy_particle_key(&pa->state, key, 1);
|
||||
}
|
||||
static void particle_cache_interpolate(int index, void *psys_ptr, float frs_sec, float cfra, int cfra1, int cfra2, float *data1, float *data2)
|
||||
static void particle_cache_interpolate(int index, void *psys_ptr, float frs_sec, float cfra, float cfra1, float cfra2, float *data1, float *data2)
|
||||
{
|
||||
ParticleSystem *psys= psys_ptr;
|
||||
ParticleData *pa = psys->particles + index;
|
||||
ParticleKey keys[4];
|
||||
float dfra;
|
||||
float dfra, cfra1f = (float)cfra1, cfra2f(float);
|
||||
|
||||
cfra = MIN2(cfra, pa->dietime);
|
||||
cfra1 = MIN2(cfra1, pa->dietime);
|
||||
cfra2 = MIN2(cfra2, pa->dietime);
|
||||
|
||||
keys[1] = *((ParticleKey*)data1);
|
||||
keys[2] = *((ParticleKey*)data2);
|
||||
|
||||
dfra = keys[2].time - keys[1].time;
|
||||
if(cfra1 == cfra2) {
|
||||
copy_particle_key(&pa->state, &keys[1], 1);
|
||||
return;
|
||||
}
|
||||
|
||||
dfra = cfra2 - cfra1;
|
||||
|
||||
VecMulf(keys[1].vel, dfra / frs_sec);
|
||||
VecMulf(keys[2].vel, dfra / frs_sec);
|
||||
|
||||
psys_interpolate_particle(-1, keys, (keys[1].time - cfra) / dfra, &pa->state, 1);
|
||||
psys_interpolate_particle(-1, keys, (cfra - cfra1) / dfra, &pa->state, 1);
|
||||
|
||||
VecMulf(pa->state.vel, frs_sec / dfra);
|
||||
|
||||
pa->state.time = cfra;
|
||||
}
|
||||
static void write_particles_to_cache(Object *ob, ParticleSystem *psys, int cfra)
|
||||
{
|
||||
@ -2250,22 +2259,20 @@ static void write_particles_to_cache(Object *ob, ParticleSystem *psys, int cfra)
|
||||
|
||||
writer.calldata = psys;
|
||||
writer.cfra = cfra;
|
||||
writer.elem_ptr = particle_state_ptr;
|
||||
writer.set_elem = particle_write_state;
|
||||
writer.pid = &pid;
|
||||
writer.totelem = psys->totpart;
|
||||
|
||||
BKE_ptcache_write_cache(&writer);
|
||||
}
|
||||
|
||||
static int get_particles_from_cache(Scene *scene, Object *ob, ParticleSystem *psys, float cfra, int allow_interpolate, int allow_old, int *old_frame)
|
||||
static int get_particles_from_cache(Scene *scene, Object *ob, ParticleSystem *psys, float cfra, int *old_frame)
|
||||
{
|
||||
PTCacheReader reader;
|
||||
PTCacheID pid;
|
||||
|
||||
BKE_ptcache_id_from_particles(&pid, ob, psys);
|
||||
|
||||
reader.allow_interpolate = allow_interpolate;
|
||||
reader.allow_old = allow_old;
|
||||
reader.calldata = psys;
|
||||
reader.cfra = cfra;
|
||||
reader.interpolate_elem = particle_cache_interpolate;
|
||||
@ -2402,6 +2409,8 @@ static void add_to_effectors(ListBase *lb, Scene *scene, Object *ob, Object *obs
|
||||
Object *tob;
|
||||
|
||||
for(i=0; epsys; epsys=epsys->next,i++){
|
||||
if(!psys_check_enabled(ob, epsys))
|
||||
continue;
|
||||
type=0;
|
||||
if(epsys!=psys || (psys->part->flag & PART_SELF_EFFECT)){
|
||||
epart=epsys->part;
|
||||
@ -4366,7 +4375,7 @@ static void cached_step(Scene *scene, Object *ob, ParticleSystemModifierData *ps
|
||||
pa->alive = PARS_UNBORN;
|
||||
else if(dietime <= cfra){
|
||||
if(dietime > psys->cfra){
|
||||
state.time = pa->dietime;
|
||||
state.time = dietime;
|
||||
psys_get_particle_state(scene, ob,psys,p,&state,1);
|
||||
push_reaction(ob,psys,p,PART_EVENT_DEATH,&state);
|
||||
}
|
||||
@ -4668,9 +4677,9 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
|
||||
|
||||
/* try to read from the cache */
|
||||
if(usecache) {
|
||||
int result = get_particles_from_cache(scene, ob, psys, (float)framenr, 0, 1, &old_framenr);
|
||||
int result = get_particles_from_cache(scene, ob, psys, (float)framenr, &old_framenr);
|
||||
|
||||
if(result == PTCACHE_READ_EXACT) {
|
||||
if(result == PTCACHE_READ_EXACT || result == PTCACHE_READ_INTERPOLATED) {
|
||||
//if(part->phystype==PART_PHYS_KEYED && psys->flag&PSYS_FIRST_KEYED) {
|
||||
// psys_count_keyed_targets(ob,psys);
|
||||
// set_keyed_keys(scene, ob, psys);
|
||||
@ -4687,15 +4696,12 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
|
||||
cache->simframe= framenr;
|
||||
cache->flag |= PTCACHE_SIMULATION_VALID;
|
||||
|
||||
if(cache->flag & PTCACHE_OUTDATED)
|
||||
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_FREE);
|
||||
if(result == PTCACHE_READ_INTERPOLATED && cache->flag & PTCACHE_REDO_NEEDED)
|
||||
write_particles_to_cache(ob, psys, cfra);
|
||||
|
||||
return;
|
||||
}
|
||||
else if((cache->flag & PTCACHE_AUTOCACHE)==0 && result==PTCACHE_READ_OLD) {
|
||||
/* clear cache after current frame */
|
||||
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_FREE);
|
||||
|
||||
else if(result==PTCACHE_READ_OLD) {
|
||||
/* set old cfra */
|
||||
psys->cfra = (float)old_framenr;
|
||||
|
||||
@ -4715,15 +4721,6 @@ static void system_step(Scene *scene, Object *ob, ParticleSystem *psys, Particle
|
||||
psys->recalc = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if(framenr != startframe && framedelta != 1 && cache->flag & PTCACHE_AUTOCACHE) {
|
||||
//psys_reset(psys, PSYS_RESET_CACHE_MISS);
|
||||
/* make sure cache is recalculated */
|
||||
BKE_ptcache_id_clear(&pid, PTCACHE_CLEAR_FRAME, (int)cfra);
|
||||
psys->cfra = cfra;
|
||||
psys->recalc = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
cache->flag &= ~PTCACHE_SIMULATION_VALID;
|
||||
|
@ -303,7 +303,7 @@ static int ptcache_pid_elemsize(PTCacheID *pid)
|
||||
else if(pid->type==PTCACHE_TYPE_PARTICLES)
|
||||
return sizeof(ParticleKey);
|
||||
else if(pid->type==PTCACHE_TYPE_CLOTH)
|
||||
return 0; // TODO
|
||||
return 9 * sizeof(float);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -321,10 +321,11 @@ static int ptcache_pid_totelem(PTCacheID *pid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ptcache_update_info(PTCacheID *pid)
|
||||
void BKE_ptcache_update_info(PTCacheID *pid)
|
||||
{
|
||||
PointCache *cache = pid->cache;
|
||||
int totframes = 0;
|
||||
char mem_info[64];
|
||||
|
||||
if(cache->flag & PTCACHE_DISK_CACHE) {
|
||||
int cfra = cache->startframe;
|
||||
@ -334,7 +335,7 @@ void ptcache_update_info(PTCacheID *pid)
|
||||
totframes++;
|
||||
}
|
||||
|
||||
sprintf(cache->info, "%i frames on disk.", totframes);
|
||||
sprintf(mem_info, "%i frames on disk", totframes);
|
||||
}
|
||||
else {
|
||||
PTCacheMem *pm = cache->mem_cache.first;
|
||||
@ -351,11 +352,20 @@ void ptcache_update_info(PTCacheID *pid)
|
||||
|
||||
mb = (bytes > 1024.0f * 1024.0f);
|
||||
|
||||
sprintf(cache->info, "%i frames in memory (%.1f %s).",
|
||||
sprintf(mem_info, "%i frames in memory (%.1f %s)",
|
||||
totframes,
|
||||
bytes / (mb ? 1024.0f * 1024.0f : 1024.0f),
|
||||
mb ? "Mb" : "kb");
|
||||
}
|
||||
|
||||
if(cache->flag & PTCACHE_OUTDATED) {
|
||||
sprintf(cache->info, "%s, cache is outdated!", mem_info);
|
||||
}
|
||||
else if(cache->flag & PTCACHE_FRAMES_SKIPPED) {
|
||||
sprintf(cache->info, "%s, not exact since frame %i.", mem_info, cache->last_exact);
|
||||
}
|
||||
else
|
||||
sprintf(cache->info, "%s.", mem_info);
|
||||
}
|
||||
/* reads cache from disk or memory */
|
||||
/* possible to get old or interpolated result */
|
||||
@ -370,10 +380,13 @@ int BKE_ptcache_read_cache(PTCacheReader *reader)
|
||||
int elemsize = ptcache_pid_elemsize(pid);
|
||||
int i, incr = elemsize / sizeof(float);
|
||||
float frs_sec = reader->scene->r.frs_sec;
|
||||
int cfra1=0, cfra2;
|
||||
int ret = 0;
|
||||
|
||||
if(totelem == 0)
|
||||
return 0;
|
||||
|
||||
|
||||
/* first check if we have the actual frame cached */
|
||||
if(cfra == (float)cfrai) {
|
||||
if(pid->cache->flag & PTCACHE_DISK_CACHE) {
|
||||
@ -419,130 +432,147 @@ int BKE_ptcache_read_cache(PTCacheReader *reader)
|
||||
MEM_freeN(data);
|
||||
}
|
||||
|
||||
return PTCACHE_READ_EXACT;
|
||||
ret = PTCACHE_READ_EXACT;
|
||||
}
|
||||
|
||||
if(ret)
|
||||
;
|
||||
/* no exact cache frame found so try to find cached frames around cfra */
|
||||
if(reader->allow_interpolate || reader->allow_old) {
|
||||
int cfra1, cfra2;
|
||||
|
||||
if(pid->cache->flag & PTCACHE_DISK_CACHE) {
|
||||
pf=NULL;
|
||||
while(cfrai > pid->cache->startframe && !pf) {
|
||||
cfrai--;
|
||||
pf= BKE_ptcache_file_open(pid, PTCACHE_FILE_READ, cfrai);
|
||||
cfra1 = cfrai;
|
||||
}
|
||||
else if(pid->cache->flag & PTCACHE_DISK_CACHE) {
|
||||
pf=NULL;
|
||||
while(cfrai > pid->cache->startframe && !pf) {
|
||||
cfrai--;
|
||||
pf= BKE_ptcache_file_open(pid, PTCACHE_FILE_READ, cfrai);
|
||||
cfra1 = cfrai;
|
||||
}
|
||||
|
||||
if(reader->old_frame)
|
||||
*(reader->old_frame) = cfrai;
|
||||
|
||||
cfrai = (int)cfra;
|
||||
while(cfrai < pid->cache->endframe && !pf2) {
|
||||
cfrai++;
|
||||
pf2= BKE_ptcache_file_open(pid, PTCACHE_FILE_READ, cfrai);
|
||||
cfra2 = cfrai;
|
||||
}
|
||||
cfrai = (int)cfra;
|
||||
while(cfrai < pid->cache->endframe && !pf2) {
|
||||
cfrai++;
|
||||
pf2= BKE_ptcache_file_open(pid, PTCACHE_FILE_READ, cfrai);
|
||||
cfra2 = cfrai;
|
||||
}
|
||||
else if(pid->cache->mem_cache.first){
|
||||
pm = pid->cache->mem_cache.first;
|
||||
}
|
||||
else if(pid->cache->mem_cache.first){
|
||||
pm = pid->cache->mem_cache.first;
|
||||
|
||||
while(pm->next && pm->next->frame < cfra)
|
||||
pm= pm->next;
|
||||
while(pm->next && pm->next->frame < cfra)
|
||||
pm= pm->next;
|
||||
|
||||
if(pm) {
|
||||
if(pm) {
|
||||
if(reader->old_frame)
|
||||
*(reader->old_frame) = pm->frame;
|
||||
cfra1 = pm->frame;
|
||||
}
|
||||
cfra1 = pm->frame;
|
||||
}
|
||||
|
||||
pm2 = pid->cache->mem_cache.last;
|
||||
pm2 = pid->cache->mem_cache.last;
|
||||
|
||||
while(pm2->prev && pm2->frame > cfra)
|
||||
if(pm2 && pm2->frame < cfra)
|
||||
pm2 = NULL;
|
||||
else {
|
||||
while(pm2->prev && pm2->prev->frame > cfra)
|
||||
pm2= pm2->prev;
|
||||
|
||||
if(pm2)
|
||||
cfra2 = pm2->frame;
|
||||
}
|
||||
}
|
||||
|
||||
if(reader->allow_interpolate && ((pf && pf2) || (pm && pm2))) {
|
||||
/* interpolate from nearest frames */
|
||||
float *data1, *data2;
|
||||
if(ret)
|
||||
;
|
||||
else if((pf && pf2) || (pm && pm2)) {
|
||||
/* interpolate from nearest frames if cache isn't outdated */
|
||||
float *data1, *data2;
|
||||
|
||||
if(pm) {
|
||||
data1 = pm->data;
|
||||
data2 = pm2->data;
|
||||
if(pm) {
|
||||
data1 = pm->data;
|
||||
data2 = pm2->data;
|
||||
}
|
||||
else {
|
||||
data1 = MEM_callocN(elemsize, "pointcache read data1");
|
||||
data2 = MEM_callocN(elemsize, "pointcache read data2");
|
||||
}
|
||||
|
||||
for(i=0; i<totelem; i++) {
|
||||
if(pf && pf2) {
|
||||
if(!BKE_ptcache_file_read_floats(pf, data1, incr)) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
BKE_ptcache_file_close(pf2);
|
||||
MEM_freeN(data1);
|
||||
MEM_freeN(data2);
|
||||
return 0;
|
||||
}
|
||||
if(!BKE_ptcache_file_read_floats(pf2, data2, incr)) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
BKE_ptcache_file_close(pf2);
|
||||
MEM_freeN(data1);
|
||||
MEM_freeN(data2);
|
||||
return 0;
|
||||
}
|
||||
reader->interpolate_elem(i, reader->calldata, frs_sec, cfra, (float)cfra1, (float)cfra2, data1, data2);
|
||||
}
|
||||
else {
|
||||
data1 = MEM_callocN(elemsize, "pointcache read data1");
|
||||
data2 = MEM_callocN(elemsize, "pointcache read data2");
|
||||
reader->interpolate_elem(i, reader->calldata, frs_sec, cfra, (float)cfra1, (float)cfra2, data1, data2);
|
||||
data1 += incr;
|
||||
data2 += incr;
|
||||
}
|
||||
|
||||
for(i=0; i<totelem; i++) {
|
||||
if(pf && pf2) {
|
||||
if(!BKE_ptcache_file_read_floats(pf, data1, incr)) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
BKE_ptcache_file_close(pf2);
|
||||
MEM_freeN(data1);
|
||||
MEM_freeN(data2);
|
||||
return 0;
|
||||
}
|
||||
if(!BKE_ptcache_file_read_floats(pf2, data2, incr)) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
BKE_ptcache_file_close(pf2);
|
||||
MEM_freeN(data1);
|
||||
MEM_freeN(data2);
|
||||
return 0;
|
||||
}
|
||||
reader->interpolate_elem(i, reader->calldata, frs_sec, cfra, cfra1, cfra2, data1, data2);
|
||||
}
|
||||
else {
|
||||
reader->interpolate_elem(i, reader->calldata, frs_sec, cfra, cfra1, cfra2, data1, data2);
|
||||
data1 += incr;
|
||||
data2 += incr;
|
||||
}
|
||||
}
|
||||
|
||||
if(pf) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
BKE_ptcache_file_close(pf2);
|
||||
MEM_freeN(data1);
|
||||
MEM_freeN(data2);
|
||||
}
|
||||
|
||||
return PTCACHE_READ_INTERPOLATED;
|
||||
}
|
||||
else if(reader->allow_old && (pf || pm)) {
|
||||
/* use last valid cache frame */
|
||||
float *data;
|
||||
|
||||
if(pm)
|
||||
data = pm->data;
|
||||
else
|
||||
data = MEM_callocN(elemsize, "pointcache read data");
|
||||
if(pf) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
BKE_ptcache_file_close(pf2);
|
||||
MEM_freeN(data1);
|
||||
MEM_freeN(data2);
|
||||
}
|
||||
|
||||
for(i=0; i<totelem; i++) {
|
||||
if(pf) {
|
||||
if(!BKE_ptcache_file_read_floats(pf, data, incr)) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
if(pf2)
|
||||
BKE_ptcache_file_close(pf2);
|
||||
return 0;
|
||||
}
|
||||
reader->set_elem(i, reader->calldata, data);
|
||||
}
|
||||
else {
|
||||
reader->set_elem(i, reader->calldata, data);
|
||||
data += incr;
|
||||
}
|
||||
}
|
||||
ret = PTCACHE_READ_INTERPOLATED;
|
||||
}
|
||||
else if(pf || pm) {
|
||||
/* use last valid cache frame */
|
||||
float *data;
|
||||
|
||||
if(pf) {
|
||||
/* don't read cache if allready simulated past cached frame */
|
||||
if(cfra1 && cfra1 <= pid->cache->simframe) {
|
||||
if(pf)
|
||||
BKE_ptcache_file_close(pf);
|
||||
MEM_freeN(data);
|
||||
}
|
||||
if(pf2)
|
||||
BKE_ptcache_file_close(pf2);
|
||||
|
||||
return PTCACHE_READ_OLD;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(pm)
|
||||
data = pm->data;
|
||||
else
|
||||
data = MEM_callocN(elemsize, "pointcache read data");
|
||||
|
||||
for(i=0; i<totelem; i++) {
|
||||
if(pf) {
|
||||
if(!BKE_ptcache_file_read_floats(pf, data, incr)) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
if(pf2)
|
||||
BKE_ptcache_file_close(pf2);
|
||||
return 0;
|
||||
}
|
||||
reader->set_elem(i, reader->calldata, data);
|
||||
}
|
||||
else {
|
||||
reader->set_elem(i, reader->calldata, data);
|
||||
data += incr;
|
||||
}
|
||||
}
|
||||
|
||||
if(pf) {
|
||||
BKE_ptcache_file_close(pf);
|
||||
MEM_freeN(data);
|
||||
}
|
||||
if(pf2)
|
||||
BKE_ptcache_file_close(pf2);
|
||||
|
||||
ret = PTCACHE_READ_OLD;
|
||||
}
|
||||
|
||||
if(pf)
|
||||
@ -550,7 +580,20 @@ int BKE_ptcache_read_cache(PTCacheReader *reader)
|
||||
if(pf2)
|
||||
BKE_ptcache_file_close(pf2);
|
||||
|
||||
return 0;
|
||||
if((pid->cache->flag & PTCACHE_QUICK_CACHE)==0) {
|
||||
/* clear invalid cache frames so that better stuff can be simulated */
|
||||
if(pid->cache->flag & PTCACHE_OUTDATED) {
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_AFTER, cfra);
|
||||
}
|
||||
else if(pid->cache->flag & PTCACHE_FRAMES_SKIPPED) {
|
||||
if(cfra <= pid->cache->last_exact)
|
||||
pid->cache->flag &= ~PTCACHE_FRAMES_SKIPPED;
|
||||
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_AFTER, MAX2(cfra,pid->cache->last_exact));
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
/* writes cache to disk or memory */
|
||||
int BKE_ptcache_write_cache(PTCacheWriter *writer)
|
||||
@ -559,57 +602,118 @@ int BKE_ptcache_write_cache(PTCacheWriter *writer)
|
||||
PTCacheFile *pf= NULL;
|
||||
int elemsize = ptcache_pid_elemsize(writer->pid);
|
||||
int i, incr = elemsize / sizeof(float);
|
||||
int add = 0, overwrite = 0, ocfra;
|
||||
float temp[14];
|
||||
|
||||
if(writer->totelem == 0 || writer->cfra <= 0)
|
||||
return 0;
|
||||
|
||||
if(cache->flag & PTCACHE_DISK_CACHE) {
|
||||
pf = BKE_ptcache_file_open(writer->pid, PTCACHE_FILE_WRITE, writer->cfra);
|
||||
if(!pf)
|
||||
return 0;
|
||||
/* allways start from scratch on the first frame */
|
||||
if(writer->cfra == cache->startframe) {
|
||||
BKE_ptcache_id_clear(writer->pid, PTCACHE_CLEAR_ALL, writer->cfra);
|
||||
cache->flag &= ~PTCACHE_REDO_NEEDED;
|
||||
add = 1;
|
||||
}
|
||||
else {
|
||||
int cfra = cache->endframe;
|
||||
/* find last cached frame */
|
||||
while(cfra > cache->startframe && !BKE_ptcache_id_exist(writer->pid, cfra))
|
||||
cfra--;
|
||||
|
||||
for(i=0; i<writer->totelem; i++)
|
||||
BKE_ptcache_file_write_floats(pf, writer->elem_ptr(i, writer->calldata), incr);
|
||||
/* find second last cached frame */
|
||||
ocfra = cfra-1;
|
||||
while(ocfra > cache->startframe && !BKE_ptcache_id_exist(writer->pid, ocfra))
|
||||
ocfra--;
|
||||
|
||||
if(writer->cfra > cfra) {
|
||||
if(ocfra >= cache->startframe && cfra - ocfra < cache->step)
|
||||
overwrite = 1;
|
||||
else
|
||||
add = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(add || overwrite) {
|
||||
if(overwrite)
|
||||
BKE_ptcache_id_clear(writer->pid, PTCACHE_CLEAR_FRAME, ocfra);
|
||||
|
||||
pf = BKE_ptcache_file_open(writer->pid, PTCACHE_FILE_WRITE, writer->cfra);
|
||||
if(!pf)
|
||||
return 0;
|
||||
|
||||
for(i=0; i<writer->totelem; i++) {
|
||||
writer->set_elem(i, writer->calldata, &temp);
|
||||
BKE_ptcache_file_write_floats(pf, &temp, incr);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
PTCacheMem *pm = MEM_callocN(sizeof(PTCacheMem), "Pointcache mem");
|
||||
PTCacheMem *pm;
|
||||
PTCacheMem *pm2;
|
||||
float *pmdata;
|
||||
|
||||
pm->data = MEM_callocN(elemsize * writer->totelem, "Pointcache mem data");
|
||||
pmdata = pm->data;
|
||||
|
||||
for(i=0; i<writer->totelem; i++, pmdata+=incr)
|
||||
memcpy(pmdata, writer->elem_ptr(i, writer->calldata), elemsize);
|
||||
|
||||
pm->frame = writer->cfra;
|
||||
pm->totpoint = writer->totelem;
|
||||
|
||||
/* find add location */
|
||||
pm2 = cache->mem_cache.first;
|
||||
if(!pm2)
|
||||
BLI_addtail(&cache->mem_cache, pm);
|
||||
else if(pm2->frame == writer->cfra) {
|
||||
/* overwrite same frame */
|
||||
MEM_freeN(pm2->data);
|
||||
pm2->data = pm->data;
|
||||
MEM_freeN(pm);
|
||||
|
||||
/* allways start from scratch on the first frame */
|
||||
if(writer->cfra == cache->startframe) {
|
||||
BKE_ptcache_id_clear(writer->pid, PTCACHE_CLEAR_ALL, writer->cfra);
|
||||
cache->flag &= ~PTCACHE_REDO_NEEDED;
|
||||
add = 1;
|
||||
}
|
||||
else {
|
||||
while(pm2->next && pm2->next->frame < writer->cfra)
|
||||
pm2 = pm2->next;
|
||||
pm2 = cache->mem_cache.last;
|
||||
|
||||
BLI_insertlinkafter(&cache->mem_cache, pm2, pm);
|
||||
if(pm2 && writer->cfra > pm2->frame) {
|
||||
if(pm2 && pm2->prev && pm2->frame - pm2->prev->frame < cache->step)
|
||||
overwrite = 1;
|
||||
else
|
||||
add = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(overwrite) {
|
||||
pm = cache->mem_cache.last;
|
||||
pmdata = pm->data;
|
||||
|
||||
for(i=0; i<writer->totelem; i++, pmdata+=incr) {
|
||||
writer->set_elem(i, writer->calldata, &temp);
|
||||
memcpy(pmdata, &temp, elemsize);
|
||||
}
|
||||
|
||||
pm->frame = writer->cfra;
|
||||
}
|
||||
else if(add) {
|
||||
pm = MEM_callocN(sizeof(PTCacheMem), "Pointcache mem");
|
||||
pm->data = MEM_callocN(elemsize * writer->totelem, "Pointcache mem data");
|
||||
pmdata = pm->data;
|
||||
|
||||
for(i=0; i<writer->totelem; i++, pmdata+=incr) {
|
||||
writer->set_elem(i, writer->calldata, &temp);
|
||||
memcpy(pmdata, &temp, elemsize);
|
||||
}
|
||||
|
||||
pm->frame = writer->cfra;
|
||||
pm->totpoint = writer->totelem;
|
||||
|
||||
BLI_addtail(&cache->mem_cache, pm);
|
||||
}
|
||||
}
|
||||
|
||||
if(writer->cfra - cache->last_exact == 1)
|
||||
cache->last_exact = writer->cfra;
|
||||
if(add || overwrite) {
|
||||
if(writer->cfra - cache->last_exact == 1
|
||||
|| writer->cfra == cache->startframe) {
|
||||
cache->last_exact = writer->cfra;
|
||||
cache->flag &= ~PTCACHE_FRAMES_SKIPPED;
|
||||
}
|
||||
else
|
||||
cache->flag |= PTCACHE_FRAMES_SKIPPED;
|
||||
}
|
||||
|
||||
if(pf)
|
||||
BKE_ptcache_file_close(pf);
|
||||
|
||||
ptcache_update_info(writer->pid);
|
||||
BKE_ptcache_update_info(writer->pid);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -730,7 +834,7 @@ void BKE_ptcache_id_clear(PTCacheID *pid, int mode, int cfra)
|
||||
break;
|
||||
}
|
||||
|
||||
ptcache_update_info(pid);
|
||||
BKE_ptcache_update_info(pid);
|
||||
}
|
||||
|
||||
int BKE_ptcache_id_exist(PTCacheID *pid, int cfra)
|
||||
@ -762,6 +866,9 @@ void BKE_ptcache_id_time(PTCacheID *pid, Scene *scene, float cfra, int *startfra
|
||||
PointCache *cache;
|
||||
float offset, time, nexttime;
|
||||
|
||||
/* TODO: this has to be sorter out once bsystem_time gets redone, */
|
||||
/* now caches can handle interpolating etc. too - jahka */
|
||||
|
||||
/* time handling for point cache:
|
||||
* - simulation time is scaled by result of bsystem_time
|
||||
* - for offsetting time only time offset is taken into account, since
|
||||
@ -798,7 +905,7 @@ void BKE_ptcache_id_time(PTCacheID *pid, Scene *scene, float cfra, int *startfra
|
||||
int BKE_ptcache_id_reset(Scene *scene, PTCacheID *pid, int mode)
|
||||
{
|
||||
PointCache *cache;
|
||||
int reset, clear, current, after;
|
||||
int reset, clear, after;
|
||||
|
||||
if(!pid->cache)
|
||||
return 0;
|
||||
@ -806,23 +913,17 @@ int BKE_ptcache_id_reset(Scene *scene, PTCacheID *pid, int mode)
|
||||
cache= pid->cache;
|
||||
reset= 0;
|
||||
clear= 0;
|
||||
current= 0;
|
||||
after= 0;
|
||||
|
||||
if(mode == PTCACHE_RESET_DEPSGRAPH) {
|
||||
if(!(cache->flag & PTCACHE_BAKED) && !BKE_ptcache_get_continue_physics()) {
|
||||
if(cache->flag & PTCACHE_AUTOCACHE) {
|
||||
reset= 1;
|
||||
if(cache->flag & PTCACHE_QUICK_CACHE)
|
||||
clear= 1;
|
||||
}
|
||||
else {
|
||||
current= 1;
|
||||
after= 1;
|
||||
cache->flag |= PTCACHE_OUTDATED;
|
||||
}
|
||||
|
||||
after= 1;
|
||||
}
|
||||
else
|
||||
cache->flag |= PTCACHE_OUTDATED;
|
||||
|
||||
cache->flag |= PTCACHE_OUTDATED;
|
||||
}
|
||||
else if(mode == PTCACHE_RESET_BAKED) {
|
||||
if(!BKE_ptcache_get_continue_physics()) {
|
||||
@ -839,17 +940,9 @@ int BKE_ptcache_id_reset(Scene *scene, PTCacheID *pid, int mode)
|
||||
if(!(cache->flag & PTCACHE_BAKED))
|
||||
clear= 1;
|
||||
}
|
||||
else if(mode == PTCACHE_RESET_FREE) {
|
||||
if(!(cache->flag & PTCACHE_BAKED) && !BKE_ptcache_get_continue_physics()) {
|
||||
if((cache->flag & PTCACHE_AUTOCACHE)==0) {
|
||||
current= 1;
|
||||
after= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(reset) {
|
||||
cache->flag &= ~(PTCACHE_OUTDATED|PTCACHE_SIMULATION_VALID);
|
||||
cache->flag &= ~(PTCACHE_REDO_NEEDED|PTCACHE_SIMULATION_VALID);
|
||||
cache->simframe= 0;
|
||||
cache->last_exact= 0;
|
||||
|
||||
@ -862,12 +955,10 @@ int BKE_ptcache_id_reset(Scene *scene, PTCacheID *pid, int mode)
|
||||
}
|
||||
if(clear)
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_ALL, 0);
|
||||
if(after)
|
||||
else if(after)
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_AFTER, CFRA);
|
||||
if(current)
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_FRAME, CFRA);
|
||||
|
||||
return (reset || clear || current || after);
|
||||
return (reset || clear || after);
|
||||
}
|
||||
|
||||
int BKE_ptcache_object_reset(Scene *scene, Object *ob, int mode)
|
||||
@ -987,6 +1078,7 @@ PointCache *BKE_ptcache_add()
|
||||
cache= MEM_callocN(sizeof(PointCache), "PointCache");
|
||||
cache->startframe= 1;
|
||||
cache->endframe= 250;
|
||||
cache->step= 10;
|
||||
|
||||
return cache;
|
||||
}
|
||||
@ -1019,7 +1111,39 @@ PointCache *BKE_ptcache_copy(PointCache *cache)
|
||||
|
||||
|
||||
/* Baking */
|
||||
void BKE_ptcache_autocache_all(Scene *scene)
|
||||
static int count_quick_cache(Scene *scene, int *quick_step)
|
||||
{
|
||||
Base *base = scene->base.first;
|
||||
PTCacheID *pid;
|
||||
ListBase pidlist;
|
||||
int autocache_count= 0;
|
||||
|
||||
for(base = scene->base.first; base; base = base->next) {
|
||||
if(base->object) {
|
||||
BKE_ptcache_ids_from_object(&pidlist, base->object);
|
||||
|
||||
for(pid=pidlist.first; pid; pid=pid->next) {
|
||||
if((pid->cache->flag & PTCACHE_BAKED)
|
||||
|| (pid->cache->flag & PTCACHE_QUICK_CACHE)==0)
|
||||
continue;
|
||||
|
||||
if(pid->cache->flag & PTCACHE_OUTDATED || (pid->cache->flag & PTCACHE_SIMULATION_VALID)==0) {
|
||||
if(!autocache_count)
|
||||
*quick_step = pid->cache->step;
|
||||
else
|
||||
*quick_step = MIN2(*quick_step, pid->cache->step);
|
||||
|
||||
autocache_count++;
|
||||
}
|
||||
}
|
||||
|
||||
BLI_freelistN(&pidlist);
|
||||
}
|
||||
}
|
||||
|
||||
return autocache_count;
|
||||
}
|
||||
void BKE_ptcache_quick_cache_all(Scene *scene)
|
||||
{
|
||||
PTCacheBaker baker;
|
||||
|
||||
@ -1032,7 +1156,7 @@ void BKE_ptcache_autocache_all(Scene *scene)
|
||||
baker.render=0;
|
||||
baker.scene=scene;
|
||||
|
||||
if(psys_count_autocache(scene, NULL))
|
||||
if(count_quick_cache(scene, &baker.quick_step))
|
||||
BKE_ptcache_make_cache(&baker);
|
||||
}
|
||||
|
||||
@ -1050,11 +1174,10 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
|
||||
int endframe = CFRA;
|
||||
int bake = baker->bake;
|
||||
int render = baker->render;
|
||||
int step = baker->quick_step;
|
||||
|
||||
G.afbreek = 0;
|
||||
|
||||
//printf("Caching physics...");
|
||||
|
||||
/* set caches to baking mode and figure out start frame */
|
||||
if(pid) {
|
||||
/* cache/bake a single object */
|
||||
@ -1063,7 +1186,7 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
|
||||
if(pid->type==PTCACHE_TYPE_PARTICLES)
|
||||
psys_get_pointcache_start_end(scene, pid->data, &cache->startframe, &cache->endframe);
|
||||
|
||||
if(bake || cache->flag & PTCACHE_OUTDATED)
|
||||
if(bake || cache->flag & PTCACHE_REDO_NEEDED)
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_ALL, 0);
|
||||
|
||||
startframe = MAX2(cache->last_exact, cache->startframe);
|
||||
@ -1072,8 +1195,9 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
|
||||
endframe = cache->endframe;
|
||||
cache->flag |= PTCACHE_BAKING;
|
||||
}
|
||||
else
|
||||
else {
|
||||
endframe = MIN2(endframe, cache->endframe);
|
||||
}
|
||||
|
||||
cache->flag &= ~PTCACHE_BAKED;
|
||||
}
|
||||
@ -1088,31 +1212,30 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
|
||||
if(pid->type==PTCACHE_TYPE_PARTICLES)
|
||||
psys_get_pointcache_start_end(scene, pid->data, &cache->startframe, &cache->endframe);
|
||||
|
||||
if(cache->flag & PTCACHE_OUTDATED)
|
||||
if((cache->flag & PTCACHE_REDO_NEEDED || (cache->flag & PTCACHE_SIMULATION_VALID)==0)
|
||||
&& ((cache->flag & PTCACHE_QUICK_CACHE)==0 || render || bake))
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_ALL, 0);
|
||||
|
||||
startframe = MIN2(startframe, cache->startframe);
|
||||
|
||||
if(bake) {
|
||||
endframe = MAX2(endframe, cache->endframe);
|
||||
if(bake || render) {
|
||||
cache->flag |= PTCACHE_BAKING;
|
||||
|
||||
if(bake)
|
||||
endframe = MAX2(endframe, cache->endframe);
|
||||
}
|
||||
else if(render)
|
||||
cache->flag |= PTCACHE_BAKING;
|
||||
|
||||
cache->flag &= ~PTCACHE_BAKED;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
BLI_freelistN(&pidlist);
|
||||
}
|
||||
|
||||
CFRA= startframe;
|
||||
scene->r.framelen = 1.0;
|
||||
scene_update_for_newframe(scene, scene->lay);
|
||||
|
||||
for(; CFRA <= endframe; CFRA++) {
|
||||
for(; CFRA <= endframe; CFRA+=step) {
|
||||
float prog;
|
||||
|
||||
if(bake)
|
||||
@ -1133,7 +1256,8 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
|
||||
|
||||
/* clear baking flag */
|
||||
if(pid) {
|
||||
cache->flag &= ~(PTCACHE_BAKING|PTCACHE_OUTDATED);
|
||||
cache->flag &= ~(PTCACHE_BAKING|PTCACHE_REDO_NEEDED);
|
||||
cache->flag |= PTCACHE_SIMULATION_VALID;
|
||||
if(bake)
|
||||
cache->flag |= PTCACHE_BAKED;
|
||||
}
|
||||
@ -1141,17 +1265,26 @@ void BKE_ptcache_make_cache(PTCacheBaker* baker)
|
||||
BKE_ptcache_ids_from_object(&pidlist, base->object);
|
||||
|
||||
for(pid=pidlist.first; pid; pid=pid->next) {
|
||||
cache->flag &= ~(PTCACHE_BAKING|PTCACHE_OUTDATED);
|
||||
cache = pid->cache;
|
||||
|
||||
if(step > 1)
|
||||
cache->flag &= ~(PTCACHE_BAKING|PTCACHE_OUTDATED);
|
||||
else
|
||||
cache->flag &= ~(PTCACHE_BAKING|PTCACHE_REDO_NEEDED);
|
||||
|
||||
cache->flag |= PTCACHE_SIMULATION_VALID;
|
||||
|
||||
if(bake)
|
||||
cache->flag |= PTCACHE_BAKED;
|
||||
}
|
||||
BLI_freelistN(&pidlist);
|
||||
}
|
||||
|
||||
//printf("done!\n");
|
||||
|
||||
scene->r.framelen = frameleno;
|
||||
CFRA = cfrao;
|
||||
scene_update_for_newframe(scene, scene->lay);
|
||||
|
||||
/* TODO: call redraw all windows somehow */
|
||||
}
|
||||
|
||||
void BKE_ptcache_toggle_disk_cache(PTCacheID *pid) {
|
||||
@ -1161,6 +1294,7 @@ void BKE_ptcache_toggle_disk_cache(PTCacheID *pid) {
|
||||
int totelem=0;
|
||||
int float_count=0;
|
||||
int tot;
|
||||
int last_exact = cache->last_exact;
|
||||
|
||||
if (!G.relbase_valid){
|
||||
cache->flag &= ~PTCACHE_DISK_CACHE;
|
||||
@ -1230,6 +1364,7 @@ void BKE_ptcache_toggle_disk_cache(PTCacheID *pid) {
|
||||
}
|
||||
|
||||
pm->frame = cfra;
|
||||
pm->totpoint = totelem;
|
||||
|
||||
BLI_addtail(&pid->cache->mem_cache, pm);
|
||||
|
||||
@ -1241,4 +1376,8 @@ void BKE_ptcache_toggle_disk_cache(PTCacheID *pid) {
|
||||
BKE_ptcache_id_clear(pid, PTCACHE_CLEAR_ALL, 0);
|
||||
cache->flag &= ~PTCACHE_DISK_CACHE;
|
||||
}
|
||||
|
||||
cache->last_exact = last_exact;
|
||||
|
||||
BKE_ptcache_update_info(pid);
|
||||
}
|
||||
|
@ -65,8 +65,8 @@ void BKE_reports_init(ReportList *reports, int flag)
|
||||
|
||||
memset(reports, 0, sizeof(ReportList));
|
||||
|
||||
reports->storelevel= RPT_WARNING;
|
||||
reports->printlevel= RPT_WARNING;
|
||||
reports->storelevel= RPT_INFO;
|
||||
reports->printlevel= RPT_INFO;
|
||||
reports->flag= flag;
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,7 @@ 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);
|
||||
void BLI_getlastdir(const char* dir, char *last, int maxlen);
|
||||
int BLI_testextensie(const char *str, const char *ext);
|
||||
void BLI_uniquename(struct ListBase *list, void *vlink, char defname[], char delim, short name_offs, short len);
|
||||
void BLI_newname(char * name, int add);
|
||||
|
@ -218,7 +218,7 @@ void BLI_builddir(char *dirname, char *relname)
|
||||
{
|
||||
struct dirent *fname;
|
||||
struct dirlink *dlink;
|
||||
int rellen, newnum = 0, seen_ = 0, seen__ = 0;
|
||||
int rellen, newnum = 0, ignore;
|
||||
char buf[256];
|
||||
DIR *dir;
|
||||
|
||||
@ -238,21 +238,17 @@ void BLI_builddir(char *dirname, char *relname)
|
||||
if ( (dir = (DIR *)opendir(".")) ){
|
||||
while ((fname = (struct dirent*) readdir(dir)) != NULL) {
|
||||
|
||||
if(hide_dot && fname->d_name[0]=='.' && fname->d_name[1]!='.' && fname->d_name[1]!=0);
|
||||
if(hide_dot && fname->d_name[0]=='.' && fname->d_name[1]!='.' && fname->d_name[1]!=0) {
|
||||
}
|
||||
else if ( ( (fname->d_name[0] == '.') && (fname->d_name[1] == 0) ) ||
|
||||
( (fname->d_name[0] == '.') && (fname->d_name[1] == '.') && (fname->d_name[2] == 0)) ) {
|
||||
/* ignore '.' and '..' */
|
||||
}
|
||||
else {
|
||||
|
||||
dlink = (struct dirlink *)malloc(sizeof(struct dirlink));
|
||||
if (dlink){
|
||||
strcpy(buf+rellen,fname->d_name);
|
||||
|
||||
dlink->name = BLI_strdup(buf);
|
||||
|
||||
if (dlink->name[0] == '.') {
|
||||
if (dlink->name[1] == 0) seen_ = 1;
|
||||
else if (dlink->name[1] == '.') {
|
||||
if (dlink->name[2] == 0) seen__ = 1;
|
||||
}
|
||||
}
|
||||
BLI_addhead(dirbase,dlink);
|
||||
newnum++;
|
||||
}
|
||||
@ -260,30 +256,6 @@ void BLI_builddir(char *dirname, char *relname)
|
||||
}
|
||||
|
||||
if (newnum){
|
||||
#ifndef WIN32
|
||||
if (seen_ == 0) { /* Cachefs PATCH */
|
||||
dlink = (struct dirlink *)malloc(sizeof(struct dirlink));
|
||||
strcpy(buf+rellen,"./.");
|
||||
dlink->name = BLI_strdup(buf);
|
||||
BLI_addhead(dirbase,dlink);
|
||||
newnum++;
|
||||
}
|
||||
if (seen__ == 0) { /* MAC PATCH */
|
||||
dlink = (struct dirlink *)malloc(sizeof(struct dirlink));
|
||||
strcpy(buf+rellen,"./..");
|
||||
dlink->name = BLI_strdup(buf);
|
||||
BLI_addhead(dirbase,dlink);
|
||||
newnum++;
|
||||
}
|
||||
#else // WIN32
|
||||
if (seen_ == 0) { /* should only happen for root paths like "C:\" */
|
||||
dlink = (struct dirlink *)malloc(sizeof(struct dirlink));
|
||||
strcpy(buf+rellen,".");
|
||||
dlink->name = BLI_strdup(buf);
|
||||
BLI_addhead(dirbase,dlink);
|
||||
newnum++;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (files) files=(struct direntry *)realloc(files,(totnum+newnum) * sizeof(struct direntry));
|
||||
else files=(struct direntry *)malloc(newnum * sizeof(struct direntry));
|
||||
|
@ -736,6 +736,25 @@ void BLI_splitdirstring(char *di, char *fi)
|
||||
}
|
||||
}
|
||||
|
||||
void BLI_getlastdir(const char* dir, char *last, int maxlen)
|
||||
{
|
||||
char *s = dir;
|
||||
char *lslash = NULL;
|
||||
char *prevslash = NULL;
|
||||
while (*s) {
|
||||
if ((*s == '\\') || (*s == '/')) {
|
||||
prevslash = lslash;
|
||||
lslash = s;
|
||||
}
|
||||
s++;
|
||||
}
|
||||
if (prevslash) {
|
||||
BLI_strncpy(last, prevslash+1, maxlen);
|
||||
} else {
|
||||
BLI_strncpy(last, dir, maxlen);
|
||||
}
|
||||
}
|
||||
|
||||
char *BLI_gethome(void) {
|
||||
#if !defined(WIN32)
|
||||
return getenv("HOME");
|
||||
|
@ -5595,21 +5595,6 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
|
||||
/* temporarily hide it */
|
||||
ar->flag = RGN_FLAG_HIDDEN;
|
||||
break;
|
||||
|
||||
case SPACE_FILE:
|
||||
/* channel (bookmarks/directories) region */
|
||||
ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
|
||||
BLI_addtail(lb, ar);
|
||||
ar->regiontype= RGN_TYPE_CHANNELS;
|
||||
ar->alignment= RGN_ALIGN_LEFT;
|
||||
ar->v2d.scroll= V2D_SCROLL_RIGHT;
|
||||
/* button UI region */
|
||||
ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
|
||||
BLI_addtail(lb, ar);
|
||||
ar->regiontype= RGN_TYPE_UI;
|
||||
ar->alignment= RGN_ALIGN_TOP;
|
||||
break;
|
||||
|
||||
#if 0
|
||||
case SPACE_BUTS:
|
||||
/* context UI region */
|
||||
@ -9013,6 +8998,8 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
Tex *tx;
|
||||
ParticleSettings *part;
|
||||
Object *ob;
|
||||
PTCacheID *pid;
|
||||
ListBase pidlist;
|
||||
|
||||
for(screen= main->screen.first; screen; screen= screen->id.next) {
|
||||
do_versions_windowmanager_2_50(screen);
|
||||
@ -9073,14 +9060,13 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
|
||||
}
|
||||
/* set old pointcaches to have disk cache flag */
|
||||
for(ob = main->object.first; ob; ob= ob->id.next) {
|
||||
ParticleSystem *psys = ob->particlesystem.first;
|
||||
|
||||
for(; psys; psys=psys->next) {
|
||||
if(psys->pointcache)
|
||||
psys->pointcache->flag |= PTCACHE_DISK_CACHE;
|
||||
}
|
||||
BKE_ptcache_ids_from_object(&pidlist, ob);
|
||||
|
||||
/* TODO: softbody & cloth caches */
|
||||
for(pid=pidlist.first; pid; pid=pid->next)
|
||||
pid->cache->flag |= PTCACHE_DISK_CACHE;
|
||||
|
||||
BLI_freelistN(&pidlist);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -552,6 +552,7 @@ static void write_userdef(WriteData *wd)
|
||||
|
||||
/* TODO: replace *cache with *cachelist once it's coded */
|
||||
#define PTCACHE_WRITE_PSYS 0
|
||||
#define PTCACHE_WRITE_CLOTH 1
|
||||
static void write_pointcaches(WriteData *wd, PointCache *cache, int type)
|
||||
{
|
||||
writestruct(wd, DATA, "PointCache", 1, cache);
|
||||
@ -563,6 +564,8 @@ static void write_pointcaches(WriteData *wd, PointCache *cache, int type)
|
||||
writestruct(wd, DATA, "PTCacheMem", 1, pm);
|
||||
if(type==PTCACHE_WRITE_PSYS)
|
||||
writestruct(wd, DATA, "ParticleKey", pm->totpoint, pm->data);
|
||||
else if(type==PTCACHE_WRITE_CLOTH)
|
||||
writedata(wd, DATA, 9 * sizeof(float) * pm->totpoint, pm->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1025,7 +1028,7 @@ static void write_modifiers(WriteData *wd, ListBase *modbase, int write_undo)
|
||||
|
||||
writestruct(wd, DATA, "ClothSimSettings", 1, clmd->sim_parms);
|
||||
writestruct(wd, DATA, "ClothCollSettings", 1, clmd->coll_parms);
|
||||
writestruct(wd, DATA, "PointCache", 1, clmd->point_cache);
|
||||
write_pointcaches(wd, clmd->point_cache, PTCACHE_WRITE_CLOTH);
|
||||
}
|
||||
else if(md->type==eModifierType_Fluidsim) {
|
||||
FluidsimModifierData *fluidmd = (FluidsimModifierData*) md;
|
||||
|
@ -29,34 +29,8 @@
|
||||
#define ED_FILES_H
|
||||
|
||||
struct SpaceFile;
|
||||
|
||||
#define FILE_SHORTDISPLAY 1
|
||||
#define FILE_LONGDISPLAY 2
|
||||
#define FILE_IMGDISPLAY 3
|
||||
|
||||
typedef struct FileSelectParams {
|
||||
char title[24]; /* title, also used for the text of the execute button */
|
||||
char dir[240]; /* directory */
|
||||
char file[80]; /* file */
|
||||
|
||||
short flag; /* settings for filter, hiding files and display mode */
|
||||
short sort; /* sort order */
|
||||
short display; /* display mode flag */
|
||||
short filter; /* filter when (flags & FILE_FILTER) is true */
|
||||
|
||||
/* XXX - temporary, better move to filelist */
|
||||
short active_bookmark;
|
||||
int active_file;
|
||||
int selstate;
|
||||
|
||||
/* XXX --- still unused -- */
|
||||
short f_fp; /* show font preview */
|
||||
char fp_str[8]; /* string to use for font preview */
|
||||
|
||||
char *pupmenu; /* allows menu for save options - result stored in menup */
|
||||
short menu; /* currently selected option in pupmenu */
|
||||
/* XXX --- end unused -- */
|
||||
} FileSelectParams;
|
||||
struct ARegion;
|
||||
struct FileSelectParams;
|
||||
|
||||
#define FILE_LAYOUT_HOR 1
|
||||
#define FILE_LAYOUT_VER 2
|
||||
@ -93,7 +67,7 @@ typedef struct FileLayout
|
||||
float column_widths[MAX_FILE_COLUMN];
|
||||
} FileLayout;
|
||||
|
||||
FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile);
|
||||
struct FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile);
|
||||
|
||||
short ED_fileselect_set_params(struct SpaceFile *sfile, const char *title, const char *path,
|
||||
short flag, short display, short filter, short sort);
|
||||
|
@ -63,6 +63,7 @@ struct Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int
|
||||
#define EM_FREEDATA 1
|
||||
#define EM_FREEUNDO 2
|
||||
#define EM_WAITCURSOR 4
|
||||
#define EM_DO_UNDO 8
|
||||
void ED_object_exit_editmode(struct bContext *C, int flag);
|
||||
void ED_object_enter_editmode(struct bContext *C, int flag);
|
||||
|
||||
|
@ -132,6 +132,8 @@ int lasso_inside_edge(short mcords[][2], short moves, int x0, int y0, int x1, in
|
||||
|
||||
/* modes */
|
||||
void ED_view3d_exit_paint_modes(struct bContext *C);
|
||||
/* get 3d region from context, also if mouse is in header or toolbar */
|
||||
struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C);
|
||||
|
||||
#endif /* ED_VIEW3D_H */
|
||||
|
||||
|
@ -456,7 +456,7 @@ typedef void (*uiBlockHandleFunc)(struct bContext *C, void *arg, int event);
|
||||
/* use inside searchfunc to add items */
|
||||
int uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin, int iconid);
|
||||
/* bfunc gets search item *poin as arg2, or if NULL the old string */
|
||||
void uiButSetSearchFunc (uiBut *but, uiButSearchFunc sfunc, void *arg1, uiButHandleFunc bfunc);
|
||||
void uiButSetSearchFunc (uiBut *but, uiButSearchFunc sfunc, void *arg1, uiButHandleFunc bfunc, void *active);
|
||||
/* height in pixels, it's using hardcoded values still */
|
||||
int uiSearchBoxhHeight(void);
|
||||
|
||||
@ -609,7 +609,7 @@ uiBlock *uiLayoutFreeBlock(uiLayout *layout);
|
||||
/* templates */
|
||||
void uiTemplateHeader(uiLayout *layout, struct bContext *C);
|
||||
void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
|
||||
char *newop, char *openop, char *unlinkop);
|
||||
char *newop, char *unlinkop);
|
||||
uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr);
|
||||
uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
|
||||
void uiTemplatePreview(uiLayout *layout, struct ID *id);
|
||||
@ -617,7 +617,9 @@ void uiTemplateColorRamp(uiLayout *layout, struct ColorBand *coba, int expand);
|
||||
void uiTemplateCurveMapping(uiLayout *layout, struct CurveMapping *cumap, int type);
|
||||
void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname);
|
||||
void uiTemplateImageLayers(uiLayout *layout, struct bContext *C, struct Image *ima, struct ImageUser *iuser);
|
||||
void uiTemplateList(uiLayout *layout, struct PointerRNA *ptr, char *propname, char *activeprop, int items);
|
||||
ListBase uiTemplateList(uiLayout *layout, struct PointerRNA *ptr, char *propname, char *activeprop, int rows, int columns, int compact);
|
||||
void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C);
|
||||
void uiTemplateOperatorSearch(uiLayout *layout);
|
||||
|
||||
/* items */
|
||||
void uiItemO(uiLayout *layout, char *name, int icon, char *opname);
|
||||
@ -634,6 +636,7 @@ void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, cha
|
||||
void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int expand, int slider, int toggle);
|
||||
void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value);
|
||||
void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname);
|
||||
void uiItemPointerR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, struct PointerRNA *searchptr, char *searchpropname);
|
||||
|
||||
void uiItemL(uiLayout *layout, char *name, int icon); /* label */
|
||||
void uiItemM(uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname); /* menu */
|
||||
|
@ -80,7 +80,6 @@
|
||||
*/
|
||||
|
||||
static void ui_free_but(const bContext *C, uiBut *but);
|
||||
static void ui_rna_ID_autocomplete(bContext *C, char *str, void *arg_but);
|
||||
|
||||
/* ************* translation ************** */
|
||||
|
||||
@ -1334,61 +1333,6 @@ void ui_get_but_string(uiBut *but, char *str, int maxlen)
|
||||
}
|
||||
}
|
||||
|
||||
static void ui_rna_ID_collection(bContext *C, uiBut *but, PointerRNA *ptr, PropertyRNA **prop)
|
||||
{
|
||||
StructRNA *srna;
|
||||
|
||||
/* look for collection property in Main */
|
||||
RNA_pointer_create(NULL, &RNA_Main, CTX_data_main(C), ptr);
|
||||
|
||||
*prop= NULL;
|
||||
|
||||
RNA_STRUCT_BEGIN(ptr, iprop) {
|
||||
/* if it's a collection and has same pointer type, we've got it */
|
||||
if(RNA_property_type(iprop) == PROP_COLLECTION) {
|
||||
srna= RNA_property_pointer_type(ptr, iprop);
|
||||
|
||||
if(RNA_property_pointer_type(ptr, but->rnaprop) == srna) {
|
||||
*prop= iprop;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RNA_STRUCT_END;
|
||||
}
|
||||
|
||||
/* autocomplete callback for RNA pointers */
|
||||
static void ui_rna_ID_autocomplete(bContext *C, char *str, void *arg_but)
|
||||
{
|
||||
uiBut *but= arg_but;
|
||||
AutoComplete *autocpl;
|
||||
PointerRNA ptr;
|
||||
PropertyRNA *prop;
|
||||
char *name;
|
||||
|
||||
if(str[0]==0) return;
|
||||
|
||||
/* get the collection */
|
||||
ui_rna_ID_collection(C, but, &ptr, &prop);
|
||||
if(prop==NULL) return;
|
||||
|
||||
autocpl= autocomplete_begin(str, ui_get_but_string_max_length(but));
|
||||
|
||||
/* loop over items in collection */
|
||||
RNA_PROP_BEGIN(&ptr, itemptr, prop) {
|
||||
name= RNA_struct_name_get_alloc(&itemptr, NULL, 0);
|
||||
|
||||
/* test item name */
|
||||
if(name) {
|
||||
autocomplete_do_name(autocpl, name);
|
||||
MEM_freeN(name);
|
||||
}
|
||||
}
|
||||
RNA_PROP_END;
|
||||
|
||||
autocomplete_end(autocpl, str);
|
||||
}
|
||||
|
||||
int ui_set_but_string(bContext *C, uiBut *but, const char *str)
|
||||
{
|
||||
if(but->rnaprop && ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) {
|
||||
@ -1407,21 +1351,21 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str)
|
||||
PointerRNA ptr, rptr;
|
||||
PropertyRNA *prop;
|
||||
|
||||
/* XXX only ID pointers at the moment, needs to support
|
||||
* custom collection too for bones, vertex groups, .. */
|
||||
ui_rna_ID_collection(C, but, &ptr, &prop);
|
||||
|
||||
if(str == NULL || str[0] == '\0') {
|
||||
memset(&rptr, 0, sizeof(rptr));
|
||||
RNA_property_pointer_set(&but->rnapoin, but->rnaprop, rptr);
|
||||
RNA_property_pointer_set(&but->rnapoin, but->rnaprop, PointerRNA_NULL);
|
||||
return 1;
|
||||
}
|
||||
else if(prop && RNA_property_collection_lookup_string(&ptr, prop, str, &rptr)) {
|
||||
RNA_property_pointer_set(&but->rnapoin, but->rnaprop, rptr);
|
||||
else {
|
||||
ptr= but->rnasearchpoin;
|
||||
prop= but->rnasearchprop;
|
||||
|
||||
if(prop && RNA_property_collection_lookup_string(&ptr, prop, str, &rptr))
|
||||
RNA_property_pointer_set(&but->rnapoin, but->rnaprop, rptr);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2133,13 +2077,10 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short
|
||||
rgb_to_hsv(rgb[0], rgb[1], rgb[2], but->hsv, but->hsv+1, but->hsv+2);
|
||||
}
|
||||
|
||||
if((block->flag & UI_BLOCK_LOOP) || ELEM6(but->type, MENU, TEX, LABEL, IDPOIN, BLOCK, BUTM)) {
|
||||
but->flag |= UI_TEXT_LEFT;
|
||||
}
|
||||
|
||||
if(but->type==BUT_TOGDUAL) {
|
||||
if((block->flag & UI_BLOCK_LOOP) || ELEM7(but->type, MENU, TEX, LABEL, IDPOIN, BLOCK, BUTM, SEARCH_MENU))
|
||||
but->flag |= (UI_TEXT_LEFT|UI_ICON_LEFT);
|
||||
else if(but->type==BUT_TOGDUAL)
|
||||
but->flag |= UI_ICON_LEFT;
|
||||
}
|
||||
|
||||
but->flag |= (block->flag & UI_BUT_ALIGN);
|
||||
|
||||
@ -2289,10 +2230,6 @@ uiBut *ui_def_but_rna(uiBlock *block, int type, int retval, char *str, short x1,
|
||||
but->rnaindex= index;
|
||||
else
|
||||
but->rnaindex= 0;
|
||||
|
||||
if(type == IDPOIN)
|
||||
uiButSetCompleteFunc(but, ui_rna_ID_autocomplete, but);
|
||||
|
||||
}
|
||||
|
||||
if(icon) {
|
||||
@ -2408,7 +2345,11 @@ void autocomplete_do_name(AutoComplete *autocpl, const char *name)
|
||||
else {
|
||||
/* remove from truncate what is not in bone->name */
|
||||
for(a=0; a<autocpl->maxlen-1; a++) {
|
||||
if(truncate[a]!=name[a])
|
||||
if(name[a] == 0) {
|
||||
truncate[a]= 0;
|
||||
break;
|
||||
}
|
||||
else if(truncate[a]!=name[a])
|
||||
truncate[a]= 0;
|
||||
}
|
||||
}
|
||||
@ -2978,15 +2919,15 @@ uiBut *uiDefSearchBut(uiBlock *block, void *arg, int retval, int icon, int maxle
|
||||
}
|
||||
|
||||
/* arg is user value, searchfunc and handlefunc both get it as arg */
|
||||
void uiButSetSearchFunc(uiBut *but, uiButSearchFunc sfunc, void *arg, uiButHandleFunc bfunc)
|
||||
/* if active set, button opens with this item visible and selected */
|
||||
void uiButSetSearchFunc(uiBut *but, uiButSearchFunc sfunc, void *arg, uiButHandleFunc bfunc, void *active)
|
||||
{
|
||||
but->search_func= sfunc;
|
||||
but->search_arg= arg;
|
||||
|
||||
uiButSetFunc(but, bfunc, arg, NULL);
|
||||
uiButSetFunc(but, bfunc, arg, active);
|
||||
}
|
||||
|
||||
|
||||
/* Program Init/Exit */
|
||||
|
||||
void UI_init(void)
|
||||
|
@ -112,6 +112,9 @@ typedef struct uiHandleButtonData {
|
||||
/* tooltip */
|
||||
ARegion *tooltip;
|
||||
wmTimer *tooltiptimer;
|
||||
|
||||
/* auto open */
|
||||
int used_mouse;
|
||||
wmTimer *autoopentimer;
|
||||
|
||||
/* text selection/editing */
|
||||
@ -284,16 +287,6 @@ static void ui_apply_but_funcs_after(bContext *C)
|
||||
if(after.context)
|
||||
CTX_store_set(C, after.context);
|
||||
|
||||
if(after.func)
|
||||
after.func(C, after.func_arg1, after.func_arg2);
|
||||
if(after.funcN)
|
||||
after.funcN(C, after.func_argN, after.func_arg2);
|
||||
|
||||
if(after.handle_func)
|
||||
after.handle_func(C, after.handle_func_arg, after.retval);
|
||||
if(after.butm_func)
|
||||
after.butm_func(C, after.butm_func_arg, after.a2);
|
||||
|
||||
if(after.optype)
|
||||
WM_operator_name_call(C, after.optype->idname, after.opcontext, after.opptr);
|
||||
if(after.opptr) {
|
||||
@ -308,6 +301,16 @@ static void ui_apply_but_funcs_after(bContext *C)
|
||||
CTX_store_set(C, NULL);
|
||||
CTX_store_free(after.context);
|
||||
}
|
||||
|
||||
if(after.func)
|
||||
after.func(C, after.func_arg1, after.func_arg2);
|
||||
if(after.funcN)
|
||||
after.funcN(C, after.func_argN, after.func_arg2);
|
||||
|
||||
if(after.handle_func)
|
||||
after.handle_func(C, after.handle_func_arg, after.retval);
|
||||
if(after.butm_func)
|
||||
after.butm_func(C, after.butm_func_arg, after.a2);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1223,8 +1226,14 @@ static int ui_textedit_autocomplete(bContext *C, uiBut *but, uiHandleButtonData
|
||||
int changed= 1;
|
||||
|
||||
str= data->str;
|
||||
but->autocomplete_func(C, str, but->autofunc_arg);
|
||||
|
||||
if(data->searchbox)
|
||||
ui_searchbox_autocomplete(C, data->searchbox, but, data->str);
|
||||
else
|
||||
but->autocomplete_func(C, str, but->autofunc_arg);
|
||||
|
||||
but->pos= strlen(str);
|
||||
but->selsta= but->selend= but->pos;
|
||||
|
||||
return changed;
|
||||
}
|
||||
@ -1351,14 +1360,14 @@ static void ui_textedit_next_but(uiBlock *block, uiBut *actbut, uiHandleButtonDa
|
||||
return;
|
||||
|
||||
for(but= actbut->next; but; but= but->next) {
|
||||
if(ELEM5(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI)) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
}
|
||||
}
|
||||
for(but= block->buttons.first; but!=actbut; but= but->next) {
|
||||
if(ELEM5(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI)) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
@ -1375,14 +1384,14 @@ static void ui_textedit_prev_but(uiBlock *block, uiBut *actbut, uiHandleButtonDa
|
||||
return;
|
||||
|
||||
for(but= actbut->prev; but; but= but->prev) {
|
||||
if(ELEM5(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI)) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
}
|
||||
}
|
||||
for(but= block->buttons.last; but!=actbut; but= but->prev) {
|
||||
if(ELEM5(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI)) {
|
||||
if(ELEM7(but->type, TEX, NUM, NUMABS, NUMSLI, HSVSLI, IDPOIN, SEARCH_MENU)) {
|
||||
data->postbut= but;
|
||||
data->posttype= BUTTON_ACTIVATE_TEXT_EDITING;
|
||||
return;
|
||||
@ -1506,7 +1515,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
|
||||
|
||||
case TABKEY:
|
||||
/* there is a key conflict here, we can't tab with autocomplete */
|
||||
if(but->autocomplete_func) {
|
||||
if(but->autocomplete_func || data->searchbox) {
|
||||
changed= ui_textedit_autocomplete(C, but, data);
|
||||
retval= WM_UI_HANDLER_BREAK;
|
||||
}
|
||||
@ -3338,7 +3347,7 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s
|
||||
|
||||
/* automatic open pulldown block timer */
|
||||
if(ELEM3(but->type, BLOCK, PULLDOWN, ICONTEXTROW)) {
|
||||
if(!data->autoopentimer) {
|
||||
if(data->used_mouse && !data->autoopentimer) {
|
||||
int time;
|
||||
|
||||
if(but->block->auto_open==2) time= 1; // test for toolbox
|
||||
@ -3441,6 +3450,9 @@ static void button_activate_init(bContext *C, ARegion *ar, uiBut *but, uiButtonA
|
||||
if(but->block->auto_open_last+BUTTON_AUTO_OPEN_THRESH < PIL_check_seconds_timer())
|
||||
but->block->auto_open= 0;
|
||||
|
||||
if(type == BUTTON_ACTIVATE_OVER) {
|
||||
data->used_mouse= 1;
|
||||
}
|
||||
button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT);
|
||||
|
||||
if(type == BUTTON_ACTIVATE_OPEN) {
|
||||
@ -3759,12 +3771,19 @@ static void ui_handle_button_return_submenu(bContext *C, wmEvent *event, uiBut *
|
||||
button_activate_exit(C, data, but, 1);
|
||||
}
|
||||
else if(menu->menuretval == UI_RETURN_OUT) {
|
||||
if(ui_mouse_inside_button(data->region, but, event->x, event->y)) {
|
||||
if(event->type==MOUSEMOVE && ui_mouse_inside_button(data->region, but, event->x, event->y)) {
|
||||
button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT);
|
||||
}
|
||||
else {
|
||||
data->cancel= 1;
|
||||
button_activate_exit(C, data, but, 1);
|
||||
but= ui_but_find_activated(data->region);
|
||||
if(but) {
|
||||
but->active->used_mouse= 0;
|
||||
button_activate_state(C, but, BUTTON_STATE_HIGHLIGHT);
|
||||
}
|
||||
else {
|
||||
data->cancel= 1;
|
||||
button_activate_exit(C, data, but, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4103,7 +4122,7 @@ static int ui_handle_menu_return_submenu(bContext *C, wmEvent *event, uiPopupBlo
|
||||
uiBlock *block;
|
||||
uiHandleButtonData *data;
|
||||
uiPopupBlockHandle *submenu;
|
||||
int mx, my;
|
||||
int mx, my, update;
|
||||
|
||||
ar= menu->region;
|
||||
block= ar->uiblocks.first;
|
||||
@ -4121,14 +4140,16 @@ static int ui_handle_menu_return_submenu(bContext *C, wmEvent *event, uiPopupBlo
|
||||
menu->butretval= data->retval;
|
||||
}
|
||||
}
|
||||
else if(submenu->menuretval == UI_RETURN_UPDATE)
|
||||
|
||||
update= (submenu->menuretval == UI_RETURN_UPDATE);
|
||||
if(update)
|
||||
menu->menuretval = UI_RETURN_UPDATE;
|
||||
|
||||
/* now let activated button in this menu exit, which
|
||||
* will actually close the submenu too */
|
||||
ui_handle_button_return_submenu(C, event, but);
|
||||
|
||||
if(submenu->menuretval == UI_RETURN_UPDATE)
|
||||
if(update)
|
||||
submenu->menuretval = 0;
|
||||
}
|
||||
|
||||
|
@ -728,21 +728,28 @@ static void icon_create_mipmap(struct PreviewImage* prv_img, int miplevel)
|
||||
}
|
||||
|
||||
/* create single icon from jpg, png etc. */
|
||||
static void icon_from_image(Image *img, int miplevel)
|
||||
static void icon_from_image(Scene *scene, Image *img, int miplevel)
|
||||
{
|
||||
ImBuf *ibuf= NULL;
|
||||
ImageUser iuser;
|
||||
PreviewImage *pi;
|
||||
unsigned int pr_size;
|
||||
short image_loaded = 0;
|
||||
struct ImBuf* ibuf=NULL;
|
||||
PreviewImage* pi;
|
||||
|
||||
/* img->ok is zero when Image cannot load */
|
||||
if (img==NULL || img->ok==0)
|
||||
return;
|
||||
|
||||
/* setup dummy image user */
|
||||
memset(&iuser, 0, sizeof(ImageUser));
|
||||
iuser.ok= iuser.framenr= 1;
|
||||
iuser.scene= scene;
|
||||
|
||||
/* elubie: this needs to be changed: here image is always loaded if not
|
||||
already there. Very expensive for large images. Need to find a way to
|
||||
only get existing ibuf */
|
||||
ibuf = BKE_image_get_ibuf(img, NULL);
|
||||
|
||||
ibuf = BKE_image_get_ibuf(img, &iuser);
|
||||
if(ibuf==NULL || ibuf->rect==NULL) {
|
||||
return;
|
||||
}
|
||||
@ -788,7 +795,7 @@ static void icon_set_image(Scene *scene, ID *id, PreviewImage* prv_img, int mipl
|
||||
/* no drawing (see last parameter doDraw, just calculate preview image
|
||||
- hopefully small enough to be fast */
|
||||
if (GS(id->name) == ID_IM)
|
||||
icon_from_image((struct Image*)id, miplevel);
|
||||
icon_from_image(scene, (struct Image*)id, miplevel);
|
||||
else {
|
||||
/* create the preview rect */
|
||||
icon_create_mipmap(prv_img, miplevel);
|
||||
@ -927,7 +934,28 @@ void ui_id_icon_render(Scene *scene, ID *id)
|
||||
}
|
||||
}
|
||||
|
||||
int ui_id_icon_get(Scene *scene, ID *id)
|
||||
{
|
||||
int iconid= 0;
|
||||
|
||||
/* icon */
|
||||
switch(GS(id->name))
|
||||
{
|
||||
case ID_MA: /* fall through */
|
||||
case ID_TE: /* fall through */
|
||||
case ID_IM: /* fall through */
|
||||
case ID_WO: /* fall through */
|
||||
case ID_LA: /* fall through */
|
||||
iconid= BKE_icon_getid(id);
|
||||
/* checks if not exists, or changed */
|
||||
ui_id_icon_render(scene, id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return iconid;
|
||||
}
|
||||
|
||||
static void icon_draw_mipmap(float x, float y, int icon_id, float aspect, int miplevel, int nocreate)
|
||||
{
|
||||
|
@ -211,6 +211,9 @@ struct uiBut {
|
||||
struct PropertyRNA *rnaprop;
|
||||
int rnaindex;
|
||||
|
||||
struct PointerRNA rnasearchpoin;
|
||||
struct PropertyRNA *rnasearchprop;
|
||||
|
||||
/* Operator data */
|
||||
struct wmOperatorType *optype;
|
||||
int opcontext;
|
||||
@ -371,6 +374,7 @@ void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
|
||||
ARegion *ui_searchbox_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
|
||||
int ui_searchbox_inside(struct ARegion *ar, int x, int y);
|
||||
void ui_searchbox_update(struct bContext *C, struct ARegion *ar, uiBut *but, int reset);
|
||||
void ui_searchbox_autocomplete(struct bContext *C, struct ARegion *ar, uiBut *but, char *str);
|
||||
void ui_searchbox_event(struct bContext *C, struct ARegion *ar, uiBut *but, struct wmEvent *event);
|
||||
void ui_searchbox_apply(uiBut *but, struct ARegion *ar);
|
||||
void ui_searchbox_free(struct bContext *C, struct ARegion *ar);
|
||||
@ -429,6 +433,7 @@ void uiStyleInit(void);
|
||||
|
||||
/* interface_icons.c */
|
||||
void ui_id_icon_render(struct Scene *scene, struct ID *id);
|
||||
int ui_id_icon_get(struct Scene *scene, struct ID *id);
|
||||
|
||||
/* resources.c */
|
||||
void init_userdef_do_versions(void);
|
||||
@ -437,8 +442,9 @@ void ui_resources_init(void);
|
||||
void ui_resources_free(void);
|
||||
|
||||
/* interface_layout.c */
|
||||
void ui_layout_add_but(struct uiLayout *layout, uiBut *but);
|
||||
void ui_layout_add_but(uiLayout *layout, uiBut *but);
|
||||
int ui_but_can_align(uiBut *but);
|
||||
void ui_but_add_search(uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop);
|
||||
|
||||
/* interface_anim.c */
|
||||
void ui_but_anim_flag(uiBut *but, float cfra);
|
||||
|
@ -455,9 +455,10 @@ static void ui_item_enum_row(uiLayout *layout, uiBlock *block, PointerRNA *ptr,
|
||||
}
|
||||
|
||||
/* create label + button for RNA property */
|
||||
static void ui_item_with_label(uiLayout *layout, uiBlock *block, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int index, int x, int y, int w, int h)
|
||||
static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int index, int x, int y, int w, int h)
|
||||
{
|
||||
uiLayout *sub;
|
||||
uiBut *but;
|
||||
PropertySubType subtype;
|
||||
|
||||
sub= uiLayoutRow(layout, 0);
|
||||
@ -473,12 +474,13 @@ static void ui_item_with_label(uiLayout *layout, uiBlock *block, char *name, int
|
||||
if(subtype == PROP_FILEPATH || subtype == PROP_DIRPATH) {
|
||||
uiBlockSetCurLayout(block, uiLayoutRow(sub, 1));
|
||||
uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, w-UI_UNIT_X, h);
|
||||
uiDefIconBut(block, BUT, 0, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL, 0.0f, 0.0f, 0.0f, 0.0f, "DUMMY file select button"); /* XXX */
|
||||
but= uiDefIconBut(block, BUT, 0, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL, 0.0f, 0.0f, 0.0f, 0.0f, "DUMMY file select button"); /* XXX */
|
||||
}
|
||||
else
|
||||
uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, w, h);
|
||||
but= uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, w, h);
|
||||
|
||||
uiBlockSetCurLayout(block, layout);
|
||||
return but;
|
||||
}
|
||||
|
||||
/********************* Button Items *************************/
|
||||
@ -782,8 +784,10 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper
|
||||
else if(type == PROP_ENUM && expand)
|
||||
ui_item_enum_row(layout, block, ptr, prop, name, 0, 0, w, h);
|
||||
/* property with separate label */
|
||||
else if(type == PROP_ENUM || type == PROP_STRING || type == PROP_POINTER)
|
||||
ui_item_with_label(layout, block, name, icon, ptr, prop, index, 0, 0, w, h);
|
||||
else if(type == PROP_ENUM || type == PROP_STRING || type == PROP_POINTER) {
|
||||
but= ui_item_with_label(layout, block, name, icon, ptr, prop, index, 0, 0, w, h);
|
||||
ui_but_add_search(but, ptr, prop, NULL, NULL);
|
||||
}
|
||||
/* single button */
|
||||
else {
|
||||
but= uiDefAutoButR(block, ptr, prop, index, (char*)name, icon, 0, 0, w, h);
|
||||
@ -854,6 +858,142 @@ void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname)
|
||||
}
|
||||
}
|
||||
|
||||
/* Pointer RNA button with search */
|
||||
|
||||
static void rna_search_cb(const struct bContext *C, void *arg_but, char *str, uiSearchItems *items)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
uiBut *but= arg_but;
|
||||
char *name;
|
||||
int i, iconid;
|
||||
|
||||
i = 0;
|
||||
RNA_PROP_BEGIN(&but->rnasearchpoin, itemptr, but->rnasearchprop) {
|
||||
iconid= 0;
|
||||
if(RNA_struct_is_ID(itemptr.type))
|
||||
iconid= ui_id_icon_get(scene, itemptr.data);
|
||||
|
||||
name= RNA_struct_name_get_alloc(&itemptr, NULL, 0);
|
||||
|
||||
if(name) {
|
||||
if(BLI_strcasestr(name, str)) {
|
||||
if(!uiSearchItemAdd(items, name, SET_INT_IN_POINTER(i), iconid)) {
|
||||
MEM_freeN(name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
MEM_freeN(name);
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
RNA_PROP_END;
|
||||
}
|
||||
|
||||
static void search_id_collection(StructRNA *ptype, PointerRNA *ptr, PropertyRNA **prop)
|
||||
{
|
||||
StructRNA *srna;
|
||||
|
||||
/* look for collection property in Main */
|
||||
RNA_main_pointer_create(G.main, ptr);
|
||||
|
||||
*prop= NULL;
|
||||
|
||||
RNA_STRUCT_BEGIN(ptr, iprop) {
|
||||
/* if it's a collection and has same pointer type, we've got it */
|
||||
if(RNA_property_type(iprop) == PROP_COLLECTION) {
|
||||
srna= RNA_property_pointer_type(ptr, iprop);
|
||||
|
||||
if(ptype == srna) {
|
||||
*prop= iprop;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
RNA_STRUCT_END;
|
||||
}
|
||||
|
||||
void ui_but_add_search(uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop)
|
||||
{
|
||||
StructRNA *ptype;
|
||||
PointerRNA sptr;
|
||||
|
||||
/* for ID's we do automatic lookup */
|
||||
if(!searchprop) {
|
||||
if(RNA_property_type(prop) == PROP_POINTER) {
|
||||
ptype= RNA_property_pointer_type(ptr, prop);
|
||||
search_id_collection(ptype, &sptr, &searchprop);
|
||||
searchptr= &sptr;
|
||||
}
|
||||
}
|
||||
|
||||
/* turn button into search button */
|
||||
if(searchprop) {
|
||||
but->type= SEARCH_MENU;
|
||||
but->hardmax= MAX2(but->hardmax, 256);
|
||||
but->rnasearchpoin= *searchptr;
|
||||
but->rnasearchprop= searchprop;
|
||||
but->flag |= UI_ICON_LEFT|UI_TEXT_LEFT;
|
||||
|
||||
uiButSetSearchFunc(but, rna_search_cb, but, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void uiItemPointerR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, struct PointerRNA *searchptr, char *searchpropname)
|
||||
{
|
||||
PropertyRNA *prop, *searchprop;
|
||||
PropertyType type;
|
||||
uiBut *but;
|
||||
uiBlock *block;
|
||||
StructRNA *icontype;
|
||||
int w, h;
|
||||
|
||||
/* validate arguments */
|
||||
if(!ptr->data || !searchptr->data)
|
||||
return;
|
||||
|
||||
prop= RNA_struct_find_property(ptr, propname);
|
||||
|
||||
if(!prop) {
|
||||
printf("uiItemPointerR: property not found: %s\n", propname);
|
||||
return;
|
||||
}
|
||||
|
||||
type= RNA_property_type(prop);
|
||||
if(!ELEM(type, PROP_POINTER, PROP_STRING)) {
|
||||
printf("uiItemPointerR: property %s must be a pointer or string.\n", propname);
|
||||
return;
|
||||
}
|
||||
|
||||
searchprop= RNA_struct_find_property(searchptr, searchpropname);
|
||||
|
||||
if(!searchprop || RNA_property_type(searchprop) != PROP_COLLECTION) {
|
||||
printf("uiItemPointerR: search collection property not found: %s\n", searchpropname);
|
||||
return;
|
||||
}
|
||||
|
||||
/* get icon & name */
|
||||
if(!icon) {
|
||||
if(type == PROP_POINTER)
|
||||
icontype= RNA_property_pointer_type(ptr, prop);
|
||||
else
|
||||
icontype= RNA_property_pointer_type(searchptr, searchprop);
|
||||
|
||||
icon= RNA_struct_ui_icon(icontype);
|
||||
}
|
||||
if(!name)
|
||||
name= (char*)RNA_property_ui_name(prop);
|
||||
|
||||
/* create button */
|
||||
block= uiLayoutGetBlock(layout);
|
||||
|
||||
ui_item_rna_size(layout, name, icon, prop, 0, &w, &h);
|
||||
but= ui_item_with_label(layout, block, name, icon, ptr, prop, 0, 0, 0, w, h);
|
||||
|
||||
ui_but_add_search(but, ptr, prop, searchptr, searchprop);
|
||||
}
|
||||
|
||||
/* menu item */
|
||||
static void ui_item_menutype_func(bContext *C, uiLayout *layout, void *arg_mt)
|
||||
{
|
||||
|
@ -104,7 +104,9 @@ static int panel_aligned(ScrArea *sa, ARegion *ar)
|
||||
SpaceButs *sbuts= sa->spacedata.first;
|
||||
return sbuts->align;
|
||||
}
|
||||
else if(ar->regiontype==RGN_TYPE_UI)
|
||||
else if(sa->spacetype==SPACE_FILE && ar->regiontype == RGN_TYPE_CHANNELS)
|
||||
return BUT_VERTICAL;
|
||||
else if(ELEM(ar->regiontype, RGN_TYPE_UI, RGN_TYPE_TOOLS))
|
||||
return BUT_VERTICAL;
|
||||
|
||||
return 0;
|
||||
@ -126,6 +128,8 @@ static int panels_re_align(ScrArea *sa, ARegion *ar, Panel **r_pa)
|
||||
}
|
||||
else if(ar->regiontype==RGN_TYPE_UI)
|
||||
return 1;
|
||||
else if(sa->spacetype==SPACE_FILE && ar->regiontype == RGN_TYPE_CHANNELS)
|
||||
return 1;
|
||||
|
||||
/* in case panel is added or disappears */
|
||||
for(pa=ar->panels.first; pa; pa=pa->next) {
|
||||
@ -1288,6 +1292,7 @@ int ui_handler_panel_region(bContext *C, wmEvent *event)
|
||||
|
||||
/**************** window level modal panel interaction **************/
|
||||
|
||||
/* note, this is modal handler and should not swallow events for animation */
|
||||
static int ui_handler_panel(bContext *C, wmEvent *event, void *userdata)
|
||||
{
|
||||
Panel *panel= userdata;
|
||||
@ -1303,8 +1308,6 @@ static int ui_handler_panel(bContext *C, wmEvent *event, void *userdata)
|
||||
panel_activate_state(C, panel, PANEL_STATE_ANIMATION);
|
||||
else
|
||||
panel_activate_state(C, panel, PANEL_STATE_EXIT);
|
||||
|
||||
return WM_UI_HANDLER_BREAK;
|
||||
}
|
||||
else if(event->type == MOUSEMOVE) {
|
||||
if(data->state == PANEL_STATE_WAIT_UNTAB)
|
||||
|
@ -435,6 +435,9 @@ struct uiSearchItems {
|
||||
char **names;
|
||||
void **pointers;
|
||||
int *icons;
|
||||
|
||||
AutoComplete *autocpl;
|
||||
void *active;
|
||||
};
|
||||
|
||||
typedef struct uiSearchboxData {
|
||||
@ -451,6 +454,19 @@ typedef struct uiSearchboxData {
|
||||
/* returns zero if nothing to add */
|
||||
int uiSearchItemAdd(uiSearchItems *items, const char *name, void *poin, int iconid)
|
||||
{
|
||||
/* hijack for autocomplete */
|
||||
if(items->autocpl) {
|
||||
autocomplete_do_name(items->autocpl, name);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* hijack for finding active item */
|
||||
if(items->active) {
|
||||
if(poin==items->active)
|
||||
items->offset_i= items->totitem;
|
||||
items->totitem++;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(items->totitem>=items->maxitem) {
|
||||
items->more= 1;
|
||||
@ -590,20 +606,52 @@ void ui_searchbox_update(bContext *C, ARegion *ar, uiBut *but, int reset)
|
||||
/* reset vars */
|
||||
data->items.totitem= 0;
|
||||
data->items.more= 0;
|
||||
if(reset==0)
|
||||
if(reset==0) {
|
||||
data->items.offset_i= data->items.offset;
|
||||
}
|
||||
else {
|
||||
data->items.offset_i= data->items.offset= 0;
|
||||
data->active= 0;
|
||||
|
||||
/* handle active */
|
||||
if(but->search_func && but->func_arg2) {
|
||||
data->items.active= but->func_arg2;
|
||||
but->search_func(C, but->search_arg, but->editstr, &data->items);
|
||||
data->items.active= NULL;
|
||||
|
||||
/* found active item, calculate real offset by centering it */
|
||||
if(data->items.totitem) {
|
||||
/* first case, begin of list */
|
||||
if(data->items.offset_i < data->items.maxitem) {
|
||||
data->active= data->items.offset_i+1;
|
||||
data->items.offset_i= 0;
|
||||
}
|
||||
else {
|
||||
/* second case, end of list */
|
||||
if(data->items.totitem - data->items.offset_i <= data->items.maxitem) {
|
||||
data->active= 1 + data->items.offset_i - data->items.totitem + data->items.maxitem;
|
||||
data->items.offset_i= data->items.totitem - data->items.maxitem;
|
||||
}
|
||||
else {
|
||||
/* center active item */
|
||||
data->items.offset_i -= data->items.maxitem/2;
|
||||
data->active= 1 + data->items.maxitem/2;
|
||||
}
|
||||
}
|
||||
}
|
||||
data->items.offset= data->items.offset_i;
|
||||
data->items.totitem= 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* callback */
|
||||
if(but->search_func)
|
||||
but->search_func(C, but->search_arg, but->editstr, &data->items);
|
||||
|
||||
if(reset) {
|
||||
/* handle case where editstr is equal to one of items */
|
||||
if(reset && data->active==0) {
|
||||
int a;
|
||||
/* handle case where editstr is equal to one of items */
|
||||
|
||||
for(a=0; a<data->items.totitem; a++) {
|
||||
char *cpoin= strchr(data->items.names[a], '|');
|
||||
|
||||
@ -622,6 +670,18 @@ void ui_searchbox_update(bContext *C, ARegion *ar, uiBut *but, int reset)
|
||||
ED_region_tag_redraw(ar);
|
||||
}
|
||||
|
||||
void ui_searchbox_autocomplete(bContext *C, ARegion *ar, uiBut *but, char *str)
|
||||
{
|
||||
uiSearchboxData *data= ar->regiondata;
|
||||
|
||||
data->items.autocpl= autocomplete_begin(str, ui_get_but_string_max_length(but));
|
||||
|
||||
but->search_func(C, but->search_arg, but->editstr, &data->items);
|
||||
|
||||
autocomplete_end(data->items.autocpl, str);
|
||||
data->items.autocpl= NULL;
|
||||
}
|
||||
|
||||
static void ui_searchbox_region_draw(const bContext *C, ARegion *ar)
|
||||
{
|
||||
uiSearchboxData *data= ar->regiondata;
|
||||
@ -647,13 +707,15 @@ static void ui_searchbox_region_draw(const bContext *C, ARegion *ar)
|
||||
}
|
||||
/* indicate more */
|
||||
if(data->items.more) {
|
||||
ui_searchbox_butrect(&rect, data, data->items.maxitem-1);
|
||||
glEnable(GL_BLEND);
|
||||
UI_icon_draw((data->bbox.xmax-data->bbox.xmin)/2, 8, ICON_TRIA_DOWN);
|
||||
UI_icon_draw((rect.xmax-rect.xmin)/2, rect.ymin-9, ICON_TRIA_DOWN);
|
||||
glDisable(GL_BLEND);
|
||||
}
|
||||
if(data->items.offset) {
|
||||
ui_searchbox_butrect(&rect, data, 0);
|
||||
glEnable(GL_BLEND);
|
||||
UI_icon_draw((data->bbox.xmax-data->bbox.xmin)/2, data->bbox.ymax-13, ICON_TRIA_UP);
|
||||
UI_icon_draw((rect.xmax-rect.xmin)/2, rect.ymax-7, ICON_TRIA_UP);
|
||||
glDisable(GL_BLEND);
|
||||
}
|
||||
}
|
||||
@ -683,7 +745,7 @@ ARegion *ui_searchbox_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
uiSearchboxData *data;
|
||||
float aspect= but->block->aspect;
|
||||
float x1f, x2f, y1f, y2f;
|
||||
int x1, x2, y1, y2, winx, winy;
|
||||
int x1, x2, y1, y2, winx, winy, ofsx, ofsy;
|
||||
|
||||
/* create area region */
|
||||
ar= ui_add_temporary_region(CTX_wm_screen(C));
|
||||
@ -736,6 +798,14 @@ ARegion *ui_searchbox_create(bContext *C, ARegion *butregion, uiBut *but)
|
||||
x2f= but->x2 + 5; /* symmetrical */
|
||||
y2f= but->y1;
|
||||
y1f= y2f - uiSearchBoxhHeight();
|
||||
|
||||
ofsx= (but->block->panel)? but->block->panel->ofsx: 0;
|
||||
ofsy= (but->block->panel)? but->block->panel->ofsy: 0;
|
||||
|
||||
x1f += ofsx;
|
||||
x2f += ofsx;
|
||||
y1f += ofsy;
|
||||
y2f += ofsy;
|
||||
|
||||
/* minimal width */
|
||||
if(x2f - x1f < 150) x2f= x1f+150; // XXX arbitrary
|
||||
@ -2692,6 +2762,8 @@ void uiPupMenuReports(bContext *C, ReportList *reports)
|
||||
BLI_dynstr_appendf(ds, "Error %%i%d%%t|%s", ICON_ERROR, report->message);
|
||||
else if(report->type >= RPT_WARNING)
|
||||
BLI_dynstr_appendf(ds, "Warning %%i%d%%t|%s", ICON_ERROR, report->message);
|
||||
else if(report->type >= RPT_INFO)
|
||||
BLI_dynstr_appendf(ds, "Info %%t|%s", report->message);
|
||||
}
|
||||
|
||||
str= BLI_dynstr_get_cstring(ds);
|
||||
|
@ -27,12 +27,14 @@
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_screen_types.h"
|
||||
|
||||
#include "BLI_string.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_icons.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_library.h"
|
||||
#include "BKE_utildefines.h"
|
||||
|
||||
@ -62,22 +64,93 @@ void uiTemplateHeader(uiLayout *layout, bContext *C)
|
||||
ED_area_header_standardbuttons(C, block, 0);
|
||||
}
|
||||
|
||||
/******************* Header ID Template ************************/
|
||||
/********************** Search Callbacks *************************/
|
||||
|
||||
typedef struct TemplateID {
|
||||
PointerRNA ptr;
|
||||
PropertyRNA *prop;
|
||||
|
||||
int flag;
|
||||
short browse;
|
||||
|
||||
char newop[256];
|
||||
char openop[256];
|
||||
char unlinkop[256];
|
||||
|
||||
short idtype;
|
||||
ListBase *idlb;
|
||||
} TemplateID;
|
||||
|
||||
/* Search browse menu, assign */
|
||||
static void id_search_call_cb(struct bContext *C, void *arg_template, void *item)
|
||||
{
|
||||
TemplateID *template= (TemplateID*)arg_template;
|
||||
|
||||
/* ID */
|
||||
if(item) {
|
||||
PointerRNA idptr;
|
||||
|
||||
RNA_id_pointer_create(item, &idptr);
|
||||
RNA_property_pointer_set(&template->ptr, template->prop, idptr);
|
||||
RNA_property_update(C, &template->ptr, template->prop);
|
||||
}
|
||||
}
|
||||
|
||||
/* ID Search browse menu, do the search */
|
||||
static void id_search_cb(const struct bContext *C, void *arg_template, char *str, uiSearchItems *items)
|
||||
{
|
||||
TemplateID *template= (TemplateID*)arg_template;
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
ListBase *lb= template->idlb;
|
||||
ID *id;
|
||||
int iconid;
|
||||
|
||||
/* ID listbase */
|
||||
for(id= lb->first; id; id= id->next) {
|
||||
iconid= ui_id_icon_get(scene, id);
|
||||
|
||||
if(BLI_strcasestr(id->name+2, str))
|
||||
if(!uiSearchItemAdd(items, id->name+2, id, iconid))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* ID Search browse menu, open */
|
||||
static uiBlock *search_menu(bContext *C, ARegion *ar, void *arg_litem)
|
||||
{
|
||||
static char search[256];
|
||||
static TemplateID template;
|
||||
PointerRNA idptr;
|
||||
wmEvent event;
|
||||
wmWindow *win= CTX_wm_window(C);
|
||||
uiBlock *block;
|
||||
uiBut *but;
|
||||
|
||||
/* clear initial search string, then all items show */
|
||||
search[0]= 0;
|
||||
/* arg_litem is malloced, can be freed by parent button */
|
||||
template= *((TemplateID*)arg_litem);
|
||||
|
||||
/* get active id for showing first item */
|
||||
idptr= RNA_property_pointer_get(&template.ptr, template.prop);
|
||||
|
||||
block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
|
||||
uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_RET_1);
|
||||
|
||||
/* fake button, it holds space for search items */
|
||||
uiDefBut(block, LABEL, 0, "", 10, 15, 150, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL);
|
||||
|
||||
but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 0, 150, 19, "");
|
||||
uiButSetSearchFunc(but, id_search_cb, &template, id_search_call_cb, idptr.data);
|
||||
|
||||
uiBoundsBlock(block, 6);
|
||||
uiBlockSetDirection(block, UI_DOWN);
|
||||
uiEndBlock(C, block);
|
||||
|
||||
event= *(win->eventstate); /* XXX huh huh? make api call */
|
||||
event.type= EVT_BUT_OPEN;
|
||||
event.val= KM_PRESS;
|
||||
event.customdata= but;
|
||||
event.customdatafree= FALSE;
|
||||
wm_event_add(win, &event);
|
||||
|
||||
return block;
|
||||
}
|
||||
|
||||
/************************ ID Template ***************************/
|
||||
|
||||
static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
|
||||
{
|
||||
TemplateID *template= (TemplateID*)arg_litem;
|
||||
@ -85,14 +158,18 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
|
||||
ID *id= idptr.data;
|
||||
int event= GET_INT_FROM_POINTER(arg_event);
|
||||
|
||||
if(event == UI_ID_BROWSE && template->browse == 32767)
|
||||
event= UI_ID_ADD_NEW;
|
||||
else if(event == UI_ID_BROWSE && template->browse == 32766)
|
||||
event= UI_ID_OPEN;
|
||||
|
||||
switch(event) {
|
||||
case UI_ID_BROWSE:
|
||||
printf("warning, id browse shouldnt come here\n");
|
||||
case UI_ID_PIN:
|
||||
printf("warning, id event %d shouldnt come here\n", event);
|
||||
break;
|
||||
case UI_ID_OPEN:
|
||||
case UI_ID_ADD_NEW:
|
||||
if(template->idlb->last) {
|
||||
RNA_id_pointer_create(template->idlb->last, &idptr);
|
||||
RNA_property_pointer_set(&template->ptr, template->prop, idptr);
|
||||
RNA_property_update(C, &template->ptr, template->prop);
|
||||
}
|
||||
break;
|
||||
case UI_ID_DELETE:
|
||||
memset(&idptr, 0, sizeof(idptr));
|
||||
@ -106,14 +183,6 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
|
||||
}
|
||||
else return;
|
||||
break;
|
||||
case UI_ID_PIN:
|
||||
break;
|
||||
case UI_ID_ADD_NEW:
|
||||
WM_operator_name_call(C, template->newop, WM_OP_INVOKE_REGION_WIN, NULL);
|
||||
break;
|
||||
case UI_ID_OPEN:
|
||||
WM_operator_name_call(C, template->openop, WM_OP_INVOKE_REGION_WIN, NULL);
|
||||
break;
|
||||
#if 0
|
||||
case UI_ID_ALONE:
|
||||
if(!id || id->us < 1)
|
||||
@ -129,131 +198,24 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
|
||||
}
|
||||
}
|
||||
|
||||
/* ID Search browse menu, assign */
|
||||
static void id_search_call_cb(struct bContext *C, void *arg_litem, void *item)
|
||||
{
|
||||
if(item) {
|
||||
TemplateID *template= (TemplateID*)arg_litem;
|
||||
PointerRNA idptr= RNA_property_pointer_get(&template->ptr, template->prop);
|
||||
|
||||
RNA_id_pointer_create(item, &idptr);
|
||||
RNA_property_pointer_set(&template->ptr, template->prop, idptr);
|
||||
RNA_property_update(C, &template->ptr, template->prop);
|
||||
}
|
||||
}
|
||||
|
||||
/* ID Search browse menu, do the search */
|
||||
static void id_search_cb(const struct bContext *C, void *arg_litem, char *str, uiSearchItems *items)
|
||||
{
|
||||
TemplateID *template= (TemplateID*)arg_litem;
|
||||
ListBase *lb= wich_libbase(CTX_data_main(C), template->idtype);
|
||||
ID *id;
|
||||
|
||||
for(id= lb->first; id; id= id->next) {
|
||||
int iconid= 0;
|
||||
|
||||
/* icon */
|
||||
switch(GS(id->name))
|
||||
{
|
||||
case ID_MA: /* fall through */
|
||||
case ID_TE: /* fall through */
|
||||
case ID_IM: /* fall through */
|
||||
case ID_WO: /* fall through */
|
||||
case ID_LA: /* fall through */
|
||||
iconid= BKE_icon_getid(id);
|
||||
/* checks if not exists, or changed */
|
||||
ui_id_icon_render(CTX_data_scene(C), id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if(BLI_strcasestr(id->name+2, str)) {
|
||||
if(0==uiSearchItemAdd(items, id->name+2, id, iconid))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ID Search browse menu, open */
|
||||
static uiBlock *id_search_menu(bContext *C, ARegion *ar, void *arg_litem)
|
||||
{
|
||||
static char search[256];
|
||||
static TemplateID template;
|
||||
wmEvent event;
|
||||
wmWindow *win= CTX_wm_window(C);
|
||||
uiBlock *block;
|
||||
uiBut *but;
|
||||
|
||||
/* clear initial search string, then all items show */
|
||||
search[0]= 0;
|
||||
/* arg_litem is malloced, can be freed by parent button */
|
||||
template= *((TemplateID*)arg_litem);
|
||||
|
||||
block= uiBeginBlock(C, ar, "_popup", UI_EMBOSS);
|
||||
uiBlockSetFlag(block, UI_BLOCK_LOOP|UI_BLOCK_REDRAW|UI_BLOCK_RET_1);
|
||||
|
||||
/* fake button, it holds space for search items */
|
||||
uiDefBut(block, LABEL, 0, "", 10, 15, 150, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL);
|
||||
|
||||
but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 0, 150, 19, "");
|
||||
uiButSetSearchFunc(but, id_search_cb, &template, id_search_call_cb);
|
||||
|
||||
uiBoundsBlock(block, 6);
|
||||
uiBlockSetDirection(block, UI_DOWN);
|
||||
uiEndBlock(C, block);
|
||||
|
||||
event= *(win->eventstate); /* XXX huh huh? make api call */
|
||||
event.type= EVT_BUT_OPEN;
|
||||
event.val= KM_PRESS;
|
||||
event.customdata= but;
|
||||
event.customdatafree= FALSE;
|
||||
wm_event_add(win, &event);
|
||||
|
||||
return block;
|
||||
}
|
||||
|
||||
/* ****************** */
|
||||
|
||||
|
||||
static void template_header_ID(bContext *C, uiBlock *block, TemplateID *template, StructRNA *type)
|
||||
static void template_ID(bContext *C, uiBlock *block, TemplateID *template, StructRNA *type, int flag, char *newop, char *unlinkop)
|
||||
{
|
||||
uiBut *but;
|
||||
PointerRNA idptr;
|
||||
ListBase *lb;
|
||||
|
||||
idptr= RNA_property_pointer_get(&template->ptr, template->prop);
|
||||
lb= wich_libbase(CTX_data_main(C), template->idtype);
|
||||
lb= template->idlb;
|
||||
|
||||
uiBlockBeginAlign(block);
|
||||
|
||||
if(idptr.type)
|
||||
type= idptr.type;
|
||||
if(type)
|
||||
uiDefIconBut(block, LABEL, 0, RNA_struct_ui_icon(type), 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiBlockBeginAlign(block);
|
||||
if(template->flag & UI_ID_BROWSE) {
|
||||
/*
|
||||
char *extrastr, *str;
|
||||
|
||||
if((template->flag & UI_ID_ADD_NEW) && (template->flag & UI_ID_OPEN))
|
||||
extrastr= "OPEN NEW %x 32766 |ADD NEW %x 32767";
|
||||
else if(template->flag & UI_ID_ADD_NEW)
|
||||
extrastr= "ADD NEW %x 32767";
|
||||
else if(template->flag & UI_ID_OPEN)
|
||||
extrastr= "OPEN NEW %x 32766";
|
||||
else
|
||||
extrastr= NULL;
|
||||
|
||||
duptemplate= MEM_dupallocN(template);
|
||||
IDnames_to_pupstring(&str, NULL, extrastr, lb, idptr.data, &duptemplate->browse);
|
||||
|
||||
but= uiDefButS(block, MENU, 0, str, 0, 0, UI_UNIT_X, UI_UNIT_Y, &duptemplate->browse, 0, 0, 0, 0, "Browse existing choices, or add new");
|
||||
uiButSetNFunc(but, template_id_cb, duptemplate, SET_INT_IN_POINTER(UI_ID_BROWSE));
|
||||
|
||||
MEM_freeN(str);
|
||||
*/
|
||||
uiDefBlockButN(block, id_search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X, UI_UNIT_Y, "Browse ID data");
|
||||
}
|
||||
if(flag & UI_ID_BROWSE)
|
||||
uiDefBlockButN(block, search_menu, MEM_dupallocN(template), "", 0, 0, UI_UNIT_X, UI_UNIT_Y, "Browse ID data");
|
||||
|
||||
/* text button with name */
|
||||
if(idptr.data) {
|
||||
@ -265,11 +227,12 @@ static void template_header_ID(bContext *C, uiBlock *block, TemplateID *template
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_RENAME));
|
||||
}
|
||||
|
||||
if(template->flag & UI_ID_ADD_NEW) {
|
||||
if(flag & UI_ID_ADD_NEW) {
|
||||
int w= idptr.data?UI_UNIT_X:UI_UNIT_X*6;
|
||||
|
||||
if(template->newop[0]) {
|
||||
but= uiDefIconTextButO(block, BUT, template->newop, WM_OP_EXEC_REGION_WIN, ICON_ZOOMIN, "Add New", 0, 0, w, UI_UNIT_Y, NULL);
|
||||
if(newop) {
|
||||
but= uiDefIconTextButO(block, BUT, newop, WM_OP_EXEC_REGION_WIN, ICON_ZOOMIN, "Add New", 0, 0, w, UI_UNIT_Y, NULL);
|
||||
uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ADD_NEW));
|
||||
}
|
||||
else {
|
||||
but= uiDefIconTextBut(block, BUT, 0, ICON_ZOOMIN, "Add New", 0, 0, w, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
|
||||
@ -278,9 +241,9 @@ static void template_header_ID(bContext *C, uiBlock *block, TemplateID *template
|
||||
}
|
||||
|
||||
/* delete button */
|
||||
if(idptr.data && (template->flag & UI_ID_DELETE)) {
|
||||
if(template->unlinkop[0]) {
|
||||
but= uiDefIconButO(block, BUT, template->unlinkop, WM_OP_EXEC_REGION_WIN, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL);
|
||||
if(idptr.data && (flag & UI_ID_DELETE)) {
|
||||
if(unlinkop) {
|
||||
but= uiDefIconButO(block, BUT, unlinkop, WM_OP_EXEC_REGION_WIN, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL);
|
||||
}
|
||||
else {
|
||||
but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, NULL);
|
||||
@ -291,12 +254,13 @@ static void template_header_ID(bContext *C, uiBlock *block, TemplateID *template
|
||||
uiBlockEndAlign(block);
|
||||
}
|
||||
|
||||
void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop)
|
||||
void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *unlinkop)
|
||||
{
|
||||
TemplateID *template;
|
||||
uiBlock *block;
|
||||
PropertyRNA *prop;
|
||||
StructRNA *type;
|
||||
int flag;
|
||||
|
||||
if(!ptr->data)
|
||||
return;
|
||||
@ -311,26 +275,19 @@ void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname
|
||||
template= MEM_callocN(sizeof(TemplateID), "TemplateID");
|
||||
template->ptr= *ptr;
|
||||
template->prop= prop;
|
||||
template->flag= UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE;
|
||||
|
||||
if(newop) {
|
||||
template->flag |= UI_ID_ADD_NEW;
|
||||
BLI_strncpy(template->newop, newop, sizeof(template->newop));
|
||||
}
|
||||
if(openop) {
|
||||
template->flag |= UI_ID_OPEN;
|
||||
BLI_strncpy(template->openop, openop, sizeof(template->openop));
|
||||
}
|
||||
if(unlinkop)
|
||||
BLI_strncpy(template->unlinkop, unlinkop, sizeof(template->unlinkop));
|
||||
flag= UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE;
|
||||
|
||||
if(newop)
|
||||
flag |= UI_ID_ADD_NEW;
|
||||
|
||||
type= RNA_property_pointer_type(ptr, prop);
|
||||
template->idtype = RNA_type_to_ID_code(type);
|
||||
template->idlb= wich_libbase(CTX_data_main(C), RNA_type_to_ID_code(type));
|
||||
|
||||
if(template->idtype) {
|
||||
if(template->idlb) {
|
||||
uiLayoutRow(layout, 1);
|
||||
block= uiLayoutGetBlock(layout);
|
||||
template_header_ID(C, block, template, type);
|
||||
template_ID(C, block, template, type, flag, newop, unlinkop);
|
||||
}
|
||||
|
||||
MEM_freeN(template);
|
||||
@ -1529,6 +1486,7 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname)
|
||||
|
||||
/************************* List Template **************************/
|
||||
|
||||
#if 0
|
||||
typedef struct ListItem {
|
||||
PointerRNA ptr;
|
||||
PropertyRNA *prop;
|
||||
@ -1560,50 +1518,52 @@ static void list_item_cb(bContext *C, void *arg_item, void *arg_unused)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void uiTemplateList(uiLayout *layout, PointerRNA *ptr, char *propname, char *activepropname, int items)
|
||||
ListBase uiTemplateList(uiLayout *layout, PointerRNA *ptr, char *propname, char *activepropname, int rows, int columns, int compact)
|
||||
{
|
||||
CollectionPointerLink *link;
|
||||
PropertyRNA *prop, *activeprop;
|
||||
PropertyType type, activetype;
|
||||
PointerRNA activeptr;
|
||||
uiLayout *box, *row, *col;
|
||||
uiBlock *block;
|
||||
uiBut *but;
|
||||
char *name, *activename= NULL;
|
||||
int i= 1, activei= 0, len;
|
||||
ListBase lb;
|
||||
char *name, *activename= NULL, str[32];
|
||||
int i= 1, activei= 0, len, items, found;
|
||||
static int scroll = 1;
|
||||
|
||||
lb.first= lb.last= NULL;
|
||||
|
||||
/* validate arguments */
|
||||
if(!ptr->data)
|
||||
return;
|
||||
return lb;
|
||||
|
||||
prop= RNA_struct_find_property(ptr, propname);
|
||||
if(!prop) {
|
||||
printf("uiTemplateList: property not found: %s\n", propname);
|
||||
return;
|
||||
return lb;
|
||||
}
|
||||
|
||||
activeprop= RNA_struct_find_property(ptr, activepropname);
|
||||
if(!activeprop) {
|
||||
printf("uiTemplateList: property not found: %s\n", activepropname);
|
||||
return;
|
||||
return lb;
|
||||
}
|
||||
|
||||
type= RNA_property_type(prop);
|
||||
if(type != PROP_COLLECTION) {
|
||||
printf("uiTemplateList: expected collection property.\n");
|
||||
return;
|
||||
return lb;
|
||||
}
|
||||
|
||||
activetype= RNA_property_type(activeprop);
|
||||
if(!ELEM3(activetype, PROP_POINTER, PROP_INT, PROP_STRING)) {
|
||||
printf("uiTemplateList: expected pointer, integer or string property.\n");
|
||||
return;
|
||||
return lb;
|
||||
}
|
||||
|
||||
if(items == 0)
|
||||
items= 5;
|
||||
|
||||
/* get active data */
|
||||
if(activetype == PROP_POINTER)
|
||||
activeptr= RNA_property_pointer_get(ptr, activeprop);
|
||||
@ -1612,62 +1572,210 @@ void uiTemplateList(uiLayout *layout, PointerRNA *ptr, char *propname, char *act
|
||||
else if(activetype == PROP_STRING)
|
||||
activename= RNA_property_string_get_alloc(ptr, activeprop, NULL, 0);
|
||||
|
||||
box= uiLayoutBox(layout);
|
||||
row= uiLayoutRow(box, 0);
|
||||
col = uiLayoutColumn(row, 1);
|
||||
block= uiLayoutGetBlock(layout);
|
||||
|
||||
block= uiLayoutGetBlock(col);
|
||||
uiBlockSetEmboss(block, UI_EMBOSSN);
|
||||
if(compact) {
|
||||
/* compact layout */
|
||||
found= 0;
|
||||
|
||||
len= RNA_property_collection_length(ptr, prop);
|
||||
scroll= MIN2(scroll, len-items+1);
|
||||
scroll= MAX2(scroll, 1);
|
||||
row= uiLayoutRow(layout, 1);
|
||||
|
||||
RNA_PROP_BEGIN(ptr, itemptr, prop) {
|
||||
if(i >= scroll && i<scroll+items) {
|
||||
name= RNA_struct_name_get_alloc(&itemptr, NULL, 0);
|
||||
RNA_PROP_BEGIN(ptr, itemptr, prop) {
|
||||
if(activetype == PROP_POINTER)
|
||||
found= (activeptr.data == itemptr.data);
|
||||
else if(activetype == PROP_INT)
|
||||
found= (activei == i);
|
||||
else if(activetype == PROP_STRING)
|
||||
found= (strcmp(activename, name) == 0);
|
||||
|
||||
if(name) {
|
||||
ListItem *item= MEM_callocN(sizeof(ListItem), "uiTemplateList ListItem");
|
||||
if(found) {
|
||||
name= RNA_struct_name_get_alloc(&itemptr, NULL, 0);
|
||||
if(name) {
|
||||
uiItemL(row, name, RNA_struct_ui_icon(itemptr.type));
|
||||
MEM_freeN(name);
|
||||
}
|
||||
|
||||
item->ptr= *ptr;
|
||||
item->prop= prop;
|
||||
item->activeprop= activeprop;
|
||||
item->activeptr= itemptr;
|
||||
item->activei= i;
|
||||
|
||||
if(activetype == PROP_POINTER)
|
||||
item->selected= (activeptr.data == itemptr.data)? i: -1;
|
||||
else if(activetype == PROP_INT)
|
||||
item->selected= (activei == i)? i: -1;
|
||||
else if(activetype == PROP_STRING)
|
||||
item->selected= (strcmp(activename, name) == 0)? i: -1;
|
||||
|
||||
but= uiDefIconTextButI(block, ROW, 0, RNA_struct_ui_icon(itemptr.type), name, 0,0,UI_UNIT_X*10,UI_UNIT_Y, &item->selected, 0, i, 0, 0, "");
|
||||
uiButSetFlag(but, UI_ICON_LEFT|UI_TEXT_LEFT);
|
||||
uiButSetNFunc(but, list_item_cb, item, NULL);
|
||||
|
||||
MEM_freeN(name);
|
||||
link= MEM_callocN(sizeof(CollectionPointerLink), "uiTemplateList return");
|
||||
link->ptr= itemptr;
|
||||
BLI_addtail(&lb, link);
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
RNA_PROP_END;
|
||||
|
||||
if(i == 1)
|
||||
uiItemL(row, "", 0);
|
||||
|
||||
sprintf(str, "%d :", i-1);
|
||||
but= uiDefIconTextButR(block, NUM, 0, 0, str, 0,0,UI_UNIT_X*5,UI_UNIT_Y, ptr, activepropname, 0, 0, 0, 0, 0, "");
|
||||
if(i == 1)
|
||||
uiButSetFlag(but, UI_BUT_DISABLED);
|
||||
}
|
||||
else {
|
||||
if(rows == 0)
|
||||
rows= 5;
|
||||
if(columns == 0)
|
||||
columns= 1;
|
||||
|
||||
items= rows*columns;
|
||||
|
||||
box= uiLayoutBox(layout);
|
||||
row= uiLayoutRow(box, 0);
|
||||
col = uiLayoutColumn(row, 1);
|
||||
|
||||
uiBlockSetEmboss(block, UI_EMBOSSN);
|
||||
|
||||
len= RNA_property_collection_length(ptr, prop);
|
||||
scroll= MIN2(scroll, len-items+1);
|
||||
scroll= MAX2(scroll, 1);
|
||||
|
||||
RNA_PROP_BEGIN(ptr, itemptr, prop) {
|
||||
if(i >= scroll && i<scroll+items) {
|
||||
name= RNA_struct_name_get_alloc(&itemptr, NULL, 0);
|
||||
|
||||
if(name) {
|
||||
#if 0
|
||||
ListItem *item= MEM_callocN(sizeof(ListItem), "uiTemplateList ListItem");
|
||||
|
||||
item->ptr= *ptr;
|
||||
item->prop= prop;
|
||||
item->activeprop= activeprop;
|
||||
item->activeptr= itemptr;
|
||||
item->activei= i;
|
||||
|
||||
if(activetype == PROP_POINTER)
|
||||
item->selected= (activeptr.data == itemptr.data)? i: -1;
|
||||
else if(activetype == PROP_INT)
|
||||
item->selected= (activei == i)? i: -1;
|
||||
else if(activetype == PROP_STRING)
|
||||
item->selected= (strcmp(activename, name) == 0)? i: -1;
|
||||
#endif
|
||||
|
||||
//but= uiDefIconTextButI(block, ROW, 0, RNA_struct_ui_icon(itemptr.type), name, 0,0,UI_UNIT_X*10,UI_UNIT_Y, &item->selected, 0, i, 0, 0, "");
|
||||
but= uiDefIconTextButR(block, ROW, 0, RNA_struct_ui_icon(itemptr.type), name, 0,0,UI_UNIT_X*10,UI_UNIT_Y, ptr, activepropname, 0/*&item->selected*/, 0, i, 0, 0, "");
|
||||
uiButSetFlag(but, UI_ICON_LEFT|UI_TEXT_LEFT);
|
||||
//uiButSetNFunc(but, list_item_cb, item, NULL);
|
||||
|
||||
MEM_freeN(name);
|
||||
|
||||
link= MEM_callocN(sizeof(CollectionPointerLink), "uiTemplateList return");
|
||||
link->ptr= itemptr;
|
||||
BLI_addtail(&lb, link);
|
||||
}
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
RNA_PROP_END;
|
||||
|
||||
while(i < scroll+items) {
|
||||
if(i >= scroll)
|
||||
uiItemL(col, "", 0);
|
||||
i++;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
RNA_PROP_END;
|
||||
uiBlockSetEmboss(block, UI_EMBOSS);
|
||||
|
||||
while(i < scroll+items) {
|
||||
if(i >= scroll)
|
||||
uiItemL(col, "", 0);
|
||||
i++;
|
||||
if(len > items) {
|
||||
col= uiLayoutColumn(row, 0);
|
||||
uiDefButI(block, SCROLL, 0, "", 0,0,UI_UNIT_X*0.75,UI_UNIT_Y*items, &scroll, 1, len-items+1, items, 0, "");
|
||||
}
|
||||
|
||||
//uiDefButI(block, SCROLL, 0, "", 0,0,UI_UNIT_X*15,UI_UNIT_Y*0.75, &scroll, 1, 16-5, 5, 0, "");
|
||||
}
|
||||
|
||||
uiBlockSetEmboss(block, UI_EMBOSS);
|
||||
|
||||
if(len > items) {
|
||||
col= uiLayoutColumn(row, 0);
|
||||
uiDefButI(block, SCROLL, 0, "", 0,0,UI_UNIT_X*0.75,UI_UNIT_Y*items, &scroll, 1, len-items+1, items, 0, "");
|
||||
}
|
||||
|
||||
//uiDefButI(block, SCROLL, 0, "", 0,0,UI_UNIT_X*15,UI_UNIT_Y*0.75, &scroll, 1, 16-5, 5, 0, "");
|
||||
return lb;
|
||||
}
|
||||
|
||||
/************************* Operator Search Template **************************/
|
||||
|
||||
static void operator_call_cb(struct bContext *C, void *arg1, void *arg2)
|
||||
{
|
||||
wmOperatorType *ot= arg2;
|
||||
|
||||
if(ot)
|
||||
WM_operator_name_call(C, ot->idname, WM_OP_INVOKE_DEFAULT, NULL);
|
||||
}
|
||||
|
||||
static void operator_search_cb(const struct bContext *C, void *arg, char *str, uiSearchItems *items)
|
||||
{
|
||||
wmOperatorType *ot = WM_operatortype_first();
|
||||
|
||||
for(; ot; ot= ot->next) {
|
||||
|
||||
if(BLI_strcasestr(ot->name, str)) {
|
||||
if(ot->poll==NULL || ot->poll((bContext *)C)) {
|
||||
char name[256];
|
||||
int len= strlen(ot->name);
|
||||
|
||||
/* display name for menu, can hold hotkey */
|
||||
BLI_strncpy(name, ot->name, 256);
|
||||
|
||||
/* check for hotkey */
|
||||
if(len < 256-6) {
|
||||
if(WM_key_event_operator_string(C, ot->idname, WM_OP_EXEC_DEFAULT, NULL, &name[len+1], 256-len-1))
|
||||
name[len]= '|';
|
||||
}
|
||||
|
||||
if(0==uiSearchItemAdd(items, name, ot, 0))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void uiTemplateOperatorSearch(uiLayout *layout)
|
||||
{
|
||||
uiBlock *block;
|
||||
uiBut *but;
|
||||
static char search[256]= "";
|
||||
|
||||
block= uiLayoutGetBlock(layout);
|
||||
uiBlockSetCurLayout(block, layout);
|
||||
|
||||
but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, sizeof(search), 0, 0, UI_UNIT_X*6, UI_UNIT_Y, "");
|
||||
uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb, NULL);
|
||||
}
|
||||
|
||||
/************************* Running Jobs Template **************************/
|
||||
|
||||
#define B_STOPRENDER 1
|
||||
#define B_STOPCAST 2
|
||||
#define B_STOPANIM 3
|
||||
|
||||
static void do_running_jobs(bContext *C, void *arg, int event)
|
||||
{
|
||||
switch(event) {
|
||||
case B_STOPRENDER:
|
||||
G.afbreek= 1;
|
||||
break;
|
||||
case B_STOPCAST:
|
||||
WM_jobs_stop(CTX_wm_manager(C), CTX_wm_screen(C));
|
||||
break;
|
||||
case B_STOPANIM:
|
||||
ED_screen_animation_timer(C, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void uiTemplateRunningJobs(uiLayout *layout, bContext *C)
|
||||
{
|
||||
bScreen *screen= CTX_wm_screen(C);
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
wmWindowManager *wm= CTX_wm_manager(C);
|
||||
uiBlock *block;
|
||||
|
||||
block= uiLayoutGetBlock(layout);
|
||||
uiBlockSetCurLayout(block, layout);
|
||||
|
||||
uiBlockSetHandleFunc(block, do_running_jobs, NULL);
|
||||
|
||||
if(WM_jobs_test(wm, scene))
|
||||
uiDefIconTextBut(block, BUT, B_STOPRENDER, ICON_REC, "Render", 0,0,75,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Stop rendering");
|
||||
if(WM_jobs_test(wm, screen))
|
||||
uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_REC, "Capture", 0,0,85,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Stop screencast");
|
||||
if(screen->animtimer)
|
||||
uiDefIconTextBut(block, BUT, B_STOPANIM, ICON_REC, "Anim Player", 0,0,85,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Stop animation playback");
|
||||
}
|
||||
|
||||
|
@ -111,7 +111,12 @@ uiBut *uiDefAutoButR(uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, int ind
|
||||
but= uiDefButR(block, MENU, 0, NULL, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
|
||||
break;
|
||||
case PROP_STRING:
|
||||
but= uiDefButR(block, TEX, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
|
||||
if(icon && name && strcmp(name, "") == 0)
|
||||
but= uiDefIconButR(block, TEX, 0, icon, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
|
||||
else if(icon)
|
||||
but= uiDefIconTextButR(block, TEX, 0, icon, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
|
||||
else
|
||||
but= uiDefButR(block, TEX, 0, name, x1, y1, x2, y2, ptr, propname, index, 0, 0, -1, -1, NULL);
|
||||
break;
|
||||
case PROP_POINTER: {
|
||||
PointerRNA pptr;
|
||||
@ -322,7 +327,7 @@ static uiBlock *id_search_menu(bContext *C, ARegion *ar, void *arg_params)
|
||||
uiDefBut(block, LABEL, 0, "", 10, 15, 150, uiSearchBoxhHeight(), NULL, 0, 0, 0, 0, NULL);
|
||||
|
||||
but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, 10, 0, 150, 19, "");
|
||||
uiButSetSearchFunc(but, id_search_cb, ¶ms, id_search_call_cb);
|
||||
uiButSetSearchFunc(but, id_search_cb, ¶ms, id_search_call_cb, NULL);
|
||||
|
||||
uiBoundsBlock(block, 6);
|
||||
uiBlockSetDirection(block, UI_DOWN);
|
||||
|
@ -1028,7 +1028,7 @@ static struct uiWidgetColors wcol_menu_back= {
|
||||
{0, 0, 0, 255},
|
||||
{25, 25, 25, 230},
|
||||
{45, 45, 45, 230},
|
||||
{255, 255, 255, 255},
|
||||
{100, 100, 100, 255},
|
||||
|
||||
{255, 255, 255, 255},
|
||||
{255, 255, 255, 255},
|
||||
|
@ -316,6 +316,12 @@ void UI_view2d_curRect_validate(View2D *v2d)
|
||||
if (v2d->keepzoom & V2D_LOCKZOOM_Y)
|
||||
height= winy;
|
||||
|
||||
/* values used to divide, so make it safe */
|
||||
if(width<1) width= 1;
|
||||
if(height<1) height= 1;
|
||||
if(winx<1) winx= 1;
|
||||
if(winy<1) winy= 1;
|
||||
|
||||
/* keepzoom (V2D_KEEPZOOM set), indicates that zoom level on each axis must not exceed limits
|
||||
* NOTE: in general, it is not expected that the lock-zoom will be used in conjunction with this
|
||||
*/
|
||||
|
@ -1276,7 +1276,7 @@ static float new_primitive_matrix(bContext *C, float primmat[][4])
|
||||
Object *obedit= CTX_data_edit_object(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
View3D *v3d =CTX_wm_view3d(C);
|
||||
RegionView3D *rv3d= CTX_wm_region_view3d(C);
|
||||
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
|
||||
float *curs, mat[3][3], vmat[3][3], cmat[3][3], imat[3][3];
|
||||
|
||||
Mat4One(primmat);
|
||||
@ -1295,9 +1295,9 @@ static float new_primitive_matrix(bContext *C, float primmat[][4])
|
||||
/* center */
|
||||
curs= give_cursor(scene, v3d);
|
||||
VECCOPY(primmat[3], curs);
|
||||
VECSUB(primmat[3], primmat[3], obedit->obmat[3]);
|
||||
Mat3Inv(imat, mat);
|
||||
Mat3MulVecfl(imat, primmat[3]);
|
||||
VECSUB(primmat[3], primmat[3], obedit->obmat[3]);
|
||||
|
||||
if(v3d) return v3d->grid;
|
||||
return 1.0f;
|
||||
|
@ -3242,7 +3242,7 @@ static int toggle_select_all_exec(bContext *C, wmOperator *op)
|
||||
void MESH_OT_select_all_toggle(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Select or Deselect All";
|
||||
ot->name= "Select/Deselect All";
|
||||
ot->idname= "MESH_OT_select_all_toggle";
|
||||
|
||||
/* api callbacks */
|
||||
|
@ -787,7 +787,7 @@ static int extrude_repeat_mesh(bContext *C, wmOperator *op)
|
||||
Object *obedit= CTX_data_edit_object(C);
|
||||
EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
|
||||
|
||||
RegionView3D *rv3d = CTX_wm_region_view3d(C);
|
||||
RegionView3D *rv3d = ED_view3d_context_rv3d(C);
|
||||
|
||||
int steps = RNA_int_get(op->ptr,"steps");
|
||||
|
||||
@ -949,7 +949,7 @@ static int spin_mesh_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
RegionView3D *rv3d= CTX_wm_region_view3d(C);
|
||||
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
|
||||
|
||||
RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d));
|
||||
RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[2]);
|
||||
@ -1056,7 +1056,7 @@ static int screw_mesh_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
View3D *v3d = CTX_wm_view3d(C);
|
||||
RegionView3D *rv3d= CTX_wm_region_view3d(C);
|
||||
RegionView3D *rv3d= ED_view3d_context_rv3d(C);
|
||||
|
||||
RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d));
|
||||
RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[1]);
|
||||
|
@ -340,7 +340,7 @@ static int object_add_mesh_exec(bContext *C, wmOperator *op)
|
||||
|
||||
if(obedit==NULL || obedit->type!=OB_MESH) {
|
||||
object_add_type(C, OB_MESH);
|
||||
ED_object_enter_editmode(C, 0);
|
||||
ED_object_enter_editmode(C, EM_DO_UNDO);
|
||||
newob = 1;
|
||||
}
|
||||
else DAG_object_flush_update(CTX_data_scene(C), obedit, OB_RECALC_DATA);
|
||||
@ -388,7 +388,7 @@ static int object_add_mesh_exec(bContext *C, wmOperator *op)
|
||||
void OBJECT_OT_mesh_add(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Mesh";
|
||||
ot->name= "Add Mesh";
|
||||
ot->description = "Add a mesh object to the scene.";
|
||||
ot->idname= "OBJECT_OT_mesh_add";
|
||||
|
||||
@ -398,8 +398,8 @@ void OBJECT_OT_mesh_add(wmOperatorType *ot)
|
||||
|
||||
ot->poll= ED_operator_scene_editable;
|
||||
|
||||
/* flags */
|
||||
ot->flag= 0;
|
||||
/* flags: no register or undo, this operator calls operators */
|
||||
ot->flag= 0; //OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
RNA_def_enum(ot->srna, "type", prop_mesh_types, 0, "Primitive", "");
|
||||
}
|
||||
@ -462,7 +462,7 @@ static int object_add_curve_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
void OBJECT_OT_curve_add(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Curve";
|
||||
ot->name= "Add Curve";
|
||||
ot->description = "Add a curve object to the scene.";
|
||||
ot->idname= "OBJECT_OT_curve_add";
|
||||
|
||||
@ -520,7 +520,7 @@ static int object_add_surface_exec(bContext *C, wmOperator *op)
|
||||
void OBJECT_OT_surface_add(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Surface";
|
||||
ot->name= "Add Surface";
|
||||
ot->description = "Add a surface object to the scene.";
|
||||
ot->idname= "OBJECT_OT_surface_add";
|
||||
|
||||
@ -557,7 +557,7 @@ static int object_add_text_exec(bContext *C, wmOperator *op)
|
||||
void OBJECT_OT_text_add(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Text";
|
||||
ot->name= "Add Text";
|
||||
ot->description = "Add a text object to the scene";
|
||||
ot->idname= "OBJECT_OT_text_add";
|
||||
|
||||
@ -602,7 +602,7 @@ static int object_armature_add_exec(bContext *C, wmOperator *op)
|
||||
void OBJECT_OT_armature_add(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Armature";
|
||||
ot->name= "Add Armature";
|
||||
ot->description = "Add an armature object to the scene.";
|
||||
ot->idname= "OBJECT_OT_armature_add";
|
||||
|
||||
@ -1395,7 +1395,8 @@ static int parent_clear_exec(bContext *C, wmOperator *op)
|
||||
|
||||
DAG_scene_sort(CTX_data_scene(C));
|
||||
ED_anim_dag_flush_update(C);
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
@ -2600,7 +2601,8 @@ static int parent_set_exec(bContext *C, wmOperator *op)
|
||||
CTX_DATA_END;
|
||||
|
||||
DAG_scene_sort(CTX_data_scene(C));
|
||||
ED_anim_dag_flush_update(C);
|
||||
ED_anim_dag_flush_update(C);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
@ -2648,7 +2650,7 @@ void OBJECT_OT_parent_set(wmOperatorType *ot)
|
||||
ot->poll= ED_operator_object_active;
|
||||
|
||||
/* flags */
|
||||
ot->flag= 0;
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
RNA_def_enum(ot->srna, "type", prop_make_parent_types, 0, "Type", "");
|
||||
}
|
||||
@ -3349,6 +3351,7 @@ void ED_object_enter_editmode(bContext *C, int flag)
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene);
|
||||
}
|
||||
|
||||
if(flag & EM_DO_UNDO) ED_undo_push(C, "Enter Editmode");
|
||||
if(flag & EM_WAITCURSOR) waitcursor(0);
|
||||
}
|
||||
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_object_force.h"
|
||||
#include "DNA_modifier_types.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_particle.h"
|
||||
@ -39,7 +40,7 @@
|
||||
#include "BKE_utildefines.h"
|
||||
#include "BKE_pointcache.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_multires.h"
|
||||
#include "BKE_modifier.h"
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
|
||||
@ -81,6 +82,7 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op)
|
||||
baker.pid = NULL;
|
||||
baker.bake = RNA_boolean_get(op->ptr, "bake");
|
||||
baker.render = 0;
|
||||
baker.quick_step = 1;
|
||||
baker.break_test = cache_break_test;
|
||||
baker.break_data = NULL;
|
||||
baker.progressbar = (void (*)(void *, int))WM_timecursor;
|
||||
@ -104,12 +106,11 @@ static int ptcache_free_bake_all_exec(bContext *C, wmOperator *op)
|
||||
|
||||
for(pid=pidlist.first; pid; pid=pid->next) {
|
||||
pid->cache->flag &= ~PTCACHE_BAKED;
|
||||
BKE_ptcache_id_reset(scene, pid, PTCACHE_RESET_OUTDATED);
|
||||
}
|
||||
|
||||
BLI_freelistN(&pidlist);
|
||||
}
|
||||
|
||||
BLI_freelistN(&pidlist);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
@ -127,6 +128,8 @@ void PTCACHE_OT_bake_all(wmOperatorType *ot)
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
RNA_def_boolean(ot->srna, "bake", 0, "Bake", "");
|
||||
}
|
||||
void PTCACHE_OT_free_bake_all(wmOperatorType *ot)
|
||||
{
|
||||
@ -142,6 +145,112 @@ void PTCACHE_OT_free_bake_all(wmOperatorType *ot)
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/**************************** cloth **********************************/
|
||||
static int ptcache_bake_cloth_poll(bContext *C)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
ClothModifierData *clmd = (ClothModifierData *)modifiers_findByType(ob, eModifierType_Cloth);
|
||||
|
||||
if(!scene || !ob || ob->id.lib || !clmd)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int ptcache_bake_cloth_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
ClothModifierData *clmd = (ClothModifierData *)modifiers_findByType(ob, eModifierType_Cloth);
|
||||
PTCacheID pid;
|
||||
PTCacheBaker baker;
|
||||
|
||||
BKE_ptcache_id_from_cloth(&pid, ob, clmd);
|
||||
|
||||
baker.scene = scene;
|
||||
baker.pid = &pid;
|
||||
baker.bake = RNA_boolean_get(op->ptr, "bake");
|
||||
baker.render = 0;
|
||||
baker.quick_step = 1;
|
||||
baker.break_test = cache_break_test;
|
||||
baker.break_data = NULL;
|
||||
baker.progressbar = WM_timecursor;
|
||||
baker.progresscontext = CTX_wm_window(C);
|
||||
|
||||
BKE_ptcache_make_cache(&baker);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
static int ptcache_free_bake_cloth_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene= CTX_data_scene(C);
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
ClothModifierData *clmd = (ClothModifierData *)modifiers_findByType(ob, eModifierType_Cloth);
|
||||
PTCacheID pid;
|
||||
|
||||
BKE_ptcache_id_from_cloth(&pid, ob, clmd);
|
||||
pid.cache->flag &= ~PTCACHE_BAKED;
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
void PTCACHE_OT_cache_cloth(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Bake Cloth";
|
||||
ot->idname= "PTCACHE_OT_cache_cloth";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= ptcache_bake_cloth_exec;
|
||||
ot->poll= ptcache_bake_cloth_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
RNA_def_boolean(ot->srna, "bake", 0, "Bake", "");
|
||||
}
|
||||
void PTCACHE_OT_free_bake_cloth(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Free Cloth Bake";
|
||||
ot->idname= "PTCACHE_OT_free_bake_cloth";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= ptcache_free_bake_cloth_exec;
|
||||
ot->poll= ptcache_bake_cloth_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
static int ptcache_bake_from_cloth_cache_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Object *ob= CTX_data_active_object(C);
|
||||
ClothModifierData *clmd = (ClothModifierData *)modifiers_findByType(ob, eModifierType_Cloth);
|
||||
PTCacheID pid;
|
||||
|
||||
BKE_ptcache_id_from_cloth(&pid, ob, clmd);
|
||||
pid.cache->flag |= PTCACHE_BAKED;
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
void PTCACHE_OT_bake_from_cloth_cache(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Bake From Cache";
|
||||
ot->idname= "PTCACHE_OT_bake_from_cloth_cache";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= ptcache_bake_from_cloth_cache_exec;
|
||||
ot->poll= ptcache_bake_cloth_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/**************************** particles **********************************/
|
||||
static int ptcache_bake_particle_system_poll(bContext *C)
|
||||
{
|
||||
@ -168,6 +277,7 @@ static int ptcache_bake_particle_system_exec(bContext *C, wmOperator *op)
|
||||
baker.pid = &pid;
|
||||
baker.bake = RNA_boolean_get(op->ptr, "bake");
|
||||
baker.render = 0;
|
||||
baker.quick_step = 1;
|
||||
baker.break_test = cache_break_test;
|
||||
baker.break_data = NULL;
|
||||
baker.progressbar = (void (*)(void *, int))WM_timecursor;
|
||||
@ -188,7 +298,6 @@ static int ptcache_free_bake_particle_system_exec(bContext *C, wmOperator *op)
|
||||
|
||||
BKE_ptcache_id_from_particles(&pid, ob, psys);
|
||||
psys->pointcache->flag &= ~PTCACHE_BAKED;
|
||||
BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED);
|
||||
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene);
|
||||
|
||||
@ -256,6 +365,9 @@ void ED_operatortypes_pointcache(void)
|
||||
WM_operatortype_append(PTCACHE_OT_cache_particle_system);
|
||||
WM_operatortype_append(PTCACHE_OT_free_bake_particle_system);
|
||||
WM_operatortype_append(PTCACHE_OT_bake_from_particles_cache);
|
||||
WM_operatortype_append(PTCACHE_OT_cache_cloth);
|
||||
WM_operatortype_append(PTCACHE_OT_free_bake_cloth);
|
||||
WM_operatortype_append(PTCACHE_OT_bake_from_cloth_cache);
|
||||
}
|
||||
|
||||
//void ED_keymap_pointcache(wmWindowManager *wm)
|
||||
|
@ -259,14 +259,16 @@ static void region_scissor_winrct(ARegion *ar, rcti *winrct)
|
||||
while(ar->prev) {
|
||||
ar= ar->prev;
|
||||
|
||||
if(ar->flag & RGN_FLAG_HIDDEN);
|
||||
else if(ar->alignment==RGN_OVERLAP_LEFT) {
|
||||
winrct->xmin= ar->winrct.xmax + 1;
|
||||
if(BLI_isect_rcti(winrct, &ar->winrct, NULL)) {
|
||||
if(ar->flag & RGN_FLAG_HIDDEN);
|
||||
else if(ar->alignment==RGN_OVERLAP_LEFT) {
|
||||
winrct->xmin= ar->winrct.xmax + 1;
|
||||
}
|
||||
else if(ar->alignment==RGN_OVERLAP_RIGHT) {
|
||||
winrct->xmax= ar->winrct.xmin - 1;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
else if(ar->alignment==RGN_OVERLAP_RIGHT) {
|
||||
winrct->xmax= ar->winrct.xmin - 1;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -59,6 +59,7 @@
|
||||
#include "ED_util.h"
|
||||
#include "ED_screen.h"
|
||||
#include "ED_mesh.h"
|
||||
#include "ED_object.h"
|
||||
#include "ED_screen_types.h"
|
||||
|
||||
#include "RE_pipeline.h"
|
||||
@ -2509,7 +2510,9 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
/* flush multires changes (for sculpt) */
|
||||
multires_force_update(CTX_data_active_object(C));
|
||||
|
||||
// get editmode results
|
||||
/* get editmode results */
|
||||
ED_object_exit_editmode(C, 0); /* 0 = does not exit editmode */
|
||||
|
||||
// store spare
|
||||
// get view3d layer, local layer, make this nice api call to render
|
||||
// store spare
|
||||
|
@ -156,7 +156,6 @@ typedef struct StrokeCache {
|
||||
float old_grab_location[3];
|
||||
int symmetry; /* Symmetry index between 0 and 7 */
|
||||
float view_normal[3], view_normal_symmetry[3];
|
||||
int last_dot[2]; /* Last location of stroke application */
|
||||
int last_rake[2]; /* Last location of updating rake rotation */
|
||||
} StrokeCache;
|
||||
|
||||
@ -738,37 +737,6 @@ static void sculpt_add_damaged_rect(SculptSession *ss)
|
||||
}
|
||||
}
|
||||
|
||||
/* Clears the depth buffer in each modified area. */
|
||||
#if 0
|
||||
static void sculpt_clear_damaged_areas(SculptSession *ss)
|
||||
{
|
||||
RectNode *rn= NULL;
|
||||
|
||||
for(rn = ss->damaged_rects.first; rn; rn = rn->next) {
|
||||
rcti clp = rn->r;
|
||||
rcti *win = NULL; /*XXX: &curarea->winrct; */
|
||||
|
||||
clp.xmin += win->xmin;
|
||||
clp.xmax += win->xmin;
|
||||
clp.ymin += win->ymin;
|
||||
clp.ymax += win->ymin;
|
||||
|
||||
if(clp.xmin < win->xmax && clp.xmax > win->xmin &&
|
||||
clp.ymin < win->ymax && clp.ymax > win->ymin) {
|
||||
if(clp.xmin < win->xmin) clp.xmin = win->xmin;
|
||||
if(clp.ymin < win->ymin) clp.ymin = win->ymin;
|
||||
if(clp.xmax > win->xmax) clp.xmax = win->xmax;
|
||||
if(clp.ymax > win->ymax) clp.ymax = win->ymax;
|
||||
|
||||
glScissor(clp.xmin + 1, clp.ymin + 1,
|
||||
clp.xmax - clp.xmin - 2,
|
||||
clp.ymax - clp.ymin - 2);
|
||||
}
|
||||
|
||||
glClear(GL_DEPTH_BUFFER_BIT);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
static void do_brush_action(Sculpt *sd, StrokeCache *cache)
|
||||
{
|
||||
SculptSession *ss = sd->session;
|
||||
@ -880,15 +848,6 @@ static void do_symmetrical_brush_actions(Sculpt *sd, StrokeCache *cache)
|
||||
const char symm = sd->flags & 7;
|
||||
int i;
|
||||
|
||||
/* Brush spacing: only apply dot if next dot is far enough away */
|
||||
if((sd->brush->flag & BRUSH_SPACE) && !(sd->brush->flag & BRUSH_ANCHORED) && !cache->first_time) {
|
||||
int dx = cache->last_dot[0] - cache->mouse[0];
|
||||
int dy = cache->last_dot[1] - cache->mouse[1];
|
||||
if(sqrt(dx*dx+dy*dy) < sd->brush->spacing)
|
||||
return;
|
||||
}
|
||||
memcpy(cache->last_dot, cache->mouse, sizeof(int) * 2);
|
||||
|
||||
VecCopyf(cache->location, cache->true_location);
|
||||
VecCopyf(cache->grab_delta_symmetry, cache->grab_delta);
|
||||
cache->symmetry = 0;
|
||||
@ -987,25 +946,6 @@ static void sculpt_update_tex(Sculpt *sd)
|
||||
}
|
||||
}
|
||||
|
||||
void sculptmode_selectbrush_menu(void)
|
||||
{
|
||||
/* XXX: I guess menus belong elsewhere too?
|
||||
|
||||
Sculpt *sd= sculpt_data();
|
||||
int val;
|
||||
|
||||
pupmenu_set_active(sd->brush_type);
|
||||
|
||||
val= pupmenu("Select Brush%t|Draw|Smooth|Pinch|Inflate|Grab|Layer|Flatten");
|
||||
|
||||
if(val>0) {
|
||||
sd->brush_type= val;
|
||||
|
||||
allqueue(REDRAWVIEW3D, 1);
|
||||
allqueue(REDRAWBUTSEDIT, 1);
|
||||
}*/
|
||||
}
|
||||
|
||||
static void sculptmode_update_all_projverts(SculptSession *ss)
|
||||
{
|
||||
unsigned i;
|
||||
@ -1084,89 +1024,6 @@ static void sculpt_update_mesh_elements(bContext *C)
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX: lots of drawing code (partial redraw), has to go elsewhere */
|
||||
#if 0
|
||||
void sculptmode_draw_wires(SculptSession *ss, int only_damaged)
|
||||
{
|
||||
Mesh *me = get_mesh(OBACT);
|
||||
int i;
|
||||
|
||||
bglPolygonOffset(1.0);
|
||||
glDepthMask(0);
|
||||
BIF_ThemeColor((OBACT==OBACT)?TH_ACTIVE:TH_SELECT);
|
||||
|
||||
for(i=0; i<me->totedge; i++) {
|
||||
MEdge *med= &me->medge[i];
|
||||
|
||||
if((!only_damaged || (ss->projverts[med->v1].inside || ss->projverts[med->v2].inside)) &&
|
||||
(med->flag & ME_EDGEDRAW)) {
|
||||
glDrawElements(GL_LINES, 2, GL_UNSIGNED_INT, &med->v1);
|
||||
}
|
||||
}
|
||||
|
||||
glDepthMask(1);
|
||||
bglPolygonOffset(0.0);
|
||||
}
|
||||
|
||||
void sculptmode_draw_mesh(int only_damaged)
|
||||
{
|
||||
int i, j, dt, drawCurrentMat = 1, matnr= -1;
|
||||
SculptSession *ss = sculpt_session();
|
||||
|
||||
sculpt_update_mesh_elements(ss, OBACT);
|
||||
|
||||
persp(PERSP_VIEW);
|
||||
mymultmatrix(OBACT->obmat);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glEnable(GL_LIGHTING);
|
||||
/* XXX: GPU_set_object_materials(G.scene, OBACT, 0, NULL); */
|
||||
glEnable(GL_CULL_FACE);
|
||||
|
||||
glShadeModel(GL_SMOOTH);
|
||||
|
||||
glVertexPointer(3, GL_FLOAT, sizeof(MVert), &cache->mvert[0].co);
|
||||
glNormalPointer(GL_SHORT, sizeof(MVert), &cache->mvert[0].no);
|
||||
|
||||
dt= MIN2(G.vd->drawtype, OBACT->dt);
|
||||
if(dt==OB_WIRE)
|
||||
glColorMask(0,0,0,0);
|
||||
|
||||
for(i=0; i<ss->totface; ++i) {
|
||||
MFace *f= &ss->mface[i];
|
||||
char inside= 0;
|
||||
int new_matnr= f->mat_nr + 1;
|
||||
|
||||
if(new_matnr != matnr)
|
||||
drawCurrentMat= GPU_enable_material(matnr = new_matnr, NULL);
|
||||
|
||||
/* If only_damaged!=0, only draw faces that are partially
|
||||
inside the area(s) modified by the brush */
|
||||
if(only_damaged) {
|
||||
for(j=0; j<(f->v4?4:3); ++j) {
|
||||
if(ss->projverts[*((&f->v1)+j)].inside) {
|
||||
inside= 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
inside= 1;
|
||||
|
||||
if(inside && drawCurrentMat)
|
||||
glDrawElements(f->v4?GL_QUADS:GL_TRIANGLES, f->v4?4:3, GL_UNSIGNED_INT, &f->v1);
|
||||
}
|
||||
|
||||
glDisable(GL_CULL_FACE);
|
||||
glDisable(GL_LIGHTING);
|
||||
glColorMask(1,1,1,1);
|
||||
|
||||
if(dt==OB_WIRE || (OBACT->dtx & OB_DRAWWIRE))
|
||||
sculptmode_draw_wires(ss, only_damaged);
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int sculpt_mode_poll(bContext *C)
|
||||
{
|
||||
return G.f & G_SCULPTMODE;
|
||||
@ -1183,16 +1040,21 @@ static void draw_paint_cursor(bContext *C, int x, int y, void *customdata)
|
||||
{
|
||||
Sculpt *sd= CTX_data_tool_settings(C)->sculpt;
|
||||
|
||||
glTranslatef((float)x, (float)y, 0.0f);
|
||||
|
||||
glColor4ub(255, 100, 100, 128);
|
||||
glEnable( GL_LINE_SMOOTH );
|
||||
glEnable(GL_BLEND);
|
||||
|
||||
glTranslatef((float)x, (float)y, 0.0f);
|
||||
glutil_draw_lined_arc(0.0, M_PI*2.0, sd->brush->size, 40);
|
||||
glTranslatef((float)-x, (float)-y, 0.0f);
|
||||
|
||||
if(sd->session && sd->session->cache && sd->brush && (sd->brush->flag & BRUSH_SMOOTH_STROKE)) {
|
||||
ARegion *ar = CTX_wm_region(C);
|
||||
sdrawline(x, y, sd->session->cache->mouse[0] - ar->winrct.xmin, sd->session->cache->mouse[1] - ar->winrct.ymin);
|
||||
}
|
||||
|
||||
glDisable(GL_BLEND);
|
||||
glDisable( GL_LINE_SMOOTH );
|
||||
|
||||
glTranslatef((float)-x, (float)-y, 0.0f);
|
||||
}
|
||||
|
||||
static void toggle_paint_cursor(bContext *C)
|
||||
@ -1335,6 +1197,9 @@ static void sculpt_update_cache_invariants(Sculpt *sd, bContext *C, wmOperator *
|
||||
RNA_int_get_array(op->ptr, "initial_mouse", cache->initial_mouse);
|
||||
cache->depth = RNA_float_get(op->ptr, "depth");
|
||||
|
||||
cache->mouse[0] = cache->initial_mouse[0];
|
||||
cache->mouse[1] = cache->initial_mouse[1];
|
||||
|
||||
/* Truly temporary data that isn't stored in properties */
|
||||
|
||||
view3d_set_viewcontext(C, &cache->vc);
|
||||
@ -1476,9 +1341,6 @@ static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, wmEvent *even
|
||||
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
|
||||
|
||||
view3d_operator_needs_opengl(C);
|
||||
sculpt_brush_stroke_init_properties(C, op, event, sd->session);
|
||||
|
||||
sculptmode_update_all_projverts(sd->session);
|
||||
|
||||
/* TODO: Shouldn't really have to do this at the start of every
|
||||
stroke, but sculpt would need some sort of notification when
|
||||
@ -1543,38 +1405,141 @@ static void sculpt_flush_update(bContext *C)
|
||||
ED_region_tag_redraw(ar);
|
||||
}
|
||||
|
||||
static int sculpt_brush_stroke_modal(bContext *C, wmOperator *op, wmEvent *event)
|
||||
/* Returns zero if no sculpt changes should be made, non-zero otherwise */
|
||||
static int sculpt_smooth_stroke(Sculpt *s, int output[2], wmEvent *event)
|
||||
{
|
||||
output[0] = event->x;
|
||||
output[1] = event->y;
|
||||
|
||||
if(s->brush->flag & BRUSH_SMOOTH_STROKE && s->brush->sculpt_tool != SCULPT_TOOL_GRAB) {
|
||||
StrokeCache *cache = s->session->cache;
|
||||
float u = .9, v = 1.0 - u;
|
||||
int dx = cache->mouse[0] - event->x, dy = cache->mouse[1] - event->y;
|
||||
int radius = 50;
|
||||
|
||||
/* If the mouse is moving within the radius of the last move,
|
||||
don't update the mouse position. This allows sharp turns. */
|
||||
if(dx*dx + dy*dy < radius*radius)
|
||||
return 0;
|
||||
|
||||
output[0] = event->x * v + cache->mouse[0] * u;
|
||||
output[1] = event->y * v + cache->mouse[1] * u;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Returns zero if the stroke dots should not be spaced, non-zero otherwise */
|
||||
int sculpt_space_stroke_enabled(Sculpt *s)
|
||||
{
|
||||
Brush *br = s->brush;
|
||||
return (br->flag & BRUSH_SPACE) && !(br->flag & BRUSH_ANCHORED) && (br->sculpt_tool != SCULPT_TOOL_GRAB);
|
||||
}
|
||||
|
||||
/* Put the location of the next sculpt stroke dot into the stroke RNA and apply it to the mesh */
|
||||
static void sculpt_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *event, int mouse[2])
|
||||
{
|
||||
PointerRNA itemptr;
|
||||
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
|
||||
StrokeCache *cache = sd->session->cache;
|
||||
PointerRNA itemptr;
|
||||
float cur_depth;
|
||||
float center[3];
|
||||
int mouse[2] = {event->x, event->y};
|
||||
|
||||
sculpt_update_mesh_elements(C);
|
||||
|
||||
unproject(sd->session->cache->mats, center, event->x, event->y,
|
||||
read_cached_depth(&sd->session->cache->vc, event->x, event->y));
|
||||
|
||||
cur_depth = read_cached_depth(&cache->vc, mouse[0], mouse[1]);
|
||||
unproject(sd->session->cache->mats, center, mouse[0], mouse[1], cur_depth);
|
||||
|
||||
/* Add to stroke */
|
||||
RNA_collection_add(op->ptr, "stroke", &itemptr);
|
||||
RNA_float_set_array(&itemptr, "location", center);
|
||||
RNA_int_set_array(&itemptr, "mouse", mouse);
|
||||
RNA_boolean_set(&itemptr, "flip", event->shift);
|
||||
sculpt_update_cache_variants(sd, &itemptr);
|
||||
|
||||
|
||||
sculpt_restore_mesh(sd);
|
||||
do_symmetrical_brush_actions(CTX_data_tool_settings(C)->sculpt, sd->session->cache);
|
||||
|
||||
sculpt_flush_update(C);
|
||||
do_symmetrical_brush_actions(sd, cache);
|
||||
|
||||
sculpt_post_stroke_free(sd->session);
|
||||
}
|
||||
|
||||
/* For brushes with stroke spacing enabled, moves mouse in steps
|
||||
towards the final mouse location. */
|
||||
static int sculpt_space_stroke(bContext *C, wmOperator *op, wmEvent *event, Sculpt *s, const int final_mouse[2])
|
||||
{
|
||||
StrokeCache *cache = s->session->cache;
|
||||
int cnt = 0;
|
||||
|
||||
if(sculpt_space_stroke_enabled(s)) {
|
||||
float vec[2] = {final_mouse[0] - cache->mouse[0], final_mouse[1] - cache->mouse[1]};
|
||||
int mouse[2] = {cache->mouse[0], cache->mouse[1]};
|
||||
float length, scale;
|
||||
int steps = 0, i;
|
||||
|
||||
/* Normalize the vector between the last stroke dot and the goal */
|
||||
length = sqrt(vec[0]*vec[0] + vec[1]*vec[1]);
|
||||
|
||||
if(length > FLT_EPSILON) {
|
||||
scale = s->brush->spacing / length;
|
||||
vec[0] *= scale;
|
||||
vec[1] *= scale;
|
||||
|
||||
steps = (int)(length / s->brush->spacing);
|
||||
for(i = 0; i < steps; ++i, ++cnt) {
|
||||
mouse[0] += vec[0];
|
||||
mouse[1] += vec[1];
|
||||
sculpt_brush_stroke_add_step(C, op, event, mouse);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return cnt;
|
||||
}
|
||||
|
||||
static int sculpt_brush_stroke_modal(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
Sculpt *sd = CTX_data_tool_settings(C)->sculpt;
|
||||
ARegion *ar = CTX_wm_region(C);
|
||||
float cur_depth;
|
||||
|
||||
sculpt_update_mesh_elements(C);
|
||||
|
||||
if(!sd->session->cache) {
|
||||
ViewContext vc;
|
||||
view3d_set_viewcontext(C, &vc);
|
||||
cur_depth = read_cached_depth(&vc, event->x, event->y);
|
||||
|
||||
/* Don't start the stroke until a valid depth is found */
|
||||
if(cur_depth < 1.0 - FLT_EPSILON) {
|
||||
sculpt_brush_stroke_init_properties(C, op, event, sd->session);
|
||||
sculptmode_update_all_projverts(sd->session);
|
||||
}
|
||||
|
||||
ED_region_tag_redraw(ar);
|
||||
}
|
||||
|
||||
if(sd->session->cache) {
|
||||
int mouse[2];
|
||||
|
||||
if(sculpt_smooth_stroke(sd, mouse, event)) {
|
||||
if(sculpt_space_stroke_enabled(sd)) {
|
||||
if(!sculpt_space_stroke(C, op, event, sd, mouse))
|
||||
ED_region_tag_redraw(ar);
|
||||
}
|
||||
else
|
||||
sculpt_brush_stroke_add_step(C, op, event, mouse);
|
||||
sculpt_flush_update(C);
|
||||
}
|
||||
else
|
||||
ED_region_tag_redraw(ar);
|
||||
}
|
||||
|
||||
/* Finished */
|
||||
if(event->type == LEFTMOUSE && event->val == 0) {
|
||||
request_depth_update(sd->session->cache->vc.rv3d);
|
||||
|
||||
sculpt_cache_free(sd->session->cache);
|
||||
|
||||
sculpt_undo_push(C, sd);
|
||||
if(sd->session->cache) {
|
||||
request_depth_update(sd->session->cache->vc.rv3d);
|
||||
sculpt_cache_free(sd->session->cache);
|
||||
sd->session->cache = NULL;
|
||||
sculpt_undo_push(C, sd);
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
@ -1718,454 +1683,3 @@ void ED_operatortypes_sculpt()
|
||||
WM_operatortype_append(SCULPT_OT_sculptmode_toggle);
|
||||
WM_operatortype_append(SCULPT_OT_brush_curve_preset);
|
||||
}
|
||||
|
||||
void sculpt(Sculpt *sd)
|
||||
{
|
||||
#if 0
|
||||
SculptSession *ss= sd->session;
|
||||
Object *ob= NULL; /*XXX */
|
||||
Mesh *me;
|
||||
MultiresModifierData *mmd = NULL;
|
||||
/* lastSigMouse is for the rake, to store the last place the mouse movement was significant */
|
||||
short mouse[2], mvalo[2], lastSigMouse[2],firsttime=1, mousebut;
|
||||
short modifier_calculations= 0;
|
||||
BrushAction *a = MEM_callocN(sizeof(BrushAction), "brush action");
|
||||
short spacing= 32000;
|
||||
int scissor_box[4];
|
||||
float offsetRot;
|
||||
int smooth_stroke = 0, i;
|
||||
int anchored, rake = 0 /* XXX: rake = ? */;
|
||||
|
||||
/* XXX: checking that sculpting is allowed
|
||||
if(!(G.f & G_SCULPTMODE) || G.obedit || !ob || ob->id.lib || !get_mesh(ob) || (get_mesh(ob)->totface == 0))
|
||||
return;
|
||||
if(!(ob->lay & G.vd->lay))
|
||||
error("Active object is not in this layer");
|
||||
if(ob_get_keyblock(ob)) {
|
||||
if(!(ob->shapeflag & OB_SHAPE_LOCK)) {
|
||||
error("Cannot sculpt on unlocked shape key");
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
anchored = sd->brush->flag & BRUSH_ANCHORED;
|
||||
smooth_stroke = (sd->flags & SCULPT_INPUT_SMOOTH) && (sd->brush->sculpt_tool != SCULPT_TOOL_GRAB) && !anchored;
|
||||
|
||||
if(smooth_stroke)
|
||||
sculpt_stroke_new(256);
|
||||
|
||||
ss->damaged_rects.first = ss->damaged_rects.last = NULL;
|
||||
ss->damaged_verts.first = ss->damaged_verts.last = NULL;
|
||||
ss->vertexcosnos = NULL;
|
||||
|
||||
mmd = sculpt_multires_active(ob);
|
||||
|
||||
/* Check that vertex users are up-to-date */
|
||||
if(ob != active_ob || !ss->vertex_users || ss->vertex_users_size != cache->totvert) {
|
||||
sculpt_vertexusers_free(ss);
|
||||
calc_vertex_users(ss);
|
||||
if(ss->projverts)
|
||||
MEM_freeN(ss->projverts);
|
||||
ss->projverts = NULL;
|
||||
active_ob= ob;
|
||||
}
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glEnableClientState(GL_NORMAL_ARRAY);
|
||||
|
||||
/*XXX:
|
||||
persp(PERSP_VIEW);
|
||||
getmouseco_areawin(mvalo);*/
|
||||
|
||||
/* Init texture
|
||||
FIXME: Shouldn't be doing this every time! */
|
||||
if(sd->tex_mode!=SCULPTREPT_3D)
|
||||
sculptmode_update_tex(sd);
|
||||
|
||||
/*XXX: getmouseco_areawin(mouse); */
|
||||
mvalo[0]= mouse[0];
|
||||
mvalo[1]= mouse[1];
|
||||
lastSigMouse[0]=mouse[0];
|
||||
lastSigMouse[1]=mouse[1];
|
||||
mousebut = 0; /* XXX: L_MOUSE; */
|
||||
|
||||
/* If modifier_calculations is true, then extra time must be spent
|
||||
updating the mesh. This takes a *lot* longer, so it's worth
|
||||
skipping if the modifier stack is empty. */
|
||||
modifier_calculations= sculpt_modifiers_active(ob);
|
||||
|
||||
if(modifier_calculations)
|
||||
ss->vertexcosnos= mesh_get_mapped_verts_nors(NULL, ob); /* XXX: scene = ? */
|
||||
sculptmode_update_all_projverts(ss);
|
||||
|
||||
/* Capture original copy */
|
||||
if(sd->flags & SCULPT_DRAW_FAST)
|
||||
glAccum(GL_LOAD, 1);
|
||||
|
||||
/* Get original scissor box */
|
||||
glGetIntegerv(GL_SCISSOR_BOX, scissor_box);
|
||||
|
||||
/* For raking, get the original angle*/
|
||||
offsetRot=sculpt_tex_angle(sd);
|
||||
|
||||
me = get_mesh(ob);
|
||||
|
||||
while (/*XXX:get_mbut() & mousebut*/0) {
|
||||
/* XXX: getmouseco_areawin(mouse); */
|
||||
/* If rake, and the mouse has moved over 10 pixels (euclidean) (prevents jitter) then get the new angle */
|
||||
if (rake && (pow(lastSigMouse[0]-mouse[0],2)+pow(lastSigMouse[1]-mouse[1],2))>100){
|
||||
/*Nasty looking, but just orig + new angle really*/
|
||||
set_tex_angle(sd, offsetRot+180.+to_deg(atan2((float)(mouse[1]-lastSigMouse[1]),(float)(mouse[0]-lastSigMouse[0]))));
|
||||
lastSigMouse[0]=mouse[0];
|
||||
lastSigMouse[1]=mouse[1];
|
||||
}
|
||||
|
||||
if(firsttime || mouse[0]!=mvalo[0] || mouse[1]!=mvalo[1] ||
|
||||
sd->brush->flag & BRUSH_AIRBRUSH) {
|
||||
a->firsttime = firsttime;
|
||||
firsttime= 0;
|
||||
|
||||
if(smooth_stroke)
|
||||
sculpt_stroke_add_point(ss->stroke, mouse[0], mouse[1]);
|
||||
|
||||
spacing+= sqrt(pow(mvalo[0]-mouse[0],2)+pow(mvalo[1]-mouse[1],2));
|
||||
|
||||
if(modifier_calculations && !ss->vertexcosnos)
|
||||
ss->vertexcosnos= mesh_get_mapped_verts_nors(NULL, ob); /*XXX scene = ? */
|
||||
|
||||
if(sd->brush->sculpt_tool != SCULPT_TOOL_GRAB) {
|
||||
if(anchored) {
|
||||
/* Restore the mesh before continuing with anchored stroke */
|
||||
/*if(a->mesh_store) {
|
||||
for(i = 0; i < cache->totvert; ++i) {
|
||||
VecCopyf(cache->mvert[i].co, &a->mesh_store[i].x);
|
||||
cache->mvert[i].no[0] = a->orig_norms[i][0];
|
||||
cache->mvert[i].no[1] = a->orig_norms[i][1];
|
||||
cache->mvert[i].no[2] = a->orig_norms[i][2];
|
||||
}
|
||||
}*/
|
||||
|
||||
//do_symmetrical_brush_actions(sd, a, mouse, NULL);
|
||||
}
|
||||
else {
|
||||
if(smooth_stroke) {
|
||||
sculpt_stroke_apply(sd, ss->stroke);
|
||||
}
|
||||
else if(sd->spacing==0 || spacing>sd->spacing) {
|
||||
//do_symmetrical_brush_actions(sd, a, mouse, NULL);
|
||||
spacing= 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
//do_symmetrical_brush_actions(sd, a, mouse, mvalo);
|
||||
//unproject(ss, sd->pivot, mouse[0], mouse[1], a->depth);
|
||||
}
|
||||
|
||||
if((!ss->multires && modifier_calculations) || ob_get_keyblock(ob)) {
|
||||
/* XXX: DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); */ }
|
||||
|
||||
if(modifier_calculations || sd->brush->sculpt_tool == SCULPT_TOOL_GRAB || !(sd->flags & SCULPT_DRAW_FAST)) {
|
||||
calc_damaged_verts(ss, a);
|
||||
/*XXX: scrarea_do_windraw(curarea);
|
||||
screen_swapbuffers(); */
|
||||
} else { /* Optimized drawing */
|
||||
calc_damaged_verts(ss, a);
|
||||
|
||||
/* Draw the stored image to the screen */
|
||||
glAccum(GL_RETURN, 1);
|
||||
|
||||
sculpt_clear_damaged_areas(ss);
|
||||
|
||||
/* Draw all the polygons that are inside the modified area(s) */
|
||||
glScissor(scissor_box[0], scissor_box[1], scissor_box[2], scissor_box[3]);
|
||||
/* XXX: sculptmode_draw_mesh(1); */
|
||||
glAccum(GL_LOAD, 1);
|
||||
|
||||
projverts_clear_inside(ss);
|
||||
|
||||
/* XXX: persp(PERSP_WIN); */
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
||||
/* Draw cursor */
|
||||
if(sd->flags & SCULPT_TOOL_DRAW)
|
||||
fdrawXORcirc((float)mouse[0],(float)mouse[1],sd->brush->size);
|
||||
/* XXX: if(smooth_stroke)
|
||||
sculpt_stroke_draw();
|
||||
|
||||
myswapbuffers(); */
|
||||
}
|
||||
|
||||
BLI_freelistN(&ss->damaged_rects);
|
||||
ss->damaged_rects.first = ss->damaged_rects.last = NULL;
|
||||
|
||||
mvalo[0]= mouse[0];
|
||||
mvalo[1]= mouse[1];
|
||||
|
||||
if(ss->vertexcosnos) {
|
||||
MEM_freeN(ss->vertexcosnos);
|
||||
ss->vertexcosnos= NULL;
|
||||
}
|
||||
|
||||
}
|
||||
else { /*XXX:BIF_wait_for_statechange();*/ }
|
||||
}
|
||||
|
||||
/* Set the rotation of the brush back to what it was before any rake */
|
||||
set_tex_angle(sd, offsetRot);
|
||||
|
||||
if(smooth_stroke) {
|
||||
sculpt_stroke_apply_all(sd, ss->stroke);
|
||||
calc_damaged_verts(ss, a);
|
||||
BLI_freelistN(&ss->damaged_rects);
|
||||
}
|
||||
|
||||
//if(a->layer_disps) MEM_freeN(a->layer_disps);
|
||||
//if(a->mesh_store) MEM_freeN(a->mesh_store);
|
||||
//if(a->orig_norms) MEM_freeN(a->orig_norms);
|
||||
for(i=0; i<8; ++i)
|
||||
BLI_freelistN(&a->grab_active_verts[i]);
|
||||
MEM_freeN(a);
|
||||
sculpt_stroke_free(ss->stroke);
|
||||
ss->stroke = NULL;
|
||||
|
||||
if(mmd) {
|
||||
if(mmd->undo_verts && mmd->undo_verts != cache->mvert)
|
||||
MEM_freeN(mmd->undo_verts);
|
||||
|
||||
mmd->undo_verts = cache->mvert;
|
||||
mmd->undo_verts_tot = cache->totvert;
|
||||
}
|
||||
|
||||
//sculpt_undo_push(sd);
|
||||
|
||||
/* XXX: if(G.vd->depths) G.vd->depths->damaged= 1;
|
||||
allqueue(REDRAWVIEW3D, 0); */
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Partial Mesh Visibility */
|
||||
|
||||
/* XXX: Partial vis. always was a mess, have to figure something out */
|
||||
#if 0
|
||||
/* mode: 0=hide outside selection, 1=hide inside selection */
|
||||
static void sculptmode_do_pmv(Object *ob, rcti *hb_2d, int mode)
|
||||
{
|
||||
Mesh *me= get_mesh(ob);
|
||||
float hidebox[6][3];
|
||||
vec3f plane_normals[4];
|
||||
float plane_ds[4];
|
||||
unsigned i, j;
|
||||
unsigned ndx_show, ndx_hide;
|
||||
MVert *nve;
|
||||
unsigned face_cnt_show= 0, face_ndx_show= 0;
|
||||
unsigned edge_cnt_show= 0, edge_ndx_show= 0;
|
||||
unsigned *old_map= NULL;
|
||||
const unsigned SHOW= 0, HIDE=1;
|
||||
|
||||
/* Convert hide box from 2D to 3D */
|
||||
unproject(hidebox[0], hb_2d->xmin, hb_2d->ymax, 1);
|
||||
unproject(hidebox[1], hb_2d->xmax, hb_2d->ymax, 1);
|
||||
unproject(hidebox[2], hb_2d->xmax, hb_2d->ymin, 1);
|
||||
unproject(hidebox[3], hb_2d->xmin, hb_2d->ymin, 1);
|
||||
unproject(hidebox[4], hb_2d->xmin, hb_2d->ymax, 0);
|
||||
unproject(hidebox[5], hb_2d->xmax, hb_2d->ymin, 0);
|
||||
|
||||
/* Calculate normals for each side of hide box */
|
||||
CalcNormFloat(hidebox[0], hidebox[1], hidebox[4], &plane_normals[0].x);
|
||||
CalcNormFloat(hidebox[1], hidebox[2], hidebox[5], &plane_normals[1].x);
|
||||
CalcNormFloat(hidebox[2], hidebox[3], hidebox[5], &plane_normals[2].x);
|
||||
CalcNormFloat(hidebox[3], hidebox[0], hidebox[4], &plane_normals[3].x);
|
||||
|
||||
/* Calculate D for each side of hide box */
|
||||
for(i= 0; i<4; ++i)
|
||||
plane_ds[i]= hidebox[i][0]*plane_normals[i].x + hidebox[i][1]*plane_normals[i].y +
|
||||
hidebox[i][2]*plane_normals[i].z;
|
||||
|
||||
/* Add partial visibility to mesh */
|
||||
if(!me->pv) {
|
||||
me->pv= MEM_callocN(sizeof(PartialVisibility),"PartialVisibility");
|
||||
} else {
|
||||
old_map= MEM_callocN(sizeof(unsigned)*me->pv->totvert,"PMV oldmap");
|
||||
for(i=0; i<me->pv->totvert; ++i) {
|
||||
old_map[i]= me->pv->vert_map[i]<me->totvert?0:1;
|
||||
}
|
||||
mesh_pmv_revert(ob, me);
|
||||
}
|
||||
|
||||
/* Kill sculpt data */
|
||||
active_ob= NULL;
|
||||
|
||||
/* Initalize map with which verts are to be hidden */
|
||||
me->pv->vert_map= MEM_mallocN(sizeof(unsigned)*me->totvert, "PMV vertmap");
|
||||
me->pv->totvert= me->totvert;
|
||||
me->totvert= 0;
|
||||
for(i=0; i<me->pv->totvert; ++i) {
|
||||
me->pv->vert_map[i]= mode ? HIDE:SHOW;
|
||||
for(j=0; j<4; ++j) {
|
||||
if(me->mvert[i].co[0] * plane_normals[j].x +
|
||||
me->mvert[i].co[1] * plane_normals[j].y +
|
||||
me->mvert[i].co[2] * plane_normals[j].z < plane_ds[j] ) {
|
||||
me->pv->vert_map[i]= mode ? SHOW:HIDE; /* Vert is outside the hide box */
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(old_map && old_map[i]) me->pv->vert_map[i]= 1;
|
||||
if(!me->pv->vert_map[i]) ++me->totvert;
|
||||
|
||||
}
|
||||
if(old_map) MEM_freeN(old_map);
|
||||
|
||||
/* Find out how many faces to show */
|
||||
for(i=0; i<me->totface; ++i) {
|
||||
if(!me->pv->vert_map[me->mface[i].v1] &&
|
||||
!me->pv->vert_map[me->mface[i].v2] &&
|
||||
!me->pv->vert_map[me->mface[i].v3]) {
|
||||
if(me->mface[i].v4) {
|
||||
if(!me->pv->vert_map[me->mface[i].v4])
|
||||
++face_cnt_show;
|
||||
}
|
||||
else ++face_cnt_show;
|
||||
}
|
||||
}
|
||||
/* Find out how many edges to show */
|
||||
for(i=0; i<me->totedge; ++i) {
|
||||
if(!me->pv->vert_map[me->medge[i].v1] &&
|
||||
!me->pv->vert_map[me->medge[i].v2])
|
||||
++edge_cnt_show;
|
||||
}
|
||||
|
||||
/* Create new vert array and reset each vert's map with map[old]=new index */
|
||||
nve= MEM_mallocN(sizeof(MVert)*me->pv->totvert, "PMV verts");
|
||||
ndx_show= 0; ndx_hide= me->totvert;
|
||||
for(i=0; i<me->pv->totvert; ++i) {
|
||||
if(me->pv->vert_map[i]) {
|
||||
me->pv->vert_map[i]= ndx_hide;
|
||||
nve[me->pv->vert_map[i]]= me->mvert[i];
|
||||
++ndx_hide;
|
||||
} else {
|
||||
me->pv->vert_map[i]= ndx_show;
|
||||
nve[me->pv->vert_map[i]]= me->mvert[i];
|
||||
++ndx_show;
|
||||
}
|
||||
}
|
||||
CustomData_free_layer_active(&me->vdata, CD_MVERT, me->pv->totvert);
|
||||
me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_ASSIGN, nve, me->totvert);
|
||||
|
||||
/* Create new face array */
|
||||
me->pv->old_faces= me->mface;
|
||||
me->pv->totface= me->totface;
|
||||
me->mface= MEM_mallocN(sizeof(MFace)*face_cnt_show, "PMV faces");
|
||||
for(i=0; i<me->totface; ++i) {
|
||||
MFace *pr_f= &me->pv->old_faces[i];
|
||||
char show= 0;
|
||||
|
||||
if(me->pv->vert_map[pr_f->v1] < me->totvert &&
|
||||
me->pv->vert_map[pr_f->v2] < me->totvert &&
|
||||
me->pv->vert_map[pr_f->v3] < me->totvert) {
|
||||
if(pr_f->v4) {
|
||||
if(me->pv->vert_map[pr_f->v4] < me->totvert)
|
||||
show= 1;
|
||||
}
|
||||
else show= 1;
|
||||
}
|
||||
|
||||
if(show) {
|
||||
MFace *cr_f= &me->mface[face_ndx_show];
|
||||
*cr_f= *pr_f;
|
||||
cr_f->v1= me->pv->vert_map[pr_f->v1];
|
||||
cr_f->v2= me->pv->vert_map[pr_f->v2];
|
||||
cr_f->v3= me->pv->vert_map[pr_f->v3];
|
||||
cr_f->v4= pr_f->v4 ? me->pv->vert_map[pr_f->v4] : 0;
|
||||
test_index_face(cr_f,NULL,0,pr_f->v4?4:3);
|
||||
++face_ndx_show;
|
||||
}
|
||||
}
|
||||
me->totface= face_cnt_show;
|
||||
CustomData_set_layer(&me->fdata, CD_MFACE, me->mface);
|
||||
|
||||
/* Create new edge array */
|
||||
me->pv->old_edges= me->medge;
|
||||
me->pv->totedge= me->totedge;
|
||||
me->medge= MEM_mallocN(sizeof(MEdge)*edge_cnt_show, "PMV edges");
|
||||
me->pv->edge_map= MEM_mallocN(sizeof(int)*me->pv->totedge,"PMV edgemap");
|
||||
for(i=0; i<me->totedge; ++i) {
|
||||
if(me->pv->vert_map[me->pv->old_edges[i].v1] < me->totvert &&
|
||||
me->pv->vert_map[me->pv->old_edges[i].v2] < me->totvert) {
|
||||
MEdge *cr_e= &me->medge[edge_ndx_show];
|
||||
me->pv->edge_map[i]= edge_ndx_show;
|
||||
*cr_e= me->pv->old_edges[i];
|
||||
cr_e->v1= me->pv->vert_map[me->pv->old_edges[i].v1];
|
||||
cr_e->v2= me->pv->vert_map[me->pv->old_edges[i].v2];
|
||||
++edge_ndx_show;
|
||||
}
|
||||
else me->pv->edge_map[i]= -1;
|
||||
}
|
||||
me->totedge= edge_cnt_show;
|
||||
CustomData_set_layer(&me->edata, CD_MEDGE, me->medge);
|
||||
|
||||
/* XXX: DAG_object_flush_update(G.scene, OBACT, OB_RECALC_DATA); */
|
||||
}
|
||||
|
||||
static rcti sculptmode_pmv_box()
|
||||
{
|
||||
/*XXX: short down[2], mouse[2];
|
||||
rcti ret;
|
||||
|
||||
getmouseco_areawin(down);
|
||||
|
||||
while((get_mbut()&L_MOUSE) || (get_mbut()&R_MOUSE)) {
|
||||
getmouseco_areawin(mouse);
|
||||
|
||||
scrarea_do_windraw(curarea);
|
||||
|
||||
persp(PERSP_WIN);
|
||||
glLineWidth(2);
|
||||
setlinestyle(2);
|
||||
sdrawXORline(down[0],down[1],mouse[0],down[1]);
|
||||
sdrawXORline(mouse[0],down[1],mouse[0],mouse[1]);
|
||||
sdrawXORline(mouse[0],mouse[1],down[0],mouse[1]);
|
||||
sdrawXORline(down[0],mouse[1],down[0],down[1]);
|
||||
setlinestyle(0);
|
||||
glLineWidth(1);
|
||||
persp(PERSP_VIEW);
|
||||
|
||||
screen_swapbuffers();
|
||||
backdrawview3d(0);
|
||||
}
|
||||
|
||||
ret.xmin= down[0]<mouse[0]?down[0]:mouse[0];
|
||||
ret.ymin= down[1]<mouse[1]?down[1]:mouse[1];
|
||||
ret.xmax= down[0]>mouse[0]?down[0]:mouse[0];
|
||||
ret.ymax= down[1]>mouse[1]?down[1]:mouse[1];
|
||||
return ret;*/
|
||||
}
|
||||
|
||||
void sculptmode_pmv(int mode)
|
||||
{
|
||||
Object *ob= NULL; /*XXX: OBACT; */
|
||||
rcti hb_2d;
|
||||
|
||||
if(ob_get_key(ob)) {
|
||||
error("Cannot hide mesh with shape keys enabled");
|
||||
return;
|
||||
}
|
||||
|
||||
hb_2d= sculptmode_pmv_box(); /* Get 2D hide box */
|
||||
|
||||
sculptmode_correct_state();
|
||||
|
||||
waitcursor(1);
|
||||
|
||||
if(hb_2d.xmax-hb_2d.xmin > 3 && hb_2d.ymax-hb_2d.ymin > 3) {
|
||||
init_sculptmatrices();
|
||||
|
||||
sculptmode_do_pmv(ob,&hb_2d,mode);
|
||||
}
|
||||
else mesh_pmv_off(ob, get_mesh(ob));
|
||||
|
||||
/*XXX: scrarea_do_windraw(curarea); */
|
||||
|
||||
waitcursor(0);
|
||||
}
|
||||
#endif
|
||||
|
@ -173,10 +173,10 @@ void buttons_header_buttons(const bContext *C, ARegion *ar)
|
||||
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_OBJECT_DATA, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_OBJECT, 0, 0, "Object");
|
||||
if(sbuts->pathflag & (1<<BCONTEXT_CONSTRAINT))
|
||||
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_CONSTRAINT, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_CONSTRAINT, 0, 0, "Constraint");
|
||||
if(sbuts->pathflag & (1<<BCONTEXT_MODIFIER))
|
||||
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_MODIFIER, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_MODIFIER, 0, 0, "Modifier");
|
||||
if(sbuts->pathflag & (1<<BCONTEXT_DATA))
|
||||
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, sbuts->dataicon, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_DATA, 0, 0, "Object Data");
|
||||
if(sbuts->pathflag & (1<<BCONTEXT_MODIFIER))
|
||||
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_MODIFIER, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_MODIFIER, 0, 0, "Modifier");
|
||||
if(sbuts->pathflag & (1<<BCONTEXT_BONE))
|
||||
uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, ICON_BONE_DATA, xco+=XIC, yco, XIC, YIC, &(sbuts->mainb), 0.0, (float)BCONTEXT_BONE, 0, 0, "Bone");
|
||||
if(sbuts->pathflag & (1<<BCONTEXT_MATERIAL))
|
||||
|
@ -71,5 +71,10 @@ void MATERIAL_OT_new(struct wmOperatorType *ot);
|
||||
void TEXTURE_OT_new(struct wmOperatorType *ot);
|
||||
void WORLD_OT_new(struct wmOperatorType *ot);
|
||||
|
||||
void OBJECT_OT_particle_system_add(struct wmOperatorType *ot);
|
||||
void OBJECT_OT_particle_system_remove(struct wmOperatorType *ot);
|
||||
|
||||
void PARTICLE_OT_new(struct wmOperatorType *ot);
|
||||
|
||||
#endif /* ED_BUTTONS_INTERN_H */
|
||||
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include "BKE_font.h"
|
||||
#include "BKE_library.h"
|
||||
#include "BKE_material.h"
|
||||
#include "BKE_particle.h"
|
||||
#include "BKE_texture.h"
|
||||
#include "BKE_utildefines.h"
|
||||
#include "BKE_world.h"
|
||||
@ -407,3 +408,109 @@ void WORLD_OT_new(wmOperatorType *ot)
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********************** particle system slot operators *********************/
|
||||
|
||||
static int particle_system_add_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
if(!scene || !ob)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
object_add_particle_system(scene, ob);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void OBJECT_OT_particle_system_add(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Add Particle System Slot";
|
||||
ot->idname= "OBJECT_OT_particle_system_add";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= particle_system_add_exec;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
static int particle_system_remove_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data;
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
if(!scene || !ob)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
object_remove_particle_system(scene, ob);
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void OBJECT_OT_particle_system_remove(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Remove Particle System Slot";
|
||||
ot->idname= "OBJECT_OT_particle_system_remove";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= particle_system_remove_exec;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/********************** new particle settings operator *********************/
|
||||
|
||||
static int new_particle_settings_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ParticleSettings *part= CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings).data;
|
||||
Object *ob;
|
||||
PointerRNA ptr;
|
||||
|
||||
/* add or copy particle setting */
|
||||
if(part)
|
||||
part= psys_copy_settings(part);
|
||||
else
|
||||
part= psys_new_settings("PSys", NULL);
|
||||
|
||||
/* attempt to assign to material slot */
|
||||
ptr= CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem);
|
||||
|
||||
if(ptr.data) {
|
||||
ParticleSystem *psys = (ParticleSystem*)ptr.data;
|
||||
ob= ptr.id.data;
|
||||
|
||||
if(psys->part)
|
||||
psys->part->id.us--;
|
||||
|
||||
psys->part = part;
|
||||
|
||||
DAG_scene_sort(scene);
|
||||
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
|
||||
|
||||
WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob);
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void PARTICLE_OT_new(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "New Particle Settings";
|
||||
ot->idname= "PARTICLE_OT_new";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= new_particle_settings_exec;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
@ -219,6 +219,11 @@ void buttons_operatortypes(void)
|
||||
WM_operatortype_append(MATERIAL_OT_new);
|
||||
WM_operatortype_append(TEXTURE_OT_new);
|
||||
WM_operatortype_append(WORLD_OT_new);
|
||||
|
||||
WM_operatortype_append(OBJECT_OT_particle_system_add);
|
||||
WM_operatortype_append(OBJECT_OT_particle_system_remove);
|
||||
|
||||
WM_operatortype_append(PARTICLE_OT_new);
|
||||
}
|
||||
|
||||
void buttons_keymap(struct wmWindowManager *wm)
|
||||
|
@ -550,132 +550,4 @@ void file_draw_list(const bContext *C, ARegion *ar)
|
||||
}
|
||||
}
|
||||
|
||||
static void file_draw_fsmenu_category_name(ARegion *ar, const char *category_name, short *starty)
|
||||
{
|
||||
short sx, sy;
|
||||
int bmwidth = ar->v2d.cur.xmax - ar->v2d.cur.xmin - 2*TILE_BORDER_X - ICON_DEFAULT_WIDTH - 4;
|
||||
int fontsize = file_font_pointsize();
|
||||
|
||||
sx = ar->v2d.cur.xmin + TILE_BORDER_X;
|
||||
sy = *starty;
|
||||
|
||||
UI_ThemeColor(TH_TEXT_HI);
|
||||
file_draw_string(sx, sy, category_name, bmwidth, fontsize, FILE_SHORTEN_END);
|
||||
|
||||
sy -= fontsize*2.0f;
|
||||
|
||||
*starty= sy;
|
||||
}
|
||||
|
||||
static void file_draw_fsmenu_category(const bContext *C, ARegion *ar, FSMenuCategory category, short *starty)
|
||||
{
|
||||
struct FSMenu* fsmenu = fsmenu_get();
|
||||
char bookmark[FILE_MAX];
|
||||
int nentries = fsmenu_get_nentries(fsmenu, category);
|
||||
|
||||
short sx, sy, xpos, ypos;
|
||||
int bmwidth = ar->v2d.cur.xmax - ar->v2d.cur.xmin - 2*TILE_BORDER_X - ICON_DEFAULT_WIDTH - 4;
|
||||
int fontsize = file_font_pointsize();
|
||||
int cat_icon;
|
||||
int i;
|
||||
|
||||
sx = ar->v2d.cur.xmin + TILE_BORDER_X;
|
||||
sy = *starty;
|
||||
|
||||
switch(category) {
|
||||
case FS_CATEGORY_SYSTEM:
|
||||
cat_icon = ICON_DISK_DRIVE; break;
|
||||
case FS_CATEGORY_BOOKMARKS:
|
||||
cat_icon = ICON_BOOKMARKS; break;
|
||||
case FS_CATEGORY_RECENT:
|
||||
cat_icon = ICON_FILE_FOLDER; break;
|
||||
}
|
||||
|
||||
for (i=0; i< nentries && (sy > ar->v2d.cur.ymin) ;++i) {
|
||||
char *fname = fsmenu_get_entry(fsmenu, category, i);
|
||||
|
||||
if (fname) {
|
||||
int sl;
|
||||
BLI_strncpy(bookmark, fname, FILE_MAX);
|
||||
|
||||
sl = strlen(bookmark)-1;
|
||||
if (sl > 1) {
|
||||
while (bookmark[sl] == '\\' || bookmark[sl] == '/') {
|
||||
bookmark[sl] = '\0';
|
||||
sl--;
|
||||
}
|
||||
}
|
||||
|
||||
if (fsmenu_is_selected(fsmenu, category, i) ) {
|
||||
UI_ThemeColor(TH_HILITE);
|
||||
uiRoundBox(sx, sy - fontsize*2.0f, ar->v2d.cur.xmax - TILE_BORDER_X, sy, 4.0f);
|
||||
UI_ThemeColor(TH_TEXT);
|
||||
} else {
|
||||
UI_ThemeColor(TH_TEXT_HI);
|
||||
}
|
||||
|
||||
xpos = sx;
|
||||
ypos = sy - (TILE_BORDER_Y * 0.5);
|
||||
|
||||
file_draw_icon(xpos, ypos, cat_icon, ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH);
|
||||
xpos += ICON_DEFAULT_WIDTH + 4;
|
||||
file_draw_string(xpos, ypos, bookmark, bmwidth, fontsize, FILE_SHORTEN_FRONT);
|
||||
sy -= fontsize*2.0;
|
||||
fsmenu_set_pos(fsmenu, category, i, xpos, ypos);
|
||||
}
|
||||
}
|
||||
|
||||
*starty = sy;
|
||||
}
|
||||
|
||||
void file_draw_fsmenu_operator(const bContext *C, ARegion *ar, wmOperator *op, short *starty)
|
||||
{
|
||||
uiStyle *style= U.uistyles.first;
|
||||
uiBlock *block;
|
||||
uiLayout *layout;
|
||||
int sy;
|
||||
|
||||
sy= *starty;
|
||||
|
||||
block= uiBeginBlock(C, ar, "file_options", UI_EMBOSS);
|
||||
layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, TILE_BORDER_X, sy, ar->winx-2*TILE_BORDER_X, 20, style);
|
||||
|
||||
RNA_STRUCT_BEGIN(op->ptr, prop) {
|
||||
if(strcmp(RNA_property_identifier(prop), "rna_type") == 0)
|
||||
continue;
|
||||
if(strcmp(RNA_property_identifier(prop), "filename") == 0)
|
||||
continue;
|
||||
|
||||
uiItemFullR(layout, NULL, 0, op->ptr, prop, -1, 0, 0, 0, 0);
|
||||
}
|
||||
RNA_STRUCT_END;
|
||||
|
||||
uiBlockLayoutResolve(C, block, NULL, &sy);
|
||||
uiEndBlock(C, block);
|
||||
uiDrawBlock(C, block);
|
||||
|
||||
*starty= sy;
|
||||
}
|
||||
|
||||
void file_draw_fsmenu(const bContext *C, ARegion *ar)
|
||||
{
|
||||
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
|
||||
int linestep = file_font_pointsize()*2.0f;
|
||||
short sy= ar->v2d.cur.ymax-2*TILE_BORDER_Y;
|
||||
|
||||
file_draw_fsmenu_category_name(ar, "SYSTEM", &sy);
|
||||
file_draw_fsmenu_category(C, ar, FS_CATEGORY_SYSTEM, &sy);
|
||||
sy -= linestep;
|
||||
file_draw_fsmenu_category_name(ar, "BOOKMARKS", &sy);
|
||||
file_draw_fsmenu_category(C, ar, FS_CATEGORY_BOOKMARKS, &sy);
|
||||
sy -= linestep;
|
||||
file_draw_fsmenu_category_name(ar, "RECENT", &sy);
|
||||
file_draw_fsmenu_category(C, ar, FS_CATEGORY_RECENT, &sy);
|
||||
|
||||
if(sfile->op) {
|
||||
sy -= linestep;
|
||||
file_draw_fsmenu_category_name(ar, "OPTIONS", &sy);
|
||||
file_draw_fsmenu_operator(C, ar, sfile->op, &sy);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,9 @@
|
||||
|
||||
/* internal exports only */
|
||||
|
||||
struct ARegion;
|
||||
struct ARegionType;
|
||||
struct SpaceFile;
|
||||
|
||||
/* file_header.c */
|
||||
void file_header_buttons(const bContext *C, ARegion *ar);
|
||||
@ -45,7 +48,6 @@ void file_draw_buttons(const bContext *C, ARegion *ar);
|
||||
void file_calc_previews(const bContext *C, ARegion *ar);
|
||||
void file_draw_previews(const bContext *C, ARegion *ar);
|
||||
void file_draw_list(const bContext *C, ARegion *ar);
|
||||
void file_draw_fsmenu(const bContext *C, ARegion *ar);
|
||||
|
||||
/* file_ops.h */
|
||||
struct wmOperatorType;
|
||||
@ -56,6 +58,9 @@ void FILE_OT_select(struct wmOperatorType *ot);
|
||||
void FILE_OT_select_all_toggle(struct wmOperatorType *ot);
|
||||
void FILE_OT_select_border(struct wmOperatorType *ot);
|
||||
void FILE_OT_select_bookmark(struct wmOperatorType *ot);
|
||||
void FILE_OT_add_bookmark(struct wmOperatorType *ot);
|
||||
void FILE_OT_delete_bookmark(struct wmOperatorType *ot);
|
||||
void FILE_OT_hidedot(struct wmOperatorType *ot);
|
||||
void FILE_OT_loadimages(struct wmOperatorType *ot);
|
||||
void FILE_OT_exec(struct wmOperatorType *ot);
|
||||
void FILE_OT_cancel(struct wmOperatorType *ot);
|
||||
@ -66,11 +71,14 @@ void FILE_OT_bookmark_toggle(struct wmOperatorType *ot);
|
||||
int file_exec(bContext *C, struct wmOperator *unused);
|
||||
int file_cancel_exec(bContext *C, struct wmOperator *unused);
|
||||
int file_parent_exec(bContext *C, struct wmOperator *unused);
|
||||
int file_hilight_set(SpaceFile *sfile, ARegion *ar, int mx, int my);
|
||||
int file_hilight_set(struct SpaceFile *sfile, struct ARegion *ar, int mx, int my);
|
||||
|
||||
/* filesel.c */
|
||||
float file_string_width(const char* str);
|
||||
float file_font_pointsize();
|
||||
|
||||
/* file_panels.c */
|
||||
void file_panels_register(struct ARegionType *art);
|
||||
|
||||
#endif /* ED_FILE_INTERN_H */
|
||||
|
||||
|
@ -42,6 +42,8 @@
|
||||
#include "ED_screen.h"
|
||||
#include "ED_fileselect.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_define.h"
|
||||
|
||||
@ -135,22 +137,15 @@ static void file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short v
|
||||
params->active_file = last_file;
|
||||
|
||||
if(file && S_ISDIR(file->type)) {
|
||||
/* the path is too long and we are not going up! */
|
||||
if (strcmp(file->relname, ".") &&
|
||||
strcmp(file->relname, "..") &&
|
||||
strlen(params->dir) + strlen(file->relname) >= FILE_MAX )
|
||||
/* the path is too long! */
|
||||
if (strlen(params->dir) + strlen(file->relname) >= FILE_MAX )
|
||||
{
|
||||
// XXX error("Path too long, cannot enter this directory");
|
||||
} else {
|
||||
if (strcmp(file->relname, "..")==0) {
|
||||
/* avoids /../../ */
|
||||
BLI_parent_dir(params->dir);
|
||||
} else {
|
||||
strcat(params->dir, file->relname);
|
||||
strcat(params->dir,"/");
|
||||
params->file[0] = '\0';
|
||||
BLI_cleanup_dir(G.sce, params->dir);
|
||||
}
|
||||
strcat(params->dir, file->relname);
|
||||
strcat(params->dir,"/");
|
||||
params->file[0] = '\0';
|
||||
BLI_cleanup_dir(G.sce, params->dir);
|
||||
filelist_setdir(sfile->files, params->dir);
|
||||
filelist_free(sfile->files);
|
||||
params->active_file = -1;
|
||||
@ -234,7 +229,7 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
/* single select, deselect all selected first */
|
||||
file_deselect_all(sfile);
|
||||
file_select(sfile, ar, &rect, val );
|
||||
WM_event_add_notifier(C, NC_WINDOW, NULL);
|
||||
WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL);
|
||||
}
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
@ -299,75 +294,25 @@ void FILE_OT_select_all_toggle(wmOperatorType *ot)
|
||||
|
||||
/* ---------- BOOKMARKS ----------- */
|
||||
|
||||
static int file_select_bookmark_category(SpaceFile* sfile, ARegion* ar, short x, short y, FSMenuCategory category)
|
||||
{
|
||||
struct FSMenu* fsmenu = fsmenu_get();
|
||||
int nentries = fsmenu_get_nentries(fsmenu, category);
|
||||
int linestep = file_font_pointsize()*2.0f;
|
||||
short xs, ys;
|
||||
int i;
|
||||
int selected = -1;
|
||||
|
||||
for (i=0; i < nentries; ++i) {
|
||||
fsmenu_get_pos(fsmenu, category, i, &xs, &ys);
|
||||
if ( (y<=ys) && (y>ys-linestep) ) {
|
||||
fsmenu_select_entry(fsmenu, category, i);
|
||||
selected = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return selected;
|
||||
}
|
||||
|
||||
static void file_select_bookmark(SpaceFile* sfile, ARegion* ar, short x, short y)
|
||||
{
|
||||
float fx, fy;
|
||||
int selected;
|
||||
FSMenuCategory category = FS_CATEGORY_SYSTEM;
|
||||
|
||||
if (BLI_in_rcti(&ar->v2d.mask, x, y)) {
|
||||
char *entry;
|
||||
|
||||
UI_view2d_region_to_view(&ar->v2d, x, y, &fx, &fy);
|
||||
selected = file_select_bookmark_category(sfile, ar, fx, fy, FS_CATEGORY_SYSTEM);
|
||||
if (selected<0) {
|
||||
category = FS_CATEGORY_BOOKMARKS;
|
||||
selected = file_select_bookmark_category(sfile, ar, fx, fy, category);
|
||||
}
|
||||
if (selected<0) {
|
||||
category = FS_CATEGORY_RECENT;
|
||||
selected = file_select_bookmark_category(sfile, ar, fx, fy, category);
|
||||
}
|
||||
|
||||
if (selected>=0) {
|
||||
entry= fsmenu_get_entry(fsmenu_get(), category, selected);
|
||||
/* which string */
|
||||
if (entry) {
|
||||
FileSelectParams* params = sfile->params;
|
||||
BLI_strncpy(params->dir, entry, sizeof(params->dir));
|
||||
BLI_cleanup_dir(G.sce, params->dir);
|
||||
filelist_free(sfile->files);
|
||||
filelist_setdir(sfile->files, params->dir);
|
||||
params->file[0] = '\0';
|
||||
params->active_file = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int bookmark_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
ARegion *ar= CTX_wm_region(C);
|
||||
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
|
||||
|
||||
short x, y;
|
||||
if(RNA_struct_find_property(op->ptr, "dir")) {
|
||||
char entry[256];
|
||||
FileSelectParams* params = sfile->params;
|
||||
|
||||
x = event->x - ar->winrct.xmin;
|
||||
y = event->y - ar->winrct.ymin;
|
||||
RNA_string_get(op->ptr, "dir", entry);
|
||||
BLI_strncpy(params->dir, entry, sizeof(params->dir));
|
||||
BLI_cleanup_dir(G.sce, params->dir);
|
||||
filelist_free(sfile->files);
|
||||
filelist_setdir(sfile->files, params->dir);
|
||||
params->file[0] = '\0';
|
||||
params->active_file = -1;
|
||||
|
||||
file_select_bookmark(sfile, ar, x, y);
|
||||
ED_area_tag_redraw(sa);
|
||||
WM_event_add_notifier(C, NC_FILE|ND_PARAMS, NULL);
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
@ -380,8 +325,75 @@ void FILE_OT_select_bookmark(wmOperatorType *ot)
|
||||
/* api callbacks */
|
||||
ot->invoke= bookmark_select_invoke;
|
||||
ot->poll= ED_operator_file_active;
|
||||
|
||||
RNA_def_string(ot->srna, "dir", "", 256, "Dir", "");
|
||||
}
|
||||
|
||||
static int bookmark_add_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
|
||||
struct FSMenu* fsmenu = fsmenu_get();
|
||||
struct FileSelectParams* params= ED_fileselect_get_params(sfile);
|
||||
|
||||
if (params->dir[0] != '\0') {
|
||||
char name[FILE_MAX];
|
||||
|
||||
fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, params->dir, 0, 1);
|
||||
BLI_make_file_string("/", name, BLI_gethome(), ".Bfs");
|
||||
fsmenu_write_file(fsmenu, name);
|
||||
}
|
||||
|
||||
ED_area_tag_redraw(sa);
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void FILE_OT_add_bookmark(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Add Bookmark";
|
||||
ot->idname= "FILE_OT_add_bookmark";
|
||||
|
||||
/* api callbacks */
|
||||
ot->invoke= bookmark_add_invoke;
|
||||
ot->poll= ED_operator_file_active;
|
||||
}
|
||||
|
||||
static int bookmark_delete_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
|
||||
struct FSMenu* fsmenu = fsmenu_get();
|
||||
int nentries = fsmenu_get_nentries(fsmenu, FS_CATEGORY_BOOKMARKS);
|
||||
if(RNA_struct_find_property(op->ptr, "index")) {
|
||||
int index = RNA_int_get(op->ptr, "index");
|
||||
if ( (index >-1) && (index < nentries)) {
|
||||
char name[FILE_MAX];
|
||||
|
||||
fsmenu_remove_entry(fsmenu, FS_CATEGORY_BOOKMARKS, index);
|
||||
BLI_make_file_string("/", name, BLI_gethome(), ".Bfs");
|
||||
fsmenu_write_file(fsmenu, name);
|
||||
ED_area_tag_redraw(sa);
|
||||
}
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void FILE_OT_delete_bookmark(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Delete Bookmark";
|
||||
ot->idname= "FILE_OT_delete_bookmark";
|
||||
|
||||
/* api callbacks */
|
||||
ot->invoke= bookmark_delete_invoke;
|
||||
ot->poll= ED_operator_file_active;
|
||||
|
||||
RNA_def_int(ot->srna, "index", -1, -1, 20000, "Index", "", -1, 20000);
|
||||
}
|
||||
|
||||
|
||||
static int loadimages_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
@ -548,7 +560,7 @@ int file_parent_exec(bContext *C, wmOperator *unused)
|
||||
filelist_free(sfile->files);
|
||||
sfile->params->active_file = -1;
|
||||
}
|
||||
ED_area_tag_redraw(CTX_wm_area(C));
|
||||
WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
||||
@ -575,8 +587,8 @@ int file_refresh_exec(bContext *C, wmOperator *unused)
|
||||
filelist_setdir(sfile->files, sfile->params->dir);
|
||||
filelist_free(sfile->files);
|
||||
sfile->params->active_file = -1;
|
||||
}
|
||||
ED_area_tag_redraw(CTX_wm_area(C));
|
||||
}
|
||||
WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
||||
@ -594,14 +606,58 @@ void FILE_OT_refresh(struct wmOperatorType *ot)
|
||||
ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
|
||||
}
|
||||
|
||||
int file_hidedot_exec(bContext *C, wmOperator *unused)
|
||||
{
|
||||
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
|
||||
|
||||
if(sfile->params) {
|
||||
sfile->params->flag ^= FILE_HIDE_DOT;
|
||||
filelist_free(sfile->files);
|
||||
sfile->params->active_file = -1;
|
||||
WM_event_add_notifier(C, NC_FILE|ND_FILELIST, NULL);
|
||||
}
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void FILE_OT_hidedot(struct wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Toggle Hide Dot Files";
|
||||
ot->idname= "FILE_OT_hidedot";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= file_hidedot_exec;
|
||||
ot->poll= ED_operator_file_active; /* <- important, handler is on window level */
|
||||
}
|
||||
|
||||
struct ARegion *file_buttons_region(struct ScrArea *sa)
|
||||
{
|
||||
ARegion *ar;
|
||||
ARegion *ar, *arnew;
|
||||
|
||||
for(ar= sa->regionbase.first; ar; ar= ar->next)
|
||||
if(ar->regiontype==RGN_TYPE_CHANNELS)
|
||||
return ar;
|
||||
return NULL;
|
||||
|
||||
/* add subdiv level; after header */
|
||||
for(ar= sa->regionbase.first; ar; ar= ar->next)
|
||||
if(ar->regiontype==RGN_TYPE_HEADER)
|
||||
break;
|
||||
|
||||
/* is error! */
|
||||
if(ar==NULL) return NULL;
|
||||
|
||||
arnew= MEM_callocN(sizeof(ARegion), "buttons for file panels");
|
||||
|
||||
BLI_insertlinkafter(&sa->regionbase, ar, arnew);
|
||||
arnew->regiontype= RGN_TYPE_CHANNELS;
|
||||
arnew->alignment= RGN_ALIGN_LEFT;
|
||||
|
||||
arnew->flag = RGN_FLAG_HIDDEN;
|
||||
|
||||
return arnew;
|
||||
}
|
||||
|
||||
int file_bookmark_toggle_exec(bContext *C, wmOperator *unused)
|
||||
|
165
source/blender/editors/space_file/file_panels.c
Normal file
165
source/blender/editors/space_file/file_panels.c
Normal file
@ -0,0 +1,165 @@
|
||||
/**
|
||||
* $Id$
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2009 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Contributor(s): Blender Foundation, Andrea Weikert
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_screen.h"
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
|
||||
#include "DNA_screen_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
#include "DNA_userdef_types.h"
|
||||
#include "DNA_windowmanager_types.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "RNA_access.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
#include "UI_resources.h"
|
||||
#include "UI_view2d.h"
|
||||
|
||||
#include "file_intern.h"
|
||||
#include "fsmenu.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
static void do_file_panel_events(bContext *C, void *arg, int event)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
static void file_panel_category(const bContext *C, Panel *pa, FSMenuCategory category, int icon, int allow_delete)
|
||||
{
|
||||
uiBlock *block;
|
||||
uiStyle *style= U.uistyles.first;
|
||||
int i;
|
||||
int fontsize = file_font_pointsize();
|
||||
struct FSMenu* fsmenu = fsmenu_get();
|
||||
int nentries = fsmenu_get_nentries(fsmenu, category);
|
||||
|
||||
uiLayoutSetAlignment(pa->layout, UI_LAYOUT_ALIGN_LEFT);
|
||||
block= uiLayoutFreeBlock(pa->layout);
|
||||
uiBlockSetHandleFunc(block, do_file_panel_events, NULL);
|
||||
uiBlockSetEmboss(block, UI_EMBOSSP);
|
||||
uiBlockBeginAlign(block);
|
||||
for (i=0; i< nentries;++i) {
|
||||
char dir[FILE_MAX];
|
||||
char temp[FILE_MAX];
|
||||
uiLayout* layout = uiLayoutRow(pa->layout, UI_LAYOUT_ALIGN_LEFT);
|
||||
char *entry = fsmenu_get_entry(fsmenu, category, i);
|
||||
|
||||
/* create nice bookmark name, shows last directory in the full path currently */
|
||||
BLI_strncpy(temp, entry, FILE_MAX);
|
||||
BLI_add_slash(temp);
|
||||
BLI_getlastdir(temp, dir, FILE_MAX);
|
||||
BLI_del_slash(dir);
|
||||
|
||||
/* operator shows the short bookmark name, should eventually have tooltip */
|
||||
uiItemStringO(layout, dir, icon, "FILE_OT_select_bookmark", "dir", entry);
|
||||
if (allow_delete && fsmenu_can_save(fsmenu, category, i) )
|
||||
uiItemIntO(layout, "", ICON_X, "FILE_OT_delete_bookmark", "index", i);
|
||||
}
|
||||
uiBlockEndAlign(block);
|
||||
}
|
||||
|
||||
static void file_panel_system(const bContext *C, Panel *pa)
|
||||
{
|
||||
file_panel_category(C, pa, FS_CATEGORY_SYSTEM, ICON_DISK_DRIVE, 0);
|
||||
}
|
||||
|
||||
static void file_panel_bookmarks(const bContext *C, Panel *pa)
|
||||
{
|
||||
file_panel_category(C, pa, FS_CATEGORY_BOOKMARKS, ICON_BOOKMARKS, 1);
|
||||
}
|
||||
|
||||
|
||||
static void file_panel_recent(const bContext *C, Panel *pa)
|
||||
{
|
||||
file_panel_category(C, pa, FS_CATEGORY_RECENT, ICON_FILE_FOLDER, 0);
|
||||
}
|
||||
|
||||
|
||||
static void file_panel_operator(const bContext *C, Panel *pa)
|
||||
{
|
||||
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
|
||||
struct wmOperator *op = sfile ? sfile->op : NULL;
|
||||
uiBlock *block;
|
||||
int sy;
|
||||
|
||||
block= uiLayoutFreeBlock(pa->layout);
|
||||
uiBlockSetHandleFunc(block, do_file_panel_events, NULL);
|
||||
|
||||
sy= 0;
|
||||
if (op) {
|
||||
uiBlockBeginAlign(block);
|
||||
RNA_STRUCT_BEGIN(op->ptr, prop) {
|
||||
if(strcmp(RNA_property_identifier(prop), "rna_type") == 0)
|
||||
continue;
|
||||
if(strcmp(RNA_property_identifier(prop), "filename") == 0)
|
||||
continue;
|
||||
|
||||
uiItemFullR(pa->layout, NULL, 0, op->ptr, prop, -1, 0, 0, 0, 0);
|
||||
}
|
||||
RNA_STRUCT_END;
|
||||
uiBlockEndAlign(block);
|
||||
}
|
||||
uiBlockLayoutResolve(C, block, NULL, &sy);
|
||||
uiEndBlock(C, block);
|
||||
uiDrawBlock(C, block);
|
||||
}
|
||||
|
||||
|
||||
void file_panels_register(ARegionType *art)
|
||||
{
|
||||
PanelType *pt;
|
||||
|
||||
pt= MEM_callocN(sizeof(PanelType), "spacetype file system directories");
|
||||
strcpy(pt->idname, "FILE_PT_system");
|
||||
strcpy(pt->label, "System");
|
||||
pt->draw= file_panel_system;
|
||||
BLI_addtail(&art->paneltypes, pt);
|
||||
|
||||
pt= MEM_callocN(sizeof(PanelType), "spacetype file bookmarks");
|
||||
strcpy(pt->idname, "FILE_PT_bookmarks");
|
||||
strcpy(pt->label, "Bookmarks");
|
||||
pt->draw= file_panel_bookmarks;
|
||||
BLI_addtail(&art->paneltypes, pt);
|
||||
|
||||
pt= MEM_callocN(sizeof(PanelType), "spacetype file recent directories");
|
||||
strcpy(pt->idname, "FILE_PT_recent");
|
||||
strcpy(pt->label, "Recent");
|
||||
pt->draw= file_panel_recent;
|
||||
BLI_addtail(&art->paneltypes, pt);
|
||||
|
||||
pt= MEM_callocN(sizeof(PanelType), "spacetype file operator properties");
|
||||
strcpy(pt->idname, "FILE_PT_operator");
|
||||
strcpy(pt->label, "Operator");
|
||||
pt->draw= file_panel_operator;
|
||||
BLI_addtail(&art->paneltypes, pt);
|
||||
}
|
@ -823,16 +823,16 @@ void filelist_sort(struct FileList* filelist, short sort)
|
||||
int num;/* , act= 0; */
|
||||
|
||||
switch(sort) {
|
||||
case FILE_SORTALPHA:
|
||||
case FILE_SORT_ALPHA:
|
||||
qsort(filelist->filelist, filelist->numfiles, sizeof(struct direntry), compare_name);
|
||||
break;
|
||||
case FILE_SORTDATE:
|
||||
case FILE_SORT_TIME:
|
||||
qsort(filelist->filelist, filelist->numfiles, sizeof(struct direntry), compare_date);
|
||||
break;
|
||||
case FILE_SORTSIZE:
|
||||
case FILE_SORT_SIZE:
|
||||
qsort(filelist->filelist, filelist->numfiles, sizeof(struct direntry), compare_size);
|
||||
break;
|
||||
case FILE_SORTEXTENS:
|
||||
case FILE_SORT_EXTENSION:
|
||||
qsort(filelist->filelist, filelist->numfiles, sizeof(struct direntry), compare_extension);
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,6 @@ void filelist_free_icons();
|
||||
struct FileList * filelist_copy(struct FileList* filelist);
|
||||
int filelist_find(struct FileList* filelist, char *file);
|
||||
void filelist_free(struct FileList* filelist);
|
||||
void filelist_freelib(struct FileList* filelist);
|
||||
void filelist_sort(struct FileList* filelist, short sort);
|
||||
int filelist_numfiles(struct FileList* filelist);
|
||||
const char * filelist_dir(struct FileList* filelist);
|
||||
|
@ -84,7 +84,7 @@
|
||||
FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile)
|
||||
{
|
||||
if (!sfile->params) {
|
||||
ED_fileselect_set_params(sfile, "", "/", 0, FILE_SHORTDISPLAY, 0, FILE_SORTALPHA);
|
||||
ED_fileselect_set_params(sfile, "", "/", 0, FILE_SHORTDISPLAY, 0, FILE_SORT_ALPHA);
|
||||
}
|
||||
return sfile->params;
|
||||
}
|
||||
|
@ -65,7 +65,6 @@ struct _FSMenuEntry {
|
||||
|
||||
char *path;
|
||||
short save;
|
||||
short xs, ys;
|
||||
};
|
||||
|
||||
typedef struct FSMenu
|
||||
@ -74,9 +73,6 @@ typedef struct FSMenu
|
||||
FSMenuEntry *fsmenu_bookmarks;
|
||||
FSMenuEntry *fsmenu_recent;
|
||||
|
||||
FSMenuCategory selected_category;
|
||||
int selected_entry;
|
||||
|
||||
} FSMenu;
|
||||
|
||||
static FSMenu *g_fsmenu = NULL;
|
||||
@ -89,17 +85,6 @@ struct FSMenu* fsmenu_get(void)
|
||||
return g_fsmenu;
|
||||
}
|
||||
|
||||
void fsmenu_select_entry(struct FSMenu* fsmenu, FSMenuCategory category, int index)
|
||||
{
|
||||
fsmenu->selected_category = category;
|
||||
fsmenu->selected_entry = index;
|
||||
}
|
||||
|
||||
int fsmenu_is_selected(struct FSMenu* fsmenu, FSMenuCategory category, int index)
|
||||
{
|
||||
return (category==fsmenu->selected_category) && (index==fsmenu->selected_entry);
|
||||
}
|
||||
|
||||
static FSMenuEntry *fsmenu_get_category(struct FSMenu* fsmenu, FSMenuCategory category)
|
||||
{
|
||||
FSMenuEntry *fsms = NULL;
|
||||
@ -154,36 +139,16 @@ char *fsmenu_get_entry(struct FSMenu* fsmenu, FSMenuCategory category, int idx)
|
||||
return fsme?fsme->path:NULL;
|
||||
}
|
||||
|
||||
void fsmenu_set_pos(struct FSMenu* fsmenu, FSMenuCategory category, int idx, short xs, short ys)
|
||||
short fsmenu_can_save (struct FSMenu* fsmenu, FSMenuCategory category, int idx)
|
||||
{
|
||||
FSMenuEntry *fsme;
|
||||
|
||||
for (fsme= fsmenu_get_category(fsmenu, category); fsme && idx; fsme= fsme->next)
|
||||
idx--;
|
||||
|
||||
if (fsme) {
|
||||
fsme->xs = xs;
|
||||
fsme->ys = ys;
|
||||
}
|
||||
return fsme?fsme->save:0;
|
||||
}
|
||||
|
||||
int fsmenu_get_pos (struct FSMenu* fsmenu, FSMenuCategory category, int idx, short* xs, short* ys)
|
||||
{
|
||||
FSMenuEntry *fsme;
|
||||
|
||||
for (fsme= fsmenu_get_category(fsmenu, category); fsme && idx; fsme= fsme->next)
|
||||
idx--;
|
||||
|
||||
if (fsme) {
|
||||
*xs = fsme->xs;
|
||||
*ys = fsme->ys;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void fsmenu_insert_entry(struct FSMenu* fsmenu, FSMenuCategory category, char *path, int sorted, short save)
|
||||
{
|
||||
FSMenuEntry *prev;
|
||||
|
@ -52,22 +52,15 @@ int fsmenu_get_nentries (struct FSMenu* fsmenu, FSMenuCategory category);
|
||||
*/
|
||||
char* fsmenu_get_entry (struct FSMenu* fsmenu, FSMenuCategory category, int index);
|
||||
|
||||
void fsmenu_select_entry (struct FSMenu* fsmenu, FSMenuCategory category, int index);
|
||||
|
||||
int fsmenu_is_selected (struct FSMenu* fsmenu, FSMenuCategory category, int index);
|
||||
|
||||
/** Sets the position of the fsmenu entry at @a index */
|
||||
void fsmenu_set_pos (struct FSMenu* fsmenu, FSMenuCategory category, int index, short xs, short ys);
|
||||
|
||||
/** Returns the position of the fsmenu entry at @a index. return value is 1 if successful, 0 otherwise */
|
||||
int fsmenu_get_pos (struct FSMenu* fsmenu, FSMenuCategory category, int index, short* xs, short* ys);
|
||||
|
||||
/** Inserts a new fsmenu entry with the given @a path.
|
||||
* Duplicate entries are not added.
|
||||
* @param sorted Should entry be inserted in sorted order?
|
||||
*/
|
||||
void fsmenu_insert_entry (struct FSMenu* fsmenu, FSMenuCategory category, char *path, int sorted, short save);
|
||||
|
||||
/** Return whether the entry was created by the user and can be saved and deleted */
|
||||
short fsmenu_can_save (struct FSMenu* fsmenu, FSMenuCategory category, int index);
|
||||
|
||||
/** Removes the fsmenu entry at the given @a index. */
|
||||
void fsmenu_remove_entry (struct FSMenu* fsmenu, FSMenuCategory category, int index);
|
||||
|
||||
|
@ -163,6 +163,46 @@ static SpaceLink *file_duplicate(SpaceLink *sl)
|
||||
return (SpaceLink *)sfilen;
|
||||
}
|
||||
|
||||
static void file_refresh(const bContext *C, ScrArea *sa)
|
||||
{
|
||||
SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
|
||||
FileSelectParams *params = ED_fileselect_get_params(sfile);
|
||||
|
||||
if (!sfile->files) {
|
||||
sfile->files = filelist_new();
|
||||
filelist_setdir(sfile->files, params->dir);
|
||||
params->active_file = -1; // added this so it opens nicer (ton)
|
||||
}
|
||||
filelist_hidedot(sfile->files, params->flag & FILE_HIDE_DOT);
|
||||
if (filelist_empty(sfile->files))
|
||||
{
|
||||
filelist_readdir(sfile->files);
|
||||
}
|
||||
filelist_setfilter(sfile->files, params->flag & FILE_FILTER ? params->filter : 0);
|
||||
if(params->sort!=FILE_SORT_NONE) filelist_sort(sfile->files, params->sort);
|
||||
}
|
||||
|
||||
static void file_listener(ScrArea *sa, wmNotifier *wmn)
|
||||
{
|
||||
SpaceFile* sfile = (SpaceFile*)sa->spacedata.first;
|
||||
|
||||
/* context changes */
|
||||
switch(wmn->category) {
|
||||
case NC_FILE:
|
||||
switch (wmn->data) {
|
||||
case ND_FILELIST:
|
||||
if (sfile->files) filelist_free(sfile->files);
|
||||
ED_area_tag_refresh(sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
break;
|
||||
case ND_PARAMS:
|
||||
ED_area_tag_refresh(sa);
|
||||
ED_area_tag_redraw(sa);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* add handlers, stuff you only do once or on area/region changes */
|
||||
static void file_main_area_init(wmWindowManager *wm, ARegion *ar)
|
||||
@ -188,31 +228,9 @@ static void file_main_area_draw(const bContext *C, ARegion *ar)
|
||||
View2D *v2d= &ar->v2d;
|
||||
View2DScrollers *scrollers;
|
||||
float col[3];
|
||||
|
||||
if (!sfile->files) {
|
||||
sfile->files = filelist_new();
|
||||
filelist_setdir(sfile->files, params->dir);
|
||||
params->active_file = -1; // added this so it opens nicer (ton)
|
||||
}
|
||||
|
||||
layout = ED_fileselect_get_layout(sfile, ar);
|
||||
|
||||
if (filelist_empty(sfile->files))
|
||||
{
|
||||
unsigned int filter = 0;
|
||||
filelist_hidedot(sfile->files, params->flag & FILE_HIDE_DOT);
|
||||
if (params->flag & FILE_FILTER) {
|
||||
filter = params->filter ;
|
||||
} else {
|
||||
filter = 0;
|
||||
}
|
||||
|
||||
filelist_setfilter(sfile->files, filter);
|
||||
filelist_readdir(sfile->files);
|
||||
|
||||
if(params->sort!=FILE_SORTALPHA) filelist_sort(sfile->files, params->sort);
|
||||
}
|
||||
|
||||
/* clear and setup matrix */
|
||||
UI_GetThemeColor3fv(TH_BACK, col);
|
||||
glClearColor(col[0], col[1], col[2], 0.0);
|
||||
@ -274,20 +292,25 @@ void file_operatortypes(void)
|
||||
WM_operatortype_append(FILE_OT_parent);
|
||||
WM_operatortype_append(FILE_OT_refresh);
|
||||
WM_operatortype_append(FILE_OT_bookmark_toggle);
|
||||
WM_operatortype_append(FILE_OT_add_bookmark);
|
||||
WM_operatortype_append(FILE_OT_delete_bookmark);
|
||||
WM_operatortype_append(FILE_OT_hidedot);
|
||||
}
|
||||
|
||||
/* NOTE: do not add .blend file reading on this level */
|
||||
void file_keymap(struct wmWindowManager *wm)
|
||||
{
|
||||
ListBase *keymap= WM_keymap_listbase(wm, "File", SPACE_FILE, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_bookmark_toggle", NKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, 0, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_parent", PKEY, KM_PRESS, 0, 0);
|
||||
|
||||
WM_keymap_add_item(keymap, "FILE_OT_add_bookmark", BKEY, KM_PRESS, KM_CTRL, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_hidedot", HKEY, KM_PRESS, 0, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_loadimages", TIMER1, KM_ANY, KM_ANY, 0);
|
||||
|
||||
|
||||
keymap= WM_keymap_listbase(wm, "FileBookmark", SPACE_FILE, 0);
|
||||
WM_keymap_add_item(keymap, "FILE_OT_select_bookmark", LEFTMOUSE, KM_PRESS, 0, 0);
|
||||
}
|
||||
@ -295,56 +318,31 @@ void file_keymap(struct wmWindowManager *wm)
|
||||
|
||||
static void file_channel_area_init(wmWindowManager *wm, ARegion *ar)
|
||||
{
|
||||
ListBase *keymap;
|
||||
|
||||
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST, ar->winx, ar->winy);
|
||||
|
||||
/* own keymap */
|
||||
keymap= WM_keymap_listbase(wm, "FileBookmark", SPACE_FILE, 0);
|
||||
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, NULL, NULL);
|
||||
ED_region_panels_init(wm, ar);
|
||||
}
|
||||
|
||||
static void file_channel_area_draw(const bContext *C, ARegion *ar)
|
||||
{
|
||||
View2D *v2d= &ar->v2d;
|
||||
float col[3];
|
||||
ED_region_panels(C, ar, 1, NULL);
|
||||
}
|
||||
|
||||
UI_GetThemeColor3fv(TH_PANEL, col);
|
||||
glClearColor(col[0], col[1], col[2], 0.0);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
/* data... */
|
||||
UI_view2d_view_ortho(C, v2d);
|
||||
|
||||
file_draw_fsmenu(C, ar);
|
||||
static void file_channel_area_listener(ARegion *ar, wmNotifier *wmn)
|
||||
{
|
||||
/* context changes */
|
||||
switch(wmn->category) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* add handlers, stuff you only do once or on area/region changes */
|
||||
static void file_header_area_init(wmWindowManager *wm, ARegion *ar)
|
||||
{
|
||||
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
|
||||
ED_region_header_init(ar);
|
||||
}
|
||||
|
||||
static void file_header_area_draw(const bContext *C, ARegion *ar)
|
||||
{
|
||||
float col[3];
|
||||
|
||||
/* clear */
|
||||
if(ED_screen_area_active(C))
|
||||
UI_GetThemeColor3fv(TH_HEADER, col);
|
||||
else
|
||||
UI_GetThemeColor3fv(TH_HEADERDESEL, col);
|
||||
|
||||
glClearColor(col[0], col[1], col[2], 0.0);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
/* set view2d view matrix for scrolling (without scrollers) */
|
||||
UI_view2d_view_ortho(C, &ar->v2d);
|
||||
|
||||
file_header_buttons(C, ar);
|
||||
|
||||
/* restore view matrix? */
|
||||
UI_view2d_view_restore(C);
|
||||
ED_region_header(C, ar);
|
||||
}
|
||||
|
||||
/* add handlers, stuff you only do once or on area/region changes */
|
||||
@ -386,6 +384,8 @@ void ED_spacetype_file(void)
|
||||
st->free= file_free;
|
||||
st->init= file_init;
|
||||
st->duplicate= file_duplicate;
|
||||
st->refresh= file_refresh;
|
||||
st->listener= file_listener;
|
||||
st->operatortypes= file_operatortypes;
|
||||
st->keymap= file_keymap;
|
||||
|
||||
@ -405,6 +405,7 @@ void ED_spacetype_file(void)
|
||||
art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
|
||||
art->init= file_header_area_init;
|
||||
art->draw= file_header_area_draw;
|
||||
// art->listener= file_header_area_listener;
|
||||
BLI_addhead(&st->regiontypes, art);
|
||||
|
||||
/* regions: ui */
|
||||
@ -421,10 +422,13 @@ void ED_spacetype_file(void)
|
||||
art->regionid = RGN_TYPE_CHANNELS;
|
||||
art->minsizex= 240;
|
||||
art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
|
||||
art->listener= file_channel_area_listener;
|
||||
art->init= file_channel_area_init;
|
||||
art->draw= file_channel_area_draw;
|
||||
BLI_addhead(&st->regiontypes, art);
|
||||
|
||||
file_panels_register(art);
|
||||
|
||||
|
||||
BKE_spacetype_register(st);
|
||||
|
||||
}
|
||||
|
@ -1088,7 +1088,7 @@ static void image_pack_cb(bContext *C, void *ima_v, void *iuser_v)
|
||||
}
|
||||
|
||||
if ((G.fileflags & G_AUTOPACK) == 0) {
|
||||
unpackImage(ima, PF_ASK);
|
||||
unpackImage(NULL, ima, PF_ASK); /* XXX report errors */
|
||||
ED_undo_push(C, "Unpack image");
|
||||
}
|
||||
}
|
||||
@ -1097,7 +1097,7 @@ static void image_pack_cb(bContext *C, void *ima_v, void *iuser_v)
|
||||
if (ibuf && (ibuf->userflags & IB_BITMAPDIRTY)) {
|
||||
// XXX error("Can't pack painted image. Save image or use Repack as PNG.");
|
||||
} else {
|
||||
ima->packedfile = newPackedFile(ima->name);
|
||||
ima->packedfile = newPackedFile(NULL, ima->name); /* XXX report errors */
|
||||
ED_undo_push(C, "Pack image");
|
||||
}
|
||||
}
|
||||
|
@ -1114,7 +1114,7 @@ static int pack_exec(bContext *C, wmOperator *op)
|
||||
if(as_png)
|
||||
BKE_image_memorypack(ima);
|
||||
else
|
||||
ima->packedfile= newPackedFile(ima->name);
|
||||
ima->packedfile= newPackedFile(op->reports, ima->name);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
@ -1162,13 +1162,76 @@ void IMAGE_OT_pack(wmOperatorType *ot)
|
||||
|
||||
/********************* unpack operator *********************/
|
||||
|
||||
/* XXX move this to some place where it can be reused */
|
||||
|
||||
const EnumPropertyItem unpack_method_items[] = {
|
||||
{PF_USE_LOCAL, "USE_LOCAL", 0, "Use Local File", ""},
|
||||
{PF_WRITE_LOCAL, "WRITE_LOCAL", 0, "Write Local File (overwrite existing)", ""},
|
||||
{PF_USE_ORIGINAL, "USE_ORIGINAL", 0, "Use Original File", ""},
|
||||
{PF_WRITE_ORIGINAL, "WRITE_ORIGINAL", 0, "Write Original File (overwrite existing)", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, PackedFile *pf)
|
||||
{
|
||||
uiPopupMenu *pup;
|
||||
uiLayout *layout;
|
||||
char line[FILE_MAXDIR + FILE_MAXFILE + 100];
|
||||
char local_name[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX];
|
||||
|
||||
strcpy(local_name, abs_name);
|
||||
BLI_splitdirstring(local_name, fi);
|
||||
sprintf(local_name, "//%s/%s", folder, fi);
|
||||
|
||||
pup= uiPupMenuBegin(C, "Unpack file", 0);
|
||||
layout= uiPupMenuLayout(pup);
|
||||
|
||||
uiItemEnumO(layout, "Remove Pack", 0, opname, "method", PF_REMOVE);
|
||||
|
||||
if(strcmp(abs_name, local_name)) {
|
||||
switch(checkPackedFile(local_name, pf)) {
|
||||
case PF_NOFILE:
|
||||
sprintf(line, "Create %s", local_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_LOCAL);
|
||||
break;
|
||||
case PF_EQUAL:
|
||||
sprintf(line, "Use %s (identical)", local_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_USE_LOCAL);
|
||||
break;
|
||||
case PF_DIFFERS:
|
||||
sprintf(line, "Use %s (differs)", local_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_USE_LOCAL);
|
||||
sprintf(line, "Overwrite %s", local_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_LOCAL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch(checkPackedFile(abs_name, pf)) {
|
||||
case PF_NOFILE:
|
||||
sprintf(line, "Create %s", abs_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_ORIGINAL);
|
||||
break;
|
||||
case PF_EQUAL:
|
||||
sprintf(line, "Use %s (identical)", abs_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_USE_ORIGINAL);
|
||||
break;
|
||||
case PF_DIFFERS:
|
||||
sprintf(line, "Use %s (differs)", local_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_USE_ORIGINAL);
|
||||
sprintf(line, "Overwrite %s", local_name);
|
||||
uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_ORIGINAL);
|
||||
break;
|
||||
}
|
||||
|
||||
uiPupMenuEnd(C, pup);
|
||||
}
|
||||
|
||||
static int unpack_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Image *ima= CTX_data_edit_image(C);
|
||||
int method= RNA_enum_get(op->ptr, "method");
|
||||
|
||||
if(!ima)
|
||||
return OPERATOR_CANCELLED;
|
||||
if(!ima->packedfile)
|
||||
if(!ima || !ima->packedfile)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
if(ima->source==IMA_SRC_SEQUENCE || ima->source==IMA_SRC_MOVIE) {
|
||||
@ -1179,7 +1242,27 @@ static int unpack_exec(bContext *C, wmOperator *op)
|
||||
if(G.fileflags & G_AUTOPACK)
|
||||
BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save.");
|
||||
|
||||
unpackImage(ima, PF_ASK);
|
||||
unpackImage(op->reports, ima, method);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
Image *ima= CTX_data_edit_image(C);
|
||||
|
||||
if(!ima || !ima->packedfile)
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
if(ima->source==IMA_SRC_SEQUENCE || ima->source==IMA_SRC_MOVIE) {
|
||||
BKE_report(op->reports, RPT_ERROR, "Can't unpack movie or image sequence.");
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
if(G.fileflags & G_AUTOPACK)
|
||||
BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save.");
|
||||
|
||||
unpack_menu(C, "IMAGE_OT_unpack", ima->name, "textures", ima->packedfile);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
@ -1192,10 +1275,14 @@ void IMAGE_OT_unpack(wmOperatorType *ot)
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= unpack_exec;
|
||||
ot->invoke= unpack_invoke;
|
||||
ot->poll= space_image_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
/* properties */
|
||||
RNA_def_enum(ot->srna, "method", unpack_method_items, PF_USE_LOCAL, "Method", "How to unpack.");
|
||||
}
|
||||
|
||||
/******************** sample image operator ********************/
|
||||
|
@ -1,507 +0,0 @@
|
||||
/**
|
||||
* $Id$
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2008 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Contributor(s): Blender Foundation
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "DNA_packedFile_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_screen_types.h"
|
||||
#include "DNA_userdef_types.h"
|
||||
#include "DNA_windowmanager_types.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_bpath.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_packedFile.h"
|
||||
#include "BKE_screen.h"
|
||||
|
||||
#include "ED_screen.h"
|
||||
#include "ED_types.h"
|
||||
#include "ED_util.h"
|
||||
|
||||
#include "WM_api.h"
|
||||
#include "WM_types.h"
|
||||
|
||||
#include "BIF_gl.h"
|
||||
#include "BIF_glutil.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
#include "UI_resources.h"
|
||||
#include "UI_view2d.h"
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
|
||||
#include "info_intern.h"
|
||||
|
||||
static int pupmenu() {return 0;}
|
||||
static int okee() {return 0;}
|
||||
static int error() {return 0;}
|
||||
|
||||
/* ************************ header area region *********************** */
|
||||
|
||||
#define B_STOPRENDER 1
|
||||
#define B_STOPCAST 2
|
||||
#define B_STOPANIM 3
|
||||
|
||||
static void do_viewmenu(bContext *C, void *arg, int event)
|
||||
{
|
||||
}
|
||||
|
||||
static uiBlock *dummy_viewmenu(bContext *C, ARegion *ar, void *arg_unused)
|
||||
{
|
||||
ScrArea *curarea= CTX_wm_area(C);
|
||||
uiBlock *block;
|
||||
short yco= 0, menuwidth=120;
|
||||
|
||||
block= uiBeginBlock(C, ar, "dummy_viewmenu", UI_EMBOSSP);
|
||||
uiBlockSetButmFunc(block, do_viewmenu, NULL);
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 0, yco-=20,
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
|
||||
|
||||
if(curarea->headertype==HEADERTOP) {
|
||||
uiBlockSetDirection(block, UI_DOWN);
|
||||
}
|
||||
else {
|
||||
uiBlockSetDirection(block, UI_TOP);
|
||||
uiBlockFlipOrder(block);
|
||||
}
|
||||
|
||||
uiTextBoundsBlock(block, 50);
|
||||
uiEndBlock(C, block);
|
||||
|
||||
return block;
|
||||
}
|
||||
|
||||
static int buttons_do_unpack()
|
||||
{
|
||||
int how;
|
||||
char menu[2048];
|
||||
char *line = menu;
|
||||
int ret_value = 1, count = 0;
|
||||
|
||||
count = countPackedFiles();
|
||||
|
||||
if(!count) {
|
||||
pupmenu("No packed files. Autopack disabled");
|
||||
return ret_value;
|
||||
}
|
||||
if (count == 1)
|
||||
line += sprintf(line, "Unpack 1 file%%t");
|
||||
else
|
||||
line += sprintf(line, "Unpack %d files%%t", count);
|
||||
|
||||
line += sprintf(line, "|Use files in current directory (create when necessary)%%x%d", PF_USE_LOCAL);
|
||||
line += sprintf(line, "|Write files to current directory (overwrite existing files)%%x%d", PF_WRITE_LOCAL);
|
||||
line += sprintf(line, "|%%l|Use files in original location (create when necessary)%%x%d", PF_USE_ORIGINAL);
|
||||
line += sprintf(line, "|Write files to original location (overwrite existing files)%%x%d", PF_WRITE_ORIGINAL);
|
||||
line += sprintf(line, "|%%l|Disable AutoPack, keep all packed files %%x%d", PF_KEEP);
|
||||
line += sprintf(line, "|Ask for each file %%x%d", PF_ASK);
|
||||
|
||||
how = pupmenu(menu);
|
||||
|
||||
if(how == -1)
|
||||
ret_value = 0;
|
||||
else {
|
||||
if (how != PF_KEEP) unpackAll(how);
|
||||
G.fileflags &= ~G_AUTOPACK;
|
||||
}
|
||||
|
||||
return ret_value;
|
||||
}
|
||||
|
||||
static void check_packAll()
|
||||
{
|
||||
// first check for dirty images
|
||||
Image *ima;
|
||||
|
||||
for(ima = G.main->image.first; ima; ima= ima->id.next) {
|
||||
if (ima->ibufs.first) { /* XXX FIX */
|
||||
ImBuf *ibuf= BKE_image_get_ibuf(ima, NULL);
|
||||
|
||||
if (ibuf && (ibuf->userflags &= IB_BITMAPDIRTY))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ima == NULL || okee("Some images are painted on. These changes will be lost. Continue ?")) {
|
||||
packAll();
|
||||
G.fileflags |= G_AUTOPACK;
|
||||
}
|
||||
}
|
||||
|
||||
static void do_info_externalfiles(bContext *C, void *arg, int event)
|
||||
{
|
||||
switch (event) {
|
||||
|
||||
case 1: /* pack data */
|
||||
check_packAll();
|
||||
break;
|
||||
case 3: /* unpack data */
|
||||
if (buttons_do_unpack() != 0) {
|
||||
/* Clear autopack bit only if user selected one of the unpack options */
|
||||
G.fileflags &= ~G_AUTOPACK;
|
||||
}
|
||||
break;
|
||||
case 10: /* make all paths relative */
|
||||
if (G.relbase_valid) {
|
||||
int tot,changed,failed,linked;
|
||||
char str[512];
|
||||
char txtname[24]; /* text block name */
|
||||
txtname[0] = '\0';
|
||||
makeFilesRelative(txtname, &tot, &changed, &failed, &linked);
|
||||
if (failed) sprintf(str, "Make Relative%%t|Total files %i|Changed %i|Failed %i, See Text \"%s\"|Linked %i", tot, changed, failed, txtname, linked);
|
||||
else sprintf(str, "Make Relative%%t|Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked);
|
||||
pupmenu(str);
|
||||
} else {
|
||||
pupmenu("Can't set relative paths with an unsaved blend file");
|
||||
}
|
||||
break;
|
||||
case 11: /* make all paths absolute */
|
||||
{
|
||||
int tot,changed,failed,linked;
|
||||
char str[512];
|
||||
char txtname[24]; /* text block name */
|
||||
txtname[0] = '\0';
|
||||
makeFilesAbsolute(txtname, &tot, &changed, &failed, &linked);
|
||||
sprintf(str, "Make Absolute%%t|Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked);
|
||||
if (failed) sprintf(str, "Make Absolute%%t|Total files %i|Changed %i|Failed %i, See Text \"%s\"|Linked %i", tot, changed, failed, txtname, linked);
|
||||
else sprintf(str, "Make Absolute%%t|Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked);
|
||||
|
||||
pupmenu(str);
|
||||
}
|
||||
break;
|
||||
case 12: /* check images exist */
|
||||
{
|
||||
char txtname[24]; /* text block name */
|
||||
txtname[0] = '\0';
|
||||
|
||||
/* run the missing file check */
|
||||
checkMissingFiles( txtname );
|
||||
|
||||
if (txtname[0] == '\0') {
|
||||
okee("No external files missing");
|
||||
} else {
|
||||
char str[128];
|
||||
sprintf(str, "Missing files listed in Text \"%s\"", txtname );
|
||||
error(str);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 13: /* search for referenced files that are not available */
|
||||
// XXX if(curarea->spacetype==SPACE_INFO) {
|
||||
// ScrArea *sa;
|
||||
// sa= closest_bigger_area();
|
||||
// areawinset(sa->win);
|
||||
// }
|
||||
// activate_fileselect(FILE_SPECIAL, "Find Missing Files", "", findMissingFiles);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
uiBlock *info_externalfiles(bContext *C, ARegion *ar, void *arg_unused)
|
||||
{
|
||||
uiBlock *block;
|
||||
short yco = 20, menuwidth = 120;
|
||||
|
||||
block= uiBeginBlock(C, ar, "info_externalfiles", UI_EMBOSSP);
|
||||
uiBlockSetButmFunc(block, do_info_externalfiles, NULL);
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Pack into .blend file", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 1, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Unpack into Files...", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 3, "");
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make all Paths Relative", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 10, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Make all Paths Absolute", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 11, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Report Missing Files...", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 12, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Find Missing Files...", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 13, "");
|
||||
|
||||
uiBlockSetDirection(block, UI_RIGHT);
|
||||
uiTextBoundsBlock(block, 60);
|
||||
return block;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void info_filemenu(bContext *C, uiLayout *layout, void *arg_unused)
|
||||
{
|
||||
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_EXEC_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_read_homefile");
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_open_mainfile");
|
||||
// uiDefIconTextBlockBut(block, info_openrecentmenu, NULL, ICON_RIGHTARROW_THIN, "Open Recent",0, yco-=20, 120, 19, "");
|
||||
// uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Recover Last Session", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
|
||||
|
||||
uiItemS(layout);
|
||||
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_EXEC_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_save_mainfile");
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_save_as_mainfile");
|
||||
|
||||
#if 0
|
||||
if(U.flag & USER_FILECOMPRESS) {
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Compress File", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 35, "Enable file compression");
|
||||
} else {
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Compress File", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 35, "Enable file compression");
|
||||
}
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Save Rendered Image...|F3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Screenshot Subwindow|Ctrl F3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 24, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Screenshot All|Ctrl Shift F3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 25, "");
|
||||
#if GAMEBLENDER == 1
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Save Game As Runtime...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 22, "");
|
||||
#endif
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Save Default Settings|Ctrl U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 31, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Load Factory Settings", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 32, "");
|
||||
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Append or Link|Shift F1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Append or Link (Image Browser)|Ctrl F1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
|
||||
// uiDefIconTextBlockBut(block, info_file_importmenu, NULL, ICON_RIGHTARROW_THIN, "Import", 0, yco-=20, menuwidth, 19, "");
|
||||
// uiDefIconTextBlockBut(block, info_file_exportmenu, NULL, ICON_RIGHTARROW_THIN, "Export", 0, yco-=20, menuwidth, 19, "");
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBlockBut(block, info_externalfiles, NULL, ICON_RIGHTARROW_THIN, "External Data",0, yco-=20, 120, 19, "");
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Quit Blender|Ctrl Q", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
|
||||
uiBlockSetDirection(block, UI_DOWN);
|
||||
uiTextBoundsBlock(block, 80);
|
||||
|
||||
uiEndBlock(C, block);
|
||||
return block;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void do_info_buttons(bContext *C, void *arg, int event)
|
||||
{
|
||||
switch(event) {
|
||||
case B_STOPRENDER:
|
||||
G.afbreek= 1;
|
||||
break;
|
||||
case B_STOPCAST:
|
||||
WM_jobs_stop(CTX_wm_manager(C), CTX_wm_screen(C));
|
||||
break;
|
||||
case B_STOPANIM:
|
||||
ED_screen_animation_timer(C, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void screen_idpoin_handle(bContext *C, ID *id, int event)
|
||||
{
|
||||
switch(event) {
|
||||
case UI_ID_BROWSE:
|
||||
/* exception: can't set screens inside of area/region handers */
|
||||
WM_event_add_notifier(C, NC_SCREEN|ND_SCREENBROWSE, id);
|
||||
break;
|
||||
case UI_ID_DELETE:
|
||||
ED_undo_push(C, "");
|
||||
break;
|
||||
case UI_ID_RENAME:
|
||||
break;
|
||||
case UI_ID_ADD_NEW:
|
||||
/* XXX not implemented */
|
||||
break;
|
||||
case UI_ID_OPEN:
|
||||
/* XXX not implemented */
|
||||
break;
|
||||
case UI_ID_ALONE:
|
||||
/* XXX not implemented */
|
||||
break;
|
||||
case UI_ID_PIN:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void scene_idpoin_handle(bContext *C, ID *id, int event)
|
||||
{
|
||||
switch(event) {
|
||||
case UI_ID_BROWSE:
|
||||
/* exception: can't set screens inside of area/region handers */
|
||||
WM_event_add_notifier(C, NC_SCENE|ND_SCENEBROWSE, id);
|
||||
break;
|
||||
case UI_ID_DELETE:
|
||||
ED_undo_push(C, "");
|
||||
break;
|
||||
case UI_ID_RENAME:
|
||||
break;
|
||||
case UI_ID_ADD_NEW:
|
||||
/* XXX not implemented */
|
||||
break;
|
||||
case UI_ID_OPEN:
|
||||
/* XXX not implemented */
|
||||
break;
|
||||
case UI_ID_ALONE:
|
||||
/* XXX not implemented */
|
||||
break;
|
||||
case UI_ID_PIN:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void operator_call_cb(struct bContext *C, void *arg1, void *arg2)
|
||||
{
|
||||
wmOperatorType *ot= arg2;
|
||||
|
||||
if(ot)
|
||||
WM_operator_name_call(C, ot->idname, WM_OP_INVOKE_DEFAULT, NULL);
|
||||
}
|
||||
|
||||
static void operator_search_cb(const struct bContext *C, void *arg, char *str, uiSearchItems *items)
|
||||
{
|
||||
wmOperatorType *ot = WM_operatortype_first();
|
||||
|
||||
for(; ot; ot= ot->next) {
|
||||
|
||||
if(BLI_strcasestr(ot->name, str)) {
|
||||
if(ot->poll==NULL || ot->poll((bContext *)C)) {
|
||||
char name[256];
|
||||
int len= strlen(ot->name);
|
||||
|
||||
/* display name for menu, can hold hotkey */
|
||||
BLI_strncpy(name, ot->name, 256);
|
||||
|
||||
/* check for hotkey */
|
||||
if(len < 256-6) {
|
||||
if(WM_key_event_operator_string(C, ot->idname, WM_OP_EXEC_DEFAULT, NULL, &name[len+1], 256-len-1))
|
||||
name[len]= '|';
|
||||
}
|
||||
|
||||
if(0==uiSearchItemAdd(items, name, ot, 0))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void info_header_buttons(const bContext *C, ARegion *ar)
|
||||
{
|
||||
wmWindow *win= CTX_wm_window(C);
|
||||
bScreen *screen= CTX_wm_screen(C);
|
||||
ScrArea *sa= CTX_wm_area(C);
|
||||
uiBlock *block;
|
||||
int xco, yco= 3;
|
||||
|
||||
block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS);
|
||||
uiBlockSetHandleFunc(block, do_info_buttons, NULL);
|
||||
|
||||
xco= ED_area_header_standardbuttons(C, block, yco);
|
||||
|
||||
if((sa->flag & HEADER_NO_PULLDOWN)==0) {
|
||||
int xmax;
|
||||
|
||||
xmax= GetButStringLength("File");
|
||||
uiDefMenuBut(block, info_filemenu, NULL, "File", xco, yco, xmax-3, 20, "");
|
||||
xco+= xmax;
|
||||
|
||||
xmax= GetButStringLength("Add");
|
||||
uiDefPulldownBut(block, dummy_viewmenu, sa, "Add", xco, yco, xmax-3, 20, "");
|
||||
xco+= xmax;
|
||||
|
||||
xmax= GetButStringLength("Timeline");
|
||||
uiDefPulldownBut(block, dummy_viewmenu, sa, "Timeline", xco, yco, xmax-3, 20, "");
|
||||
xco+= xmax;
|
||||
|
||||
xmax= GetButStringLength("Game");
|
||||
uiDefPulldownBut(block, dummy_viewmenu, sa, "Game", xco, yco, xmax-3, 20, "");
|
||||
xco+= xmax;
|
||||
|
||||
xmax= GetButStringLength("Render");
|
||||
uiDefPulldownBut(block, dummy_viewmenu, sa, "Render", xco, yco, xmax-3, 20, "");
|
||||
xco+= xmax;
|
||||
|
||||
xmax= GetButStringLength("Help");
|
||||
uiDefPulldownBut(block, dummy_viewmenu, NULL, "Help", xco, yco, xmax-3, 20, "");
|
||||
xco+= xmax;
|
||||
}
|
||||
|
||||
uiBlockSetEmboss(block, UI_EMBOSS);
|
||||
|
||||
if(screen->full==0) {
|
||||
xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)win->screen, ID_SCR, NULL, xco, yco,
|
||||
screen_idpoin_handle, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_DELETE);
|
||||
xco += 8;
|
||||
xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)screen->scene, ID_SCE, NULL, xco, yco,
|
||||
scene_idpoin_handle, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_DELETE);
|
||||
xco += 8;
|
||||
}
|
||||
|
||||
if(WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C))) {
|
||||
uiDefIconTextBut(block, BUT, B_STOPRENDER, ICON_REC, "Render", xco+5,yco,75,19, NULL, 0.0f, 0.0f, 0, 0, "Stop rendering");
|
||||
xco+= 80;
|
||||
}
|
||||
if(WM_jobs_test(CTX_wm_manager(C), CTX_wm_screen(C))) {
|
||||
uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_REC, "Capture", xco+5,yco,85,19, NULL, 0.0f, 0.0f, 0, 0, "Stop screencast");
|
||||
xco+= 90;
|
||||
}
|
||||
if(screen->animtimer) {
|
||||
uiDefIconTextBut(block, BUT, B_STOPANIM, ICON_REC, "Anim Player", xco+5,yco,85,19, NULL, 0.0f, 0.0f, 0, 0, "Stop animation playback");
|
||||
xco+= 90;
|
||||
}
|
||||
|
||||
{
|
||||
static char search[256]= "";
|
||||
uiBut *but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, 256, xco+5, yco, 120, 19, "");
|
||||
|
||||
uiButSetSearchFunc(but, operator_search_cb, NULL, operator_call_cb);
|
||||
|
||||
xco+= 125;
|
||||
}
|
||||
|
||||
|
||||
/* always as last */
|
||||
UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
|
||||
|
||||
uiEndBlock(C, block);
|
||||
uiDrawBlock(C, block);
|
||||
}
|
||||
|
||||
|
@ -30,10 +30,17 @@
|
||||
|
||||
/* internal exports only */
|
||||
|
||||
struct wmOperatorType;
|
||||
|
||||
/* info_header.c */
|
||||
void info_header_buttons(const bContext *C, ARegion *ar);
|
||||
|
||||
void FILE_OT_pack_all(struct wmOperatorType *ot);
|
||||
void FILE_OT_unpack_all(struct wmOperatorType *ot);
|
||||
void FILE_OT_make_paths_relative(struct wmOperatorType *ot);
|
||||
void FILE_OT_make_paths_absolute(struct wmOperatorType *ot);
|
||||
void FILE_OT_report_missing_files(struct wmOperatorType *ot);
|
||||
void FILE_OT_find_missing_files(struct wmOperatorType *ot);
|
||||
|
||||
#endif /* ED_INFO_INTERN_H */
|
||||
|
||||
|
397
source/blender/editors/space_info/info_ops.c
Normal file
397
source/blender/editors/space_info/info_ops.c
Normal file
@ -0,0 +1,397 @@
|
||||
/**
|
||||
* $Id$
|
||||
*
|
||||
* ***** BEGIN GPL LICENSE BLOCK *****
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2008 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*
|
||||
*
|
||||
* Contributor(s): Blender Foundation
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "DNA_packedFile_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_screen_types.h"
|
||||
#include "DNA_userdef_types.h"
|
||||
#include "DNA_windowmanager_types.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_blenlib.h"
|
||||
#include "BLI_bpath.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_image.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_packedFile.h"
|
||||
#include "BKE_report.h"
|
||||
#include "BKE_screen.h"
|
||||
|
||||
#include "ED_screen.h"
|
||||
#include "ED_types.h"
|
||||
#include "ED_util.h"
|
||||
|
||||
#include "WM_api.h"
|
||||
#include "WM_types.h"
|
||||
|
||||
#include "BIF_gl.h"
|
||||
#include "BIF_glutil.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
#include "UI_resources.h"
|
||||
|
||||
#include "IMB_imbuf_types.h"
|
||||
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_define.h"
|
||||
|
||||
#include "WM_types.h"
|
||||
|
||||
#include "info_intern.h"
|
||||
|
||||
/********************* pack all operator *********************/
|
||||
|
||||
static int pack_all_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
|
||||
packAll(bmain, op->reports);
|
||||
G.fileflags |= G_AUTOPACK;
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
static int pack_all_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
Image *ima;
|
||||
ImBuf *ibuf;
|
||||
|
||||
// first check for dirty images
|
||||
for(ima=bmain->image.first; ima; ima=ima->id.next) {
|
||||
if(ima->ibufs.first) { /* XXX FIX */
|
||||
ibuf= BKE_image_get_ibuf(ima, NULL);
|
||||
|
||||
if(ibuf && (ibuf->userflags & IB_BITMAPDIRTY))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(ima) {
|
||||
uiPupMenuOkee(C, "FILE_OT_pack_all", "Some images are painted on. These changes will be lost. Continue?");
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
return pack_all_exec(C, op);
|
||||
}
|
||||
|
||||
void FILE_OT_pack_all(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Pack All";
|
||||
ot->idname= "FILE_OT_pack_all";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= pack_all_exec;
|
||||
ot->invoke= pack_all_invoke;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/********************* unpack all operator *********************/
|
||||
|
||||
static const EnumPropertyItem unpack_all_method_items[] = {
|
||||
{PF_USE_LOCAL, "USE_LOCAL", 0, "Use files in current directory (create when necessary)", ""},
|
||||
{PF_WRITE_LOCAL, "WRITE_LOCAL", 0, "Write files to current directory (overwrite existing files)", ""},
|
||||
{PF_USE_ORIGINAL, "USE_ORIGINAL", 0, "Use files in original location (create when necessary)", ""},
|
||||
{PF_WRITE_ORIGINAL, "WRITE_ORIGINAL", 0, "Write files to original location (overwrite existing files)", ""},
|
||||
{PF_KEEP, "KEEP", 0, "Disable AutoPack, keep all packed files", ""},
|
||||
{PF_ASK, "ASK", 0, "Ask for each file", ""},
|
||||
{0, NULL, 0, NULL, NULL}};
|
||||
|
||||
static int unpack_all_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
int method= RNA_enum_get(op->ptr, "method");
|
||||
|
||||
if(method != PF_KEEP) unpackAll(bmain, op->reports, method); /* XXX PF_ASK can't work here */
|
||||
G.fileflags &= ~G_AUTOPACK;
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
static int unpack_all_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
Main *bmain= CTX_data_main(C);
|
||||
uiPopupMenu *pup;
|
||||
uiLayout *layout;
|
||||
char title[128];
|
||||
int count = 0;
|
||||
|
||||
count = countPackedFiles(bmain);
|
||||
|
||||
if(!count) {
|
||||
BKE_report(op->reports, RPT_WARNING, "No packed files. Autopack disabled.");
|
||||
G.fileflags &= ~G_AUTOPACK;
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
if(count == 1)
|
||||
sprintf(title, "Unpack 1 file");
|
||||
else
|
||||
sprintf(title, "Unpack %d files", count);
|
||||
|
||||
pup= uiPupMenuBegin(C, title, 0);
|
||||
layout= uiPupMenuLayout(pup);
|
||||
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT);
|
||||
uiItemsEnumO(layout, "FILE_OT_unpack_all", "method");
|
||||
|
||||
uiPupMenuEnd(C, pup);
|
||||
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
void FILE_OT_unpack_all(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Unpack All";
|
||||
ot->idname= "FILE_OT_unpack_all";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= unpack_all_exec;
|
||||
ot->invoke= unpack_all_invoke;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
/* properties */
|
||||
RNA_def_enum(ot->srna, "method", unpack_all_method_items, PF_USE_LOCAL, "Method", "How to unpack.");
|
||||
}
|
||||
|
||||
/********************* make paths relative operator *********************/
|
||||
|
||||
static int make_paths_relative_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
char txtname[24]; /* text block name */
|
||||
int tot, changed, failed, linked;
|
||||
|
||||
if(!G.relbase_valid) {
|
||||
BKE_report(op->reports, RPT_WARNING, "Can't set relative paths with an unsaved blend file.");
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
txtname[0] = '\0';
|
||||
makeFilesRelative(txtname, &tot, &changed, &failed, &linked);
|
||||
|
||||
if(failed)
|
||||
BKE_reportf(op->reports, RPT_ERROR, "Total files %i|Changed %i|Failed %i, See Text \"%s\"|Linked %i", tot, changed, failed, txtname, linked);
|
||||
else
|
||||
BKE_reportf(op->reports, RPT_INFO, "Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void FILE_OT_make_paths_relative(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Make All Paths Relative";
|
||||
ot->idname= "FILE_OT_make_paths_relative";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= make_paths_relative_exec;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/********************* make paths absolute operator *********************/
|
||||
|
||||
static int make_paths_absolute_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
char txtname[24]; /* text block name */
|
||||
int tot, changed, failed, linked;
|
||||
|
||||
if(!G.relbase_valid) {
|
||||
BKE_report(op->reports, RPT_WARNING, "Can't set absolute paths with an unsaved blend file.");
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
|
||||
txtname[0] = '\0';
|
||||
makeFilesAbsolute(txtname, &tot, &changed, &failed, &linked);
|
||||
|
||||
if(failed)
|
||||
BKE_reportf(op->reports, RPT_ERROR, "Total files %i|Changed %i|Failed %i, See Text \"%s\"|Linked %i", tot, changed, failed, txtname, linked);
|
||||
else
|
||||
BKE_reportf(op->reports, RPT_INFO, "Total files %i|Changed %i|Failed %i|Linked %i", tot, changed, failed, linked);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void FILE_OT_make_paths_absolute(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Make All Paths Absolute";
|
||||
ot->idname= "FILE_OT_make_paths_absolute";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= make_paths_absolute_exec;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/********************* report missing files operator *********************/
|
||||
|
||||
static int report_missing_files_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
char txtname[24]; /* text block name */
|
||||
|
||||
txtname[0] = '\0';
|
||||
|
||||
/* run the missing file check */
|
||||
checkMissingFiles(txtname);
|
||||
|
||||
if(txtname[0] == '\0')
|
||||
BKE_report(op->reports, RPT_INFO, "No external files missing.");
|
||||
else
|
||||
BKE_reportf(op->reports, RPT_ERROR, "Missing files listed in Text \"%s\"", txtname);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
void FILE_OT_report_missing_files(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Report Missing Files...";
|
||||
ot->idname= "FILE_OT_report_missing_files";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= report_missing_files_exec;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
}
|
||||
|
||||
/********************* find missing files operator *********************/
|
||||
|
||||
static int find_missing_files_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
char *filename;
|
||||
|
||||
filename= RNA_string_get_alloc(op->ptr, "filename", NULL, 0);
|
||||
findMissingFiles(filename);
|
||||
MEM_freeN(filename);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
|
||||
static int find_missing_files_invoke(bContext *C, wmOperator *op, wmEvent *event)
|
||||
{
|
||||
/* XXX file open button text "Find Missing Files" */
|
||||
WM_event_add_fileselect(C, op);
|
||||
return OPERATOR_RUNNING_MODAL;
|
||||
}
|
||||
|
||||
void FILE_OT_find_missing_files(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name= "Find Missing Files...";
|
||||
ot->idname= "FILE_OT_find_missing_files";
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec= find_missing_files_exec;
|
||||
ot->invoke= find_missing_files_invoke;
|
||||
|
||||
/* flags */
|
||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||
|
||||
/* properties */
|
||||
RNA_def_string_file_path(ot->srna, "filename", "", FILE_MAX, "Filename", "File path of image to open.");
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void info_filemenu(bContext *C, uiLayout *layout, void *arg_unused)
|
||||
{
|
||||
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_EXEC_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_read_homefile");
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_open_mainfile");
|
||||
// uiDefIconTextBlockBut(block, info_openrecentmenu, NULL, ICON_RIGHTARROW_THIN, "Open Recent",0, yco-=20, 120, 19, "");
|
||||
// uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Recover Last Session", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
|
||||
|
||||
uiItemS(layout);
|
||||
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_EXEC_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_save_mainfile");
|
||||
uiLayoutSetOperatorContext(layout, WM_OP_INVOKE_AREA);
|
||||
uiItemO(layout, NULL, 0, "WM_OT_save_as_mainfile");
|
||||
|
||||
#if 0
|
||||
if(U.flag & USER_FILECOMPRESS) {
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Compress File", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 35, "Enable file compression");
|
||||
} else {
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Compress File", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 35, "Enable file compression");
|
||||
}
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Save Rendered Image...|F3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Screenshot Subwindow|Ctrl F3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 24, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Screenshot All|Ctrl Shift F3", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 25, "");
|
||||
#if GAMEBLENDER == 1
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Save Game As Runtime...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 22, "");
|
||||
#endif
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Save Default Settings|Ctrl U", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 31, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Load Factory Settings", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 32, "");
|
||||
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Append or Link|Shift F1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Append or Link (Image Browser)|Ctrl F1", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
|
||||
// uiDefIconTextBlockBut(block, info_file_importmenu, NULL, ICON_RIGHTARROW_THIN, "Import", 0, yco-=20, menuwidth, 19, "");
|
||||
// uiDefIconTextBlockBut(block, info_file_exportmenu, NULL, ICON_RIGHTARROW_THIN, "Export", 0, yco-=20, menuwidth, 19, "");
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBlockBut(block, info_externalfiles, NULL, ICON_RIGHTARROW_THIN, "External Data",0, yco-=20, 120, 19, "");
|
||||
|
||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||
|
||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Quit Blender|Ctrl Q", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
|
||||
uiBlockSetDirection(block, UI_DOWN);
|
||||
uiTextBoundsBlock(block, 80);
|
||||
|
||||
uiEndBlock(C, block);
|
||||
return block;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
@ -151,7 +151,12 @@ static void info_main_area_draw(const bContext *C, ARegion *ar)
|
||||
|
||||
void info_operatortypes(void)
|
||||
{
|
||||
|
||||
WM_operatortype_append(FILE_OT_pack_all);
|
||||
WM_operatortype_append(FILE_OT_unpack_all);
|
||||
WM_operatortype_append(FILE_OT_make_paths_relative);
|
||||
WM_operatortype_append(FILE_OT_make_paths_absolute);
|
||||
WM_operatortype_append(FILE_OT_report_missing_files);
|
||||
WM_operatortype_append(FILE_OT_find_missing_files);
|
||||
}
|
||||
|
||||
void info_keymap(struct wmWindowManager *wm)
|
||||
@ -162,29 +167,12 @@ void info_keymap(struct wmWindowManager *wm)
|
||||
/* add handlers, stuff you only do once or on area/region changes */
|
||||
static void info_header_area_init(wmWindowManager *wm, ARegion *ar)
|
||||
{
|
||||
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
|
||||
ED_region_header_init(ar);
|
||||
}
|
||||
|
||||
static void info_header_area_draw(const bContext *C, ARegion *ar)
|
||||
{
|
||||
float col[3];
|
||||
|
||||
/* clear */
|
||||
if(ED_screen_area_active(C))
|
||||
UI_GetThemeColor3fv(TH_HEADER, col);
|
||||
else
|
||||
UI_GetThemeColor3fv(TH_HEADERDESEL, col);
|
||||
|
||||
glClearColor(col[0], col[1], col[2], 0.0);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
||||
/* set view2d view matrix for scrolling (without scrollers) */
|
||||
UI_view2d_view_ortho(C, &ar->v2d);
|
||||
|
||||
info_header_buttons(C, ar);
|
||||
|
||||
/* restore view matrix? */
|
||||
UI_view2d_view_restore(C);
|
||||
ED_region_header(C, ar);
|
||||
}
|
||||
|
||||
static void info_main_area_listener(ARegion *ar, wmNotifier *wmn)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user