Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt4
-rw-r--r--SConstruct17
-rw-r--r--config/darwin-config.py20
-rw-r--r--config/win32-vc-config.py1
-rw-r--r--extern/verse/dist/v_bignum.c2
-rw-r--r--intern/ghost/intern/GHOST_SystemCarbon.cpp20
-rw-r--r--projectfiles_vc7/gameengine/blenderhook/KX_blenderhook.vcproj2
-rw-r--r--projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj2
-rw-r--r--projectfiles_vc7/gameengine/rasterizer/RAS_rasterizer.vcproj2
-rw-r--r--projectfiles_vc7/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj2
-rw-r--r--release/scripts/console.py14
-rw-r--r--release/scripts/wizard_curve2tree.py4
-rw-r--r--release/scripts/x3d_export.py1780
-rw-r--r--source/blender/SConscript3
-rw-r--r--source/blender/blenkernel/BKE_node.h3
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c4
-rw-r--r--source/blender/blenkernel/intern/image.c25
-rw-r--r--source/blender/blenkernel/intern/library.c2
-rw-r--r--source/blender/blenkernel/intern/mball.c64
-rw-r--r--source/blender/blenkernel/intern/node.c3
-rw-r--r--source/blender/blenkernel/intern/packedFile.c6
-rw-r--r--source/blender/blenkernel/intern/particle_system.c3
-rw-r--r--source/blender/blenkernel/intern/pointcache.c2
-rw-r--r--source/blender/blenkernel/intern/sound.c6
-rw-r--r--source/blender/blenkernel/intern/text.c6
-rw-r--r--source/blender/blenkernel/intern/writeavi.c2
-rw-r--r--source/blender/blenkernel/intern/writeffmpeg.c3
-rw-r--r--source/blender/blenlib/BLI_blenlib.h3
-rw-r--r--source/blender/blenlib/intern/bpath.c4
-rw-r--r--source/blender/blenlib/intern/util.c128
-rw-r--r--source/blender/blenloader/intern/genfile.c24
-rwxr-xr-xsource/blender/freestyle/AUTHORS.TXT (renamed from extern/freestyle/AUTHORS.TXT)0
-rwxr-xr-xsource/blender/freestyle/BUGS.TXT (renamed from extern/freestyle/BUGS.TXT)0
-rwxr-xr-xsource/blender/freestyle/CHANGELOG.TXT47
-rwxr-xr-xsource/blender/freestyle/COPYRIGHT.TXT (renamed from extern/freestyle/COPYRIGHT.TXT)0
-rwxr-xr-xsource/blender/freestyle/INSTALL.TXT (renamed from extern/freestyle/INSTALL.TXT)0
-rwxr-xr-xsource/blender/freestyle/LICENSE.TXT (renamed from extern/freestyle/LICENSE.TXT)0
-rwxr-xr-xsource/blender/freestyle/README.TXT (renamed from extern/freestyle/README.TXT)0
-rw-r--r--source/blender/freestyle/SConscript10
-rwxr-xr-xsource/blender/freestyle/THANKS.TXT (renamed from extern/freestyle/THANKS.TXT)0
-rwxr-xr-xsource/blender/freestyle/TODO.TXT (renamed from extern/freestyle/TODO.TXT)0
-rwxr-xr-xsource/blender/freestyle/src/Config.pri (renamed from extern/freestyle/src/Config.pri)0
-rwxr-xr-xsource/blender/freestyle/src/Freestyle-vc7-debug.sln (renamed from extern/freestyle/src/Freestyle-vc7-debug.sln)0
-rwxr-xr-xsource/blender/freestyle/src/Freestyle-vc7-release.sln (renamed from extern/freestyle/src/Freestyle-vc7-release.sln)0
-rwxr-xr-xsource/blender/freestyle/src/Freestyle-vc8-debug.sln (renamed from extern/freestyle/src/Freestyle-vc8-debug.sln)0
-rwxr-xr-xsource/blender/freestyle/src/Freestyle-vc8-release.sln (renamed from extern/freestyle/src/Freestyle-vc8-release.sln)0
-rwxr-xr-xsource/blender/freestyle/src/Makefile.pro (renamed from extern/freestyle/src/Makefile.pro)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppAboutWindow.cpp (renamed from extern/freestyle/src/app/AppAboutWindow.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppAboutWindow.h (renamed from extern/freestyle/src/app/AppAboutWindow.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppCanvas.cpp (renamed from extern/freestyle/src/app/AppCanvas.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppCanvas.h (renamed from extern/freestyle/src/app/AppCanvas.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppConfig.cpp (renamed from extern/freestyle/src/app/AppConfig.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppConfig.h (renamed from extern/freestyle/src/app/AppConfig.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppDensityCurvesWindow.cpp (renamed from extern/freestyle/src/app/AppDensityCurvesWindow.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppDensityCurvesWindow.h (renamed from extern/freestyle/src/app/AppDensityCurvesWindow.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppGL2DCurvesViewer.cpp (renamed from extern/freestyle/src/app/AppGL2DCurvesViewer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppGL2DCurvesViewer.h (renamed from extern/freestyle/src/app/AppGL2DCurvesViewer.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppGLWidget.cpp (renamed from extern/freestyle/src/app/AppGLWidget.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppGLWidget.h (renamed from extern/freestyle/src/app/AppGLWidget.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppInteractiveShaderWindow.cpp (renamed from extern/freestyle/src/app/AppInteractiveShaderWindow.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppInteractiveShaderWindow.h (renamed from extern/freestyle/src/app/AppInteractiveShaderWindow.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppMainWindow.cpp (renamed from extern/freestyle/src/app/AppMainWindow.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppMainWindow.h (renamed from extern/freestyle/src/app/AppMainWindow.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppOptionsWindow.cpp (renamed from extern/freestyle/src/app/AppOptionsWindow.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppOptionsWindow.h (renamed from extern/freestyle/src/app/AppOptionsWindow.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppProgressBar.cpp (renamed from extern/freestyle/src/app/AppProgressBar.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppProgressBar.h (renamed from extern/freestyle/src/app/AppProgressBar.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppStyleWindow.cpp (renamed from extern/freestyle/src/app/AppStyleWindow.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/AppStyleWindow.h (renamed from extern/freestyle/src/app/AppStyleWindow.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/ConfigIO.cpp (renamed from extern/freestyle/src/app/ConfigIO.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/ConfigIO.h (renamed from extern/freestyle/src/app/ConfigIO.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/Controller.cpp (renamed from extern/freestyle/src/app/Controller.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/Controller.h (renamed from extern/freestyle/src/app/Controller.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/Main.cpp (renamed from extern/freestyle/src/app/Main.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/QGLBasicWidget.cpp (renamed from extern/freestyle/src/app/QGLBasicWidget.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/QGLBasicWidget.h (renamed from extern/freestyle/src/app/QGLBasicWidget.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/QStyleModuleSyntaxHighlighter.cpp (renamed from extern/freestyle/src/app/QStyleModuleSyntaxHighlighter.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/app/QStyleModuleSyntaxHighlighter.h (renamed from extern/freestyle/src/app/QStyleModuleSyntaxHighlighter.h)0
-rwxr-xr-xsource/blender/freestyle/src/app/app.pro (renamed from extern/freestyle/src/app/app.pro)0
-rwxr-xr-xsource/blender/freestyle/src/app/appmainwindowbase4.ui (renamed from extern/freestyle/src/app/appmainwindowbase4.ui)0
-rwxr-xr-xsource/blender/freestyle/src/app/densitycurveswindow4.ui (renamed from extern/freestyle/src/app/densitycurveswindow4.ui)0
-rwxr-xr-xsource/blender/freestyle/src/app/freestyle.qrc (renamed from extern/freestyle/src/app/freestyle.qrc)0
-rwxr-xr-xsource/blender/freestyle/src/app/icons/add.png (renamed from extern/freestyle/src/app/icons/add.png)bin400 -> 400 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/arrow_down.png (renamed from extern/freestyle/src/app/icons/arrow_down.png)bin813 -> 813 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/arrow_left.png (renamed from extern/freestyle/src/app/icons/arrow_left.png)bin776 -> 776 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/arrow_right.png (renamed from extern/freestyle/src/app/icons/arrow_right.png)bin773 -> 773 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/arrow_up.png (renamed from extern/freestyle/src/app/icons/arrow_up.png)bin782 -> 782 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/clear.png (renamed from extern/freestyle/src/app/icons/clear.png)bin1057 -> 1057 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/close.png (renamed from extern/freestyle/src/app/icons/close.png)bin1437 -> 1437 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/edit.png (renamed from extern/freestyle/src/app/icons/edit.png)bin896 -> 896 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/eye0.png (renamed from extern/freestyle/src/app/icons/eye0.png)bin406 -> 406 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/eye1.png (renamed from extern/freestyle/src/app/icons/eye1.png)bin402 -> 402 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/folder.png (renamed from extern/freestyle/src/app/icons/folder.png)bin1015 -> 1015 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/home.png (renamed from extern/freestyle/src/app/icons/home.png)bin1050 -> 1050 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/mod0.png (renamed from extern/freestyle/src/app/icons/mod0.png)bin910 -> 910 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/mod1.png (renamed from extern/freestyle/src/app/icons/mod1.png)bin1051 -> 1051 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/ok.png (renamed from extern/freestyle/src/app/icons/ok.png)bin769 -> 769 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/reload.png (renamed from extern/freestyle/src/app/icons/reload.png)bin1113 -> 1113 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/remove.png (renamed from extern/freestyle/src/app/icons/remove.png)bin375 -> 375 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/save.png (renamed from extern/freestyle/src/app/icons/save.png)bin1329 -> 1329 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/icons/save_as.png (renamed from extern/freestyle/src/app/icons/save_as.png)bin1024 -> 1024 bytes
-rwxr-xr-xsource/blender/freestyle/src/app/interactiveshaderwindow4.ui (renamed from extern/freestyle/src/app/interactiveshaderwindow4.ui)0
-rwxr-xr-xsource/blender/freestyle/src/app/optionswindow4.ui (renamed from extern/freestyle/src/app/optionswindow4.ui)0
-rwxr-xr-xsource/blender/freestyle/src/app/progressdialog4.ui (renamed from extern/freestyle/src/app/progressdialog4.ui)0
-rwxr-xr-xsource/blender/freestyle/src/app/src.pri (renamed from extern/freestyle/src/app/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/app/stylewindow4.ui (renamed from extern/freestyle/src/app/stylewindow4.ui)0
-rwxr-xr-xsource/blender/freestyle/src/build_bundle.macosx.py (renamed from extern/freestyle/src/build_bundle.macosx.py)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/BBox.h (renamed from extern/freestyle/src/geometry/BBox.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Bezier.cpp (renamed from extern/freestyle/src/geometry/Bezier.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Bezier.h (renamed from extern/freestyle/src/geometry/Bezier.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/FastGrid.cpp (renamed from extern/freestyle/src/geometry/FastGrid.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/FastGrid.h (renamed from extern/freestyle/src/geometry/FastGrid.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/FitCurve.cpp (renamed from extern/freestyle/src/geometry/FitCurve.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/FitCurve.h (renamed from extern/freestyle/src/geometry/FitCurve.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Geom.h (renamed from extern/freestyle/src/geometry/Geom.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/GeomCleaner.cpp (renamed from extern/freestyle/src/geometry/GeomCleaner.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/GeomCleaner.h (renamed from extern/freestyle/src/geometry/GeomCleaner.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/GeomUtils.cpp (renamed from extern/freestyle/src/geometry/GeomUtils.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/GeomUtils.h (renamed from extern/freestyle/src/geometry/GeomUtils.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Grid.cpp (renamed from extern/freestyle/src/geometry/Grid.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Grid.h (renamed from extern/freestyle/src/geometry/Grid.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/HashGrid.cpp (renamed from extern/freestyle/src/geometry/HashGrid.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/HashGrid.h (renamed from extern/freestyle/src/geometry/HashGrid.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Noise.cpp (renamed from extern/freestyle/src/geometry/Noise.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Noise.h (renamed from extern/freestyle/src/geometry/Noise.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/Polygon.h (renamed from extern/freestyle/src/geometry/Polygon.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/SweepLine.h (renamed from extern/freestyle/src/geometry/SweepLine.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/VecMat.h (renamed from extern/freestyle/src/geometry/VecMat.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/geometry.pro (renamed from extern/freestyle/src/geometry/geometry.pro)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/matrix_util.cpp (renamed from extern/freestyle/src/geometry/matrix_util.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/matrix_util.h (renamed from extern/freestyle/src/geometry/matrix_util.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/normal_cycle.cpp (renamed from extern/freestyle/src/geometry/normal_cycle.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/normal_cycle.h (renamed from extern/freestyle/src/geometry/normal_cycle.h)0
-rwxr-xr-xsource/blender/freestyle/src/geometry/src.pri (renamed from extern/freestyle/src/geometry/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/image/GaussianFilter.cpp (renamed from extern/freestyle/src/image/GaussianFilter.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/image/GaussianFilter.h (renamed from extern/freestyle/src/image/GaussianFilter.h)0
-rwxr-xr-xsource/blender/freestyle/src/image/Image.h (renamed from extern/freestyle/src/image/Image.h)0
-rwxr-xr-xsource/blender/freestyle/src/image/ImagePyramid.cpp (renamed from extern/freestyle/src/image/ImagePyramid.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/image/ImagePyramid.h (renamed from extern/freestyle/src/image/ImagePyramid.h)0
-rwxr-xr-xsource/blender/freestyle/src/image/image.pro (renamed from extern/freestyle/src/image/image.pro)0
-rwxr-xr-xsource/blender/freestyle/src/image/src.pri (renamed from extern/freestyle/src/image/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/libconfig.pri (renamed from extern/freestyle/src/libconfig.pri)0
-rwxr-xr-xsource/blender/freestyle/src/makedsp.vcnet.debug.bat (renamed from extern/freestyle/src/makedsp.vcnet.debug.bat)0
-rwxr-xr-xsource/blender/freestyle/src/makedsp.vcnet.release.bat (renamed from extern/freestyle/src/makedsp.vcnet.release.bat)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLBBoxRenderer.cpp (renamed from extern/freestyle/src/rendering/GLBBoxRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLBBoxRenderer.h (renamed from extern/freestyle/src/rendering/GLBBoxRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLDebugRenderer.cpp (renamed from extern/freestyle/src/rendering/GLDebugRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLDebugRenderer.h (renamed from extern/freestyle/src/rendering/GLDebugRenderer.h)0
-rw-r--r--source/blender/freestyle/src/rendering/GLFreeMemoryVisitor.cpp (renamed from extern/freestyle/src/rendering/GLFreeMemoryVisitor.cpp)0
-rw-r--r--source/blender/freestyle/src/rendering/GLFreeMemoryVisitor.h (renamed from extern/freestyle/src/rendering/GLFreeMemoryVisitor.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLMonoColorRenderer.cpp (renamed from extern/freestyle/src/rendering/GLMonoColorRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLMonoColorRenderer.h (renamed from extern/freestyle/src/rendering/GLMonoColorRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLRenderer.cpp (renamed from extern/freestyle/src/rendering/GLRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLRenderer.h (renamed from extern/freestyle/src/rendering/GLRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLSelectRenderer.cpp (renamed from extern/freestyle/src/rendering/GLSelectRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLSelectRenderer.h (renamed from extern/freestyle/src/rendering/GLSelectRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLStrokeRenderer.cpp (renamed from extern/freestyle/src/rendering/GLStrokeRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLStrokeRenderer.h (renamed from extern/freestyle/src/rendering/GLStrokeRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLUtils.cpp (renamed from extern/freestyle/src/rendering/GLUtils.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLUtils.h (renamed from extern/freestyle/src/rendering/GLUtils.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLXOffscreenViewer.cpp (renamed from extern/freestyle/src/rendering/GLXOffscreenViewer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/GLXOffscreenViewer.h (renamed from extern/freestyle/src/rendering/GLXOffscreenViewer.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/extgl.cpp (renamed from extern/freestyle/src/rendering/extgl.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/extgl.h (renamed from extern/freestyle/src/rendering/extgl.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/pbuffer.cpp (renamed from extern/freestyle/src/rendering/pbuffer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/pbuffer.h (renamed from extern/freestyle/src/rendering/pbuffer.h)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/rendering.pro (renamed from extern/freestyle/src/rendering/rendering.pro)0
-rwxr-xr-xsource/blender/freestyle/src/rendering/src.pri (renamed from extern/freestyle/src/rendering/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/DrawingStyle.h (renamed from extern/freestyle/src/scene_graph/DrawingStyle.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/IndexedFaceSet.cpp (renamed from extern/freestyle/src/scene_graph/IndexedFaceSet.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/IndexedFaceSet.h (renamed from extern/freestyle/src/scene_graph/IndexedFaceSet.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/LineRep.cpp (renamed from extern/freestyle/src/scene_graph/LineRep.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/LineRep.h (renamed from extern/freestyle/src/scene_graph/LineRep.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/Material.h (renamed from extern/freestyle/src/scene_graph/Material.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/MaxFileLoader.cpp (renamed from extern/freestyle/src/scene_graph/MaxFileLoader.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/MaxFileLoader.h (renamed from extern/freestyle/src/scene_graph/MaxFileLoader.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/Node.h (renamed from extern/freestyle/src/scene_graph/Node.h)0
-rw-r--r--source/blender/freestyle/src/scene_graph/NodeCamera.cpp (renamed from extern/freestyle/src/scene_graph/NodeCamera.cpp)0
-rw-r--r--source/blender/freestyle/src/scene_graph/NodeCamera.h (renamed from extern/freestyle/src/scene_graph/NodeCamera.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeDrawingStyle.cpp (renamed from extern/freestyle/src/scene_graph/NodeDrawingStyle.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeDrawingStyle.h (renamed from extern/freestyle/src/scene_graph/NodeDrawingStyle.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeGroup.cpp (renamed from extern/freestyle/src/scene_graph/NodeGroup.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeGroup.h (renamed from extern/freestyle/src/scene_graph/NodeGroup.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeLight.cpp (renamed from extern/freestyle/src/scene_graph/NodeLight.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeLight.h (renamed from extern/freestyle/src/scene_graph/NodeLight.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeShape.cpp (renamed from extern/freestyle/src/scene_graph/NodeShape.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeShape.h (renamed from extern/freestyle/src/scene_graph/NodeShape.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeTransform.cpp (renamed from extern/freestyle/src/scene_graph/NodeTransform.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/NodeTransform.h (renamed from extern/freestyle/src/scene_graph/NodeTransform.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/OrientedLineRep.cpp (renamed from extern/freestyle/src/scene_graph/OrientedLineRep.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/OrientedLineRep.h (renamed from extern/freestyle/src/scene_graph/OrientedLineRep.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/Rep.cpp (renamed from extern/freestyle/src/scene_graph/Rep.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/Rep.h (renamed from extern/freestyle/src/scene_graph/Rep.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/ScenePrettyPrinter.cpp (renamed from extern/freestyle/src/scene_graph/ScenePrettyPrinter.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/ScenePrettyPrinter.h (renamed from extern/freestyle/src/scene_graph/ScenePrettyPrinter.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/SceneVisitor.cpp (renamed from extern/freestyle/src/scene_graph/SceneVisitor.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/SceneVisitor.h (renamed from extern/freestyle/src/scene_graph/SceneVisitor.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/TriangleRep.cpp (renamed from extern/freestyle/src/scene_graph/TriangleRep.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/TriangleRep.h (renamed from extern/freestyle/src/scene_graph/TriangleRep.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/VertexRep.cpp (renamed from extern/freestyle/src/scene_graph/VertexRep.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/VertexRep.h (renamed from extern/freestyle/src/scene_graph/VertexRep.h)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/scene_graph.pro (renamed from extern/freestyle/src/scene_graph/scene_graph.pro)0
-rwxr-xr-xsource/blender/freestyle/src/scene_graph/src.pri (renamed from extern/freestyle/src/scene_graph/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/AdvancedFunctions0D.cpp (renamed from extern/freestyle/src/stroke/AdvancedFunctions0D.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/AdvancedFunctions0D.h (renamed from extern/freestyle/src/stroke/AdvancedFunctions0D.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/AdvancedFunctions1D.cpp (renamed from extern/freestyle/src/stroke/AdvancedFunctions1D.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/AdvancedFunctions1D.h (renamed from extern/freestyle/src/stroke/AdvancedFunctions1D.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/AdvancedPredicates1D.h (renamed from extern/freestyle/src/stroke/AdvancedPredicates1D.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/AdvancedStrokeShaders.cpp (renamed from extern/freestyle/src/stroke/AdvancedStrokeShaders.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/AdvancedStrokeShaders.h (renamed from extern/freestyle/src/stroke/AdvancedStrokeShaders.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/BasicStrokeShaders.cpp (renamed from extern/freestyle/src/stroke/BasicStrokeShaders.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/BasicStrokeShaders.h (renamed from extern/freestyle/src/stroke/BasicStrokeShaders.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Canvas.cpp (renamed from extern/freestyle/src/stroke/Canvas.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Canvas.h (renamed from extern/freestyle/src/stroke/Canvas.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Chain.cpp (renamed from extern/freestyle/src/stroke/Chain.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Chain.h (renamed from extern/freestyle/src/stroke/Chain.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/ChainingIterators.cpp (renamed from extern/freestyle/src/stroke/ChainingIterators.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/ChainingIterators.h (renamed from extern/freestyle/src/stroke/ChainingIterators.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/ContextFunctions.cpp (renamed from extern/freestyle/src/stroke/ContextFunctions.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/ContextFunctions.h (renamed from extern/freestyle/src/stroke/ContextFunctions.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Curve.cpp (renamed from extern/freestyle/src/stroke/Curve.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Curve.h (renamed from extern/freestyle/src/stroke/Curve.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/CurveAdvancedIterators.h (renamed from extern/freestyle/src/stroke/CurveAdvancedIterators.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/CurveIterators.h (renamed from extern/freestyle/src/stroke/CurveIterators.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Modifiers.h (renamed from extern/freestyle/src/stroke/Modifiers.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Module.h (renamed from extern/freestyle/src/stroke/Module.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Operators.cpp (renamed from extern/freestyle/src/stroke/Operators.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Operators.h (renamed from extern/freestyle/src/stroke/Operators.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/PSStrokeRenderer.cpp (renamed from extern/freestyle/src/stroke/PSStrokeRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/PSStrokeRenderer.h (renamed from extern/freestyle/src/stroke/PSStrokeRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Predicates0D.h (renamed from extern/freestyle/src/stroke/Predicates0D.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Predicates1D.h (renamed from extern/freestyle/src/stroke/Predicates1D.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/QInformationMap.h (renamed from extern/freestyle/src/stroke/QInformationMap.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Stroke.cpp (renamed from extern/freestyle/src/stroke/Stroke.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/Stroke.h (renamed from extern/freestyle/src/stroke/Stroke.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeAdvancedIterators.h (renamed from extern/freestyle/src/stroke/StrokeAdvancedIterators.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeIO.cpp (renamed from extern/freestyle/src/stroke/StrokeIO.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeIO.h (renamed from extern/freestyle/src/stroke/StrokeIO.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeIterators.h (renamed from extern/freestyle/src/stroke/StrokeIterators.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeLayer.cpp (renamed from extern/freestyle/src/stroke/StrokeLayer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeLayer.h (renamed from extern/freestyle/src/stroke/StrokeLayer.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeRenderer.cpp (renamed from extern/freestyle/src/stroke/StrokeRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeRenderer.h (renamed from extern/freestyle/src/stroke/StrokeRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeRep.cpp (renamed from extern/freestyle/src/stroke/StrokeRep.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeRep.h (renamed from extern/freestyle/src/stroke/StrokeRep.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeShader.h (renamed from extern/freestyle/src/stroke/StrokeShader.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeTesselator.cpp (renamed from extern/freestyle/src/stroke/StrokeTesselator.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StrokeTesselator.h (renamed from extern/freestyle/src/stroke/StrokeTesselator.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/StyleModule.h (renamed from extern/freestyle/src/stroke/StyleModule.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/TextStrokeRenderer.cpp (renamed from extern/freestyle/src/stroke/TextStrokeRenderer.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/TextStrokeRenderer.h (renamed from extern/freestyle/src/stroke/TextStrokeRenderer.h)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/src.pri (renamed from extern/freestyle/src/stroke/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/stroke/stroke.pro (renamed from extern/freestyle/src/stroke/stroke.pro)0
-rwxr-xr-xsource/blender/freestyle/src/swig/Freestyle.i (renamed from extern/freestyle/src/swig/Freestyle.i)0
-rwxr-xr-xsource/blender/freestyle/src/swig/FreestyleWrapper.vc7.vcproj (renamed from extern/freestyle/src/swig/FreestyleWrapper.vc7.vcproj)0
-rwxr-xr-xsource/blender/freestyle/src/swig/FreestyleWrapper.vc8.vcproj (renamed from extern/freestyle/src/swig/FreestyleWrapper.vc8.vcproj)0
-rwxr-xr-xsource/blender/freestyle/src/swig/Makefile (renamed from extern/freestyle/src/swig/Makefile)0
-rwxr-xr-xsource/blender/freestyle/src/swig/Makefile.cygwin (renamed from extern/freestyle/src/swig/Makefile.cygwin)0
-rwxr-xr-xsource/blender/freestyle/src/swig/Makefile.linux (renamed from extern/freestyle/src/swig/Makefile.linux)0
-rw-r--r--source/blender/freestyle/src/swig/Makefile.mac (renamed from extern/freestyle/src/swig/Makefile.mac)0
-rwxr-xr-xsource/blender/freestyle/src/swig/Makefile.noswig (renamed from extern/freestyle/src/swig/Makefile.noswig)0
-rwxr-xr-xsource/blender/freestyle/src/swig/ModuleWrapper.cpp (renamed from extern/freestyle/src/swig/ModuleWrapper.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/swig/ModuleWrapper.h (renamed from extern/freestyle/src/swig/ModuleWrapper.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/BaseIterator.h (renamed from extern/freestyle/src/system/BaseIterator.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/BaseObject.cpp (renamed from extern/freestyle/src/system/BaseObject.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/system/BaseObject.h (renamed from extern/freestyle/src/system/BaseObject.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/Cast.h (renamed from extern/freestyle/src/system/Cast.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/Exception.cpp (renamed from extern/freestyle/src/system/Exception.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/system/Exception.h (renamed from extern/freestyle/src/system/Exception.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/FreestyleConfig.h (renamed from extern/freestyle/src/system/FreestyleConfig.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/Id.h (renamed from extern/freestyle/src/system/Id.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/Interpreter.h (renamed from extern/freestyle/src/system/Interpreter.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/Precision.h (renamed from extern/freestyle/src/system/Precision.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/ProgressBar.h (renamed from extern/freestyle/src/system/ProgressBar.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/PseudoNoise.cpp (renamed from extern/freestyle/src/system/PseudoNoise.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/system/PseudoNoise.h (renamed from extern/freestyle/src/system/PseudoNoise.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/PythonInterpreter.cpp (renamed from extern/freestyle/src/system/PythonInterpreter.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/system/PythonInterpreter.h (renamed from extern/freestyle/src/system/PythonInterpreter.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/RandGen.cpp (renamed from extern/freestyle/src/system/RandGen.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/system/RandGen.h (renamed from extern/freestyle/src/system/RandGen.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/StringUtils.cpp (renamed from extern/freestyle/src/system/StringUtils.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/system/StringUtils.h (renamed from extern/freestyle/src/system/StringUtils.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/TimeStamp.cpp (renamed from extern/freestyle/src/system/TimeStamp.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/system/TimeStamp.h (renamed from extern/freestyle/src/system/TimeStamp.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/TimeUtils.h (renamed from extern/freestyle/src/system/TimeUtils.h)0
-rwxr-xr-xsource/blender/freestyle/src/system/src.pri (renamed from extern/freestyle/src/system/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/system/system.pro (renamed from extern/freestyle/src/system/system.pro)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/FEdgeXDetector.cpp (renamed from extern/freestyle/src/view_map/FEdgeXDetector.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/FEdgeXDetector.h (renamed from extern/freestyle/src/view_map/FEdgeXDetector.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Functions0D.cpp (renamed from extern/freestyle/src/view_map/Functions0D.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Functions0D.h (renamed from extern/freestyle/src/view_map/Functions0D.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Functions1D.cpp (renamed from extern/freestyle/src/view_map/Functions1D.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Functions1D.h (renamed from extern/freestyle/src/view_map/Functions1D.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Interface0D.h (renamed from extern/freestyle/src/view_map/Interface0D.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Interface1D.h (renamed from extern/freestyle/src/view_map/Interface1D.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Silhouette.cpp (renamed from extern/freestyle/src/view_map/Silhouette.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/Silhouette.h (renamed from extern/freestyle/src/view_map/Silhouette.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/SilhouetteGeomEngine.cpp (renamed from extern/freestyle/src/view_map/SilhouetteGeomEngine.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/SilhouetteGeomEngine.h (renamed from extern/freestyle/src/view_map/SilhouetteGeomEngine.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/SteerableViewMap.cpp (renamed from extern/freestyle/src/view_map/SteerableViewMap.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/SteerableViewMap.h (renamed from extern/freestyle/src/view_map/SteerableViewMap.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewEdgeXBuilder.cpp (renamed from extern/freestyle/src/view_map/ViewEdgeXBuilder.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewEdgeXBuilder.h (renamed from extern/freestyle/src/view_map/ViewEdgeXBuilder.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMap.cpp (renamed from extern/freestyle/src/view_map/ViewMap.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMap.h (renamed from extern/freestyle/src/view_map/ViewMap.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapAdvancedIterators.h (renamed from extern/freestyle/src/view_map/ViewMapAdvancedIterators.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapBuilder.cpp (renamed from extern/freestyle/src/view_map/ViewMapBuilder.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapBuilder.h (renamed from extern/freestyle/src/view_map/ViewMapBuilder.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapIO.cpp (renamed from extern/freestyle/src/view_map/ViewMapIO.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapIO.h (renamed from extern/freestyle/src/view_map/ViewMapIO.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapIterators.h (renamed from extern/freestyle/src/view_map/ViewMapIterators.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapTesselator.cpp (renamed from extern/freestyle/src/view_map/ViewMapTesselator.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/ViewMapTesselator.h (renamed from extern/freestyle/src/view_map/ViewMapTesselator.h)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/src.pri (renamed from extern/freestyle/src/view_map/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/view_map/view_map.pro (renamed from extern/freestyle/src/view_map/view_map.pro)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/Curvature.cpp (renamed from extern/freestyle/src/winged_edge/Curvature.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/Curvature.h (renamed from extern/freestyle/src/winged_edge/Curvature.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/Nature.h (renamed from extern/freestyle/src/winged_edge/Nature.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WEdge.cpp (renamed from extern/freestyle/src/winged_edge/WEdge.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WEdge.h (renamed from extern/freestyle/src/winged_edge/WEdge.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WFillGrid.cpp (renamed from extern/freestyle/src/winged_edge/WFillGrid.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WFillGrid.h (renamed from extern/freestyle/src/winged_edge/WFillGrid.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WSFillGrid.cpp (renamed from extern/freestyle/src/winged_edge/WSFillGrid.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WSFillGrid.h (renamed from extern/freestyle/src/winged_edge/WSFillGrid.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WXEdge.cpp (renamed from extern/freestyle/src/winged_edge/WXEdge.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WXEdge.h (renamed from extern/freestyle/src/winged_edge/WXEdge.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WXEdgeBuilder.cpp (renamed from extern/freestyle/src/winged_edge/WXEdgeBuilder.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WXEdgeBuilder.h (renamed from extern/freestyle/src/winged_edge/WXEdgeBuilder.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WingedEdgeBuilder.cpp (renamed from extern/freestyle/src/winged_edge/WingedEdgeBuilder.cpp)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/WingedEdgeBuilder.h (renamed from extern/freestyle/src/winged_edge/WingedEdgeBuilder.h)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/src.pri (renamed from extern/freestyle/src/winged_edge/src.pri)0
-rwxr-xr-xsource/blender/freestyle/src/winged_edge/winged_edge.pro (renamed from extern/freestyle/src/winged_edge/winged_edge.pro)0
-rwxr-xr-xsource/blender/freestyle/style_modules/ChainingIterators.py (renamed from extern/freestyle/style_modules/ChainingIterators.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/Functions0D.py (renamed from extern/freestyle/style_modules/Functions0D.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/Functions1D.py (renamed from extern/freestyle/style_modules/Functions1D.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/PredicatesB1D.py (renamed from extern/freestyle/style_modules/PredicatesB1D.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/PredicatesU0D.py (renamed from extern/freestyle/style_modules/PredicatesU0D.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/PredicatesU1D.py (renamed from extern/freestyle/style_modules/PredicatesU1D.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/anisotropic_diffusion.py (renamed from extern/freestyle/style_modules/anisotropic_diffusion.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/apriori_and_causal_density.py (renamed from extern/freestyle/style_modules/apriori_and_causal_density.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/apriori_density.py (renamed from extern/freestyle/style_modules/apriori_density.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/backbone_stretcher.py (renamed from extern/freestyle/style_modules/backbone_stretcher.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/blueprint_circles.py (renamed from extern/freestyle/style_modules/blueprint_circles.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/blueprint_ellipses.py (renamed from extern/freestyle/style_modules/blueprint_ellipses.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/blueprint_squares.py (renamed from extern/freestyle/style_modules/blueprint_squares.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/cartoon.py (renamed from extern/freestyle/style_modules/cartoon.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/contour.py (renamed from extern/freestyle/style_modules/contour.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/curvature2d.py (renamed from extern/freestyle/style_modules/curvature2d.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/external_contour.py (renamed from extern/freestyle/style_modules/external_contour.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/external_contour_sketchy.py (renamed from extern/freestyle/style_modules/external_contour_sketchy.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/external_contour_smooth.py (renamed from extern/freestyle/style_modules/external_contour_smooth.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/extra-lines.sml (renamed from extern/freestyle/style_modules/extra-lines.sml)0
-rwxr-xr-xsource/blender/freestyle/style_modules/haloing.py (renamed from extern/freestyle/style_modules/haloing.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/ignore_small_occlusions.py (renamed from extern/freestyle/style_modules/ignore_small_occlusions.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/invisible_lines.py (renamed from extern/freestyle/style_modules/invisible_lines.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/japanese_bigbrush.py (renamed from extern/freestyle/style_modules/japanese_bigbrush.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/logical_operators.py (renamed from extern/freestyle/style_modules/logical_operators.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/long_anisotropically_dense.py (renamed from extern/freestyle/style_modules/long_anisotropically_dense.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/multiple_parameterization.py (renamed from extern/freestyle/style_modules/multiple_parameterization.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/nature.py (renamed from extern/freestyle/style_modules/nature.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/near_lines.py (renamed from extern/freestyle/style_modules/near_lines.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/occluded_by_specific_object.py (renamed from extern/freestyle/style_modules/occluded_by_specific_object.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/polygonalize.py (renamed from extern/freestyle/style_modules/polygonalize.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/qi0.py (renamed from extern/freestyle/style_modules/qi0.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/qi0_not_external_contour.py (renamed from extern/freestyle/style_modules/qi0_not_external_contour.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/qi1.py (renamed from extern/freestyle/style_modules/qi1.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/qi2.py (renamed from extern/freestyle/style_modules/qi2.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/sequentialsplit_sketchy.py (renamed from extern/freestyle/style_modules/sequentialsplit_sketchy.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/shaders.py (renamed from extern/freestyle/style_modules/shaders.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/sketchy_multiple_parameterization.py (renamed from extern/freestyle/style_modules/sketchy_multiple_parameterization.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/sketchy_topology_broken.py (renamed from extern/freestyle/style_modules/sketchy_topology_broken.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/sketchy_topology_preserved.py (renamed from extern/freestyle/style_modules/sketchy_topology_preserved.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/split_at_highest_2d_curvatures.py (renamed from extern/freestyle/style_modules/split_at_highest_2d_curvatures.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/split_at_tvertices.py (renamed from extern/freestyle/style_modules/split_at_tvertices.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/stroke_texture.py (renamed from extern/freestyle/style_modules/stroke_texture.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/suggestive.py (renamed from extern/freestyle/style_modules/suggestive.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/thickness_fof_depth_discontinuity.py (renamed from extern/freestyle/style_modules/thickness_fof_depth_discontinuity.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/tipremover.py (renamed from extern/freestyle/style_modules/tipremover.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/tvertex_remover.py (renamed from extern/freestyle/style_modules/tvertex_remover.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/uniformpruning_zsort.py (renamed from extern/freestyle/style_modules/uniformpruning_zsort.py)0
-rwxr-xr-xsource/blender/freestyle/style_modules/vector.py (renamed from extern/freestyle/style_modules/vector.py)0
-rw-r--r--source/blender/include/BIF_screen.h1
-rw-r--r--source/blender/include/butspace.h2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c8
-rw-r--r--source/blender/python/BPY_interface.c4
-rw-r--r--source/blender/python/BPY_menus.c8
-rw-r--r--source/blender/python/api2_2x/Blender.c22
-rw-r--r--source/blender/python/api2_2x/Library.c77
-rw-r--r--source/blender/python/api2_2x/Library.h2
-rw-r--r--source/blender/python/api2_2x/Node.c19
-rw-r--r--source/blender/python/api2_2x/Sys.c3
-rw-r--r--source/blender/python/api2_2x/doc/LibData.py8
-rw-r--r--source/blender/python/api2_2x/sceneRender.c7
-rw-r--r--source/blender/quicktime/apple/quicktime_export.c2
-rw-r--r--source/blender/render/intern/source/pipeline.c3
-rw-r--r--source/blender/src/buttons_editing.c10
-rw-r--r--source/blender/src/buttons_object.c10
-rw-r--r--source/blender/src/buttons_scene.c24
-rw-r--r--source/blender/src/buttons_shading.c6
-rw-r--r--source/blender/src/drawimage.c2
-rw-r--r--source/blender/src/drawobject.c2
-rw-r--r--source/blender/src/drawview.c34
-rw-r--r--source/blender/src/editcurve.c12
-rw-r--r--source/blender/src/editdeform.c24
-rw-r--r--source/blender/src/editimasel.c3
-rw-r--r--source/blender/src/editipo.c105
-rw-r--r--source/blender/src/editobject.c38
-rw-r--r--source/blender/src/editscreen.c8
-rw-r--r--source/blender/src/editsima.c6
-rw-r--r--source/blender/src/editsound.c8
-rw-r--r--source/blender/src/filesel.c2
-rw-r--r--source/blender/src/fluidsim.c4
-rw-r--r--source/blender/src/ghostwinlay.c36
-rw-r--r--source/blender/src/header_action.c39
-rw-r--r--source/blender/src/header_ipo.c17
-rw-r--r--source/blender/src/header_nla.c13
-rw-r--r--source/blender/src/interface_draw.c2
-rw-r--r--source/blender/src/outliner.c2
-rw-r--r--source/blender/src/screendump.c3
-rw-r--r--source/blender/src/seqaudio.c5
-rw-r--r--source/blender/src/sequence.c22
-rw-r--r--source/blender/src/space.c2
-rw-r--r--source/blender/src/view.c4
-rw-r--r--source/blender/src/writeimage.c3
-rw-r--r--source/blender/src/writemovie.c2
-rw-r--r--source/blender/yafray/intern/export_File.cpp2
-rw-r--r--source/blender/yafray/intern/export_Plugin.cpp2
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp4
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp4
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp5
-rw-r--r--source/gameengine/Converter/KX_ConvertActuators.cpp2
-rw-r--r--source/gameengine/GameLogic/SCA_KeyboardSensor.cpp43
-rw-r--r--source/gameengine/GameLogic/SCA_MouseSensor.cpp26
-rw-r--r--source/gameengine/GamePlayer/common/GPC_RenderTools.cpp4
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_ghost.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp14
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.h1
-rw-r--r--source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.cpp19
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.h17
-rw-r--r--source/gameengine/Ketsji/KX_Scene.cpp2
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.cpp4
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.h2
-rw-r--r--source/gameengine/Rasterizer/RAS_BucketManager.cpp1
-rw-r--r--source/gameengine/Rasterizer/RAS_IRenderTools.h4
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.cpp8
-rw-r--r--tools/Blender.py7
-rwxr-xr-xtools/btools.py11
448 files changed, 1807 insertions, 1218 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1c34233245a..b58fe945663 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -250,6 +250,10 @@ IF(WIN32)
ELSE (MSVC80)
SET(OPENEXR_LIBPATH ${OPENEXR}/lib_msvc)
ENDIF(MSVC80)
+ IF (MSVC90)
+ SET(OPENEXR_LIBPATH ${OPENEXR}/lib_vs2008)
+ ENDIF(MSVC90)
+
SET(QUICKTIME ${LIBDIR}/QTDevWin)
SET(QUICKTIME_INC ${QUICKTIME}/CIncludes)
diff --git a/SConstruct b/SConstruct
index 78936a039c9..bb8773329b2 100644
--- a/SConstruct
+++ b/SConstruct
@@ -403,9 +403,26 @@ for tp, tn, tf in os.walk('release/plugins'):
if '.svn' in tn:
tn.remove('.svn')
for f in tf:
+ print ">>>", env['BF_INSTALLDIR'], tp, f
pluglist.append(tp+os.sep+f)
plugtargetlist.append(env['BF_INSTALLDIR']+tp[7:]+os.sep+f)
+# header files for plugins
+pluglist.append('source/blender/blenpluginapi/documentation.h')
+plugtargetlist.append(env['BF_INSTALLDIR'] + os.sep + 'plugins' + os.sep + 'include' + os.sep +'documentation.h')
+pluglist.append('source/blender/blenpluginapi/externdef.h')
+plugtargetlist.append(env['BF_INSTALLDIR'] + os.sep + 'plugins' + os.sep + 'include' + os.sep +'externdef.h')
+pluglist.append('source/blender/blenpluginapi/floatpatch.h')
+plugtargetlist.append(env['BF_INSTALLDIR'] + os.sep + 'plugins' + os.sep + 'include' + os.sep +'floatpatch.h')
+pluglist.append('source/blender/blenpluginapi/iff.h')
+plugtargetlist.append(env['BF_INSTALLDIR'] + os.sep + 'plugins' + os.sep + 'include' + os.sep +'iff.h')
+pluglist.append('source/blender/blenpluginapi/plugin.h')
+plugtargetlist.append(env['BF_INSTALLDIR'] + os.sep + 'plugins' + os.sep + 'include' + os.sep +'plugin.h')
+pluglist.append('source/blender/blenpluginapi/util.h')
+plugtargetlist.append(env['BF_INSTALLDIR'] + os.sep + 'plugins' + os.sep + 'include' + os.sep +'util.h')
+pluglist.append('source/blender/blenpluginapi/plugin.DEF')
+plugtargetlist.append(env['BF_INSTALLDIR'] + os.sep + 'plugins' + os.sep + 'include' + os.sep + 'plugin.def')
+
plugininstall = []
for targetdir,srcfile in zip(plugtargetlist, pluglist):
td, tf = os.path.split(targetdir)
diff --git a/config/darwin-config.py b/config/darwin-config.py
index b12a93a1da8..071a245202b 100644
--- a/config/darwin-config.py
+++ b/config/darwin-config.py
@@ -160,6 +160,21 @@ BF_SOLID_LIB = 'extern_solid'
WITH_BF_YAFRAY = 'true'
+WITH_BF_FREESTYLE = 'true'
+BF_FREESTYLE = '#extern/freestyle'
+BF_FREESTYLE_SRC = '${BF_FREESTYLE}/src'
+BF_SWIG = '${BF_FREESTYLE}/swig'
+BF_LIB3DS = '${BF_FREESTYLE}/lib3ds'
+BF_LIB3DS_LIB = 'extern_lib3ds'
+BF_LIB3DS_LIBPATH = '${BF_LIB3DS}/lib3ds/.libs'
+BF_LIB3DS_INC = '${BF_LIB3DS}/lib3ds'
+
+# WITH_BF_OPENEXR = 'true'
+# BF_OPENEXR = '${LCGDIR}/openexr'
+# BF_OPENEXR_INC = '${BF_OPENEXR}/include ${BF_OPENEXR}/include/OpenEXR'
+# BF_OPENEXR_LIB = ' Iex Half IlmImf Imath IlmThread'
+# BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
+
#WITH_BF_NSPR = 'true'
#BF_NSPR = $(LIBDIR)/nspr
#BF_NSPR_INC = -I$(BF_NSPR)/include -I$(BF_NSPR)/include/nspr
@@ -220,9 +235,10 @@ if USE_SDK=='true':
CCFLAGS=SDK_FLAGS+CCFLAGS
CXXFLAGS=SDK_FLAGS+CXXFLAGS
+# you can add -mssse3 if gcc >= 4.2
if MAC_PROC == 'i386':
- REL_CFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3','-mssse3']
- REL_CCFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3','-mssse3']
+ REL_CFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3']
+ REL_CCFLAGS = ['-O2','-ftree-vectorize','-msse','-msse2','-msse3']
else:
CFLAGS = CFLAGS+['-fno-strict-aliasing']
CCFLAGS = CCFLAGS+['-fno-strict-aliasing']
diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py
index 1f7e62102af..32b6597b5d5 100644
--- a/config/win32-vc-config.py
+++ b/config/win32-vc-config.py
@@ -170,7 +170,6 @@ PLATFORM_LINKFLAGS = '''
/NODEFAULTLIB:"libcd.lib"
/NODEFAULTLIB:"libcpd.lib"
/NODEFAULTLIB:"libcp.lib"
- /NODEFAULTLIB:"libcmtd.lib"
'''
BF_BUILDDIR = '..\\build\\win32-vc'
diff --git a/extern/verse/dist/v_bignum.c b/extern/verse/dist/v_bignum.c
index 3f3ea7f9ccc..3f65af03427 100644
--- a/extern/verse/dist/v_bignum.c
+++ b/extern/verse/dist/v_bignum.c
@@ -768,7 +768,7 @@ void v_bignum_square_half(VBigDig *x)
for(j = i + 1; j < t; j++)
{
/* printf("computing uv=%X+2*%X*%X+%X\n", w[i + j], x[1 + j], x[1 + i], c);*/
- uv = x[1 + j] * x[1 + i];
+ uv = ((VBigDigs)x[1 + j]) * ((VBigDigs)x[1 + i]);
high = (uv & 0x80000000) != 0;
uv *= 2;
ouv = uv; /* Addition below might wrap and generate high bit. */
diff --git a/intern/ghost/intern/GHOST_SystemCarbon.cpp b/intern/ghost/intern/GHOST_SystemCarbon.cpp
index 568f7ecf9b8..78c25997806 100644
--- a/intern/ghost/intern/GHOST_SystemCarbon.cpp
+++ b/intern/ghost/intern/GHOST_SystemCarbon.cpp
@@ -34,10 +34,9 @@
* @date May 7, 2001
*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+#include <Carbon/Carbon.h>
+#include <ApplicationServices/ApplicationServices.h>
#include "GHOST_SystemCarbon.h"
#include "GHOST_DisplayManagerCarbon.h"
@@ -52,6 +51,7 @@
#include "GHOST_WindowManager.h"
#include "GHOST_WindowCarbon.h"
#include "GHOST_NDOFManager.h"
+#include "AssertMacros.h"
#define GHOST_KEY_SWITCH(mac, ghost) { case (mac): ghostKey = (ghost); break; }
@@ -1121,12 +1121,15 @@ GHOST_TUns8* GHOST_SystemCarbon::getClipboard(int flag) const
OSStatus err = noErr;
GHOST_TUns8 * temp_buff;
CFRange range;
+ OSStatus syncFlags;
err = PasteboardCreate(kPasteboardClipboard, &inPasteboard);
if(err != noErr) { return NULL;}
- err = PasteboardSynchronize( inPasteboard );
- if(err != noErr) { return NULL;}
+ syncFlags = PasteboardSynchronize( inPasteboard );
+ /* as we always get in a new string, we can safely ignore sync flags if not an error*/
+ if(syncFlags <0) { return NULL;}
+
err = PasteboardGetItemIdentifier( inPasteboard, 1, &itemID );
if(err != noErr) { return NULL;}
@@ -1152,15 +1155,18 @@ GHOST_TUns8* GHOST_SystemCarbon::getClipboard(int flag) const
void GHOST_SystemCarbon::putClipboard(GHOST_TInt8 *buffer, int flag) const
{
if(flag == 1) {return;} //If Flag is 1 means the selection and is used on X11
+
PasteboardRef inPasteboard;
CFDataRef textData = NULL;
OSStatus err = noErr; /*For error checking*/
+ OSStatus syncFlags;
err = PasteboardCreate(kPasteboardClipboard, &inPasteboard);
if(err != noErr) { return;}
- err = PasteboardSynchronize( inPasteboard );
- if(err != noErr) { return;}
+ syncFlags = PasteboardSynchronize( inPasteboard );
+ /* as we always put in a new string, we can safely ignore sync flags */
+ if(syncFlags <0) { return;}
err = PasteboardClear( inPasteboard );
if(err != noErr) { return;}
diff --git a/projectfiles_vc7/gameengine/blenderhook/KX_blenderhook.vcproj b/projectfiles_vc7/gameengine/blenderhook/KX_blenderhook.vcproj
index 1721062b75c..bc4204eaa44 100644
--- a/projectfiles_vc7/gameengine/blenderhook/KX_blenderhook.vcproj
+++ b/projectfiles_vc7/gameengine/blenderhook/KX_blenderhook.vcproj
@@ -22,7 +22,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\moto\include;..\..\..\..\build\msvc_7\intern\string\include;..\..\..\..\build\msvc_7\intern\bmfont\include;..\..\..\..\build\msvc_7\intern\soundsystem\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\extern\solid\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"
- PreprocessorDefinitions="WIN32,_LIB,_DEBUG"
+ PreprocessorDefinitions="WIN32;_LIB;_DEBUG;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="TRUE"
diff --git a/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj b/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj
index e73e72316c1..d85fb6c3482 100644
--- a/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj
+++ b/projectfiles_vc7/gameengine/ketsji/KX_ketsji.vcproj
@@ -127,7 +127,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\string\include;..\..\..\..\build\msvc_7\intern\moto\include;..\..\..\..\build\msvc_7\intern\soundsystem\include;..\..\..\..\build\msvc_7\intern\guardedalloc\include;..\..\..\..\build\msvc_7\extern\bullet\include;..\..\..\..\build\msvc_7\extern\solid\include;..\..\..\..\lib\windows\python\include\python2.5;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\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"
- PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID"
+ PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="TRUE"
diff --git a/projectfiles_vc7/gameengine/rasterizer/RAS_rasterizer.vcproj b/projectfiles_vc7/gameengine/rasterizer/RAS_rasterizer.vcproj
index 75a2a852011..f4801b58bc8 100644
--- a/projectfiles_vc7/gameengine/rasterizer/RAS_rasterizer.vcproj
+++ b/projectfiles_vc7/gameengine/rasterizer/RAS_rasterizer.vcproj
@@ -22,7 +22,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\build\msvc_7\intern\moto\include;..\..\..\..\build\msvc_7\intern\string\include;..\..\..\source\kernel\gen_system"
- PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="TRUE"
diff --git a/projectfiles_vc7/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj b/projectfiles_vc7/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj
index 6046cc5cac5..b96cf78daf5 100644
--- a/projectfiles_vc7/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj
+++ b/projectfiles_vc7/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.vcproj
@@ -74,7 +74,7 @@
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_7\intern\moto\include;..\..\..\..\..\build\msvc_7\intern\string\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer"
- PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
+ PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
DefaultCharIsUnsigned="TRUE"
diff --git a/release/scripts/console.py b/release/scripts/console.py
index 7d9d8be5e9e..62e0b2eb1d8 100644
--- a/release/scripts/console.py
+++ b/release/scripts/console.py
@@ -63,7 +63,7 @@ __LINE_HISTORY__ = 500
global __FONT_SIZE__
-__FONT_SIZES__ = ( ('tiny', 10), ('small', 12), ('normal', 14), ('large', 16) )
+__FONT_SIZES__ = ( ('tiny', 10), ('small', 12), ('normalfix', 14), ('large', 16) )
__FONT_SIZE__ = 2 # index for the list above, normal default.
global __CONSOLE_LINE_OFFSET__
@@ -422,9 +422,13 @@ def handle_event(evt, val):
global histIndex, cmdBuffer
if abs(histIndex)+1 >= len(cmdBuffer):
histIndex = -1
+ histIndex_orig = histIndex
histIndex -= 1
- while cmdBuffer[histIndex].type != 0 and abs(histIndex) < len(cmdBuffer):
+
+ while (cmdBuffer[histIndex].type != 0 and abs(histIndex) < len(cmdBuffer)) or \
+ ( cmdBuffer[histIndex].cmd == cmdBuffer[histIndex_orig].cmd):
histIndex -= 1
+
if cmdBuffer[histIndex].type == 0: # we found one
cmdBuffer[-1].cmd = cmdBuffer[histIndex].cmd
@@ -432,9 +436,13 @@ def handle_event(evt, val):
global histIndex, cmdBuffer
if histIndex >= -2:
histIndex = -len(cmdBuffer)
+ histIndex_orig = histIndex
histIndex += 1
- while cmdBuffer[histIndex].type != 0 and histIndex != -2:
+ while (cmdBuffer[histIndex].type != 0 and histIndex != -2) or \
+ ( cmdBuffer[histIndex].cmd == cmdBuffer[histIndex_orig].cmd):
+
histIndex += 1
+
if cmdBuffer[histIndex].type == 0: # we found one
cmdBuffer[-1].cmd = cmdBuffer[histIndex].cmd
diff --git a/release/scripts/wizard_curve2tree.py b/release/scripts/wizard_curve2tree.py
index 2dcda953a89..eb27f1ca0f5 100644
--- a/release/scripts/wizard_curve2tree.py
+++ b/release/scripts/wizard_curve2tree.py
@@ -3405,7 +3405,7 @@ def buildTree(ob_curve, single=False):
if leaf_object:
ob_leaf_dupliface.enableDupFaces = True
ob_leaf_dupliface.enableDupFacesScale = True
- ob_leaf_dupliface.makeParent([leaf_object])
+ ob_leaf_dupliface.makeParent([leaf_object], 1)
else:
ob_leaf_dupliface.enableDupFaces = False
@@ -3637,7 +3637,7 @@ def do_tree_generate(e,v):
GLOBALS['non_bez_error'] = 0
def do_tree_help(e,v):
- url = 'http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_fbx'
+ url = 'http://wiki.blender.org/index.php/Scripts/Manual/Wizards/TreeFromCurves'
print 'Trying to open web browser with documentation at this address...'
print '\t' + url
diff --git a/release/scripts/x3d_export.py b/release/scripts/x3d_export.py
index eb9d5d35d6c..ac4a8e9ca5b 100644
--- a/release/scripts/x3d_export.py
+++ b/release/scripts/x3d_export.py
@@ -1,15 +1,12 @@
#!BPY
""" Registration info for Blender menus:
Name: 'X3D Extensible 3D (.x3d)...'
-Blender: 235
+Blender: 245
Group: 'Export'
-Submenu: 'All Objects...' all
-Submenu: 'All Objects compressed...' comp
-Submenu: 'Selected Objects...' selected
-Tooltip: 'Export to Extensible 3D file (.x3d)'
+Tooltip: 'Export selection to Extensible 3D file (.x3d)'
"""
-__author__ = ("Bart")
+__author__ = ("Bart", "Campbell Barton")
__email__ = ["Bart, bart:neeneenee*de"]
__url__ = ["Author's (Bart) homepage, http://www.neeneenee.de/vrml"]
__version__ = "2006/01/17"
@@ -22,10 +19,9 @@ Run this script from "File->Export" menu. A pop-up will ask whether you
want to export only selected or all relevant objects.
Known issues:<br>
- Doesn't handle multiple materials (don't use material indices);<br>
- Doesn't handle multiple UV textures on a single mesh (create a mesh
-for each texture);<br>
- Can't get the texture array associated with material * not the UV ones;
+ Doesn't handle multiple materials (don't use material indices);<br>
+ Doesn't handle multiple UV textures on a single mesh (create a mesh for each texture);<br>
+ Can't get the texture array associated with material * not the UV ones;
"""
@@ -58,953 +54,903 @@ for each texture);<br>
####################################
import Blender
-from Blender import Object, NMesh, Lamp, Draw, Image, Text, sys
+from Blender import Object, Lamp, Draw, Image, Text, sys, Mesh
from Blender.Scene import Render
import math
+#
+DEG2RAD=0.017453292519943295
+MATWORLD= Blender.Mathutils.RotationMatrix(-90, 4, 'x')
+
####################################
# Global Variables
####################################
-scene = Blender.Scene.GetCurrent()
-world = Blender.World.GetCurrent()
-worldmat = Blender.Texture.Get()
filename = Blender.Get('filename')
_safeOverwrite = True
ARG=''
extension = ''
-class DrawTypes:
- """Object DrawTypes enum values
- BOUNDS - draw only the bounding box of the object
- WIRE - draw object as a wire frame
- SOLID - draw object with flat shading
- SHADED - draw object with OpenGL shading
-"""
- BOUNDBOX = 1
- WIRE = 2
- SOLID = 3
- SHADED = 4
- TEXTURE = 5
-
-if not hasattr(Blender.Object,'DrawTypes'):
- Blender.Object.DrawTypes = DrawTypes()
-
##########################################################
# Functions for writing output file
##########################################################
class VRML2Export:
- def __init__(self, filename):
- #--- public you can change these ---
- self.writingcolor = 0
- self.writingtexture = 0
- self.writingcoords = 0
- self.wire = 0
- self.proto = 1
- self.matonly = 0
- self.share = 0
- self.billnode = 0
- self.halonode = 0
- self.collnode = 0
- self.tilenode = 0
- self.verbose=2 # level of verbosity in console 0-none, 1-some, 2-most
- self.cp=3 # decimals for material color values 0.000 - 1.000
- self.vp=3 # decimals for vertex coordinate values 0.000 - n.000
- self.tp=3 # decimals for texture coordinate values 0.000 - 1.000
- self.it=3
-
- #--- class private don't touch ---
- self.texNames={} # dictionary of textureNames
- self.matNames={} # dictionary of materiaNames
- self.meshNames={} # dictionary of meshNames
- self.indentLevel=0 # keeps track of current indenting
- self.filename=filename
- self.file = open(filename, "w")
- self.bNav=0
- self.nodeID=0
- self.namesReserved=[ "Anchor","Appearance","Arc2D","ArcClose2D","AudioClip","Background","Billboard",
- "BooleanFilter","BooleanSequencer","BooleanToggle","BooleanTrigger","Box","Circle2D",
- "Collision","Color","ColorInterpolator","ColorRGBA","component","Cone","connect",
- "Contour2D","ContourPolyline2D","Coordinate","CoordinateDouble","CoordinateInterpolator",
- "CoordinateInterpolator2D","Cylinder","CylinderSensor","DirectionalLight","Disk2D",
- "ElevationGrid","EspduTransform","EXPORT","ExternProtoDeclare","Extrusion","field",
- "fieldValue","FillProperties","Fog","FontStyle","GeoCoordinate","GeoElevationGrid",
- "GeoLocationLocation","GeoLOD","GeoMetadata","GeoOrigin","GeoPositionInterpolator",
- "GeoTouchSensor","GeoViewpoint","Group","HAnimDisplacer","HAnimHumanoid","HAnimJoint",
- "HAnimSegment","HAnimSite","head","ImageTexture","IMPORT","IndexedFaceSet",
- "IndexedLineSet","IndexedTriangleFanSet","IndexedTriangleSet","IndexedTriangleStripSet",
- "Inline","IntegerSequencer","IntegerTrigger","IS","KeySensor","LineProperties","LineSet",
- "LoadSensor","LOD","Material","meta","MetadataDouble","MetadataFloat","MetadataInteger",
- "MetadataSet","MetadataString","MovieTexture","MultiTexture","MultiTextureCoordinate",
- "MultiTextureTransform","NavigationInfo","Normal","NormalInterpolator","NurbsCurve",
- "NurbsCurve2D","NurbsOrientationInterpolator","NurbsPatchSurface",
- "NurbsPositionInterpolator","NurbsSet","NurbsSurfaceInterpolator","NurbsSweptSurface",
- "NurbsSwungSurface","NurbsTextureCoordinate","NurbsTrimmedSurface","OrientationInterpolator",
- "PixelTexture","PlaneSensor","PointLight","PointSet","Polyline2D","Polypoint2D",
- "PositionInterpolator","PositionInterpolator2D","ProtoBody","ProtoDeclare","ProtoInstance",
- "ProtoInterface","ProximitySensor","ReceiverPdu","Rectangle2D","ROUTE","ScalarInterpolator",
- "Scene","Script","Shape","SignalPdu","Sound","Sphere","SphereSensor","SpotLight","StaticGroup",
- "StringSensor","Switch","Text","TextureBackground","TextureCoordinate","TextureCoordinateGenerator",
- "TextureTransform","TimeSensor","TimeTrigger","TouchSensor","Transform","TransmitterPdu",
- "TriangleFanSet","TriangleSet","TriangleSet2D","TriangleStripSet","Viewpoint","VisibilitySensor",
- "WorldInfo","X3D","XvlShell","VertexShader","FragmentShader","MultiShaderAppearance","ShaderAppearance" ]
- self.namesStandard=[ "Empty","Empty.000","Empty.001","Empty.002","Empty.003","Empty.004","Empty.005",
- "Empty.006","Empty.007","Empty.008","Empty.009","Empty.010","Empty.011","Empty.012",
- "Scene.001","Scene.002","Scene.003","Scene.004","Scene.005","Scene.06","Scene.013",
- "Scene.006","Scene.007","Scene.008","Scene.009","Scene.010","Scene.011","Scene.012",
- "World","World.000","World.001","World.002","World.003","World.004","World.005" ]
- self.namesFog=[ "","LINEAR","EXPONENTIAL","" ]
+ def __init__(self, filename):
+ #--- public you can change these ---
+ self.writingcolor = 0
+ self.writingtexture = 0
+ self.writingcoords = 0
+ self.proto = 1
+ self.matonly = 0
+ self.share = 0
+ self.billnode = 0
+ self.halonode = 0
+ self.collnode = 0
+ self.tilenode = 0
+ self.verbose=2 # level of verbosity in console 0-none, 1-some, 2-most
+ self.cp=3 # decimals for material color values 0.000 - 1.000
+ self.vp=3 # decimals for vertex coordinate values 0.000 - n.000
+ self.tp=3 # decimals for texture coordinate values 0.000 - 1.000
+ self.it=3
+
+ #--- class private don't touch ---
+ self.texNames={} # dictionary of textureNames
+ self.matNames={} # dictionary of materiaNames
+ self.meshNames={} # dictionary of meshNames
+ self.indentLevel=0 # keeps track of current indenting
+ self.filename=filename
+ self.file = open(filename, "w")
+ self.bNav=0
+ self.nodeID=0
+ self.namesReserved=[ "Anchor","Appearance","Arc2D","ArcClose2D","AudioClip","Background","Billboard",
+ "BooleanFilter","BooleanSequencer","BooleanToggle","BooleanTrigger","Box","Circle2D",
+ "Collision","Color","ColorInterpolator","ColorRGBA","component","Cone","connect",
+ "Contour2D","ContourPolyline2D","Coordinate","CoordinateDouble","CoordinateInterpolator",
+ "CoordinateInterpolator2D","Cylinder","CylinderSensor","DirectionalLight","Disk2D",
+ "ElevationGrid","EspduTransform","EXPORT","ExternProtoDeclare","Extrusion","field",
+ "fieldValue","FillProperties","Fog","FontStyle","GeoCoordinate","GeoElevationGrid",
+ "GeoLocationLocation","GeoLOD","GeoMetadata","GeoOrigin","GeoPositionInterpolator",
+ "GeoTouchSensor","GeoViewpoint","Group","HAnimDisplacer","HAnimHumanoid","HAnimJoint",
+ "HAnimSegment","HAnimSite","head","ImageTexture","IMPORT","IndexedFaceSet",
+ "IndexedLineSet","IndexedTriangleFanSet","IndexedTriangleSet","IndexedTriangleStripSet",
+ "Inline","IntegerSequencer","IntegerTrigger","IS","KeySensor","LineProperties","LineSet",
+ "LoadSensor","LOD","Material","meta","MetadataDouble","MetadataFloat","MetadataInteger",
+ "MetadataSet","MetadataString","MovieTexture","MultiTexture","MultiTextureCoordinate",
+ "MultiTextureTransform","NavigationInfo","Normal","NormalInterpolator","NurbsCurve",
+ "NurbsCurve2D","NurbsOrientationInterpolator","NurbsPatchSurface",
+ "NurbsPositionInterpolator","NurbsSet","NurbsSurfaceInterpolator","NurbsSweptSurface",
+ "NurbsSwungSurface","NurbsTextureCoordinate","NurbsTrimmedSurface","OrientationInterpolator",
+ "PixelTexture","PlaneSensor","PointLight","PointSet","Polyline2D","Polypoint2D",
+ "PositionInterpolator","PositionInterpolator2D","ProtoBody","ProtoDeclare","ProtoInstance",
+ "ProtoInterface","ProximitySensor","ReceiverPdu","Rectangle2D","ROUTE","ScalarInterpolator",
+ "Scene","Script","Shape","SignalPdu","Sound","Sphere","SphereSensor","SpotLight","StaticGroup",
+ "StringSensor","Switch","Text","TextureBackground","TextureCoordinate","TextureCoordinateGenerator",
+ "TextureTransform","TimeSensor","TimeTrigger","TouchSensor","Transform","TransmitterPdu",
+ "TriangleFanSet","TriangleSet","TriangleSet2D","TriangleStripSet","Viewpoint","VisibilitySensor",
+ "WorldInfo","X3D","XvlShell","VertexShader","FragmentShader","MultiShaderAppearance","ShaderAppearance" ]
+ self.namesStandard=[ "Empty","Empty.000","Empty.001","Empty.002","Empty.003","Empty.004","Empty.005",
+ "Empty.006","Empty.007","Empty.008","Empty.009","Empty.010","Empty.011","Empty.012",
+ "Scene.001","Scene.002","Scene.003","Scene.004","Scene.005","Scene.06","Scene.013",
+ "Scene.006","Scene.007","Scene.008","Scene.009","Scene.010","Scene.011","Scene.012",
+ "World","World.000","World.001","World.002","World.003","World.004","World.005" ]
+ self.namesFog=[ "","LINEAR","EXPONENTIAL","" ]
##########################################################
# Writing nodes routines
##########################################################
- def writeHeader(self):
- #bfile = sys.expandpath( Blender.Get('filename') ).replace('<', '&lt').replace('>', '&gt')
- bfile = self.filename.replace('<', '&lt').replace('>', '&gt') # use outfile name
- self.file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
- self.file.write("<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D 3.0//EN\" \"http://www.web3d.org/specifications/x3d-3.0.dtd\">\n")
- self.file.write("<X3D version=\"3.0\" profile=\"Immersive\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema-instance\" xsd:noNamespaceSchemaLocation=\"http://www.web3d.org/specifications/x3d-3.0.xsd\">\n")
- self.file.write("<head>\n")
- self.file.write("\t<meta name=\"filename\" content=\"%s\" />\n" % sys.basename(bfile))
- self.file.write("\t<meta name=\"generator\" content=\"Blender %s\" />\n" % Blender.Get('version'))
- self.file.write("\t<meta name=\"translator\" content=\"X3D exporter v1.55 (2006/01/17)\" />\n")
- self.file.write("</head>\n")
- self.file.write("<Scene>\n")
-
- def writeInline(self):
- inlines = Blender.Scene.Get()
- allinlines = len(inlines)
- if scene != inlines[0]:
- return
- else:
- for i in xrange(allinlines):
- nameinline=inlines[i].name
- if (nameinline not in self.namesStandard) and (i > 0):
- self.file.write("<Inline DEF=\"%s\" " % (self.cleanStr(nameinline)))
- nameinline = nameinline+".x3d"
- self.file.write("url=\"%s\" />" % nameinline)
- self.file.write("\n\n")
-
- def writeScript(self):
- textEditor = Blender.Text.Get()
- alltext = len(textEditor)
- for i in xrange(alltext):
- nametext = textEditor[i].getName()
- nlines = textEditor[i].getNLines()
- if (self.proto == 1):
- if (nametext == "proto" or nametext == "proto.js" or nametext == "proto.txt") and (nlines != None):
- nalllines = len(textEditor[i].asLines())
- alllines = textEditor[i].asLines()
- for j in xrange(nalllines):
- self.writeIndented(alllines[j] + "\n")
- elif (self.proto == 0):
- if (nametext == "route" or nametext == "route.js" or nametext == "route.txt") and (nlines != None):
- nalllines = len(textEditor[i].asLines())
- alllines = textEditor[i].asLines()
- for j in xrange(nalllines):
- self.writeIndented(alllines[j] + "\n")
- self.writeIndented("\n")
-
- def writeViewpoint(self, thisObj):
- context = scene.getRenderingContext()
- ratio = float(context.imageSizeY())/float(context.imageSizeX())
- lens = (360* (math.atan(ratio *16 / thisObj.data.getLens()) / math.pi))*(math.pi/180)
- lens = min(lens, math.pi)
- # get the camera location, subtract 90 degress from X to orient like X3D does
- loc = self.rotatePointForVRML(thisObj.loc)
- rot = [thisObj.RotX - 1.57, thisObj.RotY, thisObj.RotZ]
- nRot = self.rotatePointForVRML(rot)
- # convert to Quaternion and to Angle Axis
- Q = self.eulerToQuaternions(nRot[0], nRot[1], nRot[2])
- Q1 = self.multiplyQuaternions(Q[0], Q[1])
- Qf = self.multiplyQuaternions(Q1, Q[2])
- angleAxis = self.quaternionToAngleAxis(Qf)
- self.file.write("<Viewpoint DEF=\"%s\" " % (self.cleanStr(thisObj.name)))
- self.file.write("description=\"%s\" " % (thisObj.name))
- self.file.write("centerOfRotation=\"0 0 0\" ")
- self.file.write("position=\"%3.2f %3.2f %3.2f\" " % (loc[0], loc[1], loc[2]))
- self.file.write("orientation=\"%3.2f %3.2f %3.2f %3.2f\" " % (angleAxis[0], angleAxis[1], -angleAxis[2], angleAxis[3]))
- self.file.write("fieldOfView=\"%.3f\" />\n\n" % (lens))
-
- def writeFog(self):
- if world:
- mtype = world.getMistype()
- mparam = world.getMist()
- grd = world.getHor()
- grd0, grd1, grd2 = grd[0], grd[1], grd[2]
- else:
- return
- if (mtype == 1 or mtype == 2):
- self.file.write("<Fog fogType=\"%s\" " % self.namesFog[mtype])
- self.file.write("color=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- self.file.write("visibilityRange=\"%s\" />\n\n" % round(mparam[2],self.cp))
- else:
- return
-
- def writeNavigationInfo(self, scene):
- allObj = []
- allObj = list(scene.objects)
- headlight = "true"
- vislimit = 0.0
- for thisObj in allObj:
- objType=thisObj.type
- if objType == "Camera":
- vislimit = thisObj.data.clipEnd
- elif objType == "Lamp":
- headlight = "false"
- self.file.write("<NavigationInfo headlight=\"%s\" " % headlight)
- self.file.write("visibilityLimit=\"%s\" " % (round(vislimit,self.cp)))
- self.file.write("type=\"EXAMINE\", \"ANY\" avatarSize=\"0.25, 1.75, 0.75\" />\n\n")
-
- def writeSpotLight(self, ob, lamp):
- safeName = self.cleanStr(ob.name)
- if world:
- ambi = world.amb
- ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5
- else:
- ambi = 0
- ambientIntensity = 0
-
- # compute cutoff and beamwidth
- intensity=min(lamp.energy/1.75,1.0)
- beamWidth=((lamp.spotSize*math.pi)/180.0)*.37;
- cutOffAngle=beamWidth*1.3
-
- dx,dy,dz=self.computeDirection(ob)
- # note -dx seems to equal om[3][0]
- # note -dz seems to equal om[3][1]
- # note dy seems to equal om[3][2]
-
- location=ob.getLocation('worldspace')
- radius = lamp.dist*math.cos(beamWidth)
- self.file.write("<SpotLight DEF=\"%s\" " % safeName)
- self.file.write("radius=\"%s\" " % (round(radius,self.cp)))
- self.file.write("ambientIntensity=\"%s\" " % (round(ambientIntensity,self.cp)))
- self.file.write("intensity=\"%s\" " % (round(intensity,self.cp)))
- self.file.write("color=\"%s %s %s\" " % (round(lamp.col[0],self.cp), round(lamp.col[1],self.cp), round(lamp.col[2],self.cp)))
- self.file.write("beamWidth=\"%s\" " % (round(beamWidth,self.cp)))
- self.file.write("cutOffAngle=\"%s\" " % (round(cutOffAngle,self.cp)))
- self.file.write("direction=\"%s %s %s\" " % (round(dx,3),round(dy,3),round(dz,3)))
- self.file.write("location=\"%s %s %s\" />\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3)))
-
- def writeDirectionalLight(self, ob, lamp):
- safeName = self.cleanStr(ob.name)
- if world:
- ambi = world.amb
- ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5
- else:
- ambi = 0
- ambientIntensity = 0
-
- intensity=min(lamp.energy/1.75,1.0)
- (dx,dy,dz)=self.computeDirection(ob)
- self.file.write("<DirectionalLight DEF=\"%s\" " % safeName)
- self.file.write("ambientIntensity=\"%s\" " % (round(ambientIntensity,self.cp)))
- self.file.write("color=\"%s %s %s\" " % (round(lamp.col[0],self.cp), round(lamp.col[1],self.cp), round(lamp.col[2],self.cp)))
- self.file.write("intensity=\"%s\" " % (round(intensity,self.cp)))
- self.file.write("direction=\"%s %s %s\" />\n\n" % (round(dx,4),round(dy,4),round(dz,4)))
-
- def writePointLight(self, ob, lamp):
- safeName = self.cleanStr(ob.name)
- if world:
- ambi = world.amb
- ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5
- else:
- ambi = 0
- ambientIntensity = 0
-
- location=ob.getLocation('worldspace')
- intensity=min(lamp.energy/1.75,1.0)
- radius = lamp.dist
- self.file.write("<PointLight DEF=\"%s\" " % safeName)
- self.file.write("ambientIntensity=\"%s\" " % (round(ambientIntensity,self.cp)))
- self.file.write("color=\"%s %s %s\" " % (round(lamp.col[0],self.cp), round(lamp.col[1],self.cp), round(lamp.col[2],self.cp)))
- self.file.write("intensity=\"%s\" " % (round(intensity,self.cp)))
- self.file.write("radius=\"%s\" " % radius )
- self.file.write("location=\"%s %s %s\" />\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3)))
-
- def writeNode(self, thisObj):
- obname=str(thisObj.getName())
- if obname in self.namesStandard:
- return
- else:
- dx,dy,dz = self.computeDirection(thisObj)
- location = thisObj.getLocation('worldspace')
- self.writeIndented("<%s\n" % obname,1)
- self.writeIndented("# direction %s %s %s\n" % (round(dx,3),round(dy,3),round(dz,3)))
- self.writeIndented("# location %s %s %s\n" % (round(location[0],3), round(location[1],3), round(location[2],3)))
- self.writeIndented("/>\n",-1)
- self.writeIndented("\n")
-
- def secureName(self, name):
- name = name + str(self.nodeID)
- self.nodeID=self.nodeID+1
- if len(name) <= 3:
- newname = "_" + str(self.nodeID)
- return "%s" % (newname)
- else:
- for bad in ['"','#',"'",',','.','[','\\',']','{','}']:
- name=name.replace(bad,'_')
- if name in self.namesReserved:
- newname = name[0:3] + "_" + str(self.nodeID)
- return "%s" % (newname)
- elif name[0].isdigit():
- newname = "_" + name + str(self.nodeID)
- return "%s" % (newname)
- else:
- newname = name
- return "%s" % (newname)
-
- def writeIndexedFaceSet(self, ob, normals = 0):
- imageMap={} # set of used images
- sided={} # 'one':cnt , 'two':cnt
- vColors={} # 'multi':1
- meshName = self.cleanStr(ob.name)
- mesh=ob.data
- meshME = self.cleanStr(mesh.name)
- if len(mesh.faces) == 0: return
- for face in mesh.faces:
- if face.mode & Blender.NMesh.FaceModes['HALO'] and self.halonode == 0:
- self.writeIndented("<Billboard axisOfRotation=\"0 0 0\">\n",1)
- self.halonode = 1
- elif face.mode & Blender.NMesh.FaceModes['BILLBOARD'] and self.billnode == 0:
- self.writeIndented("<Billboard axisOfRotation=\"0 1 0\">\n",1)
- self.billnode = 1
- elif face.mode & Blender.NMesh.FaceModes['OBCOL'] and self.matonly == 0:
- self.matonly = 1
- elif face.mode & Blender.NMesh.FaceModes['SHAREDCOL'] and self.share == 0:
- self.share = 1
- elif face.mode & Blender.NMesh.FaceModes['TILES'] and self.tilenode == 0:
- self.tilenode = 1
- elif not face.mode & Blender.NMesh.FaceModes['DYNAMIC'] and self.collnode == 0:
- self.writeIndented("<Collision enabled=\"false\">\n",1)
- self.collnode = 1
-
- nIFSCnt=self.countIFSSetsNeeded(mesh, imageMap, sided, vColors)
-
- if nIFSCnt > 1:
- self.writeIndented("<Group DEF=\"%s%s\">\n" % ("G_", meshName),1)
-
- if sided.has_key('two') and sided['two'] > 0:
- bTwoSided=1
- else:
- bTwoSided=0
-
- location= ob.getLocation('worldspace')
- self.writeIndented("<Transform DEF=\"%s\" translation=\"%s %s %s\">\n" % (meshName, round(location[0],3), round(location[1],3), round(location[2],3)),1)
- self.writeIndented("<Shape>\n",1)
-
- maters=mesh.materials
- hasImageTexture=0
- issmooth=0
-
- if len(maters) > 0 or mesh.hasFaceUV():
- self.writeIndented("<Appearance>\n", 1)
- # right now this script can only handle a single material per mesh.
- if len(maters) >= 1:
- mat=maters[0]
- matFlags = mat.getMode()
- if not matFlags & Blender.Material.Modes['TEXFACE']:
- self.writeMaterial(mat, self.cleanStr(maters[0].name,''))
- if len(maters) > 1:
- print "Warning: mesh named %s has multiple materials" % meshName
- print "Warning: only one material per object handled"
-
- #-- textures
- if mesh.hasFaceUV():
- for face in mesh.faces:
- if (hasImageTexture == 0) and (face.image):
- self.writeImageTexture(face.image)
- hasImageTexture=1 # keep track of face texture
- if self.tilenode == 1:
- self.writeIndented("<TextureTransform scale=\"%s %s\" />\n" % (face.image.xrep, face.image.yrep))
- self.tilenode = 0
- self.writeIndented("</Appearance>\n", -1)
-
- #-- IndexedFaceSet or IndexedLineSet
-
- # check if object is wireframe only
- if ob.drawType == Blender.Object.DrawTypes.WIRE:
- # user selected WIRE=2 on the Drawtype=Wire on (F9) Edit page
- ifStyle="IndexedLineSet"
- self.wire = 1
- else:
- # user selected BOUNDS=1, SOLID=3, SHARED=4, or TEXTURE=5
- ifStyle="IndexedFaceSet"
- # look up mesh name, use it if available
- if self.meshNames.has_key(meshME):
- self.writeIndented("<%s USE=\"ME_%s\">" % (ifStyle, meshME), 1)
- self.meshNames[meshME]+=1
- else:
- if int(mesh.users) > 1:
- self.writeIndented("<%s DEF=\"ME_%s\" " % (ifStyle, meshME), 1)
- self.meshNames[meshME]=1
- else:
- self.writeIndented("<%s " % ifStyle, 1)
- if ob.drawType != Blender.Object.DrawTypes.WIRE:
- if bTwoSided == 1:
- self.file.write("solid=\"false\" ")
- else:
- self.file.write("solid=\"true\" ")
-
- for face in mesh.faces:
- if face.smooth:
- issmooth=1
- break
- if issmooth==1 and self.wire == 0:
- creaseAngle=(mesh.getMaxSmoothAngle())*(math.pi/180.0)
- self.file.write("creaseAngle=\"%s\" " % (round(creaseAngle,self.cp)))
-
- #--- output vertexColors
- if self.share == 1 and self.matonly == 0:
- self.writeVertexColors(mesh)
- if ob.drawType != Blender.Object.DrawTypes.WIRE:
- #--- output textureCoordinates if UV texture used
- if mesh.hasFaceUV():
- if self.matonly == 1 and self.share == 1:
- self.writeFaceColors(mesh)
- elif hasImageTexture == 1:
- self.writeTextureCoordinates(mesh)
- #--- output coordinates
- self.writeCoordinates(ob, mesh, meshName)
-
- self.writingcoords = 1
- self.writingtexture = 1
- self.writingcolor = 1
- self.writeCoordinates(ob, mesh, meshName)
-
- if ob.drawType != Blender.Object.DrawTypes.WIRE:
- #--- output textureCoordinates if UV texture used
- if mesh.hasFaceUV():
- if hasImageTexture == 1:
- self.writeTextureCoordinates(mesh)
- elif self.matonly == 1 and self.share == 1:
- self.writeFaceColors(mesh)
- #--- output vertexColors
- if self.share == 1 and self.matonly == 0:
- self.writeVertexColors(mesh)
- self.matonly = 0
- self.share = 0
- self.wire = 0
- self.writingcoords = 0
- self.writingtexture = 0
- self.writingcolor = 0
- #--- output closing braces
- self.writeIndented("</%s>\n" % ifStyle, -1)
- self.writeIndented("</Shape>\n", -1)
- self.writeIndented("</Transform>\n", -1)
-
- if self.halonode == 1:
- self.writeIndented("</Billboard>\n", -1)
- self.halonode = 0
-
- if self.billnode == 1:
- self.writeIndented("</Billboard>\n", -1)
- self.billnode = 0
-
- if self.collnode == 1:
- self.writeIndented("</Collision>\n", -1)
- self.collnode = 0
-
- if nIFSCnt > 1:
- self.writeIndented("</Group>\n", -1)
-
- self.file.write("\n")
-
- def writeCoordinates(self, ob, mesh, meshName):
- meshVertexList = mesh.verts
-
- # create vertex list and pre rotate -90 degrees X for VRML
- location= ob.getLocation('worldspace')
- if self.writingcoords == 0:
- self.file.write('coordIndex="')
- for face in mesh.faces:
- for i in xrange(len(face)):
- indx=face[i].index
- self.file.write("%s " % indx)
- self.file.write("-1, ")
- self.file.write("\">\n")
- else:
- #-- vertices
- mesh.transform(ob.matrixWorld)
- self.writeIndented("<Coordinate DEF=\"%s%s\" \n" % ("coord_",meshName), 1)
- self.file.write("\t\t\t\tpoint=\"")
- for v in meshVertexList:
- self.file.write("%.6f %.6f %.6f, " % tuple(v.co))
- self.file.write("\" />")
- self.writeIndented("\n", -1)
-
- def writeTextureCoordinates(self, mesh):
- texCoordList=[]
- texIndexList=[]
- j=0
-
- for face in mesh.faces:
- for i in xrange(len(face)):
- texIndexList.append(j)
- texCoordList.append(face.uv[i])
- j=j+1
- texIndexList.append(-1)
- if self.writingtexture == 0:
- self.file.write("\n\t\t\ttexCoordIndex=\"")
- texIndxStr=""
- for i in xrange(len(texIndexList)):
- texIndxStr = texIndxStr + "%d, " % texIndexList[i]
- if texIndexList[i]==-1:
- self.file.write(texIndxStr)
- texIndxStr=""
- self.file.write("\"\n\t\t\t")
- else:
- self.writeIndented("<TextureCoordinate point=\"", 1)
- for i in xrange(len(texCoordList)):
- self.file.write("%s %s, " % (round(texCoordList[i][0],self.tp), round(texCoordList[i][1],self.tp)))
- self.file.write("\" />")
- self.writeIndented("\n", -1)
-
- def writeFaceColors(self, mesh):
- if self.writingcolor == 0:
- self.file.write("colorPerVertex=\"false\" ")
- else:
- self.writeIndented("<Color color=\"", 1)
- for face in mesh.faces:
- if face.col:
- c=face.col[0]
- if self.verbose > 2:
- print "Debug: face.col r=%d g=%d b=%d" % (c.r, c.g, c.b)
- aColor = self.rgbToFS(c)
- self.file.write("%s, " % aColor)
- self.file.write("\" />")
- self.writeIndented("\n",-1)
-
- def writeVertexColors(self, mesh):
- if self.writingcolor == 0:
- self.file.write("colorPerVertex=\"false\" ")
- else:
- self.writeIndented("<Color color=\"", 1)
- for i in xrange(len(mesh.verts)):
- c=self.getVertexColorByIndx(mesh,i)
- if self.verbose > 2:
- print "Debug: vertex[%d].col r=%d g=%d b=%d" % (i, c.r, c.g, c.b)
-
- aColor = self.rgbToFS(c)
- self.file.write("%s, " % aColor)
- self.file.write("\" />")
- self.writeIndented("\n",-1)
-
- def writeMaterial(self, mat, matName):
- # look up material name, use it if available
- if self.matNames.has_key(matName):
- self.writeIndented("<Material USE=\"MA_%s\" />\n" % matName)
- self.matNames[matName]+=1
- return;
-
- self.matNames[matName]=1
-
- ambient = mat.amb/3
- diffuseR, diffuseG, diffuseB = mat.rgbCol[0], mat.rgbCol[1],mat.rgbCol[2]
- if world:
- ambi = world.getAmb()
- ambi0, ambi1, ambi2 = (ambi[0]*mat.amb)*2, (ambi[1]*mat.amb)*2, (ambi[2]*mat.amb)*2
- else:
- ambi0, ambi1, ambi2 = 0, 0, 0
- emisR, emisG, emisB = (diffuseR*mat.emit+ambi0)/2, (diffuseG*mat.emit+ambi1)/2, (diffuseB*mat.emit+ambi2)/2
-
- shininess = mat.hard/512.0
- specR = (mat.specCol[0]+0.001)/(1.25/(mat.getSpec()+0.001))
- specG = (mat.specCol[1]+0.001)/(1.25/(mat.getSpec()+0.001))
- specB = (mat.specCol[2]+0.001)/(1.25/(mat.getSpec()+0.001))
- transp = 1-mat.alpha
- matFlags = mat.getMode()
- if matFlags & Blender.Material.Modes['SHADELESS']:
- ambient = 1
- shine = 1
- specR = emitR = diffuseR
- specG = emitG = diffuseG
- specB = emitB = diffuseB
- self.writeIndented("<Material DEF=\"MA_%s\" " % matName, 1)
- self.file.write("diffuseColor=\"%s %s %s\" " % (round(diffuseR,self.cp), round(diffuseG,self.cp), round(diffuseB,self.cp)))
- self.file.write("specularColor=\"%s %s %s\" " % (round(specR,self.cp), round(specG,self.cp), round(specB,self.cp)))
- self.file.write("emissiveColor=\"%s %s %s\" \n" % (round(emisR,self.cp), round(emisG,self.cp), round(emisB,self.cp)))
- self.writeIndented("ambientIntensity=\"%s\" " % (round(ambient,self.cp)))
- self.file.write("shininess=\"%s\" " % (round(shininess,self.cp)))
- self.file.write("transparency=\"%s\" />" % (round(transp,self.cp)))
- self.writeIndented("\n",-1)
-
- def writeImageTexture(self, image):
- name = image.name
- filename = image.filename.split('/')[-1].split('\\')[-1]
- if self.texNames.has_key(name):
- self.writeIndented("<ImageTexture USE=\"%s\" />\n" % self.cleanStr(name))
- self.texNames[name] += 1
- return
- else:
- self.writeIndented("<ImageTexture DEF=\"%s\" " % self.cleanStr(name), 1)
- self.file.write("url=\"%s\" />" % name)
- self.writeIndented("\n",-1)
- self.texNames[name] = 1
-
- def writeBackground(self):
- if world: worldname = world.name
- else: return
- blending = world.getSkytype()
- grd = world.getHor()
- grd0, grd1, grd2 = grd[0], grd[1], grd[2]
- sky = world.getZen()
- sky0, sky1, sky2 = sky[0], sky[1], sky[2]
- mix0, mix1, mix2 = grd[0]+sky[0], grd[1]+sky[1], grd[2]+sky[2]
- mix0, mix1, mix2 = mix0/2, mix1/2, mix2/2
- self.file.write("<Background ")
- if worldname not in self.namesStandard:
- self.file.write("DEF=\"%s\" " % self.secureName(worldname))
- # No Skytype - just Hor color
- if blending == 0:
- self.file.write("groundColor=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- self.file.write("skyColor=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- # Blend Gradient
- elif blending == 1:
- self.file.write("groundColor=\"%s %s %s, " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- self.file.write("%s %s %s\" groundAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
- self.file.write("skyColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
- self.file.write("%s %s %s\" skyAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
- # Blend+Real Gradient Inverse
- elif blending == 3:
- self.file.write("groundColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
- self.file.write("%s %s %s\" groundAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
- self.file.write("skyColor=\"%s %s %s, " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- self.file.write("%s %s %s\" skyAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
- # Paper - just Zen Color
- elif blending == 4:
- self.file.write("groundColor=\"%s %s %s\" " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
- self.file.write("skyColor=\"%s %s %s\" " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
- # Blend+Real+Paper - komplex gradient
- elif blending == 7:
- self.writeIndented("groundColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
- self.writeIndented("%s %s %s\" groundAngle=\"1.57, 1.57\" " %(round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- self.writeIndented("skyColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
- self.writeIndented("%s %s %s\" skyAngle=\"1.57, 1.57\" " %(round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- # Any Other two colors
- else:
- self.file.write("groundColor=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
- self.file.write("skyColor=\"%s %s %s\" " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
- alltexture = len(worldmat)
- for i in xrange(alltexture):
- namemat = worldmat[i].getName()
- pic = worldmat[i].getImage()
- if (namemat == "back") and (pic != None):
- self.file.write("\n\tbackUrl=\"%s\" " % str(pic.getName()))
- elif (namemat == "bottom") and (pic != None):
- self.writeIndented("bottomUrl=\"%s\" " % str(pic.getName()))
- elif (namemat == "front") and (pic != None):
- self.writeIndented("frontUrl=\"%s\" " % str(pic.getName()))
- elif (namemat == "left") and (pic != None):
- self.writeIndented("leftUrl=\"%s\" " % str(pic.getName()))
- elif (namemat == "right") and (pic != None):
- self.writeIndented("rightUrl=\"%s\" " % str(pic.getName()))
- elif (namemat == "top") and (pic != None):
- self.writeIndented("topUrl=\"%s\" " % str(pic.getName()))
- self.writeIndented("/>\n\n")
+ def writeHeader(self):
+ #bfile = sys.expandpath( Blender.Get('filename') ).replace('<', '&lt').replace('>', '&gt')
+ bfile = self.filename.replace('<', '&lt').replace('>', '&gt') # use outfile name
+ self.file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+ self.file.write("<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D 3.0//EN\" \"http://www.web3d.org/specifications/x3d-3.0.dtd\">\n")
+ self.file.write("<X3D version=\"3.0\" profile=\"Immersive\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema-instance\" xsd:noNamespaceSchemaLocation=\"http://www.web3d.org/specifications/x3d-3.0.xsd\">\n")
+ self.file.write("<head>\n")
+ self.file.write("\t<meta name=\"filename\" content=\"%s\" />\n" % sys.basename(bfile))
+ self.file.write("\t<meta name=\"generator\" content=\"Blender %s\" />\n" % Blender.Get('version'))
+ self.file.write("\t<meta name=\"translator\" content=\"X3D exporter v1.55 (2006/01/17)\" />\n")
+ self.file.write("</head>\n")
+ self.file.write("<Scene>\n")
+
+ # This functionality is poorly defined, disabling for now - campbell
+ '''
+ def writeInline(self):
+ inlines = Blender.Scene.Get()
+ allinlines = len(inlines)
+ if scene != inlines[0]:
+ return
+ else:
+ for i in xrange(allinlines):
+ nameinline=inlines[i].name
+ if (nameinline not in self.namesStandard) and (i > 0):
+ self.file.write("<Inline DEF=\"%s\" " % (self.cleanStr(nameinline)))
+ nameinline = nameinline+".x3d"
+ self.file.write("url=\"%s\" />" % nameinline)
+ self.file.write("\n\n")
+ '''
+
+ def writeScript(self):
+ textEditor = Blender.Text.Get()
+ alltext = len(textEditor)
+ for i in xrange(alltext):
+ nametext = textEditor[i].name
+ nlines = textEditor[i].getNLines()
+ if (self.proto == 1):
+ if (nametext == "proto" or nametext == "proto.js" or nametext == "proto.txt") and (nlines != None):
+ nalllines = len(textEditor[i].asLines())
+ alllines = textEditor[i].asLines()
+ for j in xrange(nalllines):
+ self.writeIndented(alllines[j] + "\n")
+ elif (self.proto == 0):
+ if (nametext == "route" or nametext == "route.js" or nametext == "route.txt") and (nlines != None):
+ nalllines = len(textEditor[i].asLines())
+ alllines = textEditor[i].asLines()
+ for j in xrange(nalllines):
+ self.writeIndented(alllines[j] + "\n")
+ self.writeIndented("\n")
+
+ def writeViewpoint(self, ob, scene):
+ context = scene.render
+ ratio = float(context.imageSizeY())/float(context.imageSizeX())
+ lens = (360* (math.atan(ratio *16 / ob.data.getLens()) / math.pi))*(math.pi/180)
+ lens = min(lens, math.pi)
+
+ # get the camera location, subtract 90 degress from X to orient like X3D does
+ mat = ob.matrixWorld
+ loc = self.rotatePointForVRML(mat.translationPart())
+ rot = mat.toEuler()
+ rot = (((rot[0]-90)*DEG2RAD), rot[1]*DEG2RAD, rot[2]*DEG2RAD)
+ nRot = self.rotatePointForVRML( rot )
+ # convert to Quaternion and to Angle Axis
+ Q = self.eulerToQuaternions(nRot[0], nRot[1], nRot[2])
+ Q1 = self.multiplyQuaternions(Q[0], Q[1])
+ Qf = self.multiplyQuaternions(Q1, Q[2])
+ angleAxis = self.quaternionToAngleAxis(Qf)
+ self.file.write("<Viewpoint DEF=\"%s\" " % (self.cleanStr(ob.name)))
+ self.file.write("description=\"%s\" " % (ob.name))
+ self.file.write("centerOfRotation=\"0 0 0\" ")
+ self.file.write("position=\"%3.2f %3.2f %3.2f\" " % (loc[0], loc[1], loc[2]))
+ self.file.write("orientation=\"%3.2f %3.2f %3.2f %3.2f\" " % (angleAxis[0], angleAxis[1], -angleAxis[2], angleAxis[3]))
+ self.file.write("fieldOfView=\"%.3f\" />\n\n" % (lens))
+
+ def writeFog(self, world):
+ if world:
+ mtype = world.getMistype()
+ mparam = world.getMist()
+ grd = world.getHor()
+ grd0, grd1, grd2 = grd[0], grd[1], grd[2]
+ else:
+ return
+ if (mtype == 1 or mtype == 2):
+ self.file.write("<Fog fogType=\"%s\" " % self.namesFog[mtype])
+ self.file.write("color=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ self.file.write("visibilityRange=\"%s\" />\n\n" % round(mparam[2],self.cp))
+ else:
+ return
+ '''
+ def writeNavigationInfo(self, scene):
+ allObj = []
+ allObj = list(scene.objects)
+ headlight = "true"
+ vislimit = 0.0
+ for ob in allObj:
+ objType=ob.type
+ if objType == "Camera":
+ vislimit = ob.data.clipEnd
+ elif objType == "Lamp":
+ headlight = "false"
+ self.file.write("<NavigationInfo headlight=\"%s\" " % headlight)
+ self.file.write("visibilityLimit=\"%s\" " % (round(vislimit,self.cp)))
+ self.file.write("type=\"EXAMINE\", \"ANY\" avatarSize=\"0.25, 1.75, 0.75\" />\n\n")
+ '''
+ def writeSpotLight(self, ob, lamp, world):
+ safeName = self.cleanStr(ob.name)
+ if world:
+ ambi = world.amb
+ ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5
+ else:
+ ambi = 0
+ ambientIntensity = 0
+
+ # compute cutoff and beamwidth
+ intensity=min(lamp.energy/1.75,1.0)
+ beamWidth=((lamp.spotSize*math.pi)/180.0)*.37;
+ cutOffAngle=beamWidth*1.3
+
+ dx,dy,dz=self.computeDirection(ob)
+ # note -dx seems to equal om[3][0]
+ # note -dz seems to equal om[3][1]
+ # note dy seems to equal om[3][2]
+
+ location=(ob.matrixWorld*MATWORLD).translationPart()
+ radius = lamp.dist*math.cos(beamWidth)
+ self.file.write("<SpotLight DEF=\"%s\" " % safeName)
+ self.file.write("radius=\"%s\" " % (round(radius,self.cp)))
+ self.file.write("ambientIntensity=\"%s\" " % (round(ambientIntensity,self.cp)))
+ self.file.write("intensity=\"%s\" " % (round(intensity,self.cp)))
+ self.file.write("color=\"%s %s %s\" " % (round(lamp.col[0],self.cp), round(lamp.col[1],self.cp), round(lamp.col[2],self.cp)))
+ self.file.write("beamWidth=\"%s\" " % (round(beamWidth,self.cp)))
+ self.file.write("cutOffAngle=\"%s\" " % (round(cutOffAngle,self.cp)))
+ self.file.write("direction=\"%s %s %s\" " % (round(dx,3),round(dy,3),round(dz,3)))
+ self.file.write("location=\"%s %s %s\" />\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3)))
+
+
+ def writeDirectionalLight(self, ob, lamp, world):
+ safeName = self.cleanStr(ob.name)
+ if world:
+ ambi = world.amb
+ ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5
+ else:
+ ambi = 0
+ ambientIntensity = 0
+
+ intensity=min(lamp.energy/1.75,1.0)
+ (dx,dy,dz)=self.computeDirection(ob)
+ self.file.write("<DirectionalLight DEF=\"%s\" " % safeName)
+ self.file.write("ambientIntensity=\"%s\" " % (round(ambientIntensity,self.cp)))
+ self.file.write("color=\"%s %s %s\" " % (round(lamp.col[0],self.cp), round(lamp.col[1],self.cp), round(lamp.col[2],self.cp)))
+ self.file.write("intensity=\"%s\" " % (round(intensity,self.cp)))
+ self.file.write("direction=\"%s %s %s\" />\n\n" % (round(dx,4),round(dy,4),round(dz,4)))
+
+ def writePointLight(self, ob, lamp, world):
+ safeName = self.cleanStr(ob.name)
+ if world:
+ ambi = world.amb
+ ambientIntensity = ((float(ambi[0] + ambi[1] + ambi[2]))/3)/2.5
+ else:
+ ambi = 0
+ ambientIntensity = 0
+
+ location=(ob.matrixWorld*MATWORLD).translationPart()
+ intensity=min(lamp.energy/1.75,1.0)
+ radius = lamp.dist
+ self.file.write("<PointLight DEF=\"%s\" " % safeName)
+ self.file.write("ambientIntensity=\"%s\" " % (round(ambientIntensity,self.cp)))
+ self.file.write("color=\"%s %s %s\" " % (round(lamp.col[0],self.cp), round(lamp.col[1],self.cp), round(lamp.col[2],self.cp)))
+ self.file.write("intensity=\"%s\" " % (round(intensity,self.cp)))
+ self.file.write("radius=\"%s\" " % radius )
+ self.file.write("location=\"%s %s %s\" />\n\n" % (round(location[0],3), round(location[1],3), round(location[2],3)))
+
+ def writeNode(self, ob):
+ obname=str(ob.name)
+ if obname in self.namesStandard:
+ return
+ else:
+ dx,dy,dz = self.computeDirection(ob)
+ location=(ob.matrixWorld*MATWORLD).translationPart()
+ self.writeIndented("<%s\n" % obname,1)
+ self.writeIndented("# direction %s %s %s\n" % (round(dx,3),round(dy,3),round(dz,3)))
+ self.writeIndented("# location %s %s %s\n" % (round(location[0],3), round(location[1],3), round(location[2],3)))
+ self.writeIndented("/>\n",-1)
+ self.writeIndented("\n")
+
+ def secureName(self, name):
+ name = name + str(self.nodeID)
+ self.nodeID=self.nodeID+1
+ if len(name) <= 3:
+ newname = "_" + str(self.nodeID)
+ return "%s" % (newname)
+ else:
+ for bad in ['"','#',"'",',','.','[','\\',']','{','}']:
+ name=name.replace(bad,'_')
+ if name in self.namesReserved:
+ newname = name[0:3] + "_" + str(self.nodeID)
+ return "%s" % (newname)
+ elif name[0].isdigit():
+ newname = "_" + name + str(self.nodeID)
+ return "%s" % (newname)
+ else:
+ newname = name
+ return "%s" % (newname)
+
+ def writeIndexedFaceSet(self, ob, world, normals = 0):
+ imageMap={} # set of used images
+ sided={} # 'one':cnt , 'two':cnt
+ vColors={} # 'multi':1
+ meshName = self.cleanStr(ob.name)
+ mesh=ob.getData(mesh=1)
+ meshME = self.cleanStr(mesh.name)
+ if len(mesh.faces) == 0: return
+ mode = 0
+ if mesh.faceUV:
+ for face in mesh.faces:
+ mode |= face.mode
+
+ if mode & Mesh.FaceModes.HALO and self.halonode == 0:
+ self.writeIndented("<Billboard axisOfRotation=\"0 0 0\">\n",1)
+ self.halonode = 1
+ elif mode & Mesh.FaceModes.BILLBOARD and self.billnode == 0:
+ self.writeIndented("<Billboard axisOfRotation=\"0 1 0\">\n",1)
+ self.billnode = 1
+ elif mode & Mesh.FaceModes.OBCOL and self.matonly == 0:
+ self.matonly = 1
+ elif mode & Mesh.FaceModes.TILES and self.tilenode == 0:
+ self.tilenode = 1
+ elif not mode & Mesh.FaceModes.DYNAMIC and self.collnode == 0:
+ self.writeIndented("<Collision enabled=\"false\">\n",1)
+ self.collnode = 1
+
+ nIFSCnt=self.countIFSSetsNeeded(mesh, imageMap, sided, vColors)
+
+ if nIFSCnt > 1:
+ self.writeIndented("<Group DEF=\"%s%s\">\n" % ("G_", meshName),1)
+
+ if sided.has_key('two') and sided['two'] > 0:
+ bTwoSided=1
+ else:
+ bTwoSided=0
+
+ mtx = ob.matrixWorld * MATWORLD
+
+ loc= mtx.translationPart()
+ sca= mtx.scalePart()
+ quat = mtx.toQuat()
+ rot= quat.axis
+
+ # self.writeIndented('<Transform rotation="%.6f %.6f %.6f %.6f">\n' % (rot[0], rot[1], rot[2], rot[3]))
+ self.writeIndented('<Transform DEF="%s" translation="%.6f %.6f %.6f" scale="%.6f %.6f %.6f" rotation="%.6f %.6f %.6f %.6f">\n' % \
+ (meshName, loc[0], loc[1], loc[2], sca[0], sca[1], sca[2], rot[0], rot[1], rot[2], quat.angle*DEG2RAD) )
+
+ self.writeIndented("<Shape>\n",1)
+ maters=mesh.materials
+ hasImageTexture=0
+ issmooth=0
+
+ if len(maters) > 0 or mesh.faceUV:
+ self.writeIndented("<Appearance>\n", 1)
+ # right now this script can only handle a single material per mesh.
+ if len(maters) >= 1:
+ mat=maters[0]
+ matFlags = mat.getMode()
+ if not matFlags & Blender.Material.Modes['TEXFACE']:
+ self.writeMaterial(mat, self.cleanStr(maters[0].name,''), world)
+ if len(maters) > 1:
+ print "Warning: mesh named %s has multiple materials" % meshName
+ print "Warning: only one material per object handled"
+
+ #-- textures
+ if mesh.faceUV:
+ for face in mesh.faces:
+ if (hasImageTexture == 0) and (face.image):
+ self.writeImageTexture(face.image)
+ hasImageTexture=1 # keep track of face texture
+ if self.tilenode == 1:
+ self.writeIndented("<TextureTransform scale=\"%s %s\" />\n" % (face.image.xrep, face.image.yrep))
+ self.tilenode = 0
+ self.writeIndented("</Appearance>\n", -1)
+
+ #-- IndexedFaceSet or IndexedLineSet
+
+ # user selected BOUNDS=1, SOLID=3, SHARED=4, or TEXTURE=5
+ ifStyle="IndexedFaceSet"
+ # look up mesh name, use it if available
+ if self.meshNames.has_key(meshME):
+ self.writeIndented("<%s USE=\"ME_%s\">" % (ifStyle, meshME), 1)
+ self.meshNames[meshME]+=1
+ else:
+ if int(mesh.users) > 1:
+ self.writeIndented("<%s DEF=\"ME_%s\" " % (ifStyle, meshME), 1)
+ self.meshNames[meshME]=1
+ else:
+ self.writeIndented("<%s " % ifStyle, 1)
+
+ if bTwoSided == 1:
+ self.file.write("solid=\"false\" ")
+ else:
+ self.file.write("solid=\"true\" ")
+
+ for face in mesh.faces:
+ if face.smooth:
+ issmooth=1
+ break
+ if issmooth==1:
+ creaseAngle=(mesh.degr)*(math.pi/180.0)
+ self.file.write("creaseAngle=\"%s\" " % (round(creaseAngle,self.cp)))
+
+ #--- output textureCoordinates if UV texture used
+ if mesh.faceUV:
+ if self.matonly == 1 and self.share == 1:
+ self.writeFaceColors(mesh)
+ elif hasImageTexture == 1:
+ self.writeTextureCoordinates(mesh)
+ #--- output coordinates
+ self.writeCoordinates(ob, mesh, meshName)
+
+ self.writingcoords = 1
+ self.writingtexture = 1
+ self.writingcolor = 1
+ self.writeCoordinates(ob, mesh, meshName)
+
+ #--- output textureCoordinates if UV texture used
+ if mesh.faceUV:
+ if hasImageTexture == 1:
+ self.writeTextureCoordinates(mesh)
+ elif self.matonly == 1 and self.share == 1:
+ self.writeFaceColors(mesh)
+ #--- output vertexColors
+ self.matonly = 0
+ self.share = 0
+
+ self.writingcoords = 0
+ self.writingtexture = 0
+ self.writingcolor = 0
+ #--- output closing braces
+ self.writeIndented("</%s>\n" % ifStyle, -1)
+ self.writeIndented("</Shape>\n", -1)
+ self.writeIndented("</Transform>\n", -1)
+
+ if self.halonode == 1:
+ self.writeIndented("</Billboard>\n", -1)
+ self.halonode = 0
+
+ if self.billnode == 1:
+ self.writeIndented("</Billboard>\n", -1)
+ self.billnode = 0
+
+ if self.collnode == 1:
+ self.writeIndented("</Collision>\n", -1)
+ self.collnode = 0
+
+ if nIFSCnt > 1:
+ self.writeIndented("</Group>\n", -1)
+
+ self.file.write("\n")
+
+ def writeCoordinates(self, ob, mesh, meshName):
+ # create vertex list and pre rotate -90 degrees X for VRML
+
+ if self.writingcoords == 0:
+ self.file.write('coordIndex="')
+ for face in mesh.faces:
+ fv = face.v
+ if len(face)==4:
+ self.file.write("%i %i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index, fv[3].index))
+ else:
+ self.file.write("%i %i %i -1, " % (fv[0].index, fv[1].index, fv[2].index))
+ self.file.write("\">\n")
+ else:
+ #-- vertices
+ # mesh.transform(ob.matrixWorld)
+ self.writeIndented("<Coordinate DEF=\"%s%s\" \n" % ("coord_",meshName), 1)
+ self.file.write("\t\t\t\tpoint=\"")
+ for v in mesh.verts:
+ self.file.write("%.6f %.6f %.6f, " % tuple(v.co))
+ self.file.write("\" />")
+ self.writeIndented("\n", -1)
+
+ def writeTextureCoordinates(self, mesh):
+ texCoordList=[]
+ texIndexList=[]
+ j=0
+
+ for face in mesh.faces:
+ for uv in face.uv:
+ texIndexList.append(j)
+ texCoordList.append(uv)
+ j=j+1
+ texIndexList.append(-1)
+ if self.writingtexture == 0:
+ self.file.write("\n\t\t\ttexCoordIndex=\"")
+ texIndxStr=""
+ for i in xrange(len(texIndexList)):
+ texIndxStr = texIndxStr + "%d, " % texIndexList[i]
+ if texIndexList[i]==-1:
+ self.file.write(texIndxStr)
+ texIndxStr=""
+ self.file.write("\"\n\t\t\t")
+ else:
+ self.writeIndented("<TextureCoordinate point=\"", 1)
+ for i in xrange(len(texCoordList)):
+ self.file.write("%s %s, " % (round(texCoordList[i][0],self.tp), round(texCoordList[i][1],self.tp)))
+ self.file.write("\" />")
+ self.writeIndented("\n", -1)
+
+ def writeFaceColors(self, mesh):
+ if self.writingcolor == 0:
+ self.file.write("colorPerVertex=\"false\" ")
+ else:
+ self.writeIndented("<Color color=\"", 1)
+ for face in mesh.faces:
+ if face.col:
+ c=face.col[0]
+ if self.verbose > 2:
+ print "Debug: face.col r=%d g=%d b=%d" % (c.r, c.g, c.b)
+ aColor = self.rgbToFS(c)
+ self.file.write("%s, " % aColor)
+ self.file.write("\" />")
+ self.writeIndented("\n",-1)
+
+ def writeMaterial(self, mat, matName, world):
+ # look up material name, use it if available
+ if self.matNames.has_key(matName):
+ self.writeIndented("<Material USE=\"MA_%s\" />\n" % matName)
+ self.matNames[matName]+=1
+ return;
+
+ self.matNames[matName]=1
+
+ ambient = mat.amb/3
+ diffuseR, diffuseG, diffuseB = mat.rgbCol[0], mat.rgbCol[1],mat.rgbCol[2]
+ if world:
+ ambi = world.getAmb()
+ ambi0, ambi1, ambi2 = (ambi[0]*mat.amb)*2, (ambi[1]*mat.amb)*2, (ambi[2]*mat.amb)*2
+ else:
+ ambi0, ambi1, ambi2 = 0, 0, 0
+ emisR, emisG, emisB = (diffuseR*mat.emit+ambi0)/2, (diffuseG*mat.emit+ambi1)/2, (diffuseB*mat.emit+ambi2)/2
+
+ shininess = mat.hard/512.0
+ specR = (mat.specCol[0]+0.001)/(1.25/(mat.spec+0.001))
+ specG = (mat.specCol[1]+0.001)/(1.25/(mat.spec+0.001))
+ specB = (mat.specCol[2]+0.001)/(1.25/(mat.spec+0.001))
+ transp = 1-mat.alpha
+ matFlags = mat.getMode()
+ if matFlags & Blender.Material.Modes['SHADELESS']:
+ ambient = 1
+ shine = 1
+ specR = emitR = diffuseR
+ specG = emitG = diffuseG
+ specB = emitB = diffuseB
+ self.writeIndented("<Material DEF=\"MA_%s\" " % matName, 1)
+ self.file.write("diffuseColor=\"%s %s %s\" " % (round(diffuseR,self.cp), round(diffuseG,self.cp), round(diffuseB,self.cp)))
+ self.file.write("specularColor=\"%s %s %s\" " % (round(specR,self.cp), round(specG,self.cp), round(specB,self.cp)))
+ self.file.write("emissiveColor=\"%s %s %s\" \n" % (round(emisR,self.cp), round(emisG,self.cp), round(emisB,self.cp)))
+ self.writeIndented("ambientIntensity=\"%s\" " % (round(ambient,self.cp)))
+ self.file.write("shininess=\"%s\" " % (round(shininess,self.cp)))
+ self.file.write("transparency=\"%s\" />" % (round(transp,self.cp)))
+ self.writeIndented("\n",-1)
+
+ def writeImageTexture(self, image):
+ name = image.name
+ filename = image.filename.split('/')[-1].split('\\')[-1]
+ if self.texNames.has_key(name):
+ self.writeIndented("<ImageTexture USE=\"%s\" />\n" % self.cleanStr(name))
+ self.texNames[name] += 1
+ return
+ else:
+ self.writeIndented("<ImageTexture DEF=\"%s\" " % self.cleanStr(name), 1)
+ self.file.write("url=\"%s\" />" % name)
+ self.writeIndented("\n",-1)
+ self.texNames[name] = 1
+
+ def writeBackground(self, world, alltextures):
+ if world: worldname = world.name
+ else: return
+ blending = world.getSkytype()
+ grd = world.getHor()
+ grd0, grd1, grd2 = grd[0], grd[1], grd[2]
+ sky = world.getZen()
+ sky0, sky1, sky2 = sky[0], sky[1], sky[2]
+ mix0, mix1, mix2 = grd[0]+sky[0], grd[1]+sky[1], grd[2]+sky[2]
+ mix0, mix1, mix2 = mix0/2, mix1/2, mix2/2
+ self.file.write("<Background ")
+ if worldname not in self.namesStandard:
+ self.file.write("DEF=\"%s\" " % self.secureName(worldname))
+ # No Skytype - just Hor color
+ if blending == 0:
+ self.file.write("groundColor=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ self.file.write("skyColor=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ # Blend Gradient
+ elif blending == 1:
+ self.file.write("groundColor=\"%s %s %s, " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ self.file.write("%s %s %s\" groundAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
+ self.file.write("skyColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
+ self.file.write("%s %s %s\" skyAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
+ # Blend+Real Gradient Inverse
+ elif blending == 3:
+ self.file.write("groundColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
+ self.file.write("%s %s %s\" groundAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
+ self.file.write("skyColor=\"%s %s %s, " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ self.file.write("%s %s %s\" skyAngle=\"1.57, 1.57\" " %(round(mix0,self.cp), round(mix1,self.cp), round(mix2,self.cp)))
+ # Paper - just Zen Color
+ elif blending == 4:
+ self.file.write("groundColor=\"%s %s %s\" " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
+ self.file.write("skyColor=\"%s %s %s\" " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
+ # Blend+Real+Paper - komplex gradient
+ elif blending == 7:
+ self.writeIndented("groundColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
+ self.writeIndented("%s %s %s\" groundAngle=\"1.57, 1.57\" " %(round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ self.writeIndented("skyColor=\"%s %s %s, " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
+ self.writeIndented("%s %s %s\" skyAngle=\"1.57, 1.57\" " %(round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ # Any Other two colors
+ else:
+ self.file.write("groundColor=\"%s %s %s\" " % (round(grd0,self.cp), round(grd1,self.cp), round(grd2,self.cp)))
+ self.file.write("skyColor=\"%s %s %s\" " % (round(sky0,self.cp), round(sky1,self.cp), round(sky2,self.cp)))
+ alltexture = len(alltextures)
+ for i in xrange(alltexture):
+ namemat = alltextures[i].name
+ pic = alltextures[i].getImage()
+ if (namemat == "back") and (pic != None):
+ self.file.write("\n\tbackUrl=\"%s\" " % pic.filename.split('/')[-1].split('\\')[-1])
+ elif (namemat == "bottom") and (pic != None):
+ self.writeIndented("bottomUrl=\"%s\" " % pic.filename.split('/')[-1].split('\\')[-1])
+ elif (namemat == "front") and (pic != None):
+ self.writeIndented("frontUrl=\"%s\" " % pic.filename.split('/')[-1].split('\\')[-1])
+ elif (namemat == "left") and (pic != None):
+ self.writeIndented("leftUrl=\"%s\" " % pic.filename.split('/')[-1].split('\\')[-1])
+ elif (namemat == "right") and (pic != None):
+ self.writeIndented("rightUrl=\"%s\" " % pic.filename.split('/')[-1].split('\\')[-1])
+ elif (namemat == "top") and (pic != None):
+ self.writeIndented("topUrl=\"%s\" " % pic.filename.split('/')[-1].split('\\')[-1])
+ self.writeIndented("/>\n\n")
##########################################################
# export routine
##########################################################
- def export(self, scene, world, worldmat):
- print "Info: starting X3D export to " + self.filename + "..."
- self.writeHeader()
- self.writeScript()
- self.writeNavigationInfo(scene)
- self.writeBackground()
- self.writeFog()
- self.proto = 0
- allObj = []
- if ARG == 'selected':
- allObj = list(scene.objects.context)
- else:
- allObj = list(scene.objects)
- self.writeInline()
- for thisObj in allObj:
- try:
- objType=thisObj.type
- objName=thisObj.name
- self.matonly = 0
- if objType == "Camera":
- self.writeViewpoint(thisObj)
- elif objType == "Mesh":
- self.writeIndexedFaceSet(thisObj, normals = 0)
- elif objType == "Lamp":
- lmpName= thisObj.data
- lmpType=lmpName.getType()
- if lmpType == Lamp.Types.Lamp:
- self.writePointLight(thisObj, lmpName)
- elif lmpType == Lamp.Types.Spot:
- self.writeSpotLight(thisObj, lmpName)
- elif lmpType == Lamp.Types.Sun:
- self.writeDirectionalLight(thisObj, lmpName)
- else:
- self.writeDirectionalLight(thisObj, lmpName)
- elif objType == "Empty" and objName != "Empty":
- self.writeNode(thisObj)
- else:
- #print "Info: Ignoring [%s], object type [%s] not handle yet" % (object.name,object.getType())
- print ""
- except AttributeError:
- print "Error: Unable to get type info for %s" % thisObj.getName()
- if ARG != 'selected':
- self.writeScript()
- self.file.write("\n</Scene>\n</X3D>")
- self.cleanup()
-
+ def export(self, scene, world, alltextures):
+ print "Info: starting X3D export to " + self.filename + "..."
+ self.writeHeader()
+ self.writeScript()
+ # self.writeNavigationInfo(scene) # This seems to position me in some strange area I cant see the model (with BS Contact) - Campbell
+ self.writeBackground(world, alltextures)
+ self.writeFog(world)
+ self.proto = 0
+
+ for ob in scene.objects.context:
+ objType=ob.type
+ objName=ob.name
+ self.matonly = 0
+ if objType == "Camera":
+ self.writeViewpoint(ob, scene)
+ elif objType == "Mesh":
+ self.writeIndexedFaceSet(ob, world, normals = 0)
+ elif objType == "Lamp":
+ data= ob.data
+ datatype=data.type
+ if datatype == Lamp.Types.Lamp:
+ self.writePointLight(ob, data, world)
+ elif datatype == Lamp.Types.Spot:
+ self.writeSpotLight(ob, data, world)
+ elif datatype == Lamp.Types.Sun:
+ self.writeDirectionalLight(ob, data, world)
+ else:
+ self.writeDirectionalLight(ob, data, world)
+ elif objType == "Empty" and objName != "Empty":
+ self.writeNode(ob)
+ else:
+ #print "Info: Ignoring [%s], object type [%s] not handle yet" % (object.name,object.getType)
+ print ""
+
+ if ARG != 'selected':
+ self.writeScript()
+ self.file.write("\n</Scene>\n</X3D>")
+ self.cleanup()
+
##########################################################
# Utility methods
##########################################################
- def cleanup(self):
- self.file.close()
- self.texNames={}
- self.matNames={}
- self.indentLevel=0
- print "Info: finished X3D export to %s\n" % self.filename
-
- def cleanStr(self, name, prefix='rsvd_'):
- """cleanStr(name,prefix) - try to create a valid VRML DEF name from object name"""
-
- newName=name[:]
- if len(newName) == 0:
- self.nNodeID+=1
- return "%s%d" % (prefix, self.nNodeID)
-
- if newName in self.namesReserved:
- newName='%s%s' % (prefix,newName)
-
- if newName[0].isdigit():
- newName='%s%s' % ('_',newName)
-
- for bad in [' ','"','#',"'",',','.','[','\\',']','{','}']:
- newName=newName.replace(bad,'_')
- return newName
-
- def countIFSSetsNeeded(self, mesh, imageMap, sided, vColors):
- """
- countIFFSetsNeeded() - should look at a blender mesh to determine
- how many VRML IndexFaceSets or IndexLineSets are needed. A
- new mesh created under the following conditions:
-
- o - split by UV Textures / one per mesh
- o - split by face, one sided and two sided
- o - split by smooth and flat faces
- o - split when faces only have 2 vertices * needs to be an IndexLineSet
- """
-
- imageNameMap={}
- faceMap={}
- nFaceIndx=0
-
- for face in mesh.faces:
- sidename='';
- if (face.mode & NMesh.FaceModes.TWOSIDE) == NMesh.FaceModes.TWOSIDE:
- sidename='two'
- else:
- sidename='one'
-
- if sided.has_key(sidename):
- sided[sidename]+=1
- else:
- sided[sidename]=1
-
- if face.image:
- faceName="%s_%s" % (face.image.name, sidename);
-
- try:
- imageMap[faceName].append(face)
- except:
- imageMap[faceName]=[face.image.name,sidename,face]
-
- if self.verbose > 2:
- for faceName in imageMap.iterkeys():
- ifs=imageMap[faceName]
- print "Debug: faceName=%s image=%s, solid=%s facecnt=%d" % \
- (faceName, ifs[0], ifs[1], len(ifs)-2)
-
- return len(imageMap)
-
- def faceToString(self,face):
-
- print "Debug: face.flag=0x%x (bitflags)" % face.flag
- if face.sel:
- print "Debug: face.sel=true"
-
- print "Debug: face.mode=0x%x (bitflags)" % face.mode
- if (face.mode & NMesh.FaceModes.TWOSIDE) == NMesh.FaceModes.TWOSIDE:
- print "Debug: face.mode twosided"
-
- print "Debug: face.transp=0x%x (enum)" % face.transp
- if face.transp == NMesh.FaceTranspModes.SOLID:
- print "Debug: face.transp.SOLID"
-
- if face.image:
- print "Debug: face.image=%s" % face.image.name
- print "Debug: face.materialIndex=%d" % face.materialIndex
-
- def getVertexColorByIndx(self, mesh, indx):
- c = None
- for face in mesh.faces:
- j=0
- for vertex in face.v:
- if vertex.index == indx:
- c=face.col[j]
- break
- j=j+1
- if c: break
- return c
-
- def meshToString(self,mesh):
- print "Debug: mesh.hasVertexUV=%d" % mesh.hasVertexUV()
- print "Debug: mesh.hasFaceUV=%d" % mesh.hasFaceUV()
- print "Debug: mesh.hasVertexColours=%d" % mesh.hasVertexColours()
- print "Debug: mesh.verts=%d" % len(mesh.verts)
- print "Debug: mesh.faces=%d" % len(mesh.faces)
- print "Debug: mesh.materials=%d" % len(mesh.materials)
-
- def rgbToFS(self, c):
- s="%s %s %s" % (
- round(c.r/255.0,self.cp),
- round(c.g/255.0,self.cp),
- round(c.b/255.0,self.cp))
- return s
-
- def computeDirection(self, ob):
- x,y,z=(0,-1.0,0) # point down
- ax,ay,az = (ob.RotX,ob.RotZ,ob.RotY)
-
- # rot X
- x1=x
- y1=y*math.cos(ax)-z*math.sin(ax)
- z1=y*math.sin(ax)+z*math.cos(ax)
-
- # rot Y
- x2=x1*math.cos(ay)+z1*math.sin(ay)
- y2=y1
- z2=z1*math.cos(ay)-x1*math.sin(ay)
-
- # rot Z
- x3=x2*math.cos(az)-y2*math.sin(az)
- y3=x2*math.sin(az)+y2*math.cos(az)
- z3=z2
-
- return [x3,y3,z3]
-
-
- # swap Y and Z to handle axis difference between Blender and VRML
- #------------------------------------------------------------------------
- def rotatePointForVRML(self, v):
- x = v[0]
- y = v[2]
- z = -v[1]
-
- vrmlPoint=[x, y, z]
- return vrmlPoint
-
- # For writing well formed VRML code
- #------------------------------------------------------------------------
- def writeIndented(self, s, inc=0):
- if inc < 1:
- self.indentLevel = self.indentLevel + inc
-
- spaces=""
- for x in xrange(self.indentLevel):
- spaces = spaces + "\t"
- self.file.write(spaces + s)
-
- if inc > 0:
- self.indentLevel = self.indentLevel + inc
-
- # Converts a Euler to three new Quaternions
- # Angles of Euler are passed in as radians
- #------------------------------------------------------------------------
- def eulerToQuaternions(self, x, y, z):
- Qx = [math.cos(x/2), math.sin(x/2), 0, 0]
- Qy = [math.cos(y/2), 0, math.sin(y/2), 0]
- Qz = [math.cos(z/2), 0, 0, math.sin(z/2)]
-
- quaternionVec=[Qx,Qy,Qz]
- return quaternionVec
-
- # Multiply two Quaternions together to get a new Quaternion
- #------------------------------------------------------------------------
- def multiplyQuaternions(self, Q1, Q2):
- result = [((Q1[0] * Q2[0]) - (Q1[1] * Q2[1]) - (Q1[2] * Q2[2]) - (Q1[3] * Q2[3])),
- ((Q1[0] * Q2[1]) + (Q1[1] * Q2[0]) + (Q1[2] * Q2[3]) - (Q1[3] * Q2[2])),
- ((Q1[0] * Q2[2]) + (Q1[2] * Q2[0]) + (Q1[3] * Q2[1]) - (Q1[1] * Q2[3])),
- ((Q1[0] * Q2[3]) + (Q1[3] * Q2[0]) + (Q1[1] * Q2[2]) - (Q1[2] * Q2[1]))]
-
- return result
-
- # Convert a Quaternion to an Angle Axis (ax, ay, az, angle)
- # angle is in radians
- #------------------------------------------------------------------------
- def quaternionToAngleAxis(self, Qf):
- scale = math.pow(Qf[1],2) + math.pow(Qf[2],2) + math.pow(Qf[3],2)
- ax = Qf[1]
- ay = Qf[2]
- az = Qf[3]
-
- if scale > .0001:
- ax/=scale
- ay/=scale
- az/=scale
-
- angle = 2 * math.acos(Qf[0])
-
- result = [ax, ay, az, angle]
- return result
+ def cleanup(self):
+ self.file.close()
+ self.texNames={}
+ self.matNames={}
+ self.indentLevel=0
+ print "Info: finished X3D export to %s\n" % self.filename
+
+ def cleanStr(self, name, prefix='rsvd_'):
+ """cleanStr(name,prefix) - try to create a valid VRML DEF name from object name"""
+
+ newName=name[:]
+ if len(newName) == 0:
+ self.nNodeID+=1
+ return "%s%d" % (prefix, self.nNodeID)
+
+ if newName in self.namesReserved:
+ newName='%s%s' % (prefix,newName)
+
+ if newName[0].isdigit():
+ newName='%s%s' % ('_',newName)
+
+ for bad in [' ','"','#',"'",',','.','[','\\',']','{','}']:
+ newName=newName.replace(bad,'_')
+ return newName
+
+ def countIFSSetsNeeded(self, mesh, imageMap, sided, vColors):
+ """
+ countIFFSetsNeeded() - should look at a blender mesh to determine
+ how many VRML IndexFaceSets or IndexLineSets are needed. A
+ new mesh created under the following conditions:
+
+ o - split by UV Textures / one per mesh
+ o - split by face, one sided and two sided
+ o - split by smooth and flat faces
+ o - split when faces only have 2 vertices * needs to be an IndexLineSet
+ """
+
+ imageNameMap={}
+ faceMap={}
+ nFaceIndx=0
+
+ if mesh.faceUV:
+ for face in mesh.faces:
+ sidename='';
+ if face.mode & Mesh.FaceModes.TWOSIDE:
+ sidename='two'
+ else:
+ sidename='one'
+
+ if sided.has_key(sidename):
+ sided[sidename]+=1
+ else:
+ sided[sidename]=1
+
+ image = face.image
+ if image:
+ faceName="%s_%s" % (face.image.name, sidename);
+ try:
+ imageMap[faceName].append(face)
+ except:
+ imageMap[faceName]=[face.image.name,sidename,face]
+
+ if self.verbose > 2:
+ for faceName in imageMap.iterkeys():
+ ifs=imageMap[faceName]
+ print "Debug: faceName=%s image=%s, solid=%s facecnt=%d" % \
+ (faceName, ifs[0], ifs[1], len(ifs)-2)
+
+ return len(imageMap)
+
+ def faceToString(self,face):
+
+ print "Debug: face.flag=0x%x (bitflags)" % face.flag
+ if face.sel:
+ print "Debug: face.sel=true"
+
+ print "Debug: face.mode=0x%x (bitflags)" % face.mode
+ if face.mode & Mesh.FaceModes.TWOSIDE:
+ print "Debug: face.mode twosided"
+
+ print "Debug: face.transp=0x%x (enum)" % face.transp
+ if face.transp == Mesh.FaceTranspModes.SOLID:
+ print "Debug: face.transp.SOLID"
+
+ if face.image:
+ print "Debug: face.image=%s" % face.image.name
+ print "Debug: face.materialIndex=%d" % face.materialIndex
+
+ def getVertexColorByIndx(self, mesh, indx):
+ c = None
+ for face in mesh.faces:
+ j=0
+ for vertex in face.v:
+ if vertex.index == indx:
+ c=face.col[j]
+ break
+ j=j+1
+ if c: break
+ return c
+
+ def meshToString(self,mesh):
+ print "Debug: mesh.hasVertexUV=%d" % mesh.vertexColors
+ print "Debug: mesh.faceUV=%d" % mesh.faceUV
+ print "Debug: mesh.hasVertexColours=%d" % mesh.hasVertexColours()
+ print "Debug: mesh.verts=%d" % len(mesh.verts)
+ print "Debug: mesh.faces=%d" % len(mesh.faces)
+ print "Debug: mesh.materials=%d" % len(mesh.materials)
+
+ def rgbToFS(self, c):
+ s="%s %s %s" % (
+ round(c.r/255.0,self.cp),
+ round(c.g/255.0,self.cp),
+ round(c.b/255.0,self.cp))
+ return s
+
+ def computeDirection(self, ob):
+ x,y,z=(0,-1.0,0) # point down
+
+ ax,ay,az = (ob.matrixWorld*MATWORLD).toEuler()
+
+ ax *= DEG2RAD
+ ay *= DEG2RAD
+ az *= DEG2RAD
+ # rot X
+ x1=x
+ y1=y*math.cos(ax)-z*math.sin(ax)
+ z1=y*math.sin(ax)+z*math.cos(ax)
+
+ # rot Y
+ x2=x1*math.cos(ay)+z1*math.sin(ay)
+ y2=y1
+ z2=z1*math.cos(ay)-x1*math.sin(ay)
+
+ # rot Z
+ x3=x2*math.cos(az)-y2*math.sin(az)
+ y3=x2*math.sin(az)+y2*math.cos(az)
+ z3=z2
+
+ return [x3,y3,z3]
+
+
+ # swap Y and Z to handle axis difference between Blender and VRML
+ #------------------------------------------------------------------------
+ def rotatePointForVRML(self, v):
+ x = v[0]
+ y = v[2]
+ z = -v[1]
+
+ vrmlPoint=[x, y, z]
+ return vrmlPoint
+
+ # For writing well formed VRML code
+ #------------------------------------------------------------------------
+ def writeIndented(self, s, inc=0):
+ if inc < 1:
+ self.indentLevel = self.indentLevel + inc
+
+ spaces=""
+ for x in xrange(self.indentLevel):
+ spaces = spaces + "\t"
+ self.file.write(spaces + s)
+
+ if inc > 0:
+ self.indentLevel = self.indentLevel + inc
+
+ # Converts a Euler to three new Quaternions
+ # Angles of Euler are passed in as radians
+ #------------------------------------------------------------------------
+ def eulerToQuaternions(self, x, y, z):
+ Qx = [math.cos(x/2), math.sin(x/2), 0, 0]
+ Qy = [math.cos(y/2), 0, math.sin(y/2), 0]
+ Qz = [math.cos(z/2), 0, 0, math.sin(z/2)]
+
+ quaternionVec=[Qx,Qy,Qz]
+ return quaternionVec
+
+ # Multiply two Quaternions together to get a new Quaternion
+ #------------------------------------------------------------------------
+ def multiplyQuaternions(self, Q1, Q2):
+ result = [((Q1[0] * Q2[0]) - (Q1[1] * Q2[1]) - (Q1[2] * Q2[2]) - (Q1[3] * Q2[3])),
+ ((Q1[0] * Q2[1]) + (Q1[1] * Q2[0]) + (Q1[2] * Q2[3]) - (Q1[3] * Q2[2])),
+ ((Q1[0] * Q2[2]) + (Q1[2] * Q2[0]) + (Q1[3] * Q2[1]) - (Q1[1] * Q2[3])),
+ ((Q1[0] * Q2[3]) + (Q1[3] * Q2[0]) + (Q1[1] * Q2[2]) - (Q1[2] * Q2[1]))]
+
+ return result
+
+ # Convert a Quaternion to an Angle Axis (ax, ay, az, angle)
+ # angle is in radians
+ #------------------------------------------------------------------------
+ def quaternionToAngleAxis(self, Qf):
+ scale = math.pow(Qf[1],2) + math.pow(Qf[2],2) + math.pow(Qf[3],2)
+ ax = Qf[1]
+ ay = Qf[2]
+ az = Qf[3]
+
+ if scale > .0001:
+ ax/=scale
+ ay/=scale
+ az/=scale
+
+ angle = 2 * math.acos(Qf[0])
+
+ result = [ax, ay, az, angle]
+ return result
##########################################################
# Callbacks, needed before Main
##########################################################
def select_file(filename):
- if not filename.endswith(extension):
- filename += extension
- if _safeOverwrite and sys.exists(filename):
- result = Draw.PupMenu("File Already Exists, Overwrite?%t|Yes%x1|No%x0")
- if(result != 1):
- return
-
- wrlexport=VRML2Export(filename)
- wrlexport.export(scene, world, worldmat)
-
-def createWRLPath():
- filename = Blender.Get('filename')
- print filename
-
- if filename.find('.') != -1:
- filename = filename.split('.')[0]
- filename += extension
- print filename
-
- return filename
+ if not filename.endswith(extension):
+ filename += extension
+ #if _safeOverwrite and sys.exists(filename):
+ # result = Draw.PupMenu("File Already Exists, Overwrite?%t|Yes%x1|No%x0")
+ #if(result != 1):
+ # return
+
+ scene = Blender.Scene.GetCurrent()
+ world = scene.world
+ alltextures = Blender.Texture.Get()
+
+ wrlexport=VRML2Export(filename)
+ wrlexport.export(scene, world, alltextures)
+
#########################################################
# main routine
#########################################################
-try:
- ARG = __script__['arg'] # user selected argument
-except:
- print "older version"
-
-if Blender.Get('version') < 235:
- print "Warning: X3D export failed, wrong blender version!"
- print " You aren't running blender version 2.35 or greater"
- print " download a newer version from http://blender3d.org/"
-else:
- if ARG == 'comp':
- from gzip import *
- extension=".x3dz"
- else:
- extension=".x3d"
- Blender.Window.FileSelector(select_file,"Export X3D",createWRLPath())
-
+if __name__ == '__main__':
+ Blender.Window.FileSelector(select_file,"Export X3D", Blender.Get('filename').replace('.blend', '.x3d'))
+ # select_file('/shared/bed1.x3d')
diff --git a/source/blender/SConscript b/source/blender/SConscript
index 56a661238f8..09d30ddafd0 100644
--- a/source/blender/SConscript
+++ b/source/blender/SConscript
@@ -31,3 +31,6 @@ if env['WITH_BF_OPENEXR'] == 1:
if env['WITH_BF_QUICKTIME'] == 1:
SConscript (['quicktime/SConscript'])
+
+if env['WITH_BF_FREESTYLE'] == 1:
+ SConscript(['freestyle/SConscript'])
diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index 76581e4f34f..b3b68a9b3ff 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -33,7 +33,8 @@
#ifndef BKE_NODE_H
#define BKE_NODE_H
-
+/* not very important, but the stack solver likes to know a maximum */
+#define MAX_SOCKET 64
struct ID;
struct bNodeTree;
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index f31c5a0d672..654cf0991cc 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -3304,7 +3304,9 @@ void loadFluidsimMesh(Object *srcob, int useRenderParams)
} else { // 3
strcat(targetDir,"fluidsurface_final_####");
}
- BLI_convertstringcode(targetDir, G.sce, curFrame); // fixed #frame-no
+ BLI_convertstringcode(targetDir, G.sce);
+ BLI_convertstringframe(targetDir, curFrame); // fixed #frame-no
+
strcpy(targetFile,targetDir);
strcat(targetFile, ".bobj.gz");
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 459e705eccc..b493f98b7fb 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -350,7 +350,8 @@ Image *BKE_add_image_file(const char *name)
}
BLI_strncpy(str, name, sizeof(str));
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
+ BLI_convertstringframe(str, G.scene->r.cfra); /* TODO - should this realy be here? */
/* exists? */
file= open(str, O_BINARY|O_RDONLY);
@@ -361,7 +362,8 @@ Image *BKE_add_image_file(const char *name)
for(ima= G.main->image.first; ima; ima= ima->id.next) {
if(ima->source!=IMA_SRC_VIEWER && ima->source!=IMA_SRC_GENERATED) {
BLI_strncpy(strtest, ima->name, sizeof(ima->name));
- BLI_convertstringcode(strtest, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(strtest, G.sce);
+ BLI_convertstringframe(strtest, G.scene->r.cfra); /* TODO - should this be here? */
if( strcmp(strtest, str)==0 ) {
if(ima->anim==NULL || ima->id.us==0) {
@@ -1242,7 +1244,8 @@ void BKE_makepicstring(char *string, char *base, int frame, int imtype)
if (strchr(string, '#')==NULL)
strcat(string, "####"); /* 4 numbers */
- BLI_convertstringcode(string, G.sce, frame);
+ BLI_convertstringcode(string, G.sce);
+ BLI_convertstringframe(string, frame);
if(G.scene->r.scemode & R_EXTENSION)
BKE_add_image_extension(string, imtype);
@@ -1478,9 +1481,11 @@ static ImBuf *image_load_sequence_file(Image *ima, ImageUser *iuser, int frame)
BLI_strncpy(name, ima->name, sizeof(name));
if(ima->id.lib)
- BLI_convertstringcode(name, ima->id.lib->filename, frame);
+ BLI_convertstringcode(name, ima->id.lib->filename);
else
- BLI_convertstringcode(name, G.sce, frame);
+ BLI_convertstringcode(name, G.sce);
+
+ BLI_convertstringframe(name, frame); /* TODO - should this be here? */
/* read ibuf */
ibuf = IMB_loadiffname(name, IB_rect|IB_multilayer);
@@ -1580,9 +1585,9 @@ static ImBuf *image_load_movie_file(Image *ima, ImageUser *iuser, int frame)
BLI_strncpy(str, ima->name, FILE_MAX);
if(ima->id.lib)
- BLI_convertstringcode(str, ima->id.lib->filename, 0);
+ BLI_convertstringcode(str, ima->id.lib->filename);
else
- BLI_convertstringcode(str, G.sce, 0);
+ BLI_convertstringcode(str, G.sce);
ima->anim = openanim(str, IB_cmap | IB_rect);
@@ -1633,9 +1638,11 @@ static ImBuf *image_load_image_file(Image *ima, ImageUser *iuser, int cfra)
/* get the right string */
BLI_strncpy(str, ima->name, sizeof(str));
if(ima->id.lib)
- BLI_convertstringcode(str, ima->id.lib->filename, cfra);
+ BLI_convertstringcode(str, ima->id.lib->filename);
else
- BLI_convertstringcode(str, G.sce, cfra);
+ BLI_convertstringcode(str, G.sce);
+
+ BLI_convertstringframe(str, cfra);
/* read ibuf */
ibuf = IMB_loadiffname(str, IB_rect|IB_multilayer|IB_imginfo);
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c
index 8740a3d1ed4..cc3f3f211a4 100644
--- a/source/blender/blenkernel/intern/library.c
+++ b/source/blender/blenkernel/intern/library.c
@@ -974,7 +974,7 @@ static void image_fix_relative_path(Image *ima)
{
if(ima->id.lib==NULL) return;
if(strncmp(ima->name, "//", 2)==0) {
- BLI_convertstringcode(ima->name, ima->id.lib->filename, 0);
+ BLI_convertstringcode(ima->name, ima->id.lib->filename);
BLI_makestringcode(G.sce, ima->name);
}
}
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index 14e70075e32..16916381c95 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -1214,8 +1214,8 @@ void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2,
p->y = neg.y;
p->z = neg.z;
while (1) {
- p->x = 0.5f*(pos.x + neg.x);
if (i++ == RES) return;
+ p->x = 0.5f*(pos.x + neg.x);
if ((function(p->x,p->y,p->z)) > 0.0) pos.x = p->x; else neg.x = p->x;
}
}
@@ -1224,8 +1224,8 @@ void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2,
p->x = neg.x;
p->z = neg.z;
while (1) {
- p->y = 0.5f*(pos.y + neg.y);
if (i++ == RES) return;
+ p->y = 0.5f*(pos.y + neg.y);
if ((function(p->x,p->y,p->z)) > 0.0) pos.y = p->y; else neg.y = p->y;
}
}
@@ -1234,8 +1234,8 @@ void converge (MB_POINT *p1, MB_POINT *p2, float v1, float v2,
p->x = neg.x;
p->y = neg.y;
while (1) {
- p->z = 0.5f*(pos.z + neg.z);
if (i++ == RES) return;
+ p->z = 0.5f*(pos.z + neg.z);
if ((function(p->x,p->y,p->z)) > 0.0) pos.z = p->z; else neg.z = p->z;
}
}
@@ -1300,6 +1300,8 @@ void find_first_points(PROCESS *mbproc, MetaBall *mb, int a)
int index[3]={1,0,-1};
float f =0.0f;
float in_v, out_v;
+ MB_POINT workp;
+ float tmp_v, workp_v, max_len, len, dx, dy, dz, nx, ny, nz, MAXN;
ml = mainb[a];
@@ -1360,23 +1362,49 @@ void find_first_points(PROCESS *mbproc, MetaBall *mb, int a)
out_v = mbproc->function(out.x, out.y, out.z);
- /* find "first point" on Implicit Surface of MetaElemnt ml */
- converge(&in, &out, in_v, out_v, mbproc->function, &mbproc->start, mb, 0);
-
- /* indexes of CUBE, which includes "first point" */
- c_i= (int)floor(mbproc->start.x/mbproc->size );
- c_j= (int)floor(mbproc->start.y/mbproc->size );
- c_k= (int)floor(mbproc->start.z/mbproc->size );
-
- mbproc->start.x= mbproc->start.y= mbproc->start.z= 0.0;
+ /* find "first points" on Implicit Surface of MetaElemnt ml */
+ //converge(&in, &out, in_v, out_v, mbproc->function, &mbproc->start, mb, 0);
+ workp = in;
+ workp_v = in_v;
+ max_len = sqrt((out.x-in.x)*(out.x-in.x) + (out.y-in.y)*(out.y-in.y) + (out.z-in.z)*(out.z-in.z));
- /* add CUBE (with indexes c_i, c_j, c_k) to the stack,
- * this cube includes found point of Implicit Surface */
- if (ml->flag & MB_NEGATIVE)
- add_cube(mbproc, c_i, c_j, c_k, 2);
- else
- add_cube(mbproc, c_i, c_j, c_k, 1);
+ nx = abs((out.x - in.x)/mbproc->size);
+ ny = abs((out.y - in.y)/mbproc->size);
+ nz = abs((out.z - in.z)/mbproc->size);
+
+ MAXN = MAX3(nx,ny,nz);
+
+ dx = (out.x - in.x)/MAXN;
+ dy = (out.y - in.y)/MAXN;
+ dz = (out.z - in.z)/MAXN;
+
+ len = 0.0;
+ while(len<=max_len) {
+ workp.x += dx;
+ workp.y += dy;
+ workp.z += dz;
+ /* compute value of implicite function */
+ tmp_v = mbproc->function(workp.x, workp.y, workp.z);
+ /* add cube to the stack, when value of implicite function crosses zero value */
+ if((tmp_v<0.0 && workp_v>=0.0)||(tmp_v>0.0 && workp_v<=0.0)) {
+
+ /* indexes of CUBE, which includes "first point" */
+ c_i= (int)floor(workp.x/mbproc->size);
+ c_j= (int)floor(workp.y/mbproc->size);
+ c_k= (int)floor(workp.z/mbproc->size);
+
+ /* add CUBE (with indexes c_i, c_j, c_k) to the stack,
+ * this cube includes found point of Implicit Surface */
+ if (ml->flag & MB_NEGATIVE)
+ add_cube(mbproc, c_i, c_j, c_k, 2);
+ else
+ add_cube(mbproc, c_i, c_j, c_k, 1);
+ }
+ len = sqrt((workp.x-in.x)*(workp.x-in.x) + (workp.y-in.y)*(workp.y-in.y) + (workp.z-in.z)*(workp.z-in.z));
+ workp_v = tmp_v;
+ }
+ mbproc->start.x= mbproc->start.y= mbproc->start.z= 0.0;
}
}
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 6c3775bcbaa..28c3e1c64e6 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -68,9 +68,6 @@
#include "SHD_node.h"
-/* not very important, but the stack solver likes to know a maximum */
-#define MAX_SOCKET 64
-
static ListBase empty_list = {NULL, NULL};
ListBase node_all_composit = {NULL, NULL};
ListBase node_all_shaders = {NULL, NULL};
diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c
index 109f8bd9113..f6a65bd72a5 100644
--- a/source/blender/blenkernel/intern/packedFile.c
+++ b/source/blender/blenkernel/intern/packedFile.c
@@ -185,7 +185,7 @@ PackedFile * newPackedFile(char * filename)
// convert relative filenames to absolute filenames
strcpy(name, filename);
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
// open the file
// and create a PackedFile structure
@@ -286,7 +286,7 @@ int writePackedFile(char * filename, PackedFile *pf, int guimode)
if (guimode) waitcursor(1);
strcpy(name, filename);
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
if (BLI_exists(name)) {
for (number = 1; number <= 999; number++) {
@@ -351,7 +351,7 @@ int checkPackedFile(char * filename, PackedFile * pf)
char name[FILE_MAXDIR + FILE_MAXFILE];
strcpy(name, filename);
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
if (stat(name, &st)) {
ret_val = PF_NOFILE;
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 069dac60412..9dd21cdda4e 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -4565,7 +4565,8 @@ static void particles_fluid_step(Object *ob, ParticleSystem *psys, int cfra)
// ok, start loading
strcpy(filename, ob->fluidsimSettings->surfdataPath);
strcat(filename, suffix);
- BLI_convertstringcode(filename, G.sce, curFrame); // fixed #frame-no
+ BLI_convertstringcode(filename, G.sce);
+ BLI_convertstringframe(filename, curFrame); // fixed #frame-no
strcat(filename, suffix2);
gzf = gzopen(filename, "rb");
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index 3d73ba1e93f..7b727528b3d 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -186,7 +186,7 @@ static int ptcache_path(PTCacheID *pid, char *filename)
sprintf(filename, "//"PTCACHE_PATH"%s", file); /* add blend file name to pointcache dir */
BLI_add_slash(filename);
- BLI_convertstringcode(filename, blendfilename, 0);
+ BLI_convertstringcode(filename, blendfilename);
return strlen(filename);
}
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index 3b14cb8adac..2c5b49246fb 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -109,13 +109,13 @@ PackedFile* sound_find_packedfile(bSound *sound)
// convert sound->name to abolute filename
strcpy(soundname, sound->name);
- BLI_convertstringcode(soundname, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(soundname, G.sce);
search = G.main->sound.first;
while (search) {
if (search->sample && search->sample->packedfile) {
strcpy(searchname, search->sample->name);
- BLI_convertstringcode(searchname, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(searchname, G.sce);
if (BLI_streq(searchname, soundname)) {
pf = search->sample->packedfile;
@@ -125,7 +125,7 @@ PackedFile* sound_find_packedfile(bSound *sound)
if (search->newpackedfile) {
strcpy(searchname, search->name);
- BLI_convertstringcode(searchname, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(searchname, G.sce);
if (BLI_streq(searchname, soundname)) {
pf = search->newpackedfile;
break;
diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index b6552be93a9..872f81ead63 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -218,7 +218,7 @@ int reopen_text(Text *text)
if (!text || !text->name) return 0;
BLI_strncpy(str, text->name, FILE_MAXDIR+FILE_MAXFILE);
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
BLI_split_dirfile_basic(str, NULL, sfile);
fp= fopen(str, "r");
@@ -316,7 +316,7 @@ Text *add_text(char *file)
BLI_strncpy(str, file, FILE_MAXDIR+FILE_MAXFILE);
if (G.scene) /* can be NULL (bg mode) */
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
BLI_split_dirfile_basic(str, NULL, sfile);
fp= fopen(str, "r");
@@ -2037,6 +2037,7 @@ void txt_delete_char (Text *text)
if (txt_has_sel(text)) { /* deleting a selection */
txt_delete_sel(text);
+ return;
}
else if (text->curc== text->curl->len) { /* Appending two lines */
if (text->curl->next) {
@@ -2071,6 +2072,7 @@ void txt_backspace_char (Text *text)
if (txt_has_sel(text)) { /* deleting a selection */
txt_delete_sel(text);
+ return;
}
else if (text->curc==0) { /* Appending two lines */
if (text->curl->prev) {
diff --git a/source/blender/blenkernel/intern/writeavi.c b/source/blender/blenkernel/intern/writeavi.c
index 3d85fe32193..44004eeee80 100644
--- a/source/blender/blenkernel/intern/writeavi.c
+++ b/source/blender/blenkernel/intern/writeavi.c
@@ -120,7 +120,7 @@ void makeavistring (RenderData *rd, char *string)
if (string==0) return;
strcpy(string, rd->pic);
- BLI_convertstringcode(string, G.sce, rd->cfra);
+ BLI_convertstringcode(string, G.sce);
BLI_make_existing_file(string);
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
index 493620a8dce..e79e36a1498 100644
--- a/source/blender/blenkernel/intern/writeffmpeg.c
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
@@ -695,7 +695,8 @@ void makeffmpegstring(char* string) {
if (!string || !exts) return;
strcpy(string, G.scene->r.pic);
- BLI_convertstringcode(string, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(string, G.sce);
+ BLI_convertstringframe(string, G.scene->r.cfra);
BLI_make_existing_file(string);
diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h
index 33567d92c99..e24ccad12fb 100644
--- a/source/blender/blenlib/BLI_blenlib.h
+++ b/source/blender/blenlib/BLI_blenlib.h
@@ -150,7 +150,8 @@ void BLI_cleanup_dir(const char *relabase, char *dir); /* same as above but adds
* @a framenum The framenumber to replace the frame code with.
* @retval Returns true if the path was relative (started with "//").
*/
-int BLI_convertstringcode(char *path, const char *basepath, int framenum);
+int BLI_convertstringcode(char *path, const char *basepath);
+int BLI_convertstringframe(char *path, int frame);
void BLI_makestringcode(const char *relfile, char *file);
diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c
index 66eb63c8dfd..79d3e487712 100644
--- a/source/blender/blenlib/intern/bpath.c
+++ b/source/blender/blenlib/intern/bpath.c
@@ -130,9 +130,9 @@ void BLI_bpathIterator_getPathExpanded( struct BPathIterator *bpi, char *path_ex
libpath = BLI_bpathIterator_getLib(bpi);
if (libpath) { /* check the files location relative to its library path */
- BLI_convertstringcode(path_expanded, libpath, G.scene->r.cfra);
+ BLI_convertstringcode(path_expanded, libpath);
} else { /* local data, use the blend files path */
- BLI_convertstringcode(path_expanded, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(path_expanded, G.sce);
}
}
char* BLI_bpathIterator_getLib( struct BPathIterator *bpi) {
diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c
index c79f1b56f1d..04c4e97aef9 100644
--- a/source/blender/blenlib/intern/util.c
+++ b/source/blender/blenlib/intern/util.c
@@ -874,9 +874,11 @@ void BLI_cleanup_file(const char *relabase, char *dir)
{
short a;
char *start, *eind;
-
- BLI_convertstringcode(dir, relabase, 0);
-
+
+ if (relabase) {
+ BLI_convertstringcode(dir, relabase);
+ }
+
#ifdef WIN32
if(dir[0]=='.') { /* happens for example in FILE_MAIN */
get_default_root(dir);
@@ -1031,10 +1033,78 @@ void BLI_makestringcode(const char *relfile, char *file)
}
}
-int BLI_convertstringcode(char *path, const char *basepath, int framenum)
+
+int BLI_convertstringframe(char *path, int frame)
+{
+ int ch_sta, ch_end, i;
+ /* Insert current frame: file### -> file001 */
+ ch_sta = ch_end = 0;
+ for (i = 0; path[i] != '\0'; i++) {
+ if (path[i] == '\\' || path[i] == '/') {
+ ch_end = 0; /* this is a directory name, dont use any hashes we found */
+ } else if (path[i] == '#') {
+ ch_sta = i;
+ ch_end = ch_sta+1;
+ while (path[ch_end] == '#') {
+ ch_end++;
+ }
+ i = ch_end-1; /* keep searching */
+
+ /* dont break, there may be a slash after this that invalidates the previous #'s */
+ }
+ }
+ if (ch_end) { /* warning, ch_end is the last # +1 */
+ /* Add the frame number? */
+ short numlen, hashlen;
+ char tmp[FILE_MAX];
+
+ char format[16]; /* 6 is realistically the maxframe (300000), so 8 should be enough, but 16 to be safe. */
+ if (((ch_end-1)-ch_sta) >= 16) {
+ ch_end = ch_sta+15; /* disallow values longer then 'format' can hold */
+ }
+
+ strcpy(tmp, path);
+
+ numlen = 1 + (int)log10((double)frame); /* this is the number of chars in the number */
+ hashlen = ch_end - ch_sta;
+
+ sprintf(format, "%d", frame);
+
+ if (numlen==hashlen) { /* simple case */
+ memcpy(tmp+ch_sta, format, numlen);
+ } else if (numlen < hashlen) {
+ memcpy(tmp+ch_sta + (hashlen-numlen), format, numlen); /*dont copy the string terminator */
+ memset(tmp+ch_sta, '0', hashlen-numlen);
+ } else {
+ /* number is longer then number of #'s */
+ if (tmp[ch_end] == '\0') { /* hashes are last, no need to move any string*/
+ /* bad juju - not testing string length here :/ */
+ memcpy(tmp+ch_sta, format, numlen+1); /* add 1 to get the string terminator \0 */
+ } else {
+ /* we need to move the end characters, reuse i */
+ int j;
+
+ i = strlen(tmp); /* +1 to copy the string terminator */
+ j = i + (numlen-hashlen); /* from/to */
+
+ while (i >= ch_end) {
+ tmp[j] = tmp[i];
+ i--;
+ j--;
+ }
+ memcpy(tmp + ch_sta, format, numlen);
+ }
+ }
+ strcpy(path, tmp);
+ return 1;
+ }
+ return 0;
+}
+
+
+int BLI_convertstringcode(char *path, const char *basepath)
{
int wasrelative;
- int ch_sta, ch_end;
char tmp[FILE_MAX];
char base[FILE_MAX];
char vol[3] = {'\0', '\0', '\0'};
@@ -1090,54 +1160,8 @@ int BLI_convertstringcode(char *path, const char *basepath, int framenum)
MEM_freeN(filepart);
}
-
- /* Insert current frame: file### -> file001 */
- ch_end = 0;
- for (ch_sta = 0; tmp[ch_sta] != '\0'; ch_sta++) {
- if (tmp[ch_sta] == '#') {
- ch_end = ch_sta+1;
- while (tmp[ch_end] == '#') {
- ch_end++;
- }
- break;
- }
- }
- if (ch_end) { /* warning, ch_end is the last # +1 */
- /* Add the frame number? */
- short numlen, hashlen;
- char format[16]; /* 6 is realistically the maxframe (300000), so 8 should be enough, but 16 to be safe. */
-
- numlen = 1 + (int)log10((double)framenum); /* this is the number of chars in the number */
- hashlen = ch_end - ch_sta;
-
- sprintf(format, "%d", framenum);
-
- if (numlen==hashlen) { /* simple case */
- memcpy(tmp+ch_sta, format, numlen);
- } else if (numlen < hashlen) {
- memcpy(tmp+ch_sta + (hashlen-numlen), format, numlen); /*dont copy the string terminator */
- memset(tmp+ch_sta, '0', hashlen-numlen);
- } else {
- /* number is longer then number of #'s */
- if (tmp[ch_end] == '\0') { /* hashes are last, no need to move any string*/
- /* bad juju - not testing string length here :/ */
- memcpy(tmp+ch_sta, format, numlen+1); /* add 1 to get the string terminator \0 */
- } else {
- /* we need to move the end characters */
- int i = strlen(tmp); /* +1 to copy the string terminator */
- int j = i + (numlen-hashlen); /* from/to */
- while (i >= ch_end) {
- tmp[j] = tmp[i];
- i--;
- j--;
- }
- memcpy(tmp + ch_sta, format, numlen);
- }
- }
- }
- /* done with file### stuff */
-
strcpy(path, tmp);
+
#ifdef WIN32
/* skip first two chars, which in case of
absolute path will be drive:/blabla and
diff --git a/source/blender/blenloader/intern/genfile.c b/source/blender/blenloader/intern/genfile.c
index 7eb6220066e..87c859de839 100644
--- a/source/blender/blenloader/intern/genfile.c
+++ b/source/blender/blenloader/intern/genfile.c
@@ -213,6 +213,12 @@ void dna_freestructDNA(struct SDNA *sdna)
MEM_freeN(sdna);
}
+static int ispointer(char *name)
+{
+ /* check if pointer or function pointer */
+ return (name[0]=='*' || (name[0]=='(' && name[1]=='*'));
+}
+
static int elementsize(struct SDNA *sdna, short type, short name)
/* call with numbers from struct-array */
{
@@ -224,7 +230,7 @@ static int elementsize(struct SDNA *sdna, short type, short name)
namelen= strlen(cp);
/* is it a pointer or function pointer? */
- if(cp[0]=='*' || cp[1]=='*') {
+ if(ispointer(cp)) {
/* has the naam an extra length? (array) */
mul= 1;
if( cp[namelen-1]==']') mul= arraysize(cp, namelen);
@@ -508,7 +514,7 @@ static void recurs_test_compflags(struct SDNA *sdna, char *compflags, int struct
for(b=0; b<elems; b++, sp+=2) {
if(sp[0]==typenr) {
cp= sdna->names[ sp[1] ];
- if(cp[0]!= '*') {
+ if(!ispointer(cp)) {
compflags[a]= 2;
recurs_test_compflags(sdna, compflags, a);
}
@@ -579,7 +585,7 @@ char *dna_get_structDNA_compareflags(struct SDNA *sdna, struct SDNA *newsdna)
if(strcmp(str1, str2)!=0) break;
/* same type and same name, now pointersize */
- if(str1[0]=='*') {
+ if(ispointer(str1)) {
if(sdna->pointerlen!=newsdna->pointerlen) break;
}
@@ -834,7 +840,7 @@ static void reconstruct_elem(struct SDNA *newsdna, struct SDNA *oldsdna, char *t
if( strcmp(name, oname)==0 ) { /* name equal */
- if( name[0]=='*') { /* pointer afhandelen */
+ if(ispointer(name)) { /* pointer of functionpointer afhandelen */
cast_pointer(newsdna->pointerlen, oldsdna->pointerlen, name, curdata, olddata);
}
else if( strcmp(type, otype)==0 ) { /* type equal */
@@ -851,11 +857,11 @@ static void reconstruct_elem(struct SDNA *newsdna, struct SDNA *oldsdna, char *t
cursize= arraysize(name, strlen(name));
oldsize= arraysize(oname, strlen(oname));
- if( name[0]=='*') { /* handle pointer */
+ if(ispointer(name)) { /* handle pointer or functionpointer */
if(cursize>oldsize) cast_pointer(newsdna->pointerlen, oldsdna->pointerlen, oname, curdata, olddata);
else cast_pointer(newsdna->pointerlen, oldsdna->pointerlen, name, curdata, olddata);
}
- else if(name[0]=='*' || strcmp(type, otype)==0 ) { /* type equal */
+ else if(strcmp(type, otype)==0 ) { /* type equal */
mul= len/oldsize;
mul*= MIN2(cursize, oldsize);
memcpy(curdata, olddata, mul);
@@ -909,7 +915,7 @@ static void reconstruct_struct(struct SDNA *newsdna, struct SDNA *oldsdna, char
elen= elementsize(newsdna, spc[0], spc[1]);
/* test: is type a struct? */
- if(spc[0]>=firststructtypenr && name[0]!='*') {
+ if(spc[0]>=firststructtypenr && !ispointer(name)) {
/* where does the old struct data start (and is there an old one?) */
cpo= find_elem(oldsdna, type, name, spo, data, &sppo);
@@ -976,7 +982,7 @@ void dna_switch_endian_struct(struct SDNA *oldsdna, int oldSDNAnr, char *data)
elen= elementsize(oldsdna, spc[0], spc[1]);
/* test: is type a struct? */
- if(spc[0]>=firststructtypenr && name[0]!='*') {
+ if(spc[0]>=firststructtypenr && !ispointer(name)) {
/* where does the old data start (is there one?) */
cpo= find_elem(oldsdna, type, name, spo, data, 0);
if(cpo) {
@@ -993,7 +999,7 @@ void dna_switch_endian_struct(struct SDNA *oldsdna, int oldSDNAnr, char *data)
}
else {
- if( name[0]=='*' ) {
+ if(ispointer(name)) {
if(oldsdna->pointerlen==8) {
mul= arraysize(name, strlen(name));
diff --git a/extern/freestyle/AUTHORS.TXT b/source/blender/freestyle/AUTHORS.TXT
index 27cdb70d5ec..27cdb70d5ec 100755
--- a/extern/freestyle/AUTHORS.TXT
+++ b/source/blender/freestyle/AUTHORS.TXT
diff --git a/extern/freestyle/BUGS.TXT b/source/blender/freestyle/BUGS.TXT
index c5bad029a47..c5bad029a47 100755
--- a/extern/freestyle/BUGS.TXT
+++ b/source/blender/freestyle/BUGS.TXT
diff --git a/source/blender/freestyle/CHANGELOG.TXT b/source/blender/freestyle/CHANGELOG.TXT
new file mode 100755
index 00000000000..cb9f088bc1f
--- /dev/null
+++ b/source/blender/freestyle/CHANGELOG.TXT
@@ -0,0 +1,47 @@
+2008-03-06 - freestyle-2.2.0
+ * Fixed a bug related to the ViewShape IDs that caused the ray casting to crash.
+ * Fixed a bug in the style module insertion.
+
+2008-03-02 - freestyle-2.1.1
+ * Added the management of texture coordinates in the scene graph and the rendering.
+ * The reps in the scene graph are now assigned ids based on the lib3ds nodes ids. These ids are transmitted to the WingedEdge Shapes.
+2007-10-05 - freestyle-2.0.1
+
+ * Enforced node construction from lib3ds (thanks to Thomas Netter)
+ * Reverted to not using bundles by default on MacOSX. Activating bundles can be made by uncommenting the lib_bundle line of the CONFIG variable in Config.pri
+ * Added a NodeCamera to the scene graph.
+ * Made sure the display lists were compiled AND executed (GL_COMPILE -> GL_COMPILE_AND_EXECUTE) for IndexedFaceSet.
+ * Added a visitor to deallocate memory on the graphics card (display lists right now).
+ * Modified the grid to use a visitor pattern for ray casting and grid traversal.
+
+
+
+2007-05-06 - freestyle-2.0.0
+
+ * Switched to Qt 4.2.3, swig 1.3.31, visual c++ 2005, gcc 4.0.1, qglviewer 2.2.5-1
+ * Added texture coordinates to scene graph
+ * Made the grid more robust
+ * Now compiles on MacOSX
+ * Fixed the brush texture problem: the full path to the texture was used instead of the base name and that was breaking the search path algorithm
+
+
+2006-06-18 - freestyle-1.0.2
+
+ * Fixed a bug related to the loading of OpenGL extensions.
+
+
+2005-07-25 - freestyle-1.0.1
+
+ * Upgrade to QGLViewer 2.0.4
+ * Added the FREESTYLE_DIR environment variable.
+ It must be set to the freestyle directory for
+ all releases except the pre-compiled windows version.
+ * Fixed the unix path separator.
+ * Added the "Help>Control bindings" menu action.
+ * Fixed the style modules according to Python 2.4 standards.
+
+
+2005-04-05 - freestyle-1.0.0
+
+ * Initial release
+
diff --git a/extern/freestyle/COPYRIGHT.TXT b/source/blender/freestyle/COPYRIGHT.TXT
index cd37bd16786..cd37bd16786 100755
--- a/extern/freestyle/COPYRIGHT.TXT
+++ b/source/blender/freestyle/COPYRIGHT.TXT
diff --git a/extern/freestyle/INSTALL.TXT b/source/blender/freestyle/INSTALL.TXT
index 4fab1275116..4fab1275116 100755
--- a/extern/freestyle/INSTALL.TXT
+++ b/source/blender/freestyle/INSTALL.TXT
diff --git a/extern/freestyle/LICENSE.TXT b/source/blender/freestyle/LICENSE.TXT
index 5b6e7c66c27..5b6e7c66c27 100755
--- a/extern/freestyle/LICENSE.TXT
+++ b/source/blender/freestyle/LICENSE.TXT
diff --git a/extern/freestyle/README.TXT b/source/blender/freestyle/README.TXT
index b0d026c8b9b..b0d026c8b9b 100755
--- a/extern/freestyle/README.TXT
+++ b/source/blender/freestyle/README.TXT
diff --git a/source/blender/freestyle/SConscript b/source/blender/freestyle/SConscript
new file mode 100644
index 00000000000..ce8b9d0f224
--- /dev/null
+++ b/source/blender/freestyle/SConscript
@@ -0,0 +1,10 @@
+#!/usr/bin/python
+# import sys
+# Import ('env')
+#
+# sources = ['']
+#
+# incs = ' '
+# incs += ' ' + env['BF_LIB3DS_INC']
+#
+# env.BlenderLib ( 'bf_freestyle', sources, Split(incs), Split(defs), libtype=['international','player'], priority=[0, 205] )
diff --git a/extern/freestyle/THANKS.TXT b/source/blender/freestyle/THANKS.TXT
index 3147715a63f..3147715a63f 100755
--- a/extern/freestyle/THANKS.TXT
+++ b/source/blender/freestyle/THANKS.TXT
diff --git a/extern/freestyle/TODO.TXT b/source/blender/freestyle/TODO.TXT
index 2e24752e026..2e24752e026 100755
--- a/extern/freestyle/TODO.TXT
+++ b/source/blender/freestyle/TODO.TXT
diff --git a/extern/freestyle/src/Config.pri b/source/blender/freestyle/src/Config.pri
index 68763dba502..68763dba502 100755
--- a/extern/freestyle/src/Config.pri
+++ b/source/blender/freestyle/src/Config.pri
diff --git a/extern/freestyle/src/Freestyle-vc7-debug.sln b/source/blender/freestyle/src/Freestyle-vc7-debug.sln
index 937f3f9faf9..937f3f9faf9 100755
--- a/extern/freestyle/src/Freestyle-vc7-debug.sln
+++ b/source/blender/freestyle/src/Freestyle-vc7-debug.sln
diff --git a/extern/freestyle/src/Freestyle-vc7-release.sln b/source/blender/freestyle/src/Freestyle-vc7-release.sln
index 74d5dc77f86..74d5dc77f86 100755
--- a/extern/freestyle/src/Freestyle-vc7-release.sln
+++ b/source/blender/freestyle/src/Freestyle-vc7-release.sln
diff --git a/extern/freestyle/src/Freestyle-vc8-debug.sln b/source/blender/freestyle/src/Freestyle-vc8-debug.sln
index 097ca30a174..097ca30a174 100755
--- a/extern/freestyle/src/Freestyle-vc8-debug.sln
+++ b/source/blender/freestyle/src/Freestyle-vc8-debug.sln
diff --git a/extern/freestyle/src/Freestyle-vc8-release.sln b/source/blender/freestyle/src/Freestyle-vc8-release.sln
index 82b22ff0c3e..82b22ff0c3e 100755
--- a/extern/freestyle/src/Freestyle-vc8-release.sln
+++ b/source/blender/freestyle/src/Freestyle-vc8-release.sln
diff --git a/extern/freestyle/src/Makefile.pro b/source/blender/freestyle/src/Makefile.pro
index 0e64bb342c3..0e64bb342c3 100755
--- a/extern/freestyle/src/Makefile.pro
+++ b/source/blender/freestyle/src/Makefile.pro
diff --git a/extern/freestyle/src/app/AppAboutWindow.cpp b/source/blender/freestyle/src/app/AppAboutWindow.cpp
index d20e3f4e1ac..d20e3f4e1ac 100755
--- a/extern/freestyle/src/app/AppAboutWindow.cpp
+++ b/source/blender/freestyle/src/app/AppAboutWindow.cpp
diff --git a/extern/freestyle/src/app/AppAboutWindow.h b/source/blender/freestyle/src/app/AppAboutWindow.h
index ee04d27ae71..ee04d27ae71 100755
--- a/extern/freestyle/src/app/AppAboutWindow.h
+++ b/source/blender/freestyle/src/app/AppAboutWindow.h
diff --git a/extern/freestyle/src/app/AppCanvas.cpp b/source/blender/freestyle/src/app/AppCanvas.cpp
index 60d36880c12..60d36880c12 100755
--- a/extern/freestyle/src/app/AppCanvas.cpp
+++ b/source/blender/freestyle/src/app/AppCanvas.cpp
diff --git a/extern/freestyle/src/app/AppCanvas.h b/source/blender/freestyle/src/app/AppCanvas.h
index 703970c0fb1..703970c0fb1 100755
--- a/extern/freestyle/src/app/AppCanvas.h
+++ b/source/blender/freestyle/src/app/AppCanvas.h
diff --git a/extern/freestyle/src/app/AppConfig.cpp b/source/blender/freestyle/src/app/AppConfig.cpp
index 217f58ee806..217f58ee806 100755
--- a/extern/freestyle/src/app/AppConfig.cpp
+++ b/source/blender/freestyle/src/app/AppConfig.cpp
diff --git a/extern/freestyle/src/app/AppConfig.h b/source/blender/freestyle/src/app/AppConfig.h
index 54e00571275..54e00571275 100755
--- a/extern/freestyle/src/app/AppConfig.h
+++ b/source/blender/freestyle/src/app/AppConfig.h
diff --git a/extern/freestyle/src/app/AppDensityCurvesWindow.cpp b/source/blender/freestyle/src/app/AppDensityCurvesWindow.cpp
index fe2ae994f77..fe2ae994f77 100755
--- a/extern/freestyle/src/app/AppDensityCurvesWindow.cpp
+++ b/source/blender/freestyle/src/app/AppDensityCurvesWindow.cpp
diff --git a/extern/freestyle/src/app/AppDensityCurvesWindow.h b/source/blender/freestyle/src/app/AppDensityCurvesWindow.h
index d7091440e06..d7091440e06 100755
--- a/extern/freestyle/src/app/AppDensityCurvesWindow.h
+++ b/source/blender/freestyle/src/app/AppDensityCurvesWindow.h
diff --git a/extern/freestyle/src/app/AppGL2DCurvesViewer.cpp b/source/blender/freestyle/src/app/AppGL2DCurvesViewer.cpp
index 0915a4c3cbd..0915a4c3cbd 100755
--- a/extern/freestyle/src/app/AppGL2DCurvesViewer.cpp
+++ b/source/blender/freestyle/src/app/AppGL2DCurvesViewer.cpp
diff --git a/extern/freestyle/src/app/AppGL2DCurvesViewer.h b/source/blender/freestyle/src/app/AppGL2DCurvesViewer.h
index c0bb8b4109c..c0bb8b4109c 100755
--- a/extern/freestyle/src/app/AppGL2DCurvesViewer.h
+++ b/source/blender/freestyle/src/app/AppGL2DCurvesViewer.h
diff --git a/extern/freestyle/src/app/AppGLWidget.cpp b/source/blender/freestyle/src/app/AppGLWidget.cpp
index d59ad716c18..d59ad716c18 100755
--- a/extern/freestyle/src/app/AppGLWidget.cpp
+++ b/source/blender/freestyle/src/app/AppGLWidget.cpp
diff --git a/extern/freestyle/src/app/AppGLWidget.h b/source/blender/freestyle/src/app/AppGLWidget.h
index 24bb2c7229b..24bb2c7229b 100755
--- a/extern/freestyle/src/app/AppGLWidget.h
+++ b/source/blender/freestyle/src/app/AppGLWidget.h
diff --git a/extern/freestyle/src/app/AppInteractiveShaderWindow.cpp b/source/blender/freestyle/src/app/AppInteractiveShaderWindow.cpp
index b074c85f9f9..b074c85f9f9 100755
--- a/extern/freestyle/src/app/AppInteractiveShaderWindow.cpp
+++ b/source/blender/freestyle/src/app/AppInteractiveShaderWindow.cpp
diff --git a/extern/freestyle/src/app/AppInteractiveShaderWindow.h b/source/blender/freestyle/src/app/AppInteractiveShaderWindow.h
index 58f2aa1f01a..58f2aa1f01a 100755
--- a/extern/freestyle/src/app/AppInteractiveShaderWindow.h
+++ b/source/blender/freestyle/src/app/AppInteractiveShaderWindow.h
diff --git a/extern/freestyle/src/app/AppMainWindow.cpp b/source/blender/freestyle/src/app/AppMainWindow.cpp
index 03b4f3a28ea..03b4f3a28ea 100755
--- a/extern/freestyle/src/app/AppMainWindow.cpp
+++ b/source/blender/freestyle/src/app/AppMainWindow.cpp
diff --git a/extern/freestyle/src/app/AppMainWindow.h b/source/blender/freestyle/src/app/AppMainWindow.h
index 750283f85ba..750283f85ba 100755
--- a/extern/freestyle/src/app/AppMainWindow.h
+++ b/source/blender/freestyle/src/app/AppMainWindow.h
diff --git a/extern/freestyle/src/app/AppOptionsWindow.cpp b/source/blender/freestyle/src/app/AppOptionsWindow.cpp
index 6c3dc9a83aa..6c3dc9a83aa 100755
--- a/extern/freestyle/src/app/AppOptionsWindow.cpp
+++ b/source/blender/freestyle/src/app/AppOptionsWindow.cpp
diff --git a/extern/freestyle/src/app/AppOptionsWindow.h b/source/blender/freestyle/src/app/AppOptionsWindow.h
index aaa964739a6..aaa964739a6 100755
--- a/extern/freestyle/src/app/AppOptionsWindow.h
+++ b/source/blender/freestyle/src/app/AppOptionsWindow.h
diff --git a/extern/freestyle/src/app/AppProgressBar.cpp b/source/blender/freestyle/src/app/AppProgressBar.cpp
index a4d18d07dd3..a4d18d07dd3 100755
--- a/extern/freestyle/src/app/AppProgressBar.cpp
+++ b/source/blender/freestyle/src/app/AppProgressBar.cpp
diff --git a/extern/freestyle/src/app/AppProgressBar.h b/source/blender/freestyle/src/app/AppProgressBar.h
index 09cc500a981..09cc500a981 100755
--- a/extern/freestyle/src/app/AppProgressBar.h
+++ b/source/blender/freestyle/src/app/AppProgressBar.h
diff --git a/extern/freestyle/src/app/AppStyleWindow.cpp b/source/blender/freestyle/src/app/AppStyleWindow.cpp
index d8be753b498..d8be753b498 100755
--- a/extern/freestyle/src/app/AppStyleWindow.cpp
+++ b/source/blender/freestyle/src/app/AppStyleWindow.cpp
diff --git a/extern/freestyle/src/app/AppStyleWindow.h b/source/blender/freestyle/src/app/AppStyleWindow.h
index a9339abf9c8..a9339abf9c8 100755
--- a/extern/freestyle/src/app/AppStyleWindow.h
+++ b/source/blender/freestyle/src/app/AppStyleWindow.h
diff --git a/extern/freestyle/src/app/ConfigIO.cpp b/source/blender/freestyle/src/app/ConfigIO.cpp
index 8165deb07fd..8165deb07fd 100755
--- a/extern/freestyle/src/app/ConfigIO.cpp
+++ b/source/blender/freestyle/src/app/ConfigIO.cpp
diff --git a/extern/freestyle/src/app/ConfigIO.h b/source/blender/freestyle/src/app/ConfigIO.h
index 15f3cd07575..15f3cd07575 100755
--- a/extern/freestyle/src/app/ConfigIO.h
+++ b/source/blender/freestyle/src/app/ConfigIO.h
diff --git a/extern/freestyle/src/app/Controller.cpp b/source/blender/freestyle/src/app/Controller.cpp
index ac41b31ac78..ac41b31ac78 100755
--- a/extern/freestyle/src/app/Controller.cpp
+++ b/source/blender/freestyle/src/app/Controller.cpp
diff --git a/extern/freestyle/src/app/Controller.h b/source/blender/freestyle/src/app/Controller.h
index 95b97ebcda3..95b97ebcda3 100755
--- a/extern/freestyle/src/app/Controller.h
+++ b/source/blender/freestyle/src/app/Controller.h
diff --git a/extern/freestyle/src/app/Main.cpp b/source/blender/freestyle/src/app/Main.cpp
index ae4d28017c5..ae4d28017c5 100755
--- a/extern/freestyle/src/app/Main.cpp
+++ b/source/blender/freestyle/src/app/Main.cpp
diff --git a/extern/freestyle/src/app/QGLBasicWidget.cpp b/source/blender/freestyle/src/app/QGLBasicWidget.cpp
index 44b5e0de224..44b5e0de224 100755
--- a/extern/freestyle/src/app/QGLBasicWidget.cpp
+++ b/source/blender/freestyle/src/app/QGLBasicWidget.cpp
diff --git a/extern/freestyle/src/app/QGLBasicWidget.h b/source/blender/freestyle/src/app/QGLBasicWidget.h
index 9b29a641f28..9b29a641f28 100755
--- a/extern/freestyle/src/app/QGLBasicWidget.h
+++ b/source/blender/freestyle/src/app/QGLBasicWidget.h
diff --git a/extern/freestyle/src/app/QStyleModuleSyntaxHighlighter.cpp b/source/blender/freestyle/src/app/QStyleModuleSyntaxHighlighter.cpp
index 16ea53f157c..16ea53f157c 100755
--- a/extern/freestyle/src/app/QStyleModuleSyntaxHighlighter.cpp
+++ b/source/blender/freestyle/src/app/QStyleModuleSyntaxHighlighter.cpp
diff --git a/extern/freestyle/src/app/QStyleModuleSyntaxHighlighter.h b/source/blender/freestyle/src/app/QStyleModuleSyntaxHighlighter.h
index ff3591ac45d..ff3591ac45d 100755
--- a/extern/freestyle/src/app/QStyleModuleSyntaxHighlighter.h
+++ b/source/blender/freestyle/src/app/QStyleModuleSyntaxHighlighter.h
diff --git a/extern/freestyle/src/app/app.pro b/source/blender/freestyle/src/app/app.pro
index e2ba9aec6f7..e2ba9aec6f7 100755
--- a/extern/freestyle/src/app/app.pro
+++ b/source/blender/freestyle/src/app/app.pro
diff --git a/extern/freestyle/src/app/appmainwindowbase4.ui b/source/blender/freestyle/src/app/appmainwindowbase4.ui
index 13e758d49dd..13e758d49dd 100755
--- a/extern/freestyle/src/app/appmainwindowbase4.ui
+++ b/source/blender/freestyle/src/app/appmainwindowbase4.ui
diff --git a/extern/freestyle/src/app/densitycurveswindow4.ui b/source/blender/freestyle/src/app/densitycurveswindow4.ui
index 1a35e3247d1..1a35e3247d1 100755
--- a/extern/freestyle/src/app/densitycurveswindow4.ui
+++ b/source/blender/freestyle/src/app/densitycurveswindow4.ui
diff --git a/extern/freestyle/src/app/freestyle.qrc b/source/blender/freestyle/src/app/freestyle.qrc
index b37a6702af6..b37a6702af6 100755
--- a/extern/freestyle/src/app/freestyle.qrc
+++ b/source/blender/freestyle/src/app/freestyle.qrc
diff --git a/extern/freestyle/src/app/icons/add.png b/source/blender/freestyle/src/app/icons/add.png
index d3388dcb3a9..d3388dcb3a9 100755
--- a/extern/freestyle/src/app/icons/add.png
+++ b/source/blender/freestyle/src/app/icons/add.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/arrow_down.png b/source/blender/freestyle/src/app/icons/arrow_down.png
index 6cf2e9bba26..6cf2e9bba26 100755
--- a/extern/freestyle/src/app/icons/arrow_down.png
+++ b/source/blender/freestyle/src/app/icons/arrow_down.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/arrow_left.png b/source/blender/freestyle/src/app/icons/arrow_left.png
index 72a5c462af6..72a5c462af6 100755
--- a/extern/freestyle/src/app/icons/arrow_left.png
+++ b/source/blender/freestyle/src/app/icons/arrow_left.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/arrow_right.png b/source/blender/freestyle/src/app/icons/arrow_right.png
index f7e5c3b37e3..f7e5c3b37e3 100755
--- a/extern/freestyle/src/app/icons/arrow_right.png
+++ b/source/blender/freestyle/src/app/icons/arrow_right.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/arrow_up.png b/source/blender/freestyle/src/app/icons/arrow_up.png
index 993a574b15a..993a574b15a 100755
--- a/extern/freestyle/src/app/icons/arrow_up.png
+++ b/source/blender/freestyle/src/app/icons/arrow_up.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/clear.png b/source/blender/freestyle/src/app/icons/clear.png
index 1e3b2e37bd9..1e3b2e37bd9 100755
--- a/extern/freestyle/src/app/icons/clear.png
+++ b/source/blender/freestyle/src/app/icons/clear.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/close.png b/source/blender/freestyle/src/app/icons/close.png
index 2042ec3d1ba..2042ec3d1ba 100755
--- a/extern/freestyle/src/app/icons/close.png
+++ b/source/blender/freestyle/src/app/icons/close.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/edit.png b/source/blender/freestyle/src/app/icons/edit.png
index 244751b1933..244751b1933 100755
--- a/extern/freestyle/src/app/icons/edit.png
+++ b/source/blender/freestyle/src/app/icons/edit.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/eye0.png b/source/blender/freestyle/src/app/icons/eye0.png
index 5f6d873cb0c..5f6d873cb0c 100755
--- a/extern/freestyle/src/app/icons/eye0.png
+++ b/source/blender/freestyle/src/app/icons/eye0.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/eye1.png b/source/blender/freestyle/src/app/icons/eye1.png
index f762b66b482..f762b66b482 100755
--- a/extern/freestyle/src/app/icons/eye1.png
+++ b/source/blender/freestyle/src/app/icons/eye1.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/folder.png b/source/blender/freestyle/src/app/icons/folder.png
index 3a99ad5ee92..3a99ad5ee92 100755
--- a/extern/freestyle/src/app/icons/folder.png
+++ b/source/blender/freestyle/src/app/icons/folder.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/home.png b/source/blender/freestyle/src/app/icons/home.png
index ec4b22098b2..ec4b22098b2 100755
--- a/extern/freestyle/src/app/icons/home.png
+++ b/source/blender/freestyle/src/app/icons/home.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/mod0.png b/source/blender/freestyle/src/app/icons/mod0.png
index 816d814528a..816d814528a 100755
--- a/extern/freestyle/src/app/icons/mod0.png
+++ b/source/blender/freestyle/src/app/icons/mod0.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/mod1.png b/source/blender/freestyle/src/app/icons/mod1.png
index c7c66183800..c7c66183800 100755
--- a/extern/freestyle/src/app/icons/mod1.png
+++ b/source/blender/freestyle/src/app/icons/mod1.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/ok.png b/source/blender/freestyle/src/app/icons/ok.png
index 31c064ba922..31c064ba922 100755
--- a/extern/freestyle/src/app/icons/ok.png
+++ b/source/blender/freestyle/src/app/icons/ok.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/reload.png b/source/blender/freestyle/src/app/icons/reload.png
index d26c280f1ac..d26c280f1ac 100755
--- a/extern/freestyle/src/app/icons/reload.png
+++ b/source/blender/freestyle/src/app/icons/reload.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/remove.png b/source/blender/freestyle/src/app/icons/remove.png
index 86d8c38a7f8..86d8c38a7f8 100755
--- a/extern/freestyle/src/app/icons/remove.png
+++ b/source/blender/freestyle/src/app/icons/remove.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/save.png b/source/blender/freestyle/src/app/icons/save.png
index 932100d98e9..932100d98e9 100755
--- a/extern/freestyle/src/app/icons/save.png
+++ b/source/blender/freestyle/src/app/icons/save.png
Binary files differ
diff --git a/extern/freestyle/src/app/icons/save_as.png b/source/blender/freestyle/src/app/icons/save_as.png
index 2c8b3f3e7b4..2c8b3f3e7b4 100755
--- a/extern/freestyle/src/app/icons/save_as.png
+++ b/source/blender/freestyle/src/app/icons/save_as.png
Binary files differ
diff --git a/extern/freestyle/src/app/interactiveshaderwindow4.ui b/source/blender/freestyle/src/app/interactiveshaderwindow4.ui
index e17442ad43e..e17442ad43e 100755
--- a/extern/freestyle/src/app/interactiveshaderwindow4.ui
+++ b/source/blender/freestyle/src/app/interactiveshaderwindow4.ui
diff --git a/extern/freestyle/src/app/optionswindow4.ui b/source/blender/freestyle/src/app/optionswindow4.ui
index 48c322c6d84..48c322c6d84 100755
--- a/extern/freestyle/src/app/optionswindow4.ui
+++ b/source/blender/freestyle/src/app/optionswindow4.ui
diff --git a/extern/freestyle/src/app/progressdialog4.ui b/source/blender/freestyle/src/app/progressdialog4.ui
index 78cc67ed440..78cc67ed440 100755
--- a/extern/freestyle/src/app/progressdialog4.ui
+++ b/source/blender/freestyle/src/app/progressdialog4.ui
diff --git a/extern/freestyle/src/app/src.pri b/source/blender/freestyle/src/app/src.pri
index 2fcc9146216..2fcc9146216 100755
--- a/extern/freestyle/src/app/src.pri
+++ b/source/blender/freestyle/src/app/src.pri
diff --git a/extern/freestyle/src/app/stylewindow4.ui b/source/blender/freestyle/src/app/stylewindow4.ui
index c4ff5f656ae..c4ff5f656ae 100755
--- a/extern/freestyle/src/app/stylewindow4.ui
+++ b/source/blender/freestyle/src/app/stylewindow4.ui
diff --git a/extern/freestyle/src/build_bundle.macosx.py b/source/blender/freestyle/src/build_bundle.macosx.py
index e97153f269c..e97153f269c 100755
--- a/extern/freestyle/src/build_bundle.macosx.py
+++ b/source/blender/freestyle/src/build_bundle.macosx.py
diff --git a/extern/freestyle/src/geometry/BBox.h b/source/blender/freestyle/src/geometry/BBox.h
index 9c46d7918e2..9c46d7918e2 100755
--- a/extern/freestyle/src/geometry/BBox.h
+++ b/source/blender/freestyle/src/geometry/BBox.h
diff --git a/extern/freestyle/src/geometry/Bezier.cpp b/source/blender/freestyle/src/geometry/Bezier.cpp
index 8f9771f29d3..8f9771f29d3 100755
--- a/extern/freestyle/src/geometry/Bezier.cpp
+++ b/source/blender/freestyle/src/geometry/Bezier.cpp
diff --git a/extern/freestyle/src/geometry/Bezier.h b/source/blender/freestyle/src/geometry/Bezier.h
index acae71bbb2c..acae71bbb2c 100755
--- a/extern/freestyle/src/geometry/Bezier.h
+++ b/source/blender/freestyle/src/geometry/Bezier.h
diff --git a/extern/freestyle/src/geometry/FastGrid.cpp b/source/blender/freestyle/src/geometry/FastGrid.cpp
index b090a3df67f..b090a3df67f 100755
--- a/extern/freestyle/src/geometry/FastGrid.cpp
+++ b/source/blender/freestyle/src/geometry/FastGrid.cpp
diff --git a/extern/freestyle/src/geometry/FastGrid.h b/source/blender/freestyle/src/geometry/FastGrid.h
index e620ff24385..e620ff24385 100755
--- a/extern/freestyle/src/geometry/FastGrid.h
+++ b/source/blender/freestyle/src/geometry/FastGrid.h
diff --git a/extern/freestyle/src/geometry/FitCurve.cpp b/source/blender/freestyle/src/geometry/FitCurve.cpp
index ade40b050ca..ade40b050ca 100755
--- a/extern/freestyle/src/geometry/FitCurve.cpp
+++ b/source/blender/freestyle/src/geometry/FitCurve.cpp
diff --git a/extern/freestyle/src/geometry/FitCurve.h b/source/blender/freestyle/src/geometry/FitCurve.h
index ed7cbe34780..ed7cbe34780 100755
--- a/extern/freestyle/src/geometry/FitCurve.h
+++ b/source/blender/freestyle/src/geometry/FitCurve.h
diff --git a/extern/freestyle/src/geometry/Geom.h b/source/blender/freestyle/src/geometry/Geom.h
index ac94213fe98..ac94213fe98 100755
--- a/extern/freestyle/src/geometry/Geom.h
+++ b/source/blender/freestyle/src/geometry/Geom.h
diff --git a/extern/freestyle/src/geometry/GeomCleaner.cpp b/source/blender/freestyle/src/geometry/GeomCleaner.cpp
index c148c521a46..c148c521a46 100755
--- a/extern/freestyle/src/geometry/GeomCleaner.cpp
+++ b/source/blender/freestyle/src/geometry/GeomCleaner.cpp
diff --git a/extern/freestyle/src/geometry/GeomCleaner.h b/source/blender/freestyle/src/geometry/GeomCleaner.h
index d78d90ccb4a..d78d90ccb4a 100755
--- a/extern/freestyle/src/geometry/GeomCleaner.h
+++ b/source/blender/freestyle/src/geometry/GeomCleaner.h
diff --git a/extern/freestyle/src/geometry/GeomUtils.cpp b/source/blender/freestyle/src/geometry/GeomUtils.cpp
index fd36e81ca77..fd36e81ca77 100755
--- a/extern/freestyle/src/geometry/GeomUtils.cpp
+++ b/source/blender/freestyle/src/geometry/GeomUtils.cpp
diff --git a/extern/freestyle/src/geometry/GeomUtils.h b/source/blender/freestyle/src/geometry/GeomUtils.h
index 53c94c22f8b..53c94c22f8b 100755
--- a/extern/freestyle/src/geometry/GeomUtils.h
+++ b/source/blender/freestyle/src/geometry/GeomUtils.h
diff --git a/extern/freestyle/src/geometry/Grid.cpp b/source/blender/freestyle/src/geometry/Grid.cpp
index 59b730358bc..59b730358bc 100755
--- a/extern/freestyle/src/geometry/Grid.cpp
+++ b/source/blender/freestyle/src/geometry/Grid.cpp
diff --git a/extern/freestyle/src/geometry/Grid.h b/source/blender/freestyle/src/geometry/Grid.h
index 6197721bb45..6197721bb45 100755
--- a/extern/freestyle/src/geometry/Grid.h
+++ b/source/blender/freestyle/src/geometry/Grid.h
diff --git a/extern/freestyle/src/geometry/HashGrid.cpp b/source/blender/freestyle/src/geometry/HashGrid.cpp
index 3cf845d57ef..3cf845d57ef 100755
--- a/extern/freestyle/src/geometry/HashGrid.cpp
+++ b/source/blender/freestyle/src/geometry/HashGrid.cpp
diff --git a/extern/freestyle/src/geometry/HashGrid.h b/source/blender/freestyle/src/geometry/HashGrid.h
index f6605957676..f6605957676 100755
--- a/extern/freestyle/src/geometry/HashGrid.h
+++ b/source/blender/freestyle/src/geometry/HashGrid.h
diff --git a/extern/freestyle/src/geometry/Noise.cpp b/source/blender/freestyle/src/geometry/Noise.cpp
index 396fc3bbb47..396fc3bbb47 100755
--- a/extern/freestyle/src/geometry/Noise.cpp
+++ b/source/blender/freestyle/src/geometry/Noise.cpp
diff --git a/extern/freestyle/src/geometry/Noise.h b/source/blender/freestyle/src/geometry/Noise.h
index 00cebbb451e..00cebbb451e 100755
--- a/extern/freestyle/src/geometry/Noise.h
+++ b/source/blender/freestyle/src/geometry/Noise.h
diff --git a/extern/freestyle/src/geometry/Polygon.h b/source/blender/freestyle/src/geometry/Polygon.h
index f9c4c78d424..f9c4c78d424 100755
--- a/extern/freestyle/src/geometry/Polygon.h
+++ b/source/blender/freestyle/src/geometry/Polygon.h
diff --git a/extern/freestyle/src/geometry/SweepLine.h b/source/blender/freestyle/src/geometry/SweepLine.h
index e3fb4ad8c0c..e3fb4ad8c0c 100755
--- a/extern/freestyle/src/geometry/SweepLine.h
+++ b/source/blender/freestyle/src/geometry/SweepLine.h
diff --git a/extern/freestyle/src/geometry/VecMat.h b/source/blender/freestyle/src/geometry/VecMat.h
index 9bbec3b1349..9bbec3b1349 100755
--- a/extern/freestyle/src/geometry/VecMat.h
+++ b/source/blender/freestyle/src/geometry/VecMat.h
diff --git a/extern/freestyle/src/geometry/geometry.pro b/source/blender/freestyle/src/geometry/geometry.pro
index a63aa6483b4..a63aa6483b4 100755
--- a/extern/freestyle/src/geometry/geometry.pro
+++ b/source/blender/freestyle/src/geometry/geometry.pro
diff --git a/extern/freestyle/src/geometry/matrix_util.cpp b/source/blender/freestyle/src/geometry/matrix_util.cpp
index 2117b06e62f..2117b06e62f 100755
--- a/extern/freestyle/src/geometry/matrix_util.cpp
+++ b/source/blender/freestyle/src/geometry/matrix_util.cpp
diff --git a/extern/freestyle/src/geometry/matrix_util.h b/source/blender/freestyle/src/geometry/matrix_util.h
index a990413c403..a990413c403 100755
--- a/extern/freestyle/src/geometry/matrix_util.h
+++ b/source/blender/freestyle/src/geometry/matrix_util.h
diff --git a/extern/freestyle/src/geometry/normal_cycle.cpp b/source/blender/freestyle/src/geometry/normal_cycle.cpp
index b456ced8331..b456ced8331 100755
--- a/extern/freestyle/src/geometry/normal_cycle.cpp
+++ b/source/blender/freestyle/src/geometry/normal_cycle.cpp
diff --git a/extern/freestyle/src/geometry/normal_cycle.h b/source/blender/freestyle/src/geometry/normal_cycle.h
index 41fbf7b3fab..41fbf7b3fab 100755
--- a/extern/freestyle/src/geometry/normal_cycle.h
+++ b/source/blender/freestyle/src/geometry/normal_cycle.h
diff --git a/extern/freestyle/src/geometry/src.pri b/source/blender/freestyle/src/geometry/src.pri
index a35760fe892..a35760fe892 100755
--- a/extern/freestyle/src/geometry/src.pri
+++ b/source/blender/freestyle/src/geometry/src.pri
diff --git a/extern/freestyle/src/image/GaussianFilter.cpp b/source/blender/freestyle/src/image/GaussianFilter.cpp
index 97c2aedc62e..97c2aedc62e 100755
--- a/extern/freestyle/src/image/GaussianFilter.cpp
+++ b/source/blender/freestyle/src/image/GaussianFilter.cpp
diff --git a/extern/freestyle/src/image/GaussianFilter.h b/source/blender/freestyle/src/image/GaussianFilter.h
index c75177541d3..c75177541d3 100755
--- a/extern/freestyle/src/image/GaussianFilter.h
+++ b/source/blender/freestyle/src/image/GaussianFilter.h
diff --git a/extern/freestyle/src/image/Image.h b/source/blender/freestyle/src/image/Image.h
index 83d6785e32f..83d6785e32f 100755
--- a/extern/freestyle/src/image/Image.h
+++ b/source/blender/freestyle/src/image/Image.h
diff --git a/extern/freestyle/src/image/ImagePyramid.cpp b/source/blender/freestyle/src/image/ImagePyramid.cpp
index 45c02004d1c..45c02004d1c 100755
--- a/extern/freestyle/src/image/ImagePyramid.cpp
+++ b/source/blender/freestyle/src/image/ImagePyramid.cpp
diff --git a/extern/freestyle/src/image/ImagePyramid.h b/source/blender/freestyle/src/image/ImagePyramid.h
index 9e326757f02..9e326757f02 100755
--- a/extern/freestyle/src/image/ImagePyramid.h
+++ b/source/blender/freestyle/src/image/ImagePyramid.h
diff --git a/extern/freestyle/src/image/image.pro b/source/blender/freestyle/src/image/image.pro
index 133b6cf4f35..133b6cf4f35 100755
--- a/extern/freestyle/src/image/image.pro
+++ b/source/blender/freestyle/src/image/image.pro
diff --git a/extern/freestyle/src/image/src.pri b/source/blender/freestyle/src/image/src.pri
index c047929b49f..c047929b49f 100755
--- a/extern/freestyle/src/image/src.pri
+++ b/source/blender/freestyle/src/image/src.pri
diff --git a/extern/freestyle/src/libconfig.pri b/source/blender/freestyle/src/libconfig.pri
index 6fec8878694..6fec8878694 100755
--- a/extern/freestyle/src/libconfig.pri
+++ b/source/blender/freestyle/src/libconfig.pri
diff --git a/extern/freestyle/src/makedsp.vcnet.debug.bat b/source/blender/freestyle/src/makedsp.vcnet.debug.bat
index e19ca52b4f7..e19ca52b4f7 100755
--- a/extern/freestyle/src/makedsp.vcnet.debug.bat
+++ b/source/blender/freestyle/src/makedsp.vcnet.debug.bat
diff --git a/extern/freestyle/src/makedsp.vcnet.release.bat b/source/blender/freestyle/src/makedsp.vcnet.release.bat
index 3050a2fe4ea..3050a2fe4ea 100755
--- a/extern/freestyle/src/makedsp.vcnet.release.bat
+++ b/source/blender/freestyle/src/makedsp.vcnet.release.bat
diff --git a/extern/freestyle/src/rendering/GLBBoxRenderer.cpp b/source/blender/freestyle/src/rendering/GLBBoxRenderer.cpp
index 464779d6a43..464779d6a43 100755
--- a/extern/freestyle/src/rendering/GLBBoxRenderer.cpp
+++ b/source/blender/freestyle/src/rendering/GLBBoxRenderer.cpp
diff --git a/extern/freestyle/src/rendering/GLBBoxRenderer.h b/source/blender/freestyle/src/rendering/GLBBoxRenderer.h
index 4bb72ba80b0..4bb72ba80b0 100755
--- a/extern/freestyle/src/rendering/GLBBoxRenderer.h
+++ b/source/blender/freestyle/src/rendering/GLBBoxRenderer.h
diff --git a/extern/freestyle/src/rendering/GLDebugRenderer.cpp b/source/blender/freestyle/src/rendering/GLDebugRenderer.cpp
index b396a0ce6d3..b396a0ce6d3 100755
--- a/extern/freestyle/src/rendering/GLDebugRenderer.cpp
+++ b/source/blender/freestyle/src/rendering/GLDebugRenderer.cpp
diff --git a/extern/freestyle/src/rendering/GLDebugRenderer.h b/source/blender/freestyle/src/rendering/GLDebugRenderer.h
index abf76d079da..abf76d079da 100755
--- a/extern/freestyle/src/rendering/GLDebugRenderer.h
+++ b/source/blender/freestyle/src/rendering/GLDebugRenderer.h
diff --git a/extern/freestyle/src/rendering/GLFreeMemoryVisitor.cpp b/source/blender/freestyle/src/rendering/GLFreeMemoryVisitor.cpp
index b5a835f5104..b5a835f5104 100644
--- a/extern/freestyle/src/rendering/GLFreeMemoryVisitor.cpp
+++ b/source/blender/freestyle/src/rendering/GLFreeMemoryVisitor.cpp
diff --git a/extern/freestyle/src/rendering/GLFreeMemoryVisitor.h b/source/blender/freestyle/src/rendering/GLFreeMemoryVisitor.h
index dd6412b1bb7..dd6412b1bb7 100644
--- a/extern/freestyle/src/rendering/GLFreeMemoryVisitor.h
+++ b/source/blender/freestyle/src/rendering/GLFreeMemoryVisitor.h
diff --git a/extern/freestyle/src/rendering/GLMonoColorRenderer.cpp b/source/blender/freestyle/src/rendering/GLMonoColorRenderer.cpp
index 792846fa020..792846fa020 100755
--- a/extern/freestyle/src/rendering/GLMonoColorRenderer.cpp
+++ b/source/blender/freestyle/src/rendering/GLMonoColorRenderer.cpp
diff --git a/extern/freestyle/src/rendering/GLMonoColorRenderer.h b/source/blender/freestyle/src/rendering/GLMonoColorRenderer.h
index d8e3cf536ec..d8e3cf536ec 100755
--- a/extern/freestyle/src/rendering/GLMonoColorRenderer.h
+++ b/source/blender/freestyle/src/rendering/GLMonoColorRenderer.h
diff --git a/extern/freestyle/src/rendering/GLRenderer.cpp b/source/blender/freestyle/src/rendering/GLRenderer.cpp
index d566060dfc7..d566060dfc7 100755
--- a/extern/freestyle/src/rendering/GLRenderer.cpp
+++ b/source/blender/freestyle/src/rendering/GLRenderer.cpp
diff --git a/extern/freestyle/src/rendering/GLRenderer.h b/source/blender/freestyle/src/rendering/GLRenderer.h
index ddbf082038b..ddbf082038b 100755
--- a/extern/freestyle/src/rendering/GLRenderer.h
+++ b/source/blender/freestyle/src/rendering/GLRenderer.h
diff --git a/extern/freestyle/src/rendering/GLSelectRenderer.cpp b/source/blender/freestyle/src/rendering/GLSelectRenderer.cpp
index b4a2406c644..b4a2406c644 100755
--- a/extern/freestyle/src/rendering/GLSelectRenderer.cpp
+++ b/source/blender/freestyle/src/rendering/GLSelectRenderer.cpp
diff --git a/extern/freestyle/src/rendering/GLSelectRenderer.h b/source/blender/freestyle/src/rendering/GLSelectRenderer.h
index bf8a334aebb..bf8a334aebb 100755
--- a/extern/freestyle/src/rendering/GLSelectRenderer.h
+++ b/source/blender/freestyle/src/rendering/GLSelectRenderer.h
diff --git a/extern/freestyle/src/rendering/GLStrokeRenderer.cpp b/source/blender/freestyle/src/rendering/GLStrokeRenderer.cpp
index 7525807da47..7525807da47 100755
--- a/extern/freestyle/src/rendering/GLStrokeRenderer.cpp
+++ b/source/blender/freestyle/src/rendering/GLStrokeRenderer.cpp
diff --git a/extern/freestyle/src/rendering/GLStrokeRenderer.h b/source/blender/freestyle/src/rendering/GLStrokeRenderer.h
index bef95996444..bef95996444 100755
--- a/extern/freestyle/src/rendering/GLStrokeRenderer.h
+++ b/source/blender/freestyle/src/rendering/GLStrokeRenderer.h
diff --git a/extern/freestyle/src/rendering/GLUtils.cpp b/source/blender/freestyle/src/rendering/GLUtils.cpp
index 5e9ba2a5bf4..5e9ba2a5bf4 100755
--- a/extern/freestyle/src/rendering/GLUtils.cpp
+++ b/source/blender/freestyle/src/rendering/GLUtils.cpp
diff --git a/extern/freestyle/src/rendering/GLUtils.h b/source/blender/freestyle/src/rendering/GLUtils.h
index 453b3f31259..453b3f31259 100755
--- a/extern/freestyle/src/rendering/GLUtils.h
+++ b/source/blender/freestyle/src/rendering/GLUtils.h
diff --git a/extern/freestyle/src/rendering/GLXOffscreenViewer.cpp b/source/blender/freestyle/src/rendering/GLXOffscreenViewer.cpp
index 7135cedd7ad..7135cedd7ad 100755
--- a/extern/freestyle/src/rendering/GLXOffscreenViewer.cpp
+++ b/source/blender/freestyle/src/rendering/GLXOffscreenViewer.cpp
diff --git a/extern/freestyle/src/rendering/GLXOffscreenViewer.h b/source/blender/freestyle/src/rendering/GLXOffscreenViewer.h
index c09a23f500b..c09a23f500b 100755
--- a/extern/freestyle/src/rendering/GLXOffscreenViewer.h
+++ b/source/blender/freestyle/src/rendering/GLXOffscreenViewer.h
diff --git a/extern/freestyle/src/rendering/extgl.cpp b/source/blender/freestyle/src/rendering/extgl.cpp
index d7207f21299..d7207f21299 100755
--- a/extern/freestyle/src/rendering/extgl.cpp
+++ b/source/blender/freestyle/src/rendering/extgl.cpp
diff --git a/extern/freestyle/src/rendering/extgl.h b/source/blender/freestyle/src/rendering/extgl.h
index 68c13dea3d2..68c13dea3d2 100755
--- a/extern/freestyle/src/rendering/extgl.h
+++ b/source/blender/freestyle/src/rendering/extgl.h
diff --git a/extern/freestyle/src/rendering/pbuffer.cpp b/source/blender/freestyle/src/rendering/pbuffer.cpp
index ec73fc52ae4..ec73fc52ae4 100755
--- a/extern/freestyle/src/rendering/pbuffer.cpp
+++ b/source/blender/freestyle/src/rendering/pbuffer.cpp
diff --git a/extern/freestyle/src/rendering/pbuffer.h b/source/blender/freestyle/src/rendering/pbuffer.h
index 7f11f461b1c..7f11f461b1c 100755
--- a/extern/freestyle/src/rendering/pbuffer.h
+++ b/source/blender/freestyle/src/rendering/pbuffer.h
diff --git a/extern/freestyle/src/rendering/rendering.pro b/source/blender/freestyle/src/rendering/rendering.pro
index 0bbca195b6b..0bbca195b6b 100755
--- a/extern/freestyle/src/rendering/rendering.pro
+++ b/source/blender/freestyle/src/rendering/rendering.pro
diff --git a/extern/freestyle/src/rendering/src.pri b/source/blender/freestyle/src/rendering/src.pri
index aee4cdb2782..aee4cdb2782 100755
--- a/extern/freestyle/src/rendering/src.pri
+++ b/source/blender/freestyle/src/rendering/src.pri
diff --git a/extern/freestyle/src/scene_graph/DrawingStyle.h b/source/blender/freestyle/src/scene_graph/DrawingStyle.h
index e2be6fa8264..e2be6fa8264 100755
--- a/extern/freestyle/src/scene_graph/DrawingStyle.h
+++ b/source/blender/freestyle/src/scene_graph/DrawingStyle.h
diff --git a/extern/freestyle/src/scene_graph/IndexedFaceSet.cpp b/source/blender/freestyle/src/scene_graph/IndexedFaceSet.cpp
index ec3d3ad748c..ec3d3ad748c 100755
--- a/extern/freestyle/src/scene_graph/IndexedFaceSet.cpp
+++ b/source/blender/freestyle/src/scene_graph/IndexedFaceSet.cpp
diff --git a/extern/freestyle/src/scene_graph/IndexedFaceSet.h b/source/blender/freestyle/src/scene_graph/IndexedFaceSet.h
index c6951942dbb..c6951942dbb 100755
--- a/extern/freestyle/src/scene_graph/IndexedFaceSet.h
+++ b/source/blender/freestyle/src/scene_graph/IndexedFaceSet.h
diff --git a/extern/freestyle/src/scene_graph/LineRep.cpp b/source/blender/freestyle/src/scene_graph/LineRep.cpp
index 9dec2ec803f..9dec2ec803f 100755
--- a/extern/freestyle/src/scene_graph/LineRep.cpp
+++ b/source/blender/freestyle/src/scene_graph/LineRep.cpp
diff --git a/extern/freestyle/src/scene_graph/LineRep.h b/source/blender/freestyle/src/scene_graph/LineRep.h
index 1bbba130ba3..1bbba130ba3 100755
--- a/extern/freestyle/src/scene_graph/LineRep.h
+++ b/source/blender/freestyle/src/scene_graph/LineRep.h
diff --git a/extern/freestyle/src/scene_graph/Material.h b/source/blender/freestyle/src/scene_graph/Material.h
index 09557ad3473..09557ad3473 100755
--- a/extern/freestyle/src/scene_graph/Material.h
+++ b/source/blender/freestyle/src/scene_graph/Material.h
diff --git a/extern/freestyle/src/scene_graph/MaxFileLoader.cpp b/source/blender/freestyle/src/scene_graph/MaxFileLoader.cpp
index 515874c4021..515874c4021 100755
--- a/extern/freestyle/src/scene_graph/MaxFileLoader.cpp
+++ b/source/blender/freestyle/src/scene_graph/MaxFileLoader.cpp
diff --git a/extern/freestyle/src/scene_graph/MaxFileLoader.h b/source/blender/freestyle/src/scene_graph/MaxFileLoader.h
index ab31e656d46..ab31e656d46 100755
--- a/extern/freestyle/src/scene_graph/MaxFileLoader.h
+++ b/source/blender/freestyle/src/scene_graph/MaxFileLoader.h
diff --git a/extern/freestyle/src/scene_graph/Node.h b/source/blender/freestyle/src/scene_graph/Node.h
index 1726dd3c853..1726dd3c853 100755
--- a/extern/freestyle/src/scene_graph/Node.h
+++ b/source/blender/freestyle/src/scene_graph/Node.h
diff --git a/extern/freestyle/src/scene_graph/NodeCamera.cpp b/source/blender/freestyle/src/scene_graph/NodeCamera.cpp
index 2d850287ae5..2d850287ae5 100644
--- a/extern/freestyle/src/scene_graph/NodeCamera.cpp
+++ b/source/blender/freestyle/src/scene_graph/NodeCamera.cpp
diff --git a/extern/freestyle/src/scene_graph/NodeCamera.h b/source/blender/freestyle/src/scene_graph/NodeCamera.h
index 76ccf465d38..76ccf465d38 100644
--- a/extern/freestyle/src/scene_graph/NodeCamera.h
+++ b/source/blender/freestyle/src/scene_graph/NodeCamera.h
diff --git a/extern/freestyle/src/scene_graph/NodeDrawingStyle.cpp b/source/blender/freestyle/src/scene_graph/NodeDrawingStyle.cpp
index acd740ee055..acd740ee055 100755
--- a/extern/freestyle/src/scene_graph/NodeDrawingStyle.cpp
+++ b/source/blender/freestyle/src/scene_graph/NodeDrawingStyle.cpp
diff --git a/extern/freestyle/src/scene_graph/NodeDrawingStyle.h b/source/blender/freestyle/src/scene_graph/NodeDrawingStyle.h
index 18442ae10f9..18442ae10f9 100755
--- a/extern/freestyle/src/scene_graph/NodeDrawingStyle.h
+++ b/source/blender/freestyle/src/scene_graph/NodeDrawingStyle.h
diff --git a/extern/freestyle/src/scene_graph/NodeGroup.cpp b/source/blender/freestyle/src/scene_graph/NodeGroup.cpp
index 3d2aa2c8694..3d2aa2c8694 100755
--- a/extern/freestyle/src/scene_graph/NodeGroup.cpp
+++ b/source/blender/freestyle/src/scene_graph/NodeGroup.cpp
diff --git a/extern/freestyle/src/scene_graph/NodeGroup.h b/source/blender/freestyle/src/scene_graph/NodeGroup.h
index a1bd2b57e56..a1bd2b57e56 100755
--- a/extern/freestyle/src/scene_graph/NodeGroup.h
+++ b/source/blender/freestyle/src/scene_graph/NodeGroup.h
diff --git a/extern/freestyle/src/scene_graph/NodeLight.cpp b/source/blender/freestyle/src/scene_graph/NodeLight.cpp
index 61a46155cfa..61a46155cfa 100755
--- a/extern/freestyle/src/scene_graph/NodeLight.cpp
+++ b/source/blender/freestyle/src/scene_graph/NodeLight.cpp
diff --git a/extern/freestyle/src/scene_graph/NodeLight.h b/source/blender/freestyle/src/scene_graph/NodeLight.h
index 0689505fb24..0689505fb24 100755
--- a/extern/freestyle/src/scene_graph/NodeLight.h
+++ b/source/blender/freestyle/src/scene_graph/NodeLight.h
diff --git a/extern/freestyle/src/scene_graph/NodeShape.cpp b/source/blender/freestyle/src/scene_graph/NodeShape.cpp
index 2012ef83b9f..2012ef83b9f 100755
--- a/extern/freestyle/src/scene_graph/NodeShape.cpp
+++ b/source/blender/freestyle/src/scene_graph/NodeShape.cpp
diff --git a/extern/freestyle/src/scene_graph/NodeShape.h b/source/blender/freestyle/src/scene_graph/NodeShape.h
index 3e963beec38..3e963beec38 100755
--- a/extern/freestyle/src/scene_graph/NodeShape.h
+++ b/source/blender/freestyle/src/scene_graph/NodeShape.h
diff --git a/extern/freestyle/src/scene_graph/NodeTransform.cpp b/source/blender/freestyle/src/scene_graph/NodeTransform.cpp
index 64e9b7a4dd6..64e9b7a4dd6 100755
--- a/extern/freestyle/src/scene_graph/NodeTransform.cpp
+++ b/source/blender/freestyle/src/scene_graph/NodeTransform.cpp
diff --git a/extern/freestyle/src/scene_graph/NodeTransform.h b/source/blender/freestyle/src/scene_graph/NodeTransform.h
index 3929c60996b..3929c60996b 100755
--- a/extern/freestyle/src/scene_graph/NodeTransform.h
+++ b/source/blender/freestyle/src/scene_graph/NodeTransform.h
diff --git a/extern/freestyle/src/scene_graph/OrientedLineRep.cpp b/source/blender/freestyle/src/scene_graph/OrientedLineRep.cpp
index 2d0205308b9..2d0205308b9 100755
--- a/extern/freestyle/src/scene_graph/OrientedLineRep.cpp
+++ b/source/blender/freestyle/src/scene_graph/OrientedLineRep.cpp
diff --git a/extern/freestyle/src/scene_graph/OrientedLineRep.h b/source/blender/freestyle/src/scene_graph/OrientedLineRep.h
index 4274581e39a..4274581e39a 100755
--- a/extern/freestyle/src/scene_graph/OrientedLineRep.h
+++ b/source/blender/freestyle/src/scene_graph/OrientedLineRep.h
diff --git a/extern/freestyle/src/scene_graph/Rep.cpp b/source/blender/freestyle/src/scene_graph/Rep.cpp
index 520d3c41e2e..520d3c41e2e 100755
--- a/extern/freestyle/src/scene_graph/Rep.cpp
+++ b/source/blender/freestyle/src/scene_graph/Rep.cpp
diff --git a/extern/freestyle/src/scene_graph/Rep.h b/source/blender/freestyle/src/scene_graph/Rep.h
index 6ccc2152c48..6ccc2152c48 100755
--- a/extern/freestyle/src/scene_graph/Rep.h
+++ b/source/blender/freestyle/src/scene_graph/Rep.h
diff --git a/extern/freestyle/src/scene_graph/ScenePrettyPrinter.cpp b/source/blender/freestyle/src/scene_graph/ScenePrettyPrinter.cpp
index aeee87f8222..aeee87f8222 100755
--- a/extern/freestyle/src/scene_graph/ScenePrettyPrinter.cpp
+++ b/source/blender/freestyle/src/scene_graph/ScenePrettyPrinter.cpp
diff --git a/extern/freestyle/src/scene_graph/ScenePrettyPrinter.h b/source/blender/freestyle/src/scene_graph/ScenePrettyPrinter.h
index 4e83825ff55..4e83825ff55 100755
--- a/extern/freestyle/src/scene_graph/ScenePrettyPrinter.h
+++ b/source/blender/freestyle/src/scene_graph/ScenePrettyPrinter.h
diff --git a/extern/freestyle/src/scene_graph/SceneVisitor.cpp b/source/blender/freestyle/src/scene_graph/SceneVisitor.cpp
index 9cfb9d40d24..9cfb9d40d24 100755
--- a/extern/freestyle/src/scene_graph/SceneVisitor.cpp
+++ b/source/blender/freestyle/src/scene_graph/SceneVisitor.cpp
diff --git a/extern/freestyle/src/scene_graph/SceneVisitor.h b/source/blender/freestyle/src/scene_graph/SceneVisitor.h
index c57bd2e0f6e..c57bd2e0f6e 100755
--- a/extern/freestyle/src/scene_graph/SceneVisitor.h
+++ b/source/blender/freestyle/src/scene_graph/SceneVisitor.h
diff --git a/extern/freestyle/src/scene_graph/TriangleRep.cpp b/source/blender/freestyle/src/scene_graph/TriangleRep.cpp
index 215124b0676..215124b0676 100755
--- a/extern/freestyle/src/scene_graph/TriangleRep.cpp
+++ b/source/blender/freestyle/src/scene_graph/TriangleRep.cpp
diff --git a/extern/freestyle/src/scene_graph/TriangleRep.h b/source/blender/freestyle/src/scene_graph/TriangleRep.h
index 20df12cfd8f..20df12cfd8f 100755
--- a/extern/freestyle/src/scene_graph/TriangleRep.h
+++ b/source/blender/freestyle/src/scene_graph/TriangleRep.h
diff --git a/extern/freestyle/src/scene_graph/VertexRep.cpp b/source/blender/freestyle/src/scene_graph/VertexRep.cpp
index 1ecb5f141e1..1ecb5f141e1 100755
--- a/extern/freestyle/src/scene_graph/VertexRep.cpp
+++ b/source/blender/freestyle/src/scene_graph/VertexRep.cpp
diff --git a/extern/freestyle/src/scene_graph/VertexRep.h b/source/blender/freestyle/src/scene_graph/VertexRep.h
index 9dce7fbbe9c..9dce7fbbe9c 100755
--- a/extern/freestyle/src/scene_graph/VertexRep.h
+++ b/source/blender/freestyle/src/scene_graph/VertexRep.h
diff --git a/extern/freestyle/src/scene_graph/scene_graph.pro b/source/blender/freestyle/src/scene_graph/scene_graph.pro
index 5736104a597..5736104a597 100755
--- a/extern/freestyle/src/scene_graph/scene_graph.pro
+++ b/source/blender/freestyle/src/scene_graph/scene_graph.pro
diff --git a/extern/freestyle/src/scene_graph/src.pri b/source/blender/freestyle/src/scene_graph/src.pri
index 994db200812..994db200812 100755
--- a/extern/freestyle/src/scene_graph/src.pri
+++ b/source/blender/freestyle/src/scene_graph/src.pri
diff --git a/extern/freestyle/src/stroke/AdvancedFunctions0D.cpp b/source/blender/freestyle/src/stroke/AdvancedFunctions0D.cpp
index c22e183eccb..c22e183eccb 100755
--- a/extern/freestyle/src/stroke/AdvancedFunctions0D.cpp
+++ b/source/blender/freestyle/src/stroke/AdvancedFunctions0D.cpp
diff --git a/extern/freestyle/src/stroke/AdvancedFunctions0D.h b/source/blender/freestyle/src/stroke/AdvancedFunctions0D.h
index d92575cf110..d92575cf110 100755
--- a/extern/freestyle/src/stroke/AdvancedFunctions0D.h
+++ b/source/blender/freestyle/src/stroke/AdvancedFunctions0D.h
diff --git a/extern/freestyle/src/stroke/AdvancedFunctions1D.cpp b/source/blender/freestyle/src/stroke/AdvancedFunctions1D.cpp
index cf2982606e0..cf2982606e0 100755
--- a/extern/freestyle/src/stroke/AdvancedFunctions1D.cpp
+++ b/source/blender/freestyle/src/stroke/AdvancedFunctions1D.cpp
diff --git a/extern/freestyle/src/stroke/AdvancedFunctions1D.h b/source/blender/freestyle/src/stroke/AdvancedFunctions1D.h
index 65b0eec36fd..65b0eec36fd 100755
--- a/extern/freestyle/src/stroke/AdvancedFunctions1D.h
+++ b/source/blender/freestyle/src/stroke/AdvancedFunctions1D.h
diff --git a/extern/freestyle/src/stroke/AdvancedPredicates1D.h b/source/blender/freestyle/src/stroke/AdvancedPredicates1D.h
index f348f8593e5..f348f8593e5 100755
--- a/extern/freestyle/src/stroke/AdvancedPredicates1D.h
+++ b/source/blender/freestyle/src/stroke/AdvancedPredicates1D.h
diff --git a/extern/freestyle/src/stroke/AdvancedStrokeShaders.cpp b/source/blender/freestyle/src/stroke/AdvancedStrokeShaders.cpp
index b1c5317c5f1..b1c5317c5f1 100755
--- a/extern/freestyle/src/stroke/AdvancedStrokeShaders.cpp
+++ b/source/blender/freestyle/src/stroke/AdvancedStrokeShaders.cpp
diff --git a/extern/freestyle/src/stroke/AdvancedStrokeShaders.h b/source/blender/freestyle/src/stroke/AdvancedStrokeShaders.h
index b624ccd3e6b..b624ccd3e6b 100755
--- a/extern/freestyle/src/stroke/AdvancedStrokeShaders.h
+++ b/source/blender/freestyle/src/stroke/AdvancedStrokeShaders.h
diff --git a/extern/freestyle/src/stroke/BasicStrokeShaders.cpp b/source/blender/freestyle/src/stroke/BasicStrokeShaders.cpp
index c3827ae3e36..c3827ae3e36 100755
--- a/extern/freestyle/src/stroke/BasicStrokeShaders.cpp
+++ b/source/blender/freestyle/src/stroke/BasicStrokeShaders.cpp
diff --git a/extern/freestyle/src/stroke/BasicStrokeShaders.h b/source/blender/freestyle/src/stroke/BasicStrokeShaders.h
index f68971a3966..f68971a3966 100755
--- a/extern/freestyle/src/stroke/BasicStrokeShaders.h
+++ b/source/blender/freestyle/src/stroke/BasicStrokeShaders.h
diff --git a/extern/freestyle/src/stroke/Canvas.cpp b/source/blender/freestyle/src/stroke/Canvas.cpp
index ecb76c4a015..ecb76c4a015 100755
--- a/extern/freestyle/src/stroke/Canvas.cpp
+++ b/source/blender/freestyle/src/stroke/Canvas.cpp
diff --git a/extern/freestyle/src/stroke/Canvas.h b/source/blender/freestyle/src/stroke/Canvas.h
index cae50162933..cae50162933 100755
--- a/extern/freestyle/src/stroke/Canvas.h
+++ b/source/blender/freestyle/src/stroke/Canvas.h
diff --git a/extern/freestyle/src/stroke/Chain.cpp b/source/blender/freestyle/src/stroke/Chain.cpp
index 3776cd58a03..3776cd58a03 100755
--- a/extern/freestyle/src/stroke/Chain.cpp
+++ b/source/blender/freestyle/src/stroke/Chain.cpp
diff --git a/extern/freestyle/src/stroke/Chain.h b/source/blender/freestyle/src/stroke/Chain.h
index 042437a4154..042437a4154 100755
--- a/extern/freestyle/src/stroke/Chain.h
+++ b/source/blender/freestyle/src/stroke/Chain.h
diff --git a/extern/freestyle/src/stroke/ChainingIterators.cpp b/source/blender/freestyle/src/stroke/ChainingIterators.cpp
index 206b6eb7364..206b6eb7364 100755
--- a/extern/freestyle/src/stroke/ChainingIterators.cpp
+++ b/source/blender/freestyle/src/stroke/ChainingIterators.cpp
diff --git a/extern/freestyle/src/stroke/ChainingIterators.h b/source/blender/freestyle/src/stroke/ChainingIterators.h
index 1e946855dce..1e946855dce 100755
--- a/extern/freestyle/src/stroke/ChainingIterators.h
+++ b/source/blender/freestyle/src/stroke/ChainingIterators.h
diff --git a/extern/freestyle/src/stroke/ContextFunctions.cpp b/source/blender/freestyle/src/stroke/ContextFunctions.cpp
index b55da1fb0f8..b55da1fb0f8 100755
--- a/extern/freestyle/src/stroke/ContextFunctions.cpp
+++ b/source/blender/freestyle/src/stroke/ContextFunctions.cpp
diff --git a/extern/freestyle/src/stroke/ContextFunctions.h b/source/blender/freestyle/src/stroke/ContextFunctions.h
index 37c98656fa7..37c98656fa7 100755
--- a/extern/freestyle/src/stroke/ContextFunctions.h
+++ b/source/blender/freestyle/src/stroke/ContextFunctions.h
diff --git a/extern/freestyle/src/stroke/Curve.cpp b/source/blender/freestyle/src/stroke/Curve.cpp
index f7b255c3ef4..f7b255c3ef4 100755
--- a/extern/freestyle/src/stroke/Curve.cpp
+++ b/source/blender/freestyle/src/stroke/Curve.cpp
diff --git a/extern/freestyle/src/stroke/Curve.h b/source/blender/freestyle/src/stroke/Curve.h
index 400f27e5d5a..400f27e5d5a 100755
--- a/extern/freestyle/src/stroke/Curve.h
+++ b/source/blender/freestyle/src/stroke/Curve.h
diff --git a/extern/freestyle/src/stroke/CurveAdvancedIterators.h b/source/blender/freestyle/src/stroke/CurveAdvancedIterators.h
index dfc9f2719f8..dfc9f2719f8 100755
--- a/extern/freestyle/src/stroke/CurveAdvancedIterators.h
+++ b/source/blender/freestyle/src/stroke/CurveAdvancedIterators.h
diff --git a/extern/freestyle/src/stroke/CurveIterators.h b/source/blender/freestyle/src/stroke/CurveIterators.h
index 92f8bf065f4..92f8bf065f4 100755
--- a/extern/freestyle/src/stroke/CurveIterators.h
+++ b/source/blender/freestyle/src/stroke/CurveIterators.h
diff --git a/extern/freestyle/src/stroke/Modifiers.h b/source/blender/freestyle/src/stroke/Modifiers.h
index c3be65ffc89..c3be65ffc89 100755
--- a/extern/freestyle/src/stroke/Modifiers.h
+++ b/source/blender/freestyle/src/stroke/Modifiers.h
diff --git a/extern/freestyle/src/stroke/Module.h b/source/blender/freestyle/src/stroke/Module.h
index 591bb157392..591bb157392 100755
--- a/extern/freestyle/src/stroke/Module.h
+++ b/source/blender/freestyle/src/stroke/Module.h
diff --git a/extern/freestyle/src/stroke/Operators.cpp b/source/blender/freestyle/src/stroke/Operators.cpp
index 121dee3ba26..121dee3ba26 100755
--- a/extern/freestyle/src/stroke/Operators.cpp
+++ b/source/blender/freestyle/src/stroke/Operators.cpp
diff --git a/extern/freestyle/src/stroke/Operators.h b/source/blender/freestyle/src/stroke/Operators.h
index 96ecd0aa75b..96ecd0aa75b 100755
--- a/extern/freestyle/src/stroke/Operators.h
+++ b/source/blender/freestyle/src/stroke/Operators.h
diff --git a/extern/freestyle/src/stroke/PSStrokeRenderer.cpp b/source/blender/freestyle/src/stroke/PSStrokeRenderer.cpp
index dc9c94e0e11..dc9c94e0e11 100755
--- a/extern/freestyle/src/stroke/PSStrokeRenderer.cpp
+++ b/source/blender/freestyle/src/stroke/PSStrokeRenderer.cpp
diff --git a/extern/freestyle/src/stroke/PSStrokeRenderer.h b/source/blender/freestyle/src/stroke/PSStrokeRenderer.h
index 821c016ab91..821c016ab91 100755
--- a/extern/freestyle/src/stroke/PSStrokeRenderer.h
+++ b/source/blender/freestyle/src/stroke/PSStrokeRenderer.h
diff --git a/extern/freestyle/src/stroke/Predicates0D.h b/source/blender/freestyle/src/stroke/Predicates0D.h
index 4c2dfacdf98..4c2dfacdf98 100755
--- a/extern/freestyle/src/stroke/Predicates0D.h
+++ b/source/blender/freestyle/src/stroke/Predicates0D.h
diff --git a/extern/freestyle/src/stroke/Predicates1D.h b/source/blender/freestyle/src/stroke/Predicates1D.h
index cf9a3283ae4..cf9a3283ae4 100755
--- a/extern/freestyle/src/stroke/Predicates1D.h
+++ b/source/blender/freestyle/src/stroke/Predicates1D.h
diff --git a/extern/freestyle/src/stroke/QInformationMap.h b/source/blender/freestyle/src/stroke/QInformationMap.h
index 2542bdba147..2542bdba147 100755
--- a/extern/freestyle/src/stroke/QInformationMap.h
+++ b/source/blender/freestyle/src/stroke/QInformationMap.h
diff --git a/extern/freestyle/src/stroke/Stroke.cpp b/source/blender/freestyle/src/stroke/Stroke.cpp
index d6ff4d255c4..d6ff4d255c4 100755
--- a/extern/freestyle/src/stroke/Stroke.cpp
+++ b/source/blender/freestyle/src/stroke/Stroke.cpp
diff --git a/extern/freestyle/src/stroke/Stroke.h b/source/blender/freestyle/src/stroke/Stroke.h
index a5cf51f8224..a5cf51f8224 100755
--- a/extern/freestyle/src/stroke/Stroke.h
+++ b/source/blender/freestyle/src/stroke/Stroke.h
diff --git a/extern/freestyle/src/stroke/StrokeAdvancedIterators.h b/source/blender/freestyle/src/stroke/StrokeAdvancedIterators.h
index 279a0b12089..279a0b12089 100755
--- a/extern/freestyle/src/stroke/StrokeAdvancedIterators.h
+++ b/source/blender/freestyle/src/stroke/StrokeAdvancedIterators.h
diff --git a/extern/freestyle/src/stroke/StrokeIO.cpp b/source/blender/freestyle/src/stroke/StrokeIO.cpp
index 7f540939fa1..7f540939fa1 100755
--- a/extern/freestyle/src/stroke/StrokeIO.cpp
+++ b/source/blender/freestyle/src/stroke/StrokeIO.cpp
diff --git a/extern/freestyle/src/stroke/StrokeIO.h b/source/blender/freestyle/src/stroke/StrokeIO.h
index 42b99420f4a..42b99420f4a 100755
--- a/extern/freestyle/src/stroke/StrokeIO.h
+++ b/source/blender/freestyle/src/stroke/StrokeIO.h
diff --git a/extern/freestyle/src/stroke/StrokeIterators.h b/source/blender/freestyle/src/stroke/StrokeIterators.h
index 9cc08a0532a..9cc08a0532a 100755
--- a/extern/freestyle/src/stroke/StrokeIterators.h
+++ b/source/blender/freestyle/src/stroke/StrokeIterators.h
diff --git a/extern/freestyle/src/stroke/StrokeLayer.cpp b/source/blender/freestyle/src/stroke/StrokeLayer.cpp
index 8b469399ca8..8b469399ca8 100755
--- a/extern/freestyle/src/stroke/StrokeLayer.cpp
+++ b/source/blender/freestyle/src/stroke/StrokeLayer.cpp
diff --git a/extern/freestyle/src/stroke/StrokeLayer.h b/source/blender/freestyle/src/stroke/StrokeLayer.h
index b89b77a85a7..b89b77a85a7 100755
--- a/extern/freestyle/src/stroke/StrokeLayer.h
+++ b/source/blender/freestyle/src/stroke/StrokeLayer.h
diff --git a/extern/freestyle/src/stroke/StrokeRenderer.cpp b/source/blender/freestyle/src/stroke/StrokeRenderer.cpp
index e747fb4f5cd..e747fb4f5cd 100755
--- a/extern/freestyle/src/stroke/StrokeRenderer.cpp
+++ b/source/blender/freestyle/src/stroke/StrokeRenderer.cpp
diff --git a/extern/freestyle/src/stroke/StrokeRenderer.h b/source/blender/freestyle/src/stroke/StrokeRenderer.h
index d192fe30145..d192fe30145 100755
--- a/extern/freestyle/src/stroke/StrokeRenderer.h
+++ b/source/blender/freestyle/src/stroke/StrokeRenderer.h
diff --git a/extern/freestyle/src/stroke/StrokeRep.cpp b/source/blender/freestyle/src/stroke/StrokeRep.cpp
index 055e1fb1be4..055e1fb1be4 100755
--- a/extern/freestyle/src/stroke/StrokeRep.cpp
+++ b/source/blender/freestyle/src/stroke/StrokeRep.cpp
diff --git a/extern/freestyle/src/stroke/StrokeRep.h b/source/blender/freestyle/src/stroke/StrokeRep.h
index 129769e5489..129769e5489 100755
--- a/extern/freestyle/src/stroke/StrokeRep.h
+++ b/source/blender/freestyle/src/stroke/StrokeRep.h
diff --git a/extern/freestyle/src/stroke/StrokeShader.h b/source/blender/freestyle/src/stroke/StrokeShader.h
index fa1289f6e0f..fa1289f6e0f 100755
--- a/extern/freestyle/src/stroke/StrokeShader.h
+++ b/source/blender/freestyle/src/stroke/StrokeShader.h
diff --git a/extern/freestyle/src/stroke/StrokeTesselator.cpp b/source/blender/freestyle/src/stroke/StrokeTesselator.cpp
index 6d0f5aa847c..6d0f5aa847c 100755
--- a/extern/freestyle/src/stroke/StrokeTesselator.cpp
+++ b/source/blender/freestyle/src/stroke/StrokeTesselator.cpp
diff --git a/extern/freestyle/src/stroke/StrokeTesselator.h b/source/blender/freestyle/src/stroke/StrokeTesselator.h
index 767d82d3d98..767d82d3d98 100755
--- a/extern/freestyle/src/stroke/StrokeTesselator.h
+++ b/source/blender/freestyle/src/stroke/StrokeTesselator.h
diff --git a/extern/freestyle/src/stroke/StyleModule.h b/source/blender/freestyle/src/stroke/StyleModule.h
index 3d39e53515b..3d39e53515b 100755
--- a/extern/freestyle/src/stroke/StyleModule.h
+++ b/source/blender/freestyle/src/stroke/StyleModule.h
diff --git a/extern/freestyle/src/stroke/TextStrokeRenderer.cpp b/source/blender/freestyle/src/stroke/TextStrokeRenderer.cpp
index ea5af287bbe..ea5af287bbe 100755
--- a/extern/freestyle/src/stroke/TextStrokeRenderer.cpp
+++ b/source/blender/freestyle/src/stroke/TextStrokeRenderer.cpp
diff --git a/extern/freestyle/src/stroke/TextStrokeRenderer.h b/source/blender/freestyle/src/stroke/TextStrokeRenderer.h
index ef610d63bdd..ef610d63bdd 100755
--- a/extern/freestyle/src/stroke/TextStrokeRenderer.h
+++ b/source/blender/freestyle/src/stroke/TextStrokeRenderer.h
diff --git a/extern/freestyle/src/stroke/src.pri b/source/blender/freestyle/src/stroke/src.pri
index 09707f86dbc..09707f86dbc 100755
--- a/extern/freestyle/src/stroke/src.pri
+++ b/source/blender/freestyle/src/stroke/src.pri
diff --git a/extern/freestyle/src/stroke/stroke.pro b/source/blender/freestyle/src/stroke/stroke.pro
index 90c0cc96592..90c0cc96592 100755
--- a/extern/freestyle/src/stroke/stroke.pro
+++ b/source/blender/freestyle/src/stroke/stroke.pro
diff --git a/extern/freestyle/src/swig/Freestyle.i b/source/blender/freestyle/src/swig/Freestyle.i
index 37daddc4e11..37daddc4e11 100755
--- a/extern/freestyle/src/swig/Freestyle.i
+++ b/source/blender/freestyle/src/swig/Freestyle.i
diff --git a/extern/freestyle/src/swig/FreestyleWrapper.vc7.vcproj b/source/blender/freestyle/src/swig/FreestyleWrapper.vc7.vcproj
index 060c1987ea1..060c1987ea1 100755
--- a/extern/freestyle/src/swig/FreestyleWrapper.vc7.vcproj
+++ b/source/blender/freestyle/src/swig/FreestyleWrapper.vc7.vcproj
diff --git a/extern/freestyle/src/swig/FreestyleWrapper.vc8.vcproj b/source/blender/freestyle/src/swig/FreestyleWrapper.vc8.vcproj
index 833a4f89aca..833a4f89aca 100755
--- a/extern/freestyle/src/swig/FreestyleWrapper.vc8.vcproj
+++ b/source/blender/freestyle/src/swig/FreestyleWrapper.vc8.vcproj
diff --git a/extern/freestyle/src/swig/Makefile b/source/blender/freestyle/src/swig/Makefile
index 01829434be0..01829434be0 100755
--- a/extern/freestyle/src/swig/Makefile
+++ b/source/blender/freestyle/src/swig/Makefile
diff --git a/extern/freestyle/src/swig/Makefile.cygwin b/source/blender/freestyle/src/swig/Makefile.cygwin
index 1f5b3ce2a79..1f5b3ce2a79 100755
--- a/extern/freestyle/src/swig/Makefile.cygwin
+++ b/source/blender/freestyle/src/swig/Makefile.cygwin
diff --git a/extern/freestyle/src/swig/Makefile.linux b/source/blender/freestyle/src/swig/Makefile.linux
index 2a93971ccd5..2a93971ccd5 100755
--- a/extern/freestyle/src/swig/Makefile.linux
+++ b/source/blender/freestyle/src/swig/Makefile.linux
diff --git a/extern/freestyle/src/swig/Makefile.mac b/source/blender/freestyle/src/swig/Makefile.mac
index 2c46d74549e..2c46d74549e 100644
--- a/extern/freestyle/src/swig/Makefile.mac
+++ b/source/blender/freestyle/src/swig/Makefile.mac
diff --git a/extern/freestyle/src/swig/Makefile.noswig b/source/blender/freestyle/src/swig/Makefile.noswig
index 368c4fb173b..368c4fb173b 100755
--- a/extern/freestyle/src/swig/Makefile.noswig
+++ b/source/blender/freestyle/src/swig/Makefile.noswig
diff --git a/extern/freestyle/src/swig/ModuleWrapper.cpp b/source/blender/freestyle/src/swig/ModuleWrapper.cpp
index 36bd39b2b15..36bd39b2b15 100755
--- a/extern/freestyle/src/swig/ModuleWrapper.cpp
+++ b/source/blender/freestyle/src/swig/ModuleWrapper.cpp
diff --git a/extern/freestyle/src/swig/ModuleWrapper.h b/source/blender/freestyle/src/swig/ModuleWrapper.h
index 06ca8c90f37..06ca8c90f37 100755
--- a/extern/freestyle/src/swig/ModuleWrapper.h
+++ b/source/blender/freestyle/src/swig/ModuleWrapper.h
diff --git a/extern/freestyle/src/system/BaseIterator.h b/source/blender/freestyle/src/system/BaseIterator.h
index 45cc19df4fe..45cc19df4fe 100755
--- a/extern/freestyle/src/system/BaseIterator.h
+++ b/source/blender/freestyle/src/system/BaseIterator.h
diff --git a/extern/freestyle/src/system/BaseObject.cpp b/source/blender/freestyle/src/system/BaseObject.cpp
index 21d8a77b268..21d8a77b268 100755
--- a/extern/freestyle/src/system/BaseObject.cpp
+++ b/source/blender/freestyle/src/system/BaseObject.cpp
diff --git a/extern/freestyle/src/system/BaseObject.h b/source/blender/freestyle/src/system/BaseObject.h
index a8515f98385..a8515f98385 100755
--- a/extern/freestyle/src/system/BaseObject.h
+++ b/source/blender/freestyle/src/system/BaseObject.h
diff --git a/extern/freestyle/src/system/Cast.h b/source/blender/freestyle/src/system/Cast.h
index 15af767443e..15af767443e 100755
--- a/extern/freestyle/src/system/Cast.h
+++ b/source/blender/freestyle/src/system/Cast.h
diff --git a/extern/freestyle/src/system/Exception.cpp b/source/blender/freestyle/src/system/Exception.cpp
index d1d12d18297..d1d12d18297 100755
--- a/extern/freestyle/src/system/Exception.cpp
+++ b/source/blender/freestyle/src/system/Exception.cpp
diff --git a/extern/freestyle/src/system/Exception.h b/source/blender/freestyle/src/system/Exception.h
index 378de6b558f..378de6b558f 100755
--- a/extern/freestyle/src/system/Exception.h
+++ b/source/blender/freestyle/src/system/Exception.h
diff --git a/extern/freestyle/src/system/FreestyleConfig.h b/source/blender/freestyle/src/system/FreestyleConfig.h
index 45bd00a402e..45bd00a402e 100755
--- a/extern/freestyle/src/system/FreestyleConfig.h
+++ b/source/blender/freestyle/src/system/FreestyleConfig.h
diff --git a/extern/freestyle/src/system/Id.h b/source/blender/freestyle/src/system/Id.h
index 1f2206ed337..1f2206ed337 100755
--- a/extern/freestyle/src/system/Id.h
+++ b/source/blender/freestyle/src/system/Id.h
diff --git a/extern/freestyle/src/system/Interpreter.h b/source/blender/freestyle/src/system/Interpreter.h
index ce603b17238..ce603b17238 100755
--- a/extern/freestyle/src/system/Interpreter.h
+++ b/source/blender/freestyle/src/system/Interpreter.h
diff --git a/extern/freestyle/src/system/Precision.h b/source/blender/freestyle/src/system/Precision.h
index 24327a280df..24327a280df 100755
--- a/extern/freestyle/src/system/Precision.h
+++ b/source/blender/freestyle/src/system/Precision.h
diff --git a/extern/freestyle/src/system/ProgressBar.h b/source/blender/freestyle/src/system/ProgressBar.h
index 5b61f936c90..5b61f936c90 100755
--- a/extern/freestyle/src/system/ProgressBar.h
+++ b/source/blender/freestyle/src/system/ProgressBar.h
diff --git a/extern/freestyle/src/system/PseudoNoise.cpp b/source/blender/freestyle/src/system/PseudoNoise.cpp
index 59332229ae2..59332229ae2 100755
--- a/extern/freestyle/src/system/PseudoNoise.cpp
+++ b/source/blender/freestyle/src/system/PseudoNoise.cpp
diff --git a/extern/freestyle/src/system/PseudoNoise.h b/source/blender/freestyle/src/system/PseudoNoise.h
index 43143865600..43143865600 100755
--- a/extern/freestyle/src/system/PseudoNoise.h
+++ b/source/blender/freestyle/src/system/PseudoNoise.h
diff --git a/extern/freestyle/src/system/PythonInterpreter.cpp b/source/blender/freestyle/src/system/PythonInterpreter.cpp
index 821bd32b40b..821bd32b40b 100755
--- a/extern/freestyle/src/system/PythonInterpreter.cpp
+++ b/source/blender/freestyle/src/system/PythonInterpreter.cpp
diff --git a/extern/freestyle/src/system/PythonInterpreter.h b/source/blender/freestyle/src/system/PythonInterpreter.h
index f9a573ffb86..f9a573ffb86 100755
--- a/extern/freestyle/src/system/PythonInterpreter.h
+++ b/source/blender/freestyle/src/system/PythonInterpreter.h
diff --git a/extern/freestyle/src/system/RandGen.cpp b/source/blender/freestyle/src/system/RandGen.cpp
index a328cb7f583..a328cb7f583 100755
--- a/extern/freestyle/src/system/RandGen.cpp
+++ b/source/blender/freestyle/src/system/RandGen.cpp
diff --git a/extern/freestyle/src/system/RandGen.h b/source/blender/freestyle/src/system/RandGen.h
index 409d3b79609..409d3b79609 100755
--- a/extern/freestyle/src/system/RandGen.h
+++ b/source/blender/freestyle/src/system/RandGen.h
diff --git a/extern/freestyle/src/system/StringUtils.cpp b/source/blender/freestyle/src/system/StringUtils.cpp
index 2af76feeb37..2af76feeb37 100755
--- a/extern/freestyle/src/system/StringUtils.cpp
+++ b/source/blender/freestyle/src/system/StringUtils.cpp
diff --git a/extern/freestyle/src/system/StringUtils.h b/source/blender/freestyle/src/system/StringUtils.h
index 44adfc2b044..44adfc2b044 100755
--- a/extern/freestyle/src/system/StringUtils.h
+++ b/source/blender/freestyle/src/system/StringUtils.h
diff --git a/extern/freestyle/src/system/TimeStamp.cpp b/source/blender/freestyle/src/system/TimeStamp.cpp
index c66e1131611..c66e1131611 100755
--- a/extern/freestyle/src/system/TimeStamp.cpp
+++ b/source/blender/freestyle/src/system/TimeStamp.cpp
diff --git a/extern/freestyle/src/system/TimeStamp.h b/source/blender/freestyle/src/system/TimeStamp.h
index 568a7851e30..568a7851e30 100755
--- a/extern/freestyle/src/system/TimeStamp.h
+++ b/source/blender/freestyle/src/system/TimeStamp.h
diff --git a/extern/freestyle/src/system/TimeUtils.h b/source/blender/freestyle/src/system/TimeUtils.h
index 99dd5b0a669..99dd5b0a669 100755
--- a/extern/freestyle/src/system/TimeUtils.h
+++ b/source/blender/freestyle/src/system/TimeUtils.h
diff --git a/extern/freestyle/src/system/src.pri b/source/blender/freestyle/src/system/src.pri
index e7d69e142b4..e7d69e142b4 100755
--- a/extern/freestyle/src/system/src.pri
+++ b/source/blender/freestyle/src/system/src.pri
diff --git a/extern/freestyle/src/system/system.pro b/source/blender/freestyle/src/system/system.pro
index 495cdf47105..495cdf47105 100755
--- a/extern/freestyle/src/system/system.pro
+++ b/source/blender/freestyle/src/system/system.pro
diff --git a/extern/freestyle/src/view_map/FEdgeXDetector.cpp b/source/blender/freestyle/src/view_map/FEdgeXDetector.cpp
index 628b3ad77aa..628b3ad77aa 100755
--- a/extern/freestyle/src/view_map/FEdgeXDetector.cpp
+++ b/source/blender/freestyle/src/view_map/FEdgeXDetector.cpp
diff --git a/extern/freestyle/src/view_map/FEdgeXDetector.h b/source/blender/freestyle/src/view_map/FEdgeXDetector.h
index 38d0f34e21f..38d0f34e21f 100755
--- a/extern/freestyle/src/view_map/FEdgeXDetector.h
+++ b/source/blender/freestyle/src/view_map/FEdgeXDetector.h
diff --git a/extern/freestyle/src/view_map/Functions0D.cpp b/source/blender/freestyle/src/view_map/Functions0D.cpp
index c868510624c..c868510624c 100755
--- a/extern/freestyle/src/view_map/Functions0D.cpp
+++ b/source/blender/freestyle/src/view_map/Functions0D.cpp
diff --git a/extern/freestyle/src/view_map/Functions0D.h b/source/blender/freestyle/src/view_map/Functions0D.h
index 3160546da2f..3160546da2f 100755
--- a/extern/freestyle/src/view_map/Functions0D.h
+++ b/source/blender/freestyle/src/view_map/Functions0D.h
diff --git a/extern/freestyle/src/view_map/Functions1D.cpp b/source/blender/freestyle/src/view_map/Functions1D.cpp
index a34124ded31..a34124ded31 100755
--- a/extern/freestyle/src/view_map/Functions1D.cpp
+++ b/source/blender/freestyle/src/view_map/Functions1D.cpp
diff --git a/extern/freestyle/src/view_map/Functions1D.h b/source/blender/freestyle/src/view_map/Functions1D.h
index c92d12ff330..c92d12ff330 100755
--- a/extern/freestyle/src/view_map/Functions1D.h
+++ b/source/blender/freestyle/src/view_map/Functions1D.h
diff --git a/extern/freestyle/src/view_map/Interface0D.h b/source/blender/freestyle/src/view_map/Interface0D.h
index eec39d2f7bc..eec39d2f7bc 100755
--- a/extern/freestyle/src/view_map/Interface0D.h
+++ b/source/blender/freestyle/src/view_map/Interface0D.h
diff --git a/extern/freestyle/src/view_map/Interface1D.h b/source/blender/freestyle/src/view_map/Interface1D.h
index 812187e5ec1..812187e5ec1 100755
--- a/extern/freestyle/src/view_map/Interface1D.h
+++ b/source/blender/freestyle/src/view_map/Interface1D.h
diff --git a/extern/freestyle/src/view_map/Silhouette.cpp b/source/blender/freestyle/src/view_map/Silhouette.cpp
index db4f82d369e..db4f82d369e 100755
--- a/extern/freestyle/src/view_map/Silhouette.cpp
+++ b/source/blender/freestyle/src/view_map/Silhouette.cpp
diff --git a/extern/freestyle/src/view_map/Silhouette.h b/source/blender/freestyle/src/view_map/Silhouette.h
index e88bf23b210..e88bf23b210 100755
--- a/extern/freestyle/src/view_map/Silhouette.h
+++ b/source/blender/freestyle/src/view_map/Silhouette.h
diff --git a/extern/freestyle/src/view_map/SilhouetteGeomEngine.cpp b/source/blender/freestyle/src/view_map/SilhouetteGeomEngine.cpp
index 19b8a632ffe..19b8a632ffe 100755
--- a/extern/freestyle/src/view_map/SilhouetteGeomEngine.cpp
+++ b/source/blender/freestyle/src/view_map/SilhouetteGeomEngine.cpp
diff --git a/extern/freestyle/src/view_map/SilhouetteGeomEngine.h b/source/blender/freestyle/src/view_map/SilhouetteGeomEngine.h
index 159dda1afc0..159dda1afc0 100755
--- a/extern/freestyle/src/view_map/SilhouetteGeomEngine.h
+++ b/source/blender/freestyle/src/view_map/SilhouetteGeomEngine.h
diff --git a/extern/freestyle/src/view_map/SteerableViewMap.cpp b/source/blender/freestyle/src/view_map/SteerableViewMap.cpp
index b2604606aa7..b2604606aa7 100755
--- a/extern/freestyle/src/view_map/SteerableViewMap.cpp
+++ b/source/blender/freestyle/src/view_map/SteerableViewMap.cpp
diff --git a/extern/freestyle/src/view_map/SteerableViewMap.h b/source/blender/freestyle/src/view_map/SteerableViewMap.h
index fe7c2493752..fe7c2493752 100755
--- a/extern/freestyle/src/view_map/SteerableViewMap.h
+++ b/source/blender/freestyle/src/view_map/SteerableViewMap.h
diff --git a/extern/freestyle/src/view_map/ViewEdgeXBuilder.cpp b/source/blender/freestyle/src/view_map/ViewEdgeXBuilder.cpp
index 20b3aeb144d..20b3aeb144d 100755
--- a/extern/freestyle/src/view_map/ViewEdgeXBuilder.cpp
+++ b/source/blender/freestyle/src/view_map/ViewEdgeXBuilder.cpp
diff --git a/extern/freestyle/src/view_map/ViewEdgeXBuilder.h b/source/blender/freestyle/src/view_map/ViewEdgeXBuilder.h
index 9e2837b49a7..9e2837b49a7 100755
--- a/extern/freestyle/src/view_map/ViewEdgeXBuilder.h
+++ b/source/blender/freestyle/src/view_map/ViewEdgeXBuilder.h
diff --git a/extern/freestyle/src/view_map/ViewMap.cpp b/source/blender/freestyle/src/view_map/ViewMap.cpp
index 9a2d262b703..9a2d262b703 100755
--- a/extern/freestyle/src/view_map/ViewMap.cpp
+++ b/source/blender/freestyle/src/view_map/ViewMap.cpp
diff --git a/extern/freestyle/src/view_map/ViewMap.h b/source/blender/freestyle/src/view_map/ViewMap.h
index bdbb140e130..bdbb140e130 100755
--- a/extern/freestyle/src/view_map/ViewMap.h
+++ b/source/blender/freestyle/src/view_map/ViewMap.h
diff --git a/extern/freestyle/src/view_map/ViewMapAdvancedIterators.h b/source/blender/freestyle/src/view_map/ViewMapAdvancedIterators.h
index bb2d916f2df..bb2d916f2df 100755
--- a/extern/freestyle/src/view_map/ViewMapAdvancedIterators.h
+++ b/source/blender/freestyle/src/view_map/ViewMapAdvancedIterators.h
diff --git a/extern/freestyle/src/view_map/ViewMapBuilder.cpp b/source/blender/freestyle/src/view_map/ViewMapBuilder.cpp
index 32f5283a63c..32f5283a63c 100755
--- a/extern/freestyle/src/view_map/ViewMapBuilder.cpp
+++ b/source/blender/freestyle/src/view_map/ViewMapBuilder.cpp
diff --git a/extern/freestyle/src/view_map/ViewMapBuilder.h b/source/blender/freestyle/src/view_map/ViewMapBuilder.h
index ec52d4fdd7e..ec52d4fdd7e 100755
--- a/extern/freestyle/src/view_map/ViewMapBuilder.h
+++ b/source/blender/freestyle/src/view_map/ViewMapBuilder.h
diff --git a/extern/freestyle/src/view_map/ViewMapIO.cpp b/source/blender/freestyle/src/view_map/ViewMapIO.cpp
index d68164973a1..d68164973a1 100755
--- a/extern/freestyle/src/view_map/ViewMapIO.cpp
+++ b/source/blender/freestyle/src/view_map/ViewMapIO.cpp
diff --git a/extern/freestyle/src/view_map/ViewMapIO.h b/source/blender/freestyle/src/view_map/ViewMapIO.h
index 33e168b537b..33e168b537b 100755
--- a/extern/freestyle/src/view_map/ViewMapIO.h
+++ b/source/blender/freestyle/src/view_map/ViewMapIO.h
diff --git a/extern/freestyle/src/view_map/ViewMapIterators.h b/source/blender/freestyle/src/view_map/ViewMapIterators.h
index 004674ba758..004674ba758 100755
--- a/extern/freestyle/src/view_map/ViewMapIterators.h
+++ b/source/blender/freestyle/src/view_map/ViewMapIterators.h
diff --git a/extern/freestyle/src/view_map/ViewMapTesselator.cpp b/source/blender/freestyle/src/view_map/ViewMapTesselator.cpp
index 6041f527d17..6041f527d17 100755
--- a/extern/freestyle/src/view_map/ViewMapTesselator.cpp
+++ b/source/blender/freestyle/src/view_map/ViewMapTesselator.cpp
diff --git a/extern/freestyle/src/view_map/ViewMapTesselator.h b/source/blender/freestyle/src/view_map/ViewMapTesselator.h
index fc1ec8e373e..fc1ec8e373e 100755
--- a/extern/freestyle/src/view_map/ViewMapTesselator.h
+++ b/source/blender/freestyle/src/view_map/ViewMapTesselator.h
diff --git a/extern/freestyle/src/view_map/src.pri b/source/blender/freestyle/src/view_map/src.pri
index 2faf6a81fea..2faf6a81fea 100755
--- a/extern/freestyle/src/view_map/src.pri
+++ b/source/blender/freestyle/src/view_map/src.pri
diff --git a/extern/freestyle/src/view_map/view_map.pro b/source/blender/freestyle/src/view_map/view_map.pro
index ef629bcf6a7..ef629bcf6a7 100755
--- a/extern/freestyle/src/view_map/view_map.pro
+++ b/source/blender/freestyle/src/view_map/view_map.pro
diff --git a/extern/freestyle/src/winged_edge/Curvature.cpp b/source/blender/freestyle/src/winged_edge/Curvature.cpp
index a890fb92c04..a890fb92c04 100755
--- a/extern/freestyle/src/winged_edge/Curvature.cpp
+++ b/source/blender/freestyle/src/winged_edge/Curvature.cpp
diff --git a/extern/freestyle/src/winged_edge/Curvature.h b/source/blender/freestyle/src/winged_edge/Curvature.h
index 214a32ca922..214a32ca922 100755
--- a/extern/freestyle/src/winged_edge/Curvature.h
+++ b/source/blender/freestyle/src/winged_edge/Curvature.h
diff --git a/extern/freestyle/src/winged_edge/Nature.h b/source/blender/freestyle/src/winged_edge/Nature.h
index 1f165e677f5..1f165e677f5 100755
--- a/extern/freestyle/src/winged_edge/Nature.h
+++ b/source/blender/freestyle/src/winged_edge/Nature.h
diff --git a/extern/freestyle/src/winged_edge/WEdge.cpp b/source/blender/freestyle/src/winged_edge/WEdge.cpp
index 79b3a8dae26..79b3a8dae26 100755
--- a/extern/freestyle/src/winged_edge/WEdge.cpp
+++ b/source/blender/freestyle/src/winged_edge/WEdge.cpp
diff --git a/extern/freestyle/src/winged_edge/WEdge.h b/source/blender/freestyle/src/winged_edge/WEdge.h
index 2369caf4566..2369caf4566 100755
--- a/extern/freestyle/src/winged_edge/WEdge.h
+++ b/source/blender/freestyle/src/winged_edge/WEdge.h
diff --git a/extern/freestyle/src/winged_edge/WFillGrid.cpp b/source/blender/freestyle/src/winged_edge/WFillGrid.cpp
index 7d0a2d3c561..7d0a2d3c561 100755
--- a/extern/freestyle/src/winged_edge/WFillGrid.cpp
+++ b/source/blender/freestyle/src/winged_edge/WFillGrid.cpp
diff --git a/extern/freestyle/src/winged_edge/WFillGrid.h b/source/blender/freestyle/src/winged_edge/WFillGrid.h
index 2ebbc2f359a..2ebbc2f359a 100755
--- a/extern/freestyle/src/winged_edge/WFillGrid.h
+++ b/source/blender/freestyle/src/winged_edge/WFillGrid.h
diff --git a/extern/freestyle/src/winged_edge/WSFillGrid.cpp b/source/blender/freestyle/src/winged_edge/WSFillGrid.cpp
index cf3734b488e..cf3734b488e 100755
--- a/extern/freestyle/src/winged_edge/WSFillGrid.cpp
+++ b/source/blender/freestyle/src/winged_edge/WSFillGrid.cpp
diff --git a/extern/freestyle/src/winged_edge/WSFillGrid.h b/source/blender/freestyle/src/winged_edge/WSFillGrid.h
index 976fdca8e46..976fdca8e46 100755
--- a/extern/freestyle/src/winged_edge/WSFillGrid.h
+++ b/source/blender/freestyle/src/winged_edge/WSFillGrid.h
diff --git a/extern/freestyle/src/winged_edge/WXEdge.cpp b/source/blender/freestyle/src/winged_edge/WXEdge.cpp
index 115a4f61789..115a4f61789 100755
--- a/extern/freestyle/src/winged_edge/WXEdge.cpp
+++ b/source/blender/freestyle/src/winged_edge/WXEdge.cpp
diff --git a/extern/freestyle/src/winged_edge/WXEdge.h b/source/blender/freestyle/src/winged_edge/WXEdge.h
index beacb1a9ca9..beacb1a9ca9 100755
--- a/extern/freestyle/src/winged_edge/WXEdge.h
+++ b/source/blender/freestyle/src/winged_edge/WXEdge.h
diff --git a/extern/freestyle/src/winged_edge/WXEdgeBuilder.cpp b/source/blender/freestyle/src/winged_edge/WXEdgeBuilder.cpp
index 534c6e323a9..534c6e323a9 100755
--- a/extern/freestyle/src/winged_edge/WXEdgeBuilder.cpp
+++ b/source/blender/freestyle/src/winged_edge/WXEdgeBuilder.cpp
diff --git a/extern/freestyle/src/winged_edge/WXEdgeBuilder.h b/source/blender/freestyle/src/winged_edge/WXEdgeBuilder.h
index b646d66a285..b646d66a285 100755
--- a/extern/freestyle/src/winged_edge/WXEdgeBuilder.h
+++ b/source/blender/freestyle/src/winged_edge/WXEdgeBuilder.h
diff --git a/extern/freestyle/src/winged_edge/WingedEdgeBuilder.cpp b/source/blender/freestyle/src/winged_edge/WingedEdgeBuilder.cpp
index 98e7c269248..98e7c269248 100755
--- a/extern/freestyle/src/winged_edge/WingedEdgeBuilder.cpp
+++ b/source/blender/freestyle/src/winged_edge/WingedEdgeBuilder.cpp
diff --git a/extern/freestyle/src/winged_edge/WingedEdgeBuilder.h b/source/blender/freestyle/src/winged_edge/WingedEdgeBuilder.h
index fe033f2ea0b..fe033f2ea0b 100755
--- a/extern/freestyle/src/winged_edge/WingedEdgeBuilder.h
+++ b/source/blender/freestyle/src/winged_edge/WingedEdgeBuilder.h
diff --git a/extern/freestyle/src/winged_edge/src.pri b/source/blender/freestyle/src/winged_edge/src.pri
index 9cf40633dcf..9cf40633dcf 100755
--- a/extern/freestyle/src/winged_edge/src.pri
+++ b/source/blender/freestyle/src/winged_edge/src.pri
diff --git a/extern/freestyle/src/winged_edge/winged_edge.pro b/source/blender/freestyle/src/winged_edge/winged_edge.pro
index e36d69454b6..e36d69454b6 100755
--- a/extern/freestyle/src/winged_edge/winged_edge.pro
+++ b/source/blender/freestyle/src/winged_edge/winged_edge.pro
diff --git a/extern/freestyle/style_modules/ChainingIterators.py b/source/blender/freestyle/style_modules/ChainingIterators.py
index 60255c3d094..60255c3d094 100755
--- a/extern/freestyle/style_modules/ChainingIterators.py
+++ b/source/blender/freestyle/style_modules/ChainingIterators.py
diff --git a/extern/freestyle/style_modules/Functions0D.py b/source/blender/freestyle/style_modules/Functions0D.py
index c1ba591c789..c1ba591c789 100755
--- a/extern/freestyle/style_modules/Functions0D.py
+++ b/source/blender/freestyle/style_modules/Functions0D.py
diff --git a/extern/freestyle/style_modules/Functions1D.py b/source/blender/freestyle/style_modules/Functions1D.py
index e2505466aae..e2505466aae 100755
--- a/extern/freestyle/style_modules/Functions1D.py
+++ b/source/blender/freestyle/style_modules/Functions1D.py
diff --git a/extern/freestyle/style_modules/PredicatesB1D.py b/source/blender/freestyle/style_modules/PredicatesB1D.py
index dfc895e8d9b..dfc895e8d9b 100755
--- a/extern/freestyle/style_modules/PredicatesB1D.py
+++ b/source/blender/freestyle/style_modules/PredicatesB1D.py
diff --git a/extern/freestyle/style_modules/PredicatesU0D.py b/source/blender/freestyle/style_modules/PredicatesU0D.py
index 10c4b85a6cf..10c4b85a6cf 100755
--- a/extern/freestyle/style_modules/PredicatesU0D.py
+++ b/source/blender/freestyle/style_modules/PredicatesU0D.py
diff --git a/extern/freestyle/style_modules/PredicatesU1D.py b/source/blender/freestyle/style_modules/PredicatesU1D.py
index 18e9686f9df..18e9686f9df 100755
--- a/extern/freestyle/style_modules/PredicatesU1D.py
+++ b/source/blender/freestyle/style_modules/PredicatesU1D.py
diff --git a/extern/freestyle/style_modules/anisotropic_diffusion.py b/source/blender/freestyle/style_modules/anisotropic_diffusion.py
index f8b68ee51a6..f8b68ee51a6 100755
--- a/extern/freestyle/style_modules/anisotropic_diffusion.py
+++ b/source/blender/freestyle/style_modules/anisotropic_diffusion.py
diff --git a/extern/freestyle/style_modules/apriori_and_causal_density.py b/source/blender/freestyle/style_modules/apriori_and_causal_density.py
index e6bcf046bd0..e6bcf046bd0 100755
--- a/extern/freestyle/style_modules/apriori_and_causal_density.py
+++ b/source/blender/freestyle/style_modules/apriori_and_causal_density.py
diff --git a/extern/freestyle/style_modules/apriori_density.py b/source/blender/freestyle/style_modules/apriori_density.py
index 77d41e7d04b..77d41e7d04b 100755
--- a/extern/freestyle/style_modules/apriori_density.py
+++ b/source/blender/freestyle/style_modules/apriori_density.py
diff --git a/extern/freestyle/style_modules/backbone_stretcher.py b/source/blender/freestyle/style_modules/backbone_stretcher.py
index db17f2574ff..db17f2574ff 100755
--- a/extern/freestyle/style_modules/backbone_stretcher.py
+++ b/source/blender/freestyle/style_modules/backbone_stretcher.py
diff --git a/extern/freestyle/style_modules/blueprint_circles.py b/source/blender/freestyle/style_modules/blueprint_circles.py
index 5eca00ff4ac..5eca00ff4ac 100755
--- a/extern/freestyle/style_modules/blueprint_circles.py
+++ b/source/blender/freestyle/style_modules/blueprint_circles.py
diff --git a/extern/freestyle/style_modules/blueprint_ellipses.py b/source/blender/freestyle/style_modules/blueprint_ellipses.py
index 4e34310b3ca..4e34310b3ca 100755
--- a/extern/freestyle/style_modules/blueprint_ellipses.py
+++ b/source/blender/freestyle/style_modules/blueprint_ellipses.py
diff --git a/extern/freestyle/style_modules/blueprint_squares.py b/source/blender/freestyle/style_modules/blueprint_squares.py
index 926f882456f..926f882456f 100755
--- a/extern/freestyle/style_modules/blueprint_squares.py
+++ b/source/blender/freestyle/style_modules/blueprint_squares.py
diff --git a/extern/freestyle/style_modules/cartoon.py b/source/blender/freestyle/style_modules/cartoon.py
index 0c49f854f7d..0c49f854f7d 100755
--- a/extern/freestyle/style_modules/cartoon.py
+++ b/source/blender/freestyle/style_modules/cartoon.py
diff --git a/extern/freestyle/style_modules/contour.py b/source/blender/freestyle/style_modules/contour.py
index b7c97064cae..b7c97064cae 100755
--- a/extern/freestyle/style_modules/contour.py
+++ b/source/blender/freestyle/style_modules/contour.py
diff --git a/extern/freestyle/style_modules/curvature2d.py b/source/blender/freestyle/style_modules/curvature2d.py
index 587c53071d0..587c53071d0 100755
--- a/extern/freestyle/style_modules/curvature2d.py
+++ b/source/blender/freestyle/style_modules/curvature2d.py
diff --git a/extern/freestyle/style_modules/external_contour.py b/source/blender/freestyle/style_modules/external_contour.py
index ae49e18981e..ae49e18981e 100755
--- a/extern/freestyle/style_modules/external_contour.py
+++ b/source/blender/freestyle/style_modules/external_contour.py
diff --git a/extern/freestyle/style_modules/external_contour_sketchy.py b/source/blender/freestyle/style_modules/external_contour_sketchy.py
index 1c3ffe94e1b..1c3ffe94e1b 100755
--- a/extern/freestyle/style_modules/external_contour_sketchy.py
+++ b/source/blender/freestyle/style_modules/external_contour_sketchy.py
diff --git a/extern/freestyle/style_modules/external_contour_smooth.py b/source/blender/freestyle/style_modules/external_contour_smooth.py
index 59633a25063..59633a25063 100755
--- a/extern/freestyle/style_modules/external_contour_smooth.py
+++ b/source/blender/freestyle/style_modules/external_contour_smooth.py
diff --git a/extern/freestyle/style_modules/extra-lines.sml b/source/blender/freestyle/style_modules/extra-lines.sml
index c63cd40945d..c63cd40945d 100755
--- a/extern/freestyle/style_modules/extra-lines.sml
+++ b/source/blender/freestyle/style_modules/extra-lines.sml
diff --git a/extern/freestyle/style_modules/haloing.py b/source/blender/freestyle/style_modules/haloing.py
index b64b2d967f7..b64b2d967f7 100755
--- a/extern/freestyle/style_modules/haloing.py
+++ b/source/blender/freestyle/style_modules/haloing.py
diff --git a/extern/freestyle/style_modules/ignore_small_occlusions.py b/source/blender/freestyle/style_modules/ignore_small_occlusions.py
index 98c318a3757..98c318a3757 100755
--- a/extern/freestyle/style_modules/ignore_small_occlusions.py
+++ b/source/blender/freestyle/style_modules/ignore_small_occlusions.py
diff --git a/extern/freestyle/style_modules/invisible_lines.py b/source/blender/freestyle/style_modules/invisible_lines.py
index 5cce741e91e..5cce741e91e 100755
--- a/extern/freestyle/style_modules/invisible_lines.py
+++ b/source/blender/freestyle/style_modules/invisible_lines.py
diff --git a/extern/freestyle/style_modules/japanese_bigbrush.py b/source/blender/freestyle/style_modules/japanese_bigbrush.py
index e0985497e2c..e0985497e2c 100755
--- a/extern/freestyle/style_modules/japanese_bigbrush.py
+++ b/source/blender/freestyle/style_modules/japanese_bigbrush.py
diff --git a/extern/freestyle/style_modules/logical_operators.py b/source/blender/freestyle/style_modules/logical_operators.py
index 63a0a9f9ed8..63a0a9f9ed8 100755
--- a/extern/freestyle/style_modules/logical_operators.py
+++ b/source/blender/freestyle/style_modules/logical_operators.py
diff --git a/extern/freestyle/style_modules/long_anisotropically_dense.py b/source/blender/freestyle/style_modules/long_anisotropically_dense.py
index 4bfeedf257f..4bfeedf257f 100755
--- a/extern/freestyle/style_modules/long_anisotropically_dense.py
+++ b/source/blender/freestyle/style_modules/long_anisotropically_dense.py
diff --git a/extern/freestyle/style_modules/multiple_parameterization.py b/source/blender/freestyle/style_modules/multiple_parameterization.py
index ff04c5930c5..ff04c5930c5 100755
--- a/extern/freestyle/style_modules/multiple_parameterization.py
+++ b/source/blender/freestyle/style_modules/multiple_parameterization.py
diff --git a/extern/freestyle/style_modules/nature.py b/source/blender/freestyle/style_modules/nature.py
index 8cfd480ba3b..8cfd480ba3b 100755
--- a/extern/freestyle/style_modules/nature.py
+++ b/source/blender/freestyle/style_modules/nature.py
diff --git a/extern/freestyle/style_modules/near_lines.py b/source/blender/freestyle/style_modules/near_lines.py
index b132f6b5802..b132f6b5802 100755
--- a/extern/freestyle/style_modules/near_lines.py
+++ b/source/blender/freestyle/style_modules/near_lines.py
diff --git a/extern/freestyle/style_modules/occluded_by_specific_object.py b/source/blender/freestyle/style_modules/occluded_by_specific_object.py
index 96f431c2c4e..96f431c2c4e 100755
--- a/extern/freestyle/style_modules/occluded_by_specific_object.py
+++ b/source/blender/freestyle/style_modules/occluded_by_specific_object.py
diff --git a/extern/freestyle/style_modules/polygonalize.py b/source/blender/freestyle/style_modules/polygonalize.py
index 81d47178404..81d47178404 100755
--- a/extern/freestyle/style_modules/polygonalize.py
+++ b/source/blender/freestyle/style_modules/polygonalize.py
diff --git a/extern/freestyle/style_modules/qi0.py b/source/blender/freestyle/style_modules/qi0.py
index f742b777738..f742b777738 100755
--- a/extern/freestyle/style_modules/qi0.py
+++ b/source/blender/freestyle/style_modules/qi0.py
diff --git a/extern/freestyle/style_modules/qi0_not_external_contour.py b/source/blender/freestyle/style_modules/qi0_not_external_contour.py
index 047ab7e1a8e..047ab7e1a8e 100755
--- a/extern/freestyle/style_modules/qi0_not_external_contour.py
+++ b/source/blender/freestyle/style_modules/qi0_not_external_contour.py
diff --git a/extern/freestyle/style_modules/qi1.py b/source/blender/freestyle/style_modules/qi1.py
index 234d196f15e..234d196f15e 100755
--- a/extern/freestyle/style_modules/qi1.py
+++ b/source/blender/freestyle/style_modules/qi1.py
diff --git a/extern/freestyle/style_modules/qi2.py b/source/blender/freestyle/style_modules/qi2.py
index 8e45914c619..8e45914c619 100755
--- a/extern/freestyle/style_modules/qi2.py
+++ b/source/blender/freestyle/style_modules/qi2.py
diff --git a/extern/freestyle/style_modules/sequentialsplit_sketchy.py b/source/blender/freestyle/style_modules/sequentialsplit_sketchy.py
index b33cd5d4043..b33cd5d4043 100755
--- a/extern/freestyle/style_modules/sequentialsplit_sketchy.py
+++ b/source/blender/freestyle/style_modules/sequentialsplit_sketchy.py
diff --git a/extern/freestyle/style_modules/shaders.py b/source/blender/freestyle/style_modules/shaders.py
index 17ad31961d5..17ad31961d5 100755
--- a/extern/freestyle/style_modules/shaders.py
+++ b/source/blender/freestyle/style_modules/shaders.py
diff --git a/extern/freestyle/style_modules/sketchy_multiple_parameterization.py b/source/blender/freestyle/style_modules/sketchy_multiple_parameterization.py
index 69e6f11751d..69e6f11751d 100755
--- a/extern/freestyle/style_modules/sketchy_multiple_parameterization.py
+++ b/source/blender/freestyle/style_modules/sketchy_multiple_parameterization.py
diff --git a/extern/freestyle/style_modules/sketchy_topology_broken.py b/source/blender/freestyle/style_modules/sketchy_topology_broken.py
index c1cefedfad2..c1cefedfad2 100755
--- a/extern/freestyle/style_modules/sketchy_topology_broken.py
+++ b/source/blender/freestyle/style_modules/sketchy_topology_broken.py
diff --git a/extern/freestyle/style_modules/sketchy_topology_preserved.py b/source/blender/freestyle/style_modules/sketchy_topology_preserved.py
index bc56a272bd5..bc56a272bd5 100755
--- a/extern/freestyle/style_modules/sketchy_topology_preserved.py
+++ b/source/blender/freestyle/style_modules/sketchy_topology_preserved.py
diff --git a/extern/freestyle/style_modules/split_at_highest_2d_curvatures.py b/source/blender/freestyle/style_modules/split_at_highest_2d_curvatures.py
index 0f42080292b..0f42080292b 100755
--- a/extern/freestyle/style_modules/split_at_highest_2d_curvatures.py
+++ b/source/blender/freestyle/style_modules/split_at_highest_2d_curvatures.py
diff --git a/extern/freestyle/style_modules/split_at_tvertices.py b/source/blender/freestyle/style_modules/split_at_tvertices.py
index dde586fd1f0..dde586fd1f0 100755
--- a/extern/freestyle/style_modules/split_at_tvertices.py
+++ b/source/blender/freestyle/style_modules/split_at_tvertices.py
diff --git a/extern/freestyle/style_modules/stroke_texture.py b/source/blender/freestyle/style_modules/stroke_texture.py
index d6c753bf9e6..d6c753bf9e6 100755
--- a/extern/freestyle/style_modules/stroke_texture.py
+++ b/source/blender/freestyle/style_modules/stroke_texture.py
diff --git a/extern/freestyle/style_modules/suggestive.py b/source/blender/freestyle/style_modules/suggestive.py
index 99a419ca23f..99a419ca23f 100755
--- a/extern/freestyle/style_modules/suggestive.py
+++ b/source/blender/freestyle/style_modules/suggestive.py
diff --git a/extern/freestyle/style_modules/thickness_fof_depth_discontinuity.py b/source/blender/freestyle/style_modules/thickness_fof_depth_discontinuity.py
index 06687fd9a00..06687fd9a00 100755
--- a/extern/freestyle/style_modules/thickness_fof_depth_discontinuity.py
+++ b/source/blender/freestyle/style_modules/thickness_fof_depth_discontinuity.py
diff --git a/extern/freestyle/style_modules/tipremover.py b/source/blender/freestyle/style_modules/tipremover.py
index b87eb7a573a..b87eb7a573a 100755
--- a/extern/freestyle/style_modules/tipremover.py
+++ b/source/blender/freestyle/style_modules/tipremover.py
diff --git a/extern/freestyle/style_modules/tvertex_remover.py b/source/blender/freestyle/style_modules/tvertex_remover.py
index b55754381f7..b55754381f7 100755
--- a/extern/freestyle/style_modules/tvertex_remover.py
+++ b/source/blender/freestyle/style_modules/tvertex_remover.py
diff --git a/extern/freestyle/style_modules/uniformpruning_zsort.py b/source/blender/freestyle/style_modules/uniformpruning_zsort.py
index 7e719417af0..7e719417af0 100755
--- a/extern/freestyle/style_modules/uniformpruning_zsort.py
+++ b/source/blender/freestyle/style_modules/uniformpruning_zsort.py
diff --git a/extern/freestyle/style_modules/vector.py b/source/blender/freestyle/style_modules/vector.py
index 039f262546b..039f262546b 100755
--- a/extern/freestyle/style_modules/vector.py
+++ b/source/blender/freestyle/style_modules/vector.py
diff --git a/source/blender/include/BIF_screen.h b/source/blender/include/BIF_screen.h
index aa3fe6a9279..6f9c0ae194f 100644
--- a/source/blender/include/BIF_screen.h
+++ b/source/blender/include/BIF_screen.h
@@ -82,7 +82,6 @@ void winqdelete(struct ScrArea *sa);
void winqclear(struct ScrArea *sa);
void addqueue(short win, unsigned short event, short val);
void addafterqueue(short win, unsigned short event, short val);
-void add_readfile_event(char *filename);
short ext_qtest(void);
unsigned short extern_qread(short *val);
unsigned short extern_qread_ext(short *val, char *ascii);
diff --git a/source/blender/include/butspace.h b/source/blender/include/butspace.h
index 8556d47e4ab..242965a820c 100644
--- a/source/blender/include/butspace.h
+++ b/source/blender/include/butspace.h
@@ -367,7 +367,7 @@ void curvemap_buttons(struct uiBlock *block, struct CurveMapping *cumap, char la
#define B_SEQ_BUT_TRANSFORM 1695
#define B_SEQ_BUT_RELOAD_FILE 1696
#define B_SEQ_BUT_REBUILD_PROXY 1697
-
+#define B_SEQ_SEL_PROXY_DIR 1698
/* *********************** */
#define B_ARMATUREBUTS 1800
#define B_POSE 1701
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
index 37bbb68ba03..78f780c43b1 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
@@ -160,11 +160,11 @@ static void node_dynamic_free_storage_cb(bNode *node)
}
/* Disable pynode when its script fails */
-/*static void node_dynamic_disable(bNode *node)
+static void node_dynamic_disable(bNode *node)
{
node->custom1 = 0;
node->custom1 = BSET(node->custom1, NODE_DYNAMIC_ERROR);
-}*/
+}
/* Disable all pynodes using the given text (script) id */
static void node_dynamic_disable_all_by_id(ID *id)
@@ -401,7 +401,11 @@ static int node_dynamic_parse(struct bNode *node)
MEM_freeN(buf);
if (!pyresult) {
+ if (BTST(node->custom1, NODE_DYNAMIC_LOADED)) {
+ node_dynamic_disable(node);
+ } else {
node_dynamic_disable_all_by_id(node->id);
+ }
node_dynamic_pyerror_print(node);
PyGILState_Release(gilstate);
return -1;
diff --git a/source/blender/python/BPY_interface.c b/source/blender/python/BPY_interface.c
index 7cfb30cbc07..4e271db69de 100644
--- a/source/blender/python/BPY_interface.c
+++ b/source/blender/python/BPY_interface.c
@@ -444,7 +444,7 @@ void BPY_rebuild_syspath( void )
}
BLI_strncpy(dirpath, U.pythondir, FILE_MAX);
- BLI_convertstringcode(dirpath, G.sce, 0);
+ BLI_convertstringcode(dirpath, G.sce);
syspath_append(dirpath); /* append to module search path */
BLI_make_file_string("/", modpath, dirpath, "bpymodules");
@@ -1005,7 +1005,7 @@ int BPY_menu_do_python( short menutype, int event )
/* dirs in Blender can be "//", which has a special meaning */
BLI_strncpy(upythondir, U.pythondir, FILE_MAX);
- BLI_convertstringcode(upythondir, G.sce, 0); /* if so, this expands it */
+ BLI_convertstringcode(upythondir, G.sce); /* if so, this expands it */
BLI_make_file_string( "/", filestr, upythondir, pym->filename );
}
else { /* script is in default scripts dir */
diff --git a/source/blender/python/BPY_menus.c b/source/blender/python/BPY_menus.c
index ce1b964b689..82da9edbee6 100644
--- a/source/blender/python/BPY_menus.c
+++ b/source/blender/python/BPY_menus.c
@@ -492,7 +492,7 @@ static int bpymenu_CreateFromFile( void )
fscanf( fp, "# User defined scripts dir: %[^\n]\n", w1 );
BLI_strncpy(upythondir, U.pythondir, FILE_MAX);
- BLI_convertstringcode(upythondir, G.sce, 0);
+ BLI_convertstringcode(upythondir, G.sce);
if( strcmp( w1, upythondir ) != 0 )
return -1;
@@ -604,7 +604,7 @@ static void bpymenu_WriteDataFile( void )
char upythondir[FILE_MAX];
BLI_strncpy(upythondir, U.pythondir, FILE_MAX);
- BLI_convertstringcode(upythondir, G.sce, 0);
+ BLI_convertstringcode(upythondir, G.sce);
fprintf( fp, "# User defined scripts dir: %s\n", upythondir );
}
@@ -1003,7 +1003,7 @@ int BPyMenu_Init( int usedir )
}
else {
BLI_strncpy(upythondir, upydir, FILE_MAX);
- BLI_convertstringcode(upythondir, G.sce, 0);
+ BLI_convertstringcode(upythondir, G.sce);
}
sdir = bpy_gethome(1);
@@ -1096,7 +1096,7 @@ the user defined Python scripts dir.\n", dirname );
}
if( stat_dir2 == 0 ) {
BLI_strncpy(dirname, U.pythondir, FILE_MAX);
- BLI_convertstringcode(dirname, G.sce, 0);
+ BLI_convertstringcode(dirname, G.sce);
i = bpymenu_ParseDir( dirname, NULL, 1 );
if (i == -1 && DEBUG)
fprintf(stderr, "User defined scripts dir does not seem valid.\n\n");
diff --git a/source/blender/python/api2_2x/Blender.c b/source/blender/python/api2_2x/Blender.c
index fe5ae25ccb1..daba0c36fdf 100644
--- a/source/blender/python/api2_2x/Blender.c
+++ b/source/blender/python/api2_2x/Blender.c
@@ -371,7 +371,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char upydir[FILE_MAX];
BLI_strncpy(upydir, U.pythondir, FILE_MAX);
- BLI_convertstringcode(upydir, G.sce, 0);
+ BLI_convertstringcode(upydir, G.sce);
if (BLI_exists(upydir)) {
char udatadir[FILE_MAXDIR];
@@ -397,7 +397,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char upydir[FILE_MAX];
BLI_strncpy(upydir, U.pythondir, FILE_MAX);
- BLI_convertstringcode(upydir, G.sce, 0);
+ BLI_convertstringcode(upydir, G.sce);
if( BLI_exists( upydir ) )
ret = PyString_FromString( upydir );
@@ -410,7 +410,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char yfexportdir[FILE_MAX];
BLI_strncpy(yfexportdir, U.yfexportdir, FILE_MAX);
- BLI_convertstringcode(yfexportdir, G.sce, 0);
+ BLI_convertstringcode(yfexportdir, G.sce);
if( BLI_exists( yfexportdir ) )
ret = PyString_FromString( yfexportdir );
@@ -423,7 +423,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char fontdir[FILE_MAX];
BLI_strncpy(fontdir, U.fontdir, FILE_MAX);
- BLI_convertstringcode(fontdir, G.sce, 0);
+ BLI_convertstringcode(fontdir, G.sce);
if( BLI_exists( fontdir ) )
ret = PyString_FromString( fontdir );
@@ -436,7 +436,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char textudir[FILE_MAX];
BLI_strncpy(textudir, U.textudir, FILE_MAX);
- BLI_convertstringcode(textudir, G.sce, 0);
+ BLI_convertstringcode(textudir, G.sce);
if( BLI_exists( textudir ) )
ret = PyString_FromString( textudir );
@@ -449,7 +449,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char plugtexdir[FILE_MAX];
BLI_strncpy(plugtexdir, U.plugtexdir, FILE_MAX);
- BLI_convertstringcode(plugtexdir, G.sce, 0);
+ BLI_convertstringcode(plugtexdir, G.sce);
if( BLI_exists( plugtexdir ) )
ret = PyString_FromString( plugtexdir );
@@ -462,7 +462,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char plugseqdir[FILE_MAX];
BLI_strncpy(plugseqdir, U.plugseqdir, FILE_MAX);
- BLI_convertstringcode(plugseqdir, G.sce, 0);
+ BLI_convertstringcode(plugseqdir, G.sce);
if( BLI_exists( plugseqdir ) )
ret = PyString_FromString( plugseqdir );
@@ -475,7 +475,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char renderdir[FILE_MAX];
BLI_strncpy(renderdir, U.renderdir, FILE_MAX);
- BLI_convertstringcode(renderdir, G.sce, 0);
+ BLI_convertstringcode(renderdir, G.sce);
if( BLI_exists( renderdir ) )
ret = PyString_FromString( renderdir );
@@ -488,7 +488,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char sounddir[FILE_MAX];
BLI_strncpy(sounddir, U.sounddir, FILE_MAX);
- BLI_convertstringcode(sounddir, G.sce, 0);
+ BLI_convertstringcode(sounddir, G.sce);
if( BLI_exists( sounddir ) )
ret = PyString_FromString( sounddir );
@@ -501,7 +501,7 @@ static PyObject *Blender_Get( PyObject * self, PyObject * value )
char tempdir[FILE_MAX];
BLI_strncpy(tempdir, U.tempdir, FILE_MAX);
- BLI_convertstringcode(tempdir, G.sce, 0);
+ BLI_convertstringcode(tempdir, G.sce);
if( BLI_exists( tempdir ) )
ret = PyString_FromString( tempdir );
@@ -776,7 +776,7 @@ static PyObject *Blender_ShowHelp(PyObject *self, PyObject *script)
char upydir[FILE_MAX];
BLI_strncpy(upydir, U.pythondir, FILE_MAX);
- BLI_convertstringcode(upydir, G.sce, 0);
+ BLI_convertstringcode(upydir, G.sce);
BLI_make_file_string("/", hspath, upydir, "help_browser.py");
if (!BLI_exists(hspath))
diff --git a/source/blender/python/api2_2x/Library.c b/source/blender/python/api2_2x/Library.c
index 667db8a1dfd..799735c2062 100644
--- a/source/blender/python/api2_2x/Library.c
+++ b/source/blender/python/api2_2x/Library.c
@@ -166,7 +166,7 @@ static PyObject *M_Library_Open( PyObject * self, PyObject * value )
/* copy the name to make it absolute so BLO_blendhandle_from_file doesn't complain */
BLI_strncpy(fname1, fname, sizeof(fname1));
- BLI_convertstringcode(fname1, G.sce, 0); /* make absolute */
+ BLI_convertstringcode(fname1, G.sce); /* make absolute */
/* G.sce = last file loaded, save for UI and restore after opening file */
BLI_strncpy(filename, G.sce, sizeof(filename));
@@ -483,7 +483,7 @@ static BlendHandle *open_library( char *filename, char *longFilename )
/* get complete file name if necessary */
BLI_strncpy( longFilename, filename, FILE_MAX );
- BLI_convertstringcode( longFilename, G.sce, 0 );
+ BLI_convertstringcode( longFilename, G.sce );
/* throw exceptions for wrong file type, cyclic reference */
if( !BLO_has_bfile_extension(longFilename) ) {
@@ -515,11 +515,12 @@ static BlendHandle *open_library( char *filename, char *longFilename )
*/
static PyObject *CreatePyObject_LibData( int idtype, int kind,
- void *name, void *iter, char *filename )
+ void *name, void *iter, char *filename, int rel )
{
BPy_LibraryData *seq = PyObject_NEW( BPy_LibraryData, &LibraryData_Type);
seq->iter = iter; /* the name list (for iterators) */
seq->type = idtype; /* the Blender ID type */
+ seq->rel = rel; /* relative or absolute library */
seq->kind = kind; /* used by Blender Objects */
seq->name = name; /* object name, iterator name list, or NULL */
/* save the library name */
@@ -560,7 +561,8 @@ static PyObject *lib_link_or_append( BPy_LibraryData *self, PyObject * value,
/* otherwise, create a pseudo object ready for appending or linking */
return CreatePyObject_LibData( ID_OB, mode,
- BLI_strdupn( name, strlen( name ) ), NULL, self->filename );
+ BLI_strdupn( name, strlen( name ) ), NULL, self->filename,
+ self->rel );
}
}
@@ -586,6 +588,9 @@ PyObject *LibraryData_importLibData( BPy_LibraryData *self, char *name,
if( !openlib )
return NULL;
+ /* fix any /foo/../foo/ */
+ BLI_cleanup_file(NULL, longFilename);
+
/* find all datablocks for the specified type */
names = BLO_blendhandle_get_datablock_names ( openlib, self->type );
@@ -616,15 +621,15 @@ PyObject *LibraryData_importLibData( BPy_LibraryData *self, char *name,
}
/* import from the libary */
- BLO_script_library_append( &openlib, longFilename, name, self->type, mode,
- scene );
+ BLO_script_library_append( &openlib, longFilename, name, self->type,
+ mode | self->rel, scene );
/*
* locate the library. If this is an append, make the data local. If it
* is link, we need the library for later
*/
for( lib = G.main->library.first; lib; lib = lib->id.next )
- if( strcmp( longFilename, lib->name ) == 0 ) {
+ if( strcmp( longFilename, lib->filename ) == 0) {
if( mode != FILE_LINK ) {
all_local( lib, 1 );
/* important we unset, otherwise these object wont
@@ -717,7 +722,7 @@ static PyObject *LibraryData_getIter( BPy_LibraryData * self )
/* build an iterator object for the name list */
return CreatePyObject_LibData( self->type, OTHER, names,
- names, self->filename );
+ names, self->filename, self->rel );
}
/* Return next name. */
@@ -942,7 +947,7 @@ PyTypeObject LibraryData_Type = {
static PyObject *LibraryData_CreatePyObject( BPy_Library *self, void *mode )
{
return CreatePyObject_LibData( GET_INT_FROM_POINTER(mode), OTHER, NULL, NULL,
- self->filename );
+ self->filename, self->rel);
}
/************************************************************
@@ -972,6 +977,39 @@ static int Library_setFilename( BPy_Library * self, PyObject * args )
return 0;
}
+/*
+ * Return the library's name. The format depends on whether the library is
+ * accessed as relative or absolute.
+ */
+
+static PyObject *Library_getName( BPy_Library * self )
+{
+ Library *lib;
+ BlendHandle *openlib;
+ char longFilename[FILE_MAX];
+
+ /* try to open the library */
+ openlib = open_library( self->filename, longFilename );
+ if( openlib ) {
+ BLO_blendhandle_close( openlib );
+ /* remove any /../ or /./ junk */
+ BLI_cleanup_file(NULL, longFilename);
+
+ /* search the loaded libraries for a match */
+ for( lib = G.main->library.first; lib; lib = lib->id.next )
+ if( strcmp( longFilename, lib->filename ) == 0) {
+ return PyString_FromString( lib->name );
+ }
+
+ /* library not found in memory */
+ return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+ "library not loaded" );
+ }
+ /* could not load library */
+ return EXPP_ReturnPyObjError( PyExc_IOError, "library not found" );
+}
+
+
/************************************************************************
* Python Library_type attributes get/set structure
************************************************************************/
@@ -981,6 +1019,10 @@ static PyGetSetDef Library_getseters[] = {
(getter)Library_getFilename, (setter)Library_setFilename,
"library filename",
NULL},
+ {"name",
+ (getter)Library_getName, (setter)NULL,
+ "library name (as used by Blender)",
+ NULL},
{"objects",
(getter)LibraryData_CreatePyObject, (setter)NULL,
"objects from the library",
@@ -1066,20 +1108,27 @@ static PyGetSetDef Library_getseters[] = {
* actually accessed later.
*/
-static PyObject *M_Library_Load(PyObject *self, PyObject * value)
+static PyObject *M_Library_Load(PyObject *self, PyObject * args)
{
- char *filename = PyString_AsString(value);
+ char *filename = NULL;
+ PyObject *relative = NULL;
BPy_Library *lib;
- if( !filename )
+ if( !PyArg_ParseTuple( args, "s|O", &filename, &relative ) )
return EXPP_ReturnPyObjError( PyExc_TypeError,
- "expected a string" );
+ "expected strings and optional bool as arguments." );
/* try to create a new object */
lib = (BPy_Library *)PyObject_NEW( BPy_Library, &Library_Type );
if( !lib )
return NULL;
+ /* save relative flag value */
+ if( relative && PyObject_IsTrue(relative) )
+ lib->rel = FILE_STRINGCODE;
+ else
+ lib->rel = 0;
+
/* assign the library filename for future use, then return */
BLI_strncpy( lib->filename, filename, sizeof(lib->filename) );
@@ -1087,7 +1136,7 @@ static PyObject *M_Library_Load(PyObject *self, PyObject * value)
}
static struct PyMethodDef M_Library_methods[] = {
- {"load", (PyCFunction)M_Library_Load, METH_O,
+ {"load", (PyCFunction)M_Library_Load, METH_VARARGS,
"(string) - declare a .blend file for use as a library"},
{NULL, NULL, 0, NULL}
};
diff --git a/source/blender/python/api2_2x/Library.h b/source/blender/python/api2_2x/Library.h
index 326040edb35..b75e61d55ff 100644
--- a/source/blender/python/api2_2x/Library.h
+++ b/source/blender/python/api2_2x/Library.h
@@ -42,6 +42,7 @@
typedef struct {
PyObject_HEAD
char filename[FILE_MAXDIR + FILE_MAXFILE];
+ int rel;
} BPy_Library;
typedef struct {
@@ -50,6 +51,7 @@ typedef struct {
int type;
char filename[FILE_MAXDIR + FILE_MAXFILE];
char *name;
+ int rel;
enum {
OBJECT_IS_LINK,
OBJECT_IS_APPEND,
diff --git a/source/blender/python/api2_2x/Node.c b/source/blender/python/api2_2x/Node.c
index ba975a6892f..1d420c5e4cb 100644
--- a/source/blender/python/api2_2x/Node.c
+++ b/source/blender/python/api2_2x/Node.c
@@ -361,6 +361,15 @@ static int pysockets_to_blendersockets(PyObject *tuple, bNodeSocketType **socks,
len = PyTuple_Size(tuple);
+ if (len >= MAX_SOCKET) {
+ char error_msg[70];
+ PyOS_snprintf(error_msg, sizeof(error_msg),
+ "limit exceeded: each node can't have more than %d i/o sockets", MAX_SOCKET - 1);
+ PyErr_SetString(PyExc_AttributeError, error_msg);
+ len = 0;
+ retval = -1;
+ }
+
nsocks = MEM_callocN(sizeof(bNodeSocketType)*(len+1), "bNodeSocketType in Node.c");
for (pos = 0, a = 0; pos< len; pos++, a++) {
@@ -437,6 +446,7 @@ static int Map_socketdef(BPy_NodeSocketLists *self, PyObject *args, void *closur
{
bNode *node = NULL;
PyObject *tuple = NULL;
+ int ret = 0;
node = self->node;
@@ -453,7 +463,7 @@ static int Map_socketdef(BPy_NodeSocketLists *self, PyObject *args, void *closur
if (args) {
if(PySequence_Check(args)) {
tuple = PySequence_Tuple(args);
- pysockets_to_blendersockets(tuple,
+ ret = pysockets_to_blendersockets(tuple,
&(node->typeinfo->inputs), node->custom1, 1);
Py_DECREF(self->input);
self->input = tuple;
@@ -466,7 +476,7 @@ static int Map_socketdef(BPy_NodeSocketLists *self, PyObject *args, void *closur
if (args) {
if(PyList_Check(args)) {
tuple = PySequence_Tuple(args);
- pysockets_to_blendersockets(tuple,
+ ret = pysockets_to_blendersockets(tuple,
&(node->typeinfo->outputs), node->custom1, 0);
Py_DECREF(self->output);
self->output = tuple;
@@ -479,6 +489,11 @@ static int Map_socketdef(BPy_NodeSocketLists *self, PyObject *args, void *closur
fprintf(stderr,"DEBUG pynodes: got no list in Map_socketdef\n");
break;
}
+
+ if (ret == -1) {
+ node->custom1 = BSET(node->custom1, NODE_DYNAMIC_ERROR);
+ }
+
return 0;
}
diff --git a/source/blender/python/api2_2x/Sys.c b/source/blender/python/api2_2x/Sys.c
index 337f8b6bb14..9de4e344e8c 100644
--- a/source/blender/python/api2_2x/Sys.c
+++ b/source/blender/python/api2_2x/Sys.c
@@ -391,7 +391,8 @@ static PyObject *M_sys_expandpath( PyObject * self, PyObject * value )
"expected string argument" );
BLI_strncpy(expanded, path, FILE_MAXDIR + FILE_MAXFILE);
- BLI_convertstringcode(expanded, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(expanded, G.sce);
+ BLI_convertstringframe(expanded, G.scene->r.cfra);
return PyString_FromString(expanded);
}
diff --git a/source/blender/python/api2_2x/doc/LibData.py b/source/blender/python/api2_2x/doc/LibData.py
index 7b6f4950c76..47bd7fdb763 100644
--- a/source/blender/python/api2_2x/doc/LibData.py
+++ b/source/blender/python/api2_2x/doc/LibData.py
@@ -26,13 +26,15 @@ Example::
me.materials[0] = mat # assign linked material to mesh
"""
-def load(filename):
+def load(filename,relative=False):
"""
Select an existing .blend file for use as a library. Unlike the
Library module, multiple libraries can be defined at the same time.
@type filename: string
@param filename: The filename of a Blender file. Filenames starting with "//" will be loaded relative to the blend file's location.
+ @type relative: boolean
+ @param relative: Convert relative paths to absolute paths (default). Setting this parameter to True will leave paths relative.
@rtype: Library
@return: return a L{Library} object.
"""
@@ -46,8 +48,10 @@ class Libraries:
It provides access to scenes, objects, meshes, curves, metaballs,
materials, textures, images, lattices, lamps, cameras, ipos, worlds,
fonts, texts, sounds, groups, armatures, and actions.
- @ivar filename: The path to the library
+ @ivar filename: The filename of the library, as supplied by user.
@type filename: string
+ @ivar name: The path to the library, as used by Blender. If the filename supplied by the user is relative, but the relative option to L{library.load()<load>} is False, the name will be the absolute path.
+ @type name: string
@ivar scenes: library L{scene<Scene.Scene>} data
@type scenes: L{LibData}
@ivar objects: library L{object<Object.Object>} data
diff --git a/source/blender/python/api2_2x/sceneRender.c b/source/blender/python/api2_2x/sceneRender.c
index 7cae5f6144f..db5ad669255 100644
--- a/source/blender/python/api2_2x/sceneRender.c
+++ b/source/blender/python/api2_2x/sceneRender.c
@@ -598,8 +598,7 @@ PyObject *RenderData_Play( BPy_RenderData * self )
if( self->renderContext->imtype == R_QUICKTIME ) {
strcpy( file, self->renderContext->pic );
- BLI_convertstringcode( file, (char *) self->scene,
- self->renderContext->cfra );
+ BLI_convertstringcode( file, G.sce );
BLI_make_existing_file( file );
if( BLI_strcasecmp( file + strlen( file ) - 4, ".mov" ) ) {
sprintf( txt, "%04d_%04d.mov",
@@ -612,8 +611,8 @@ PyObject *RenderData_Play( BPy_RenderData * self )
{
strcpy( file, self->renderContext->pic );
- BLI_convertstringcode( file, G.sce,
- self->renderContext->cfra );
+ BLI_convertstringcode( file, G.sce );
+
BLI_make_existing_file( file );
if( BLI_strcasecmp( file + strlen( file ) - 4, ".avi" ) ) {
sprintf( txt, "%04d_%04d.avi",
diff --git a/source/blender/quicktime/apple/quicktime_export.c b/source/blender/quicktime/apple/quicktime_export.c
index a49a9a2fdc8..736bb4dd584 100644
--- a/source/blender/quicktime/apple/quicktime_export.c
+++ b/source/blender/quicktime/apple/quicktime_export.c
@@ -428,7 +428,7 @@ void makeqtstring (char *string) {
if (string==0) return;
strcpy(string, G.scene->r.pic);
- BLI_convertstringcode(string, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(string, G.sce);
BLI_make_existing_file(string);
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 09c850b6252..93282e641d3 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -1835,7 +1835,8 @@ static void load_backbuffer(Render *re)
char name[256];
strcpy(name, re->r.backbuf);
- BLI_convertstringcode(name, G.sce, re->r.cfra);
+ BLI_convertstringcode(name, G.sce);
+ BLI_convertstringframe(name, re->r.cfra);
if(re->backbuf) {
re->backbuf->id.us--;
diff --git a/source/blender/src/buttons_editing.c b/source/blender/src/buttons_editing.c
index f1c356a0a77..b02e89233e5 100644
--- a/source/blender/src/buttons_editing.c
+++ b/source/blender/src/buttons_editing.c
@@ -4585,16 +4585,21 @@ void do_vgroupbuts(unsigned short event)
switch(event) {
case B_NEWVGROUP:
add_defgroup (ob);
+ DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
scrarea_queue_winredraw(curarea);
allqueue(REDRAWOOPS, 0);
+
break;
case B_DELVGROUP:
- if ((G.obedit) && (G.obedit == ob))
+ if ((G.obedit) && (G.obedit == ob)) {
del_defgroup (ob);
- else
+ } else {
del_defgroup_in_object_mode (ob);
+ DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+ }
allqueue (REDRAWVIEW3D, 1);
allqueue(REDRAWOOPS, 0);
+ allqueue(REDRAWBUTSEDIT, 1);
BIF_undo_push("Delete vertex group");
break;
case B_ASSIGNVGROUP:
@@ -4616,6 +4621,7 @@ void do_vgroupbuts(unsigned short event)
break;
case B_DESELVGROUP:
sel_verts_defgroup(0);
+ DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
allqueue (REDRAWVIEW3D, 1);
allqueue(REDRAWOOPS, 0);
countall();
diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c
index f9951bbbcb7..6190f1f0a73 100644
--- a/source/blender/src/buttons_object.c
+++ b/source/blender/src/buttons_object.c
@@ -3123,9 +3123,13 @@ void do_effects_panels(unsigned short event)
}
}
else {
- psys->flag |= PSYS_EDITED;
- if(G.f & G_PARTICLEEDIT)
- PE_create_particle_edit(ob, psys);
+ if(psys_check_enabled(ob, psys)) {
+ psys->flag |= PSYS_EDITED;
+ if(G.f & G_PARTICLEEDIT)
+ PE_create_particle_edit(ob, psys);
+ }
+ else
+ error("Particle system not enabled, skipping set editable");
}
}
case B_FIELD_DEP:
diff --git a/source/blender/src/buttons_scene.c b/source/blender/src/buttons_scene.c
index 5fd23af591e..b295cdd8481 100644
--- a/source/blender/src/buttons_scene.c
+++ b/source/blender/src/buttons_scene.c
@@ -1175,9 +1175,14 @@ static void seq_panel_proxy()
}
if (last_seq->flag & SEQ_USE_PROXY_CUSTOM_DIR) {
+ uiDefIconBut(block, BUT, B_SEQ_SEL_PROXY_DIR,
+ ICON_FILESEL, 10, 120, 20, 20, 0, 0, 0, 0, 0,
+ "Select the directory/name for "
+ "the proxy storage");
+
uiDefBut(block, TEX,
B_SEQ_BUT_RELOAD, "Dir: ",
- 10,120,240,19, last_seq->strip->proxy->dir,
+ 30,120,220,20, last_seq->strip->proxy->dir,
0.0, 160.0, 100, 0, "");
}
@@ -1264,10 +1269,20 @@ void sequencer_panels()
}
}
+static void sel_proxy_dir(char *name)
+{
+ Sequence *last_seq = get_last_seq();
+ strcpy(last_seq->strip->proxy->dir, name);
+
+ allqueue(REDRAWBUTSSCENE, 0);
+
+ BIF_undo_push("Change proxy directory");
+}
void do_sequencer_panels(unsigned short event)
{
Sequence *last_seq = get_last_seq();
+ ScrArea * sa;
switch(event) {
case B_SEQ_BUT_PLUGIN:
@@ -1280,6 +1295,13 @@ void do_sequencer_panels(unsigned short event)
case B_SEQ_BUT_REBUILD_PROXY:
seq_proxy_rebuild(last_seq);
break;
+ case B_SEQ_SEL_PROXY_DIR:
+ sa= closest_bigger_area();
+ areawinset(sa->win);
+ activate_fileselect(FILE_SPECIAL, "SELECT PROXY DIR",
+ last_seq->strip->proxy->dir,
+ sel_proxy_dir);
+ break;
case B_SEQ_BUT_RELOAD:
case B_SEQ_BUT_RELOAD_ALL:
update_seq_ipo_rect(last_seq);
diff --git a/source/blender/src/buttons_shading.c b/source/blender/src/buttons_shading.c
index 5e420ade204..b46679898b4 100644
--- a/source/blender/src/buttons_shading.c
+++ b/source/blender/src/buttons_shading.c
@@ -238,7 +238,7 @@ static void save_env(char *name)
char str[FILE_MAX];
strcpy(str, name);
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
tex= G.buts->lockpoin;
if(tex && GS(tex->id.name)==ID_TE) {
@@ -2338,9 +2338,9 @@ static void world_panel_preview(World *wrld)
uiBlockBeginAlign(block);
uiDefButBitS(block, TOG, WO_SKYBLEND, B_WORLDPRV,"Blend", 220,175,100,25, &wrld->skytype, 0, 0, 0, 0, "Renders background with natural progression from horizon to zenith");
uiDefButBitS(block, TOG,WO_SKYPAPER, B_WORLDPRV,"Paper", 220,150,100,25, &wrld->skytype, 0, 0, 0, 0, "Flattens blend or texture coordinates");
- if (wrld->skytype & WO_SKYBLEND) {
+ /*if (wrld->skytype & WO_SKYBLEND) {*/ /* In some (rare?) cases its possible to use this, leave this out for now */
uiDefButBitS(block, TOG, WO_SKYREAL, B_WORLDPRV,"Real", 220,125,100,25, &wrld->skytype, 0, 0, 0, 0, "Renders background with a real horizon");
- }
+ /*}*/
uiBlockEndAlign(block);
}
diff --git a/source/blender/src/drawimage.c b/source/blender/src/drawimage.c
index ac2b92d0815..6d1cd244b84 100644
--- a/source/blender/src/drawimage.c
+++ b/source/blender/src/drawimage.c
@@ -533,7 +533,7 @@ void draw_uvs_sima(void)
if (G.sima->flag & SI_DRAW_STRETCH) {
- float col[3];
+ float col[4];
float aspx, aspy;
float tface_uv[4][2];
diff --git a/source/blender/src/drawobject.c b/source/blender/src/drawobject.c
index 808320bb9de..aec0e112b32 100644
--- a/source/blender/src/drawobject.c
+++ b/source/blender/src/drawobject.c
@@ -3474,6 +3474,8 @@ static void draw_particle_edit(Object *ob, ParticleSystem *psys)
PE_hide_keys_time(psys,CFRA);
psys_cache_paths(ob,psys,CFRA,0);
}
+ if(psys->pathcache==0)
+ return;
if(pset->flag & PE_SHOW_CHILD && psys->part->draw_as == PART_DRAW_PATH) {
if(psys->childcache==0)
diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c
index d97701e8c1e..b01b7bc151c 100644
--- a/source/blender/src/drawview.c
+++ b/source/blender/src/drawview.c
@@ -3394,8 +3394,12 @@ static double swaptime;
static int curmode;
/* used for fps display */
+#define REDRAW_FRAME_AVERAGE 8
static double redrawtime;
static double lredrawtime;
+static float redrawtimes_fps[REDRAW_FRAME_AVERAGE];
+static short redrawtime_index;
+
int update_time(void)
{
@@ -3418,13 +3422,33 @@ static void draw_viewport_fps(ScrArea *sa)
{
float fps;
char printable[16];
-
+ int i, tot;
if (lredrawtime == redrawtime)
return;
printable[0] = '\0';
- fps = (float)(1.0/(lredrawtime-redrawtime));
+
+#if 0
+ /* this is too simple, better do an average */
+ fps = (float)(1.0/(lredrawtime-redrawtime))
+#else
+ redrawtimes_fps[redrawtime_index] = (float)(1.0/(lredrawtime-redrawtime));
+
+ for (i=0, tot=0, fps=0.0f ; i < REDRAW_FRAME_AVERAGE ; i++) {
+ if (redrawtimes_fps[i]) {
+ fps += redrawtimes_fps[i];
+ tot++;
+ }
+ }
+ if (tot) {
+ redrawtime_index++;
+ if (redrawtime_index >= REDRAW_FRAME_AVERAGE)
+ redrawtime_index = 0;
+
+ fps = fps / tot;
+ }
+#endif
/* is this more then half a frame behind? */
if (fps+0.5 < FPS) {
@@ -3549,6 +3573,12 @@ void inner_play_anim_loop(int init, int mode)
cached = cached_dynamics(PSFRA,PEFRA);
redrawtime = 1.0/FPS;
+
+ redrawtime_index = REDRAW_FRAME_AVERAGE;
+ while(redrawtime_index--) {
+ redrawtimes_fps[redrawtime_index] = 0.0;
+ }
+ redrawtime_index = 0;
lredrawtime = 0.0;
return;
}
diff --git a/source/blender/src/editcurve.c b/source/blender/src/editcurve.c
index d9bc55fa8bf..34dcab09c2a 100644
--- a/source/blender/src/editcurve.c
+++ b/source/blender/src/editcurve.c
@@ -4316,8 +4316,10 @@ Nurb *addNurbprim(int type, int stype, int newname)
makeknots(nu, 1, nu->flagu>>1);
BLI_addtail(&editNurb, nu); /* temporal for spin */
- if(newname) spin_nurb(0, 2);
- else spin_nurb(0, 0);
+ if(newname && (U.flag & USER_ADD_VIEWALIGNED) == 0)
+ spin_nurb(0, 2);
+ else
+ spin_nurb(0, 0);
makeknots(nu, 2, nu->flagv>>1);
@@ -4344,8 +4346,10 @@ Nurb *addNurbprim(int type, int stype, int newname)
nu->resolv= 32;
nu->flag= CU_SMOOTH;
BLI_addtail(&editNurb, nu); /* temporal for extrude and translate */
- if(newname) spin_nurb(0, 2);
- else spin_nurb(0, 0);
+ if(newname && (U.flag & USER_ADD_VIEWALIGNED) == 0)
+ spin_nurb(0, 2);
+ else
+ spin_nurb(0, 0);
BLI_remlink(&editNurb, nu);
diff --git a/source/blender/src/editdeform.c b/source/blender/src/editdeform.c
index 6d6a53fc59e..a072898327f 100644
--- a/source/blender/src/editdeform.c
+++ b/source/blender/src/editdeform.c
@@ -217,19 +217,25 @@ void duplicate_defgroup ( Object *ob )
dg = BLI_findlink (&ob->defbase, (ob->actdef-1));
if (!dg)
return;
-
- BLI_snprintf (name, 32, "%s_copy", dg->name);
- while (get_named_vertexgroup (ob, name)) {
- if ((strlen (name) + 6) > 32) {
- error ("Error: the name for the new group is > 32 characters");
- return;
+
+ if (strstr(dg->name, "_copy")) {
+ BLI_strncpy (name, dg->name, 32); /* will be renamed _copy.001... etc */
+ } else {
+ BLI_snprintf (name, 32, "%s_copy", dg->name);
+ while (get_named_vertexgroup (ob, name)) {
+ if ((strlen (name) + 6) > 32) {
+ error ("Error: the name for the new group is > 32 characters");
+ return;
+ }
+ strcpy (s, name);
+ BLI_snprintf (name, 32, "%s_copy", s);
}
- strcpy (s, name);
- BLI_snprintf (name, 32, "%s_copy", s);
- }
+ }
cdg = copy_defgroup (dg);
strcpy (cdg->name, name);
+ unique_vertexgroup_name(cdg, ob);
+
BLI_addtail (&ob->defbase, cdg);
idg = (ob->actdef-1);
diff --git a/source/blender/src/editimasel.c b/source/blender/src/editimasel.c
index 2ee583788e5..67e10d771e0 100644
--- a/source/blender/src/editimasel.c
+++ b/source/blender/src/editimasel.c
@@ -166,8 +166,7 @@ static void activate_imageselect_(int type, char *title, char *file, short *menu
name[2]= 0;
BLI_strncpy(name, file, sizeof(name));
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
-
+ BLI_convertstringcode(name, G.sce);
simasel= curarea->spacedata.first;
diff --git a/source/blender/src/editipo.c b/source/blender/src/editipo.c
index d72bdc6fc80..a8b2ff761e5 100644
--- a/source/blender/src/editipo.c
+++ b/source/blender/src/editipo.c
@@ -3793,6 +3793,12 @@ void clean_ipo_curve(IpoCurve *icu)
MEM_freeN(old_bezts);
}
+
+/* temp struct used for smooth_ipo */
+typedef struct tSmooth_Bezt {
+ float *h1, *h2, *h3; /* bezt->vec[0,1,2][1] */
+} tSmooth_Bezt;
+
void smooth_ipo(void)
{
EditIpo *ei;
@@ -3804,7 +3810,6 @@ void smooth_ipo(void)
ei= G.sipo->editipo;
for(b=0; b<G.sipo->totipo; b++, ei++) {
if (ISPOIN3(ei, flag & IPO_VISIBLE, icu, icu->bezt)) {
-
ok= 0;
if(G.sipo->showkey) ok= 1;
else if(totipo_vert && (ei->flag & IPO_EDIT)) ok= 2;
@@ -3813,52 +3818,94 @@ void smooth_ipo(void)
if(ok) {
IpoCurve *icu= ei->icu;
BezTriple *bezt;
- float meanValSum = 0.0f, meanVal;
- float valDiff;
- int i, totSel = 0;
+ int i, x, totSel = 0;
/* check if enough points */
if (icu->totvert >= 3) {
- /* first loop through - obtain average value */
+ /* first loop through - count how many verts are selected, and fix up handles */
bezt= icu->bezt;
- for (i=1; i < icu->totvert; i++, bezt++) {
+ for (i=0; i < icu->totvert; i++, bezt++) {
if (BEZSELECTED(bezt)) {
/* line point's handles up with point's vertical position */
bezt->vec[0][1]= bezt->vec[2][1]= bezt->vec[1][1];
- if(bezt->h1==HD_AUTO || bezt->h1==HD_VECT) bezt->h1= HD_ALIGN;
- if(bezt->h2==HD_AUTO || bezt->h2==HD_VECT) bezt->h2= HD_ALIGN;
+ if ((bezt->h1==HD_AUTO) || (bezt->h1==HD_VECT)) bezt->h1= HD_ALIGN;
+ if ((bezt->h2==HD_AUTO) || (bezt->h2==HD_VECT)) bezt->h2= HD_ALIGN;
/* add value to total */
- meanValSum += bezt->vec[1][1];
totSel++;
}
}
- /* calculate mean value */
- meanVal= meanValSum / totSel;
-
- /* second loop through - update point positions */
- bezt= icu->bezt;
- for (i=0; i < icu->totvert; i++, bezt++) {
- if (BEZSELECTED(bezt)) {
- /* 1. calculate difference between the points
- * 2. move point half-way along that distance
- */
- if (bezt->vec[1][1] > meanVal) {
- /* bezt val above mean */
- valDiff= bezt->vec[1][1] - meanVal;
- bezt->vec[1][1]= meanVal + (valDiff / 2);
+ /* if any points were selected, allocate tSmooth_Bezt points to work on */
+ if (totSel >= 3) {
+ tSmooth_Bezt *tarray, *tsb;
+
+ /* allocate memory in one go */
+ tsb= tarray= MEM_callocN(totSel*sizeof(tSmooth_Bezt), "tSmooth_Bezt Array");
+
+ /* populate tarray with data of selected points */
+ bezt= icu->bezt;
+ for (i=0, x=0; (i < icu->totvert) && (x < totSel); i++, bezt++) {
+ if (BEZSELECTED(bezt)) {
+ /* tsb simply needs pointer to vec, and index */
+ tsb->h1 = &bezt->vec[0][1];
+ tsb->h2 = &bezt->vec[1][1];
+ tsb->h3 = &bezt->vec[2][1];
+
+ /* advance to the next tsb to populate */
+ if (x < totSel- 1)
+ tsb++;
+ else
+ break;
}
- else {
- /* bezt val below mean */
- valDiff= meanVal - bezt->vec[1][1];
- bezt->vec[1][1] = bezt->vec[1][1] + (valDiff / 2);
+ }
+
+ /* calculate the new smoothed ipo's with weighted averages:
+ * - this is done with two passes
+ * - uses 5 points for each operation (which stores in the relevant handles)
+ * - previous: w/a ratio = 3:5:2:1:1
+ * - next: w/a ratio = 1:1:2:5:3
+ */
+
+ /* round 1: calculate previous and next */
+ tsb= tarray;
+ for (i=0; i < totSel; i++, tsb++) {
+ /* don't touch end points (otherwise, curves slowly explode) */
+ if (ELEM(i, 0, (totSel-1)) == 0) {
+ tSmooth_Bezt *tP1 = tsb - 1;
+ tSmooth_Bezt *tP2 = (i-2 > 0) ? (tsb - 2) : (NULL);
+ tSmooth_Bezt *tN1 = tsb + 1;
+ tSmooth_Bezt *tN2 = (i+2 < totSel) ? (tsb + 2) : (NULL);
+
+ float p1 = *tP1->h2;
+ float p2 = (tP2) ? (*tP2->h2) : (*tP1->h2);
+ float c1 = *tsb->h2;
+ float n1 = *tN1->h2;
+ float n2 = (tN2) ? (*tN2->h2) : (*tN1->h2);
+
+ /* calculate previous and next */
+ *tsb->h1= (3*p2 + 5*p1 + 2*c1 + n1 + n2) / 12;
+ *tsb->h3= (p2 + p1 + 2*c1 + 5*n1 + 3*n2) / 12;
}
}
+
+ /* round 2: calculate new values and reset handles */
+ tsb= tarray;
+ for (i=0; i < totSel; i++, tsb++) {
+ /* calculate new position by averaging handles */
+ *tsb->h2 = (*tsb->h1 + *tsb->h3) / 2;
+
+ /* reset handles now */
+ *tsb->h1 = *tsb->h2;
+ *tsb->h3 = *tsb->h2;
+ }
+
+ /* free memory required for tarray */
+ MEM_freeN(tarray);
}
}
-
- /* recalc handles */
+
+ /* recalculate handles */
calchandles_ipocurve(icu);
}
}
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index 335c8378507..a412a7945ee 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -555,6 +555,20 @@ static int return_editcurve_indexar(int *tot, int **indexar, float *cent)
return totvert;
}
+/* use this when the loc/size/rot of the parent has changed but the children should stay in the same place
+ * apply-size-rot or object center for eg */
+static void ignore_parent_tx( Object *ob ) {
+ Object *ob_child;
+ /* a change was made, adjust the children to compensate */
+ for (ob_child=G.main->object.first; ob_child; ob_child=ob_child->id.next) {
+ if (ob_child->parent == ob) {
+ apply_obmat(ob_child);
+ what_does_parent(ob_child);
+ Mat4Invert(ob_child->parentinv, workob.obmat);
+ }
+ }
+}
+
static void select_editcurve_hook(HookModifierData *hmd)
{
extern ListBase editNurb;
@@ -1936,6 +1950,9 @@ void docenter(int centermode)
base->object->loc[1]+= centn[1];
base->object->loc[2]+= centn[2];
+ where_is_object(base->object);
+ ignore_parent_tx(base->object);
+
/* other users? */
ob= G.main->object.first;
while(ob) {
@@ -1954,6 +1971,9 @@ void docenter(int centermode)
ob->loc[1]+= centn[1];
ob->loc[2]+= centn[2];
+ where_is_object(ob);
+ ignore_parent_tx(ob);
+
if(tme && (tme->flag & ME_ISDONE)==0) {
mvert= tme->mvert;
for(a=0; a<tme->totvert; a++, mvert++) {
@@ -2033,6 +2053,9 @@ void docenter(int centermode)
base->object->loc[0]+= cent[0];
base->object->loc[1]+= cent[1];
base->object->loc[2]+= cent[2];
+
+ where_is_object(base->object);
+ ignore_parent_tx(base->object);
}
tot_change++;
@@ -2080,6 +2103,10 @@ void docenter(int centermode)
*/
docenter_armature(base->object, centermode);
tot_change++;
+
+ where_is_object(base->object);
+ ignore_parent_tx(base->object);
+
if(G.obedit)
break;
}
@@ -3869,7 +3896,7 @@ void make_links(short event)
void apply_objects_locrot( void )
{
Base *base, *basact;
- Object *ob, *ob_child;
+ Object *ob;
bArmature *arm;
Mesh *me;
Curve *cu;
@@ -4018,14 +4045,7 @@ void apply_objects_locrot( void )
continue;
}
- /* a change was made, adjust the children to compensate */
- for (ob_child=G.main->object.first; ob_child; ob_child=ob_child->id.next) {
- if (ob_child->parent == ob) {
- apply_obmat(ob_child);
- what_does_parent(ob_child);
- Mat4Invert(ob_child->parentinv, workob.obmat);
- }
- }
+ ignore_parent_tx(ob);
}
}
if (change) {
diff --git a/source/blender/src/editscreen.c b/source/blender/src/editscreen.c
index 2df92af5bca..1cd8733a7ea 100644
--- a/source/blender/src/editscreen.c
+++ b/source/blender/src/editscreen.c
@@ -890,12 +890,6 @@ int afterqtest(short win, unsigned short evt)
static char ext_load_str[256]= {0, 0};
-void add_readfile_event(char *filename)
-{
- mainqenter(LOAD_FILE, 1);
- strcpy(ext_load_str, filename);
- BLI_convertstringcode(ext_load_str, G.sce, G.scene->r.cfra);
-}
static short ext_reshape= 0, ext_redraw=0, ext_inputchange=0, ext_mousemove=0, ext_undopush=0;
@@ -1396,7 +1390,7 @@ void screenmain(void)
else if (event==QKEY) {
/* Temp place to print mem debugging info ctrl+alt+shift + qkey */
if ( G.qual == (LR_SHIFTKEY | LR_ALTKEY | LR_CTRLKEY) ) {
- MEM_printmemlist_pydict();
+ MEM_printmemlist_stats();
}
else if((G.obedit && G.obedit->type==OB_FONT && g_activearea->spacetype==SPACE_VIEW3D)||g_activearea->spacetype==SPACE_TEXT||g_activearea->spacetype==SPACE_SCRIPT);
diff --git a/source/blender/src/editsima.c b/source/blender/src/editsima.c
index c0efbf8b40b..f5cf29528f3 100644
--- a/source/blender/src/editsima.c
+++ b/source/blender/src/editsima.c
@@ -2288,7 +2288,9 @@ static void save_image_doit(char *name)
if (ibuf) {
BLI_strncpy(str, name, sizeof(str));
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
+ BLI_convertstringframe(str, G.scene->r.cfra);
+
if(G.scene->r.scemode & R_EXTENSION) {
BKE_add_image_extension(str, G.sima->imtypenr);
@@ -2499,7 +2501,7 @@ void save_image_sequence_sima(void)
char name[FILE_MAX];
BLI_strncpy(name, ibuf->name, sizeof(name));
- BLI_convertstringcode(name, G.sce, 0);
+ BLI_convertstringcode(name, G.sce);
if(0 == IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat)) {
error("Could not write image", name);
diff --git a/source/blender/src/editsound.c b/source/blender/src/editsound.c
index 3ea9a0fb056..1cb7ec276cb 100644
--- a/source/blender/src/editsound.c
+++ b/source/blender/src/editsound.c
@@ -713,7 +713,7 @@ bSound *sound_new_sound(char *name)
if (!G.scene->audio.mixrate) G.scene->audio.mixrate = 44100;
/* convert the name to absolute path */
strcpy(str, name);
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
/* check if the sample on disk can be opened */
file = open(str, O_BINARY|O_RDONLY);
@@ -825,7 +825,7 @@ bSample *sound_new_sample(bSound *sound)
/* TODO: increase sound->name, sample->name and strip->name to FILE_MAX, to avoid
cutting off sample name here - elubie */
BLI_strncpy(samplename, sound->name, FILE_MAX);
- BLI_convertstringcode(samplename, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(samplename, G.sce);
BLI_strncpy(sample->name, samplename, FILE_MAXDIR);
/* connect the pf to the sample */
@@ -849,13 +849,13 @@ bSample *sound_find_sample(bSound *sound)
// convert sound->name to abolute filename
strcpy(name, sound->name);
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
/* search through the list of loaded samples */
sample = samples->first;
while (sample) {
strcpy(samplename, sample->name);
- BLI_convertstringcode(samplename, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(samplename, G.sce);
if (strcmp(name, samplename) == 0) {
break;
diff --git a/source/blender/src/filesel.c b/source/blender/src/filesel.c
index 138e0faa491..74fcc081229 100644
--- a/source/blender/src/filesel.c
+++ b/source/blender/src/filesel.c
@@ -1172,7 +1172,7 @@ static void activate_fileselect_(int type, char *title, char *file, short *menup
name[2]= 0;
BLI_strncpy(name, file, sizeof(name));
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
sfile= curarea->spacedata.first;
diff --git a/source/blender/src/fluidsim.c b/source/blender/src/fluidsim.c
index b51f5bba4d6..a7361a9ffca 100644
--- a/source/blender/src/fluidsim.c
+++ b/source/blender/src/fluidsim.c
@@ -622,7 +622,7 @@ void fluidsimBake(struct Object *ob)
// prepare names...
strncpy(targetDir, domainSettings->surfdataPath, FILE_MAXDIR);
strncpy(newSurfdataPath, domainSettings->surfdataPath, FILE_MAXDIR);
- BLI_convertstringcode(targetDir, G.sce, 0); // fixed #frame-no
+ BLI_convertstringcode(targetDir, G.sce); // fixed #frame-no
strcpy(targetFile, targetDir);
strcat(targetFile, suffixConfig);
@@ -674,7 +674,7 @@ void fluidsimBake(struct Object *ob)
if(selection<1) return; // 0 from menu, or -1 aborted
strcpy(targetDir, newSurfdataPath);
strncpy(domainSettings->surfdataPath, newSurfdataPath, FILE_MAXDIR);
- BLI_convertstringcode(targetDir, G.sce, 0); // fixed #frame-no
+ BLI_convertstringcode(targetDir, G.sce); // fixed #frame-no
}
// --------------------------------------------------------------------------------------------
diff --git a/source/blender/src/ghostwinlay.c b/source/blender/src/ghostwinlay.c
index 90a9ae9e406..7179f2fae57 100644
--- a/source/blender/src/ghostwinlay.c
+++ b/source/blender/src/ghostwinlay.c
@@ -927,6 +927,42 @@ void window_open_ndof(Window* win)
}
ndofLib = PIL_dynlib_open(plug_path);
+
+ /* On systems where blender is installed in /usr/bin/blender, ~/.blender/plugins/ is a better place to look */
+ if (ndofLib==NULL) {
+
+ if (plug_path) {
+ MEM_freeN(plug_path);
+ }
+
+ inst_path = BLI_gethome();
+ if (inst_path) {
+ size_t len = strlen(inst_path) + strlen(plug_dir) + strlen(PATH_SEP)*2
+ + strlen(plug_name) + 1;
+
+ if (!strstr(inst_path, ".blender")) {
+ len += strlen(".blender") + strlen(PATH_SEP);
+ }
+
+ plug_path = MEM_mallocN(len, "ndofpluginpath");
+ if (plug_path) {
+ strncpy(plug_path, inst_path, len);
+ strcat(plug_path, PATH_SEP);
+ if (!strstr(inst_path, ".blender")) {
+ strcat(plug_path, ".blender");
+ strcat(plug_path, PATH_SEP);
+ }
+ strcat(plug_path, plug_dir);
+ strcat(plug_path, PATH_SEP);
+ strcat(plug_path, plug_name);
+ }
+ }
+
+ ndofLib = PIL_dynlib_open(plug_path);
+ }
+
+
+
#if 0
fprintf(stderr, "plugin path=%s; ndofLib=%p\n", plug_path, (void*)ndofLib);
#endif
diff --git a/source/blender/src/header_action.c b/source/blender/src/header_action.c
index 2ed5107da29..9c7046c5111 100644
--- a/source/blender/src/header_action.c
+++ b/source/blender/src/header_action.c
@@ -95,7 +95,10 @@ enum {
ACTMENU_VIEW_NOHIDE,
ACTMENU_VIEW_TRANSDELDUPS,
ACTMENU_VIEW_HORIZOPTIMISE,
- ACTMENU_VIEW_GCOLORS
+ ACTMENU_VIEW_GCOLORS,
+ ACTMENU_VIEW_PREVRANGESET,
+ ACTMENU_VIEW_PREVRANGECLEAR,
+ ACTMENU_VIEW_PREVRANGEAUTO
};
enum {
@@ -350,6 +353,15 @@ static void do_action_viewmenu(void *arg, int event)
case ACTMENU_VIEW_GCOLORS: /* Draw grouped-action channels using its group's color */
G.saction->flag ^= SACTION_NODRAWGCOLORS;
break;
+ case ACTMENU_VIEW_PREVRANGESET: /* Set preview range */
+ anim_previewrange_set();
+ break;
+ case ACTMENU_VIEW_PREVRANGECLEAR: /* Clear preview range */
+ anim_previewrange_clear();
+ break;
+ case ACTMENU_VIEW_PREVRANGEAUTO: /* Auto preview-range length */
+ action_previewrange_set(G.saction->action);
+ break;
}
allqueue(REDRAWVIEW3D, 0);
}
@@ -447,11 +459,30 @@ static uiBlock *action_viewmenu(void *arg_unused)
"Play Back Animation|Alt A", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1,
ACTMENU_VIEW_PLAY3D, "");
+ //uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
+ // "Play Back Animation in 3D View|Alt Shift A", 0, yco-=20,
+ // menuwidth, 19, NULL, 0.0, 0.0, 1,
+ // ACTMENU_VIEW_PLAYALL, "");
+
+ uiDefBut(block, SEPR, 0, "", 0, yco-=6,
+ menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
- "Play Back Animation in 3D View|Alt Shift A", 0, yco-=20,
+ "Set Preview Range|Ctrl P", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1,
- ACTMENU_VIEW_PLAYALL, "");
-
+ ACTMENU_VIEW_PREVRANGESET, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
+ "Clear Preview Range|Alt P", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1,
+ ACTMENU_VIEW_PREVRANGECLEAR, "");
+
+ if (G.saction->action) {
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
+ "Preview Range from Action Length|Ctrl Alt P", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1,
+ ACTMENU_VIEW_PREVRANGEAUTO, "");
+ }
+
uiDefBut(block, SEPR, 0, "", 0, yco-=6,
menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
diff --git a/source/blender/src/header_ipo.c b/source/blender/src/header_ipo.c
index 54a3790574b..81d94725a90 100644
--- a/source/blender/src/header_ipo.c
+++ b/source/blender/src/header_ipo.c
@@ -745,6 +745,12 @@ static void do_ipo_viewmenu(void *arg, int event)
case 12:
G.sipo->flag ^= SIPO_LOCK_VIEW;
break;
+ case 13: /* Set Preview Range */
+ anim_previewrange_set();
+ break;
+ case 14: /* Clear Preview Range */
+ anim_previewrange_clear();
+ break;
}
}
@@ -775,10 +781,17 @@ static uiBlock *ipo_viewmenu(void *arg_unused)
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Play Animation|Alt A", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 1, 6, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Play Animation in 3D View|Alt Shift A", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
+ //uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Play Animation in 3D View|Alt Shift A", 0, yco-=20,
+ // menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Preview Range|Ctrl P", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, 13, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Preview Range|Alt P", 0, yco-=20,
+ menuwidth, 19, NULL, 0.0, 0.0, 1, 14, "");
+
+ uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center on Current Frame|Shift C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 10, "");
diff --git a/source/blender/src/header_nla.c b/source/blender/src/header_nla.c
index 41e7bc32365..ef4b79c0537 100644
--- a/source/blender/src/header_nla.c
+++ b/source/blender/src/header_nla.c
@@ -122,6 +122,12 @@ static void do_nla_viewmenu(void *arg, int event)
case 7: /* Show timing in Frames or Seconds */
G.snla->flag ^= SNLA_DRAWTIME;
break;
+ case 8: /* Set Preview Range */
+ anim_previewrange_set();
+ break;
+ case 9: /* Clear Preview Range */
+ anim_previewrange_clear();
+ break;
}
}
@@ -154,7 +160,12 @@ static uiBlock *nla_viewmenu(void *arg_unused)
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Play Back Animation|Alt A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Play Back Animation in 3D View|Alt Shift A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+ //uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Play Back Animation in 3D View|Alt Shift A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
+
+ uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Preview Range|Ctrl P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 8, "");
+ uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Clear Preview Range|Alt P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 9, "");
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
diff --git a/source/blender/src/interface_draw.c b/source/blender/src/interface_draw.c
index fdb5fea658c..83a3c12bae7 100644
--- a/source/blender/src/interface_draw.c
+++ b/source/blender/src/interface_draw.c
@@ -1839,7 +1839,7 @@ static void ui_draw_but_CHARTAB(uiBut *but)
int err;
strcpy(tmpStr, G.selfont->name);
- BLI_convertstringcode(tmpStr, G.sce, 0);
+ BLI_convertstringcode(tmpStr, G.sce);
err = FTF_SetFont((unsigned char *)tmpStr, 0, 14.0);
}
}
diff --git a/source/blender/src/outliner.c b/source/blender/src/outliner.c
index a887a6f1751..683b06aafc4 100644
--- a/source/blender/src/outliner.c
+++ b/source/blender/src/outliner.c
@@ -3539,7 +3539,7 @@ static void namebutton_cb(void *tep, void *oldnamep)
if (te->idcode == ID_LI) {
char expanded[FILE_MAXDIR + FILE_MAXFILE];
BLI_strncpy(expanded, ((Library *)tselem->id)->name, FILE_MAXDIR + FILE_MAXFILE);
- BLI_convertstringcode(expanded, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(expanded, G.sce);
if (!BLI_exists(expanded)) {
error("This path does not exist, correct this before saving");
}
diff --git a/source/blender/src/screendump.c b/source/blender/src/screendump.c
index b5240a94241..e793c224fcb 100644
--- a/source/blender/src/screendump.c
+++ b/source/blender/src/screendump.c
@@ -69,7 +69,8 @@ void write_screendump(char *name)
if(dumprect) {
strcpy(G.ima, name);
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
+ BLI_convertstringframe(name, G.scene->r.cfra); /* TODO - is this ever used? */
/* BKE_add_image_extension() checks for if extension was already set */
if(G.scene->r.scemode & R_EXTENSION)
diff --git a/source/blender/src/seqaudio.c b/source/blender/src/seqaudio.c
index 3e784019274..7c27f32c242 100644
--- a/source/blender/src/seqaudio.c
+++ b/source/blender/src/seqaudio.c
@@ -106,7 +106,7 @@ void makewavstring (char *string)
if (string==0) return;
strcpy(string, G.scene->r.pic);
- BLI_convertstringcode(string, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(string, G.sce);
BLI_make_existing_file(string);
@@ -394,8 +394,7 @@ static void audio_fill_seq(Sequence * seq, void * mixdown,
strncat(name,
seq->strip->stripdata->name,
FILE_MAXFILE-1);
- BLI_convertstringcode(name, G.sce,
- G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
seq->hdaudio= sound_open_hdaudio(name);
}
diff --git a/source/blender/src/sequence.c b/source/blender/src/sequence.c
index 22bedab6bee..b4d3a6c3ce2 100644
--- a/source/blender/src/sequence.c
+++ b/source/blender/src/sequence.c
@@ -429,7 +429,9 @@ void reload_sequence_new_file(Sequence * seq)
strncpy(str, seq->strip->dir, FILE_MAXDIR-1);
strncat(str, seq->strip->stripdata->name, FILE_MAXFILE-1);
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
+ BLI_convertstringframe(str, G.scene->r.cfra); /* TODO - is this needed? */
+
}
if (seq->type == SEQ_IMAGE) {
@@ -1068,7 +1070,9 @@ static int seq_proxy_get_fname(Sequence * seq, int cfra, char * name)
G.scene->r.size);
}
- BLI_convertstringcode(name, G.sce, frameno);
+ BLI_convertstringcode(name, G.sce);
+ BLI_convertstringframe(name, frameno);
+
strcat(name, ".jpg");
@@ -1269,8 +1273,8 @@ static void make_cb_table_byte(float lift, float gain, float gamma,
for (y = 0; y < 256; y++) {
float v = 1.0 * y / 255;
- v += lift;
v *= gain;
+ v += lift;
v = pow(v, gamma);
v *= mul;
if ( v > 1.0) {
@@ -1290,8 +1294,8 @@ static void make_cb_table_float(float lift, float gain, float gamma,
for (y = 0; y < 256; y++) {
float v = (float) y * 1.0 / 255.0;
- v += lift;
v *= gain;
+ v += lift;
v = pow(v, gamma);
v *= mul;
table[y] = v;
@@ -1367,7 +1371,7 @@ static void color_balance_float_float(Sequence * seq, TStripElem* se,
while (p < e) {
int c;
for (c = 0; c < 3; c++) {
- p[c] = pow((p[c] + cb.lift[c]) * cb.gain[c],
+ p[c] = pow(p[c] * cb.gain[c] + cb.lift[c],
cb.gamma[c]) * mul;
}
p += 4;
@@ -1705,8 +1709,9 @@ static void do_build_seq_ibuf(Sequence * seq, TStripElem *se, int cfra,
StripElem * s_elem = give_stripelem(seq, cfra);
strncpy(name, seq->strip->dir, FILE_MAXDIR-1);
- strncat(name, s_elem->name, FILE_MAXFILE);
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ strncat(name, s_elem->name, FILE_MAXFILE-1);
+ BLI_convertstringcode(name, G.sce);
+ BLI_convertstringframe(name, G.scene->r.cfra);
if (!build_proxy_run) {
se->ibuf = seq_proxy_fetch(seq, cfra);
}
@@ -1735,7 +1740,8 @@ static void do_build_seq_ibuf(Sequence * seq, TStripElem *se, int cfra,
if(seq->anim==0) {
strncpy(name, seq->strip->dir, FILE_MAXDIR-1);
strncat(name, seq->strip->stripdata->name, FILE_MAXFILE-1);
- BLI_convertstringcode(name, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(name, G.sce);
+ BLI_convertstringframe(name, G.scene->r.cfra);
seq->anim = openanim(name, IB_rect);
}
diff --git a/source/blender/src/space.c b/source/blender/src/space.c
index 72fb442fda0..41e539c3d1a 100644
--- a/source/blender/src/space.c
+++ b/source/blender/src/space.c
@@ -1005,6 +1005,8 @@ void BIF_undo_push(char *str)
undo_push_armature(str);
}
else if(G.f & G_PARTICLEEDIT) {
+ if (U.undosteps == 0) return;
+
PE_undo_push(str);
}
else {
diff --git a/source/blender/src/view.c b/source/blender/src/view.c
index 8498917b54e..163a116371d 100644
--- a/source/blender/src/view.c
+++ b/source/blender/src/view.c
@@ -974,8 +974,10 @@ void viewmove(int mode)
/* these limits are in toets.c too */
if(G.vd->dist<0.001*G.vd->grid) G.vd->dist= 0.001*G.vd->grid;
if(G.vd->dist>10.0*G.vd->far) G.vd->dist=10.0*G.vd->far;
+
+ if(G.vd->persp==V3D_ORTHO || G.vd->persp==V3D_CAMOB) preview3d_event= 0;
}
- if(G.vd->persp==V3D_ORTHO || G.vd->persp==V3D_CAMOB) preview3d_event= 0;
+
mvalo[0]= mval[0];
diff --git a/source/blender/src/writeimage.c b/source/blender/src/writeimage.c
index d7e40dabd43..1ef32fc33e8 100644
--- a/source/blender/src/writeimage.c
+++ b/source/blender/src/writeimage.c
@@ -99,7 +99,8 @@ static void save_rendered_image_cb_real(char *name, int confirm)
BKE_add_image_extension(name, G.scene->r.imtype);
strcpy(str, name);
- BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(str, G.sce);
+ BLI_convertstringframe(str, G.scene->r.cfra); /* TODO - is this even used? */
if (confirm)
overwrite = saveover(str);
diff --git a/source/blender/src/writemovie.c b/source/blender/src/writemovie.c
index 83c3b64eabd..dea7fbd9ddb 100644
--- a/source/blender/src/writemovie.c
+++ b/source/blender/src/writemovie.c
@@ -97,7 +97,7 @@ static void make_movie_name(char *string)
if (string==0) return;
strcpy(string, G.scene->r.pic);
- BLI_convertstringcode(string, G.sce, G.scene->r.cfra);
+ BLI_convertstringcode(string, G.sce);
len= strlen(string);
BLI_make_existing_file(string);
diff --git a/source/blender/yafray/intern/export_File.cpp b/source/blender/yafray/intern/export_File.cpp
index ac7d2703eb8..f8bbdad5f65 100644
--- a/source/blender/yafray/intern/export_File.cpp
+++ b/source/blender/yafray/intern/export_File.cpp
@@ -126,7 +126,7 @@ static void adjustPath(string &path)
// if relative, expand to full path
char cpath[MAXPATHLEN];
strcpy(cpath, path.c_str());
- BLI_convertstringcode(cpath, G.sce, 0);
+ BLI_convertstringcode(cpath, G.sce);
path = cpath;
#ifdef WIN32
// add drive char if not there
diff --git a/source/blender/yafray/intern/export_Plugin.cpp b/source/blender/yafray/intern/export_Plugin.cpp
index 361939df9c4..6ae4a31bf50 100644
--- a/source/blender/yafray/intern/export_Plugin.cpp
+++ b/source/blender/yafray/intern/export_Plugin.cpp
@@ -278,7 +278,7 @@ static void adjustPath(string &path)
// if relative, expand to full path
char cpath[MAXPATHLEN];
strcpy(cpath, path.c_str());
- BLI_convertstringcode(cpath, G.sce, 0);
+ BLI_convertstringcode(cpath, G.sce);
path = cpath;
#ifdef WIN32
// add drive char if not there
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index 200c04bbfd3..fa8409b123e 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -264,7 +264,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
if (exitstring != "")
strcpy(basedpath, exitstring.Ptr());
- BLI_convertstringcode(basedpath, pathname, 0);
+ BLI_convertstringcode(basedpath, pathname);
bfd = load_game_data(basedpath);
// if it wasn't loaded, try it forced relative
@@ -275,7 +275,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
strcpy(temppath, "//");
strcat(temppath, basedpath);
- BLI_convertstringcode(temppath, pathname, 0);
+ BLI_convertstringcode(temppath, pathname);
bfd = load_game_data(temppath);
}
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
index 6b0df44cb16..a656c5e5523 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
@@ -91,6 +91,10 @@ int KX_BlenderRenderTools::ProcessLighting(int layer)
{
if (m_clientobject)
{
+ if (layer == RAS_LIGHT_OBJECT_LAYER)
+ {
+ layer = static_cast<KX_GameObject*>(m_clientobject)->GetLayer();
+ }
if (applyLights(layer))
{
EnableOpenGLLights();
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index 3e83ed20840..08e9e36c048 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -1680,8 +1680,11 @@ static KX_GameObject *gameobject_from_blenderobject(
break;
}
}
- if (gameobj)
+ if (gameobj)
+ {
gameobj->SetPhysicsEnvironment(kxscene->GetPhysicsEnvironment());
+ gameobj->SetLayer(ob->lay);
+ }
return gameobj;
}
diff --git a/source/gameengine/Converter/KX_ConvertActuators.cpp b/source/gameengine/Converter/KX_ConvertActuators.cpp
index a575415ab05..6b594e2e70b 100644
--- a/source/gameengine/Converter/KX_ConvertActuators.cpp
+++ b/source/gameengine/Converter/KX_ConvertActuators.cpp
@@ -351,7 +351,7 @@ void BL_ConvertActuators(char* maggiename,
else
{
/* but we need to convert the samplename into absolute pathname first */
- BLI_convertstringcode(soundact->sound->name, maggiename, 0);
+ BLI_convertstringcode(soundact->sound->name, maggiename);
samplename = soundact->sound->name;
/* and now we can load it */
diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
index f8fc256b371..f13b1bcf4c9 100644
--- a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
@@ -163,6 +163,25 @@ bool SCA_KeyboardSensor::Evaluate(CValue* eventval)
{
m_val=(active)?1:0;
result = true;
+ } else
+ {
+ if (active)
+ {
+ if (m_val == 0)
+ {
+ //see comment below
+ //m_val = 1;
+ //result = true;
+ ;
+ }
+ } else
+ {
+ if (m_val == 1)
+ {
+ m_val = 0;
+ result = true;
+ }
+ }
}
}
@@ -178,6 +197,13 @@ bool SCA_KeyboardSensor::Evaluate(CValue* eventval)
if (inevent.m_status == SCA_InputEvent::KX_NO_INPUTSTATUS)
{
+ if (m_val == 1)
+ {
+ // this situation may occur after a scene suspend: the keyboard release
+ // event was not captured, produce now the event off
+ m_val = 0;
+ result = true;
+ }
} else
{
if (inevent.m_status == SCA_InputEvent::KX_JUSTACTIVATED)
@@ -190,6 +216,23 @@ bool SCA_KeyboardSensor::Evaluate(CValue* eventval)
{
m_val = 0;
result = true;
+ } else
+ {
+ if (inevent.m_status == SCA_InputEvent::KX_ACTIVE)
+ {
+ if (m_val == 0)
+ {
+ //hmm, this abnormal situation may occur in the following cases:
+ //- the key was pressed while the scene was suspended
+ //- this is a new scene and the key is active from the start
+ //In the second case, it's dangerous to activate the sensor
+ //(think of a key to go to next scene)
+ //What we really need is a edge/level flag in the key sensor
+ //m_val = 1;
+ //result = true;
+ ;
+ }
+ }
}
}
}
diff --git a/source/gameengine/GameLogic/SCA_MouseSensor.cpp b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
index a91cf3e0439..8810b7470ed 100644
--- a/source/gameengine/GameLogic/SCA_MouseSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
@@ -158,6 +158,25 @@ bool SCA_MouseSensor::Evaluate(CValue* event)
{
m_val = 0;
result = true;
+ } else
+ {
+ if (event.m_status == SCA_InputEvent::KX_ACTIVE)
+ {
+ if (m_val == 0)
+ {
+ //dangerous
+ //m_val = 1;
+ //result = true;
+ ;
+ }
+ } else
+ {
+ if (m_val == 1)
+ {
+ m_val = 0;
+ result = true;
+ }
+ }
}
}
break;
@@ -183,6 +202,13 @@ bool SCA_MouseSensor::Evaluate(CValue* event)
{
m_val = 0;
result = true;
+ } else
+ {
+ if (m_val == 1)
+ {
+ m_val = 0;
+ result = true;
+ }
}
}
break;
diff --git a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
index a5b8d8aacdf..edda7657ef9 100644
--- a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
@@ -137,6 +137,10 @@ int GPC_RenderTools::ProcessLighting(int layer)
{
if (m_clientobject)
{
+ if (layer == RAS_LIGHT_OBJECT_LAYER)
+ {
+ layer = static_cast<KX_GameObject*>(m_clientobject)->GetLayer();
+ }
if (applyLights(layer))
{
EnableOpenGLLights();
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index 1496f7c6ad3..8817bc98886 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -579,7 +579,7 @@ int main(int argc, char** argv)
// base the actuator filename with respect
// to the original file working directory
strcpy(basedpath, exitstring.Ptr());
- BLI_convertstringcode(basedpath, pathname, 0);
+ BLI_convertstringcode(basedpath, pathname);
bfd = load_game_data(basedpath);
}
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index cfdcba8a5d6..44727588106 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -84,6 +84,7 @@ KX_BlenderMaterial::KX_BlenderMaterial(
mScene(scene),
mUserDefBlend(0),
mModified(0),
+ mConstructed(false),
mPass(0)
{
@@ -119,7 +120,9 @@ KX_BlenderMaterial::KX_BlenderMaterial(
KX_BlenderMaterial::~KX_BlenderMaterial()
{
// cleanup work
- OnExit();
+ if (mConstructed)
+ // clean only if material was actually used
+ OnExit();
}
@@ -138,6 +141,10 @@ unsigned int* KX_BlenderMaterial::GetMCol(void) const
void KX_BlenderMaterial::OnConstruction()
{
+ if (mConstructed)
+ // when material are reused between objects
+ return;
+
// for each unique material...
int i;
for(i=0; i<mMaterial->num_enabled; i++) {
@@ -148,19 +155,20 @@ void KX_BlenderMaterial::OnConstruction()
}
if(!mTextures[i].InitCubeMap(i, mMaterial->cubemap[i] ) )
spit("unable to initialize image("<<i<<") in "<<
- mMaterial->matname<< ", image will not be available");
+ mMaterial->matname<< ", image will not be available");
}
else {
if( mMaterial->img[i] ) {
if( ! mTextures[i].InitFromImage(i, mMaterial->img[i], (mMaterial->flag[i] &MIPMAP)!=0 ))
spit("unable to initialize image("<<i<<") in "<<
- mMaterial->matname<< ", image will not be available");
+ mMaterial->matname<< ", image will not be available");
}
}
}
mBlendFunc[0] =0;
mBlendFunc[1] =0;
+ mConstructed = true;
}
void KX_BlenderMaterial::OnExit()
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h
index 2b1264154d0..b9d48199520 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.h
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h
@@ -93,6 +93,7 @@ private:
bool mUserDefBlend;
unsigned int mBlendFunc[2];
bool mModified;
+ bool mConstructed; // if false, don't clean on exit
void ActivatGLMaterials( RAS_IRasterizer* rasty )const;
void ActivateTexGen( RAS_IRasterizer *ras ) const;
diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
index 4a61c37be06..e0cd5a3bc9e 100644
--- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
+++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
@@ -1123,7 +1123,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
ci.m_inertiaFactor = shapeprops->m_inertia/0.4f;//defaults to 0.4, don't want to change behaviour
ci.m_collisionFilterGroup = (isbulletdyna) ? short(CcdConstructionInfo::DefaultFilter) : short(CcdConstructionInfo::StaticFilter);
ci.m_collisionFilterMask = (isbulletdyna) ? short(CcdConstructionInfo::AllFilter) : short(CcdConstructionInfo::AllFilter ^ CcdConstructionInfo::StaticFilter);
-
+ ci.m_bRigid = objprop->m_dyna && objprop->m_angular_rigidbody;
KX_BulletPhysicsController* physicscontroller = new KX_BulletPhysicsController(ci,isbulletdyna);
//remember that we created a shape so that we can delete it when the scene is removed (bullet will not delete it)
kxscene->AddShape(bm);
@@ -1147,6 +1147,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
//{
// rbody->setCollisionFlags(rbody->getCollisionFlags() | btCollisionObject::CF_NO_CONTACT_RESPONSE);
//}
+
if (objprop->m_dyna && !objprop->m_angular_rigidbody)
{
/*
@@ -1161,8 +1162,10 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
*/
//env->createConstraint(physicscontroller,0,PHY_ANGULAR_CONSTRAINT,0,0,0,0,0,1);
- physicscontroller->GetRigidBody()->setAngularFactor(0.f);
-
+
+ //Now done directly in ci.m_bRigid so that it propagates to replica
+ //physicscontroller->GetRigidBody()->setAngularFactor(0.f);
+ ;
}
bool isActor = objprop->m_isactor;
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index cf621e04f99..4c6ba448ebf 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -74,6 +74,7 @@ KX_GameObject::KX_GameObject(
) :
SCA_IObject(T),
m_bDyna(false),
+ m_layer(0),
m_bSuspendDynamics(false),
m_bUseObjectColor(false),
m_bVisible(true),
@@ -228,7 +229,7 @@ void KX_GameObject::SetParent(KX_Scene *scene, KX_GameObject* obj)
NodeSetLocalScale(scale1);
NodeSetLocalPosition(MT_Point3(newpos[0],newpos[1],newpos[2]));
- NodeSetLocalOrientation(NodeGetWorldOrientation()*invori);
+ NodeSetLocalOrientation(invori*NodeGetWorldOrientation());
NodeUpdateGS(0.f,true);
// object will now be a child, it must be removed from the parent list
CListValue* rootlist = scene->GetRootParentList();
@@ -479,6 +480,22 @@ KX_GameObject::SetVisible(
m_bVisible = v;
}
+void
+KX_GameObject::SetLayer(
+ int l
+ )
+{
+ m_layer = l;
+}
+
+int
+KX_GameObject::GetLayer(
+ void
+ )
+{
+ return m_layer;
+}
+
// used by Python, and the actuatorshould _not_ be misused by the
// scene!
void
diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h
index 87775e81216..da0cd69e129 100644
--- a/source/gameengine/Ketsji/KX_GameObject.h
+++ b/source/gameengine/Ketsji/KX_GameObject.h
@@ -70,6 +70,7 @@ protected:
KX_ClientObjectInfo* m_pClient_info;
STR_String m_name;
STR_String m_text;
+ int m_layer;
std::vector<RAS_MeshObject*> m_meshes;
bool m_bSuspendDynamics;
@@ -571,6 +572,22 @@ public:
bool b
);
+ /**
+ * Change the layer of the object (when it is added in another layer
+ * than the original layer)
+ */
+ void
+ SetLayer(
+ int l
+ );
+
+ /**
+ * Get the object layer
+ */
+ int
+ GetLayer(
+ void
+ );
/**
* @section Logic bubbling methods.
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index 54003284e03..e4054e07475 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -650,6 +650,8 @@ SCA_IObject* KX_Scene::AddReplicaObject(class CValue* originalobject,
for (git = m_logicHierarchicalGameObjects.begin();!(git==m_logicHierarchicalGameObjects.end());++git)
{
(*git)->Relink(&m_map_gameobject_to_replica);
+ // add the object in the layer of the parent
+ (*git)->SetLayer(parentobj->GetLayer());
}
// now replicate logic
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
index d99b75482b9..e444c4c73be 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
@@ -137,6 +137,10 @@ void CcdPhysicsController::CreateRigidbody()
m_body->setGravity( m_cci.m_gravity);
m_body->setDamping(m_cci.m_linearDamping, m_cci.m_angularDamping);
+ if (!m_cci.m_bRigid)
+ {
+ m_body->setAngularFactor(0.f);
+ }
}
CcdPhysicsController::~CcdPhysicsController()
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
index 54b4bcc40ee..37fa465351f 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
@@ -60,6 +60,7 @@ struct CcdConstructionInfo
m_linearDamping(0.1f),
m_angularDamping(0.1f),
m_collisionFlags(0),
+ m_bRigid(false),
m_collisionFilterGroup(DefaultFilter),
m_collisionFilterMask(AllFilter),
m_collisionShape(0),
@@ -78,6 +79,7 @@ struct CcdConstructionInfo
btScalar m_linearDamping;
btScalar m_angularDamping;
int m_collisionFlags;
+ bool m_bRigid;
///optional use of collision group/mask:
///only collision with object goups that match the collision mask.
diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
index 6c3e89fa69d..50df1a1e2ea 100644
--- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
@@ -113,6 +113,7 @@ void RAS_BucketManager::RenderAlphaBuckets(
std::multiset< alphamesh, backtofront>::iterator msit = alphameshset.begin();
for (; msit != alphameshset.end(); ++msit)
{
+ rendertools->SetClientObject((*(*msit).m_ms).m_clientObj);
while ((*msit).m_bucket->ActivateMaterial(cameratrans, rasty, rendertools, drawingmode))
(*msit).m_bucket->RenderMeshSlot(cameratrans, rasty, rendertools, *(*msit).m_ms, drawingmode);
}
diff --git a/source/gameengine/Rasterizer/RAS_IRenderTools.h b/source/gameengine/Rasterizer/RAS_IRenderTools.h
index 30c96d02847..16e15653c82 100644
--- a/source/gameengine/Rasterizer/RAS_IRenderTools.h
+++ b/source/gameengine/Rasterizer/RAS_IRenderTools.h
@@ -61,6 +61,10 @@ public:
RAS_TEXT_PADDED,
RAS_TEXT_MAX
};
+ enum RAS_LIGHT_MODE {
+ RAS_LIGHT_NONE = -1,
+ RAS_LIGHT_OBJECT_LAYER = 0
+ };
RAS_IRenderTools(
) :
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
index 4642ffbaeb8..02e84f8a243 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
@@ -189,7 +189,7 @@ bool RAS_MaterialBucket::ActivateMaterial(const MT_Transform& cameratrans, RAS_I
}
else
{
- rendertools->ProcessLighting(m_material->GetLightLayer());
+ rendertools->ProcessLighting(RAS_IRenderTools::RAS_LIGHT_OBJECT_LAYER/*m_material->GetLightLayer()*/);
}
drawmode = (rasty->GetDrawingMode() < RAS_IRasterizer::KX_SOLID ?
@@ -204,7 +204,6 @@ void RAS_MaterialBucket::RenderMeshSlot(const MT_Transform& cameratrans, RAS_IRa
if (!ms.m_bVisible)
return;
- rendertools->SetClientObject(ms.m_clientObj);
m_material->ActivateMeshSlot(ms, rasty);
/* __NLA Do the deformation */
@@ -317,15 +316,12 @@ void RAS_MaterialBucket::Render(const MT_Transform& cameratrans,
//rasty->SetMaterial(*m_material);
- if (m_meshSlots.size() >0)
- {
- rendertools->SetClientObject((*m_meshSlots.begin()).m_clientObj);
- }
int drawmode;
for (T_MeshSlotList::const_iterator it = m_meshSlots.begin();
! (it == m_meshSlots.end()); ++it)
{
+ rendertools->SetClientObject((*it).m_clientObj);
while (ActivateMaterial(cameratrans, rasty, rendertools, drawmode))
RenderMeshSlot(cameratrans, rasty, rendertools, *it, drawmode);
}
diff --git a/tools/Blender.py b/tools/Blender.py
index 30e9979cf9a..e4d143935a3 100644
--- a/tools/Blender.py
+++ b/tools/Blender.py
@@ -121,6 +121,9 @@ def setup_staticlibs(lenv):
]
libincs += Split(lenv['BF_OPENEXR_LIBPATH'])
libincs += Split(lenv['BF_FFMPEG_LIBPATH'])
+
+ if lenv['WITH_BF_FREESTYLE']:
+ libincs += Split(lenv['BF_LIB3DS_LIBPATH'])
if lenv['WITH_BF_INTERNATIONAL']:
libincs += Split(lenv['BF_GETTEXT_LIBPATH'])
@@ -160,12 +163,14 @@ def setup_syslibs(lenv):
syslibs += Split(lenv['BF_OPENEXR_LIB'])
if lenv['WITH_BF_FFMPEG']:
syslibs += Split(lenv['BF_FFMPEG_LIB'])
+ if lenv['WITH_BF_FREESTYLE']:
+ syslibs += Split(lenv['BF_LIB3DS_LIB'])
syslibs += Split(lenv['BF_SDL_LIB'])
if not lenv['WITH_BF_STATICOPENGL']:
syslibs += Split(lenv['BF_OPENGL_LIB'])
if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw','linuxcross'):
syslibs += Split(lenv['BF_PTHREADS_LIB'])
-
+
syslibs += Split(lenv['LLIBS'])
return syslibs
diff --git a/tools/btools.py b/tools/btools.py
index 51367d6bd42..8158bf6cfcc 100755
--- a/tools/btools.py
+++ b/tools/btools.py
@@ -66,6 +66,7 @@ def validate_arguments(args, bc):
'BF_FANCY', 'BF_QUIET',
'BF_X264_CONFIG',
'BF_XVIDCORE_CONFIG',
+ 'BF_WITH_BF_FREESTYLE', 'BF_FREESTYLE', 'BF_FREESTYLE_SRC', 'BF_SWIG', 'BF_LIB3DS', 'BF_LIB3DS_LIB', 'BF_LIB3DS_LIBPATH', 'BF_LIB3DS_INC'
]
arg_list = ['BF_DEBUG', 'BF_QUIET', 'BF_CROSS', 'BF_UPDATE',
@@ -236,6 +237,16 @@ def read_opts(cfg, args):
('BF_SOLID_INC', 'Solid include path', ''),
('BF_WINTAB', 'WinTab base dir', ''),
('BF_WINTAB_INC', 'WinTab include dir', ''),
+
+ (BoolOption('WITH_BF_FREESTYLE', 'Use Freestyle if true', 'true')),
+ ('BF_FREESTYLE', 'Freestyle base path', ''),
+ ('BF_FREESTYLE_SRC', 'Freestyle source path', ''),
+ ('BF_SWIG', 'SWIG base path', ''),
+ ('BF_LIB3DS', 'SWIG base path', ''),
+ ('BF_LIB3DS_LIB', 'lib3ds library', ''),
+ ('BF_LIB3DS_LIBPATH', 'lib3ds library path', ''),
+ ('BF_LIB3DS_INC', 'lib3ds include path', ''),
+
##
##WITH_BF_NSPR = 'true'
##BF_NSPR = $(LCGDIR)/nspr