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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-20 19:06:46 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2009-04-20 19:06:46 +0400
commit874c29cea8e6f9bc411fccf2d6f4cb07e94328d0 (patch)
tree5971e577cf7c02e05a1e37b5ad058c71a6744877
parent7555bfa793a2b0fc187c6211c56986f35b2d7b09 (diff)
parentc5bc4e4fb1a33eda8c31f2ea02e91f32f74c8fa5 (diff)
2.50: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r19323:HEAD
Notes: * blenderbuttons and ICON_SNAP_PEEL_OBJECT were not merged.
-rw-r--r--SConstruct75
-rw-r--r--config/darwin-config.py9
-rw-r--r--config/irix6-config.py5
-rw-r--r--config/linux2-config.py12
-rw-r--r--config/linuxcross-config.py3
-rw-r--r--config/openbsd3-config.py3
-rw-r--r--config/sunos5-config.py3
-rw-r--r--config/win32-mingw-config.py3
-rw-r--r--config/win32-vc-config.py5
-rw-r--r--extern/bullet2/make/msvc_9_0/Bullet.vcproj4
-rw-r--r--extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp7
-rw-r--r--extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp17
-rw-r--r--extern/libopenjpeg/opj_includes.h7
-rw-r--r--intern/SoundSystem/Makefile1
-rw-r--r--intern/SoundSystem/SND_DependKludge.h3
-rw-r--r--intern/SoundSystem/SoundDefines.h10
-rw-r--r--intern/SoundSystem/dummy/SND_DummyDevice.cpp2
-rw-r--r--intern/SoundSystem/intern/Makefile2
-rw-r--r--intern/SoundSystem/intern/SND_DeviceManager.cpp15
-rw-r--r--intern/SoundSystem/intern/SND_Scene.cpp23
-rw-r--r--intern/SoundSystem/intern/SND_Utils.cpp32
-rw-r--r--intern/SoundSystem/make/msvc_6_0/SoundSystem.dsp412
-rw-r--r--intern/SoundSystem/make/msvc_6_0/dummy/DummySoundSystem.dsp206
-rw-r--r--intern/SoundSystem/make/msvc_6_0/openal/OpenALSoundSystem.dsp212
-rw-r--r--intern/SoundSystem/openal/SND_OpenALDevice.cpp2
-rw-r--r--intern/bmfont/make/msvc_6_0/bmfont.dsp352
-rw-r--r--intern/bmfont/make/msvc_6_0/bmfont.dsw58
-rw-r--r--intern/bmfont/test/make/msvc_6_0/BMF_Test.dsp218
-rw-r--r--intern/bmfont/test/make/msvc_6_0/BMF_Test.dsw88
-rw-r--r--intern/boolop/intern/BOP_Merge2.cpp2
-rw-r--r--intern/boolop/intern/BOP_Misc.h2
-rw-r--r--intern/boolop/make/msvc_6_0/boolop.dsp444
-rw-r--r--intern/bsp/make/msvc6_0/bsplib.dsp276
-rw-r--r--intern/bsp/make/msvc6_0/bsplib.dsw58
-rw-r--r--intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsp252
-rw-r--r--intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsw250
-rw-r--r--intern/container/make/msvc_6_0/container.dsp266
-rw-r--r--intern/container/make/msvc_6_0/container.dsw58
-rw-r--r--intern/decimation/make/msvc_6_0/decimation.dsp372
-rw-r--r--intern/decimation/make/msvc_6_0/decimation.dsw66
-rw-r--r--intern/elbeem/make/msvc_6_0/elbeem.dsp580
-rw-r--r--intern/ghost/make/msvc/ghost.dsp584
-rw-r--r--intern/ghost/make/msvc/ghost.dsw58
-rw-r--r--intern/ghost/test/make/msvc_6_0/gears.dsp204
-rw-r--r--intern/ghost/test/make/msvc_6_0/gears_C.dsp204
-rw-r--r--intern/ghost/test/make/msvc_6_0/ghost_test.dsw154
-rw-r--r--intern/guardedalloc/intern/mmap_win.c2
-rw-r--r--intern/guardedalloc/make/msvc_6_0/guardedalloc.dsp228
-rw-r--r--intern/guardedalloc/mmap_win.h2
-rw-r--r--intern/iksolver/make/msvc_6_0/iksolver.dsp520
-rw-r--r--intern/iksolver/make/msvc_6_0/iksolver.dsw70
-rw-r--r--intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsp260
-rw-r--r--intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsw98
-rw-r--r--intern/make/msvc_6_0/build_install_all.dsp136
-rw-r--r--intern/make/msvc_6_0/intern.dsw604
-rw-r--r--intern/memutil/make/msvc_60/memutil.dsp300
-rw-r--r--intern/memutil/make/msvc_60/memutil.dsw58
-rw-r--r--intern/moto/include/MT_Quaternion.inl26
-rw-r--r--intern/moto/make/msvc_6_0/MoTo.dsp758
-rw-r--r--intern/moto/make/msvc_6_0/MoTo.dsw58
-rw-r--r--intern/opennl/make/msvc_6_0/OpenNL.dsp504
-rw-r--r--intern/opennl/make/msvc_6_0/OpenNL.dsw58
-rw-r--r--intern/string/make/msvc_6_0/string.dsp244
-rw-r--r--intern/string/make/msvc_6_0/string.dsw58
-rw-r--r--projectfiles/blender/BLO_readblenfile/BLO_readblenfile.dsp310
-rw-r--r--projectfiles/blender/BPY_python/BPY_python.dsp1176
-rw-r--r--projectfiles/blender/avi/BL_avi.dsp398
-rw-r--r--projectfiles/blender/blender.dsp248
-rw-r--r--projectfiles/blender/blender.dsw1486
-rw-r--r--projectfiles/blender/blenkernel/BKE_blenkernel.dsp1128
-rw-r--r--projectfiles/blender/blenlib/BLI_blenlib.dsp636
-rw-r--r--projectfiles/blender/blenpluginapi/blenpluginapi/blenpluginapi.dsp238
-rw-r--r--projectfiles/blender/ftfont/FTF_ftfont.dsp236
-rw-r--r--projectfiles/blender/glut/BL_glut.dsp648
-rw-r--r--projectfiles/blender/imbuf/BL_imbuf.dsp876
-rw-r--r--projectfiles/blender/img/BL_img.dsp342
-rw-r--r--projectfiles/blender/loader/BLO_loader.dsp372
-rw-r--r--projectfiles/blender/makesdna/DNA_makesdna.dsp746
-rw-r--r--projectfiles/blender/radiosity/BRA_radiosity.dsp266
-rw-r--r--projectfiles/blender/render/BRE_render.dsp384
-rw-r--r--projectfiles/blender/renderconverter/BRE_renderconverter.dsp204
-rw-r--r--projectfiles/blender/src/BL_src.dsp2080
-rw-r--r--projectfiles/blender/src/BL_src_cre.dsp204
-rw-r--r--projectfiles/datatoc/datatoc.dsp200
-rw-r--r--projectfiles/gameengine/blenderhook/KX_blenderhook.dsp322
-rw-r--r--projectfiles/gameengine/converter/KX_converter.dsp556
-rw-r--r--projectfiles/gameengine/expression/EXP_expressions.dsp604
-rw-r--r--projectfiles/gameengine/gamelogic/SCA_gamelogic.dsp812
-rw-r--r--projectfiles/gameengine/gameplayer/axctl/GP_axctl.dsp506
-rw-r--r--projectfiles/gameengine/gameplayer/common/GP_common.dsp510
-rw-r--r--projectfiles/gameengine/gameplayer/ghost/GP_ghost.dsp312
-rw-r--r--projectfiles/gameengine/gameplayer/glut/GP_glut.dsp410
-rw-r--r--projectfiles/gameengine/gameplayer/loader/BlenderLoader/BlenderLoader.dsp412
-rw-r--r--projectfiles/gameengine/gameplayer/netscape/GP_netscape.dsp346
-rw-r--r--projectfiles/gameengine/gameplayer/netscape2/GP_netscape.dsp362
-rw-r--r--projectfiles/gameengine/gameplayer/ps2/GP_ps2.dsp364
-rw-r--r--projectfiles/gameengine/gameplayer/qt/gp.dsp328
-rw-r--r--projectfiles/gameengine/gameplayer/qt/gpplugin.dsp1648
-rw-r--r--projectfiles/gameengine/gameplayer/qt/qtgp.dsw646
-rw-r--r--projectfiles/gameengine/gameplayer/sdl/GP_sdl.dsp410
-rw-r--r--projectfiles/gameengine/ketsji/KX_ketsji.dsp1380
-rw-r--r--projectfiles/gameengine/ketsji/network/KX_network.dsp372
-rw-r--r--projectfiles/gameengine/network/loopbacknetwork/NG_loopbacknetwork.dsp310
-rw-r--r--projectfiles/gameengine/network/network/NG_network.dsp348
-rw-r--r--projectfiles/gameengine/network/terraplaynetwork/NG_terraplaynetwork.dsp360
-rw-r--r--projectfiles/gameengine/physics/PHY_Physics/PHY_Dummy/PHY_Dummy.dsp308
-rw-r--r--projectfiles/gameengine/physics/PHY_Physics/PHY_Ode/PHY_Ode.dsp324
-rw-r--r--projectfiles/gameengine/physics/PHY_Physics/PHY_Physics.dsp356
-rw-r--r--projectfiles/gameengine/physics/PHY_Physics/PHY_Sumo/PHY_Sumo.dsp324
-rw-r--r--projectfiles/gameengine/rasterizer/RAS_rasterizer.dsp486
-rw-r--r--projectfiles/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.dsp366
-rw-r--r--projectfiles/gameengine/scenegraph/SG_scenegraph.dsp398
-rw-r--r--projectfiles/kernel/gen_messaging/gen_messaging.dsp310
-rw-r--r--projectfiles/kernel/system/SYS_system.dsp366
-rw-r--r--projectfiles/sumo/fuzzics/SM_fuzzics.dsp432
-rw-r--r--projectfiles/sumo/moto/SM_moto.dsp664
-rw-r--r--projectfiles/sumo/solid/SM_solid.dsp680
-rw-r--r--projectfiles_vc7/sumo/moto/SM_moto.dsp664
-rw-r--r--projectfiles_vc7/sumo/solid/SM_solid.dsp680
-rw-r--r--projectfiles_vc9/blender/blender.vcproj5
-rw-r--r--projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj4
-rw-r--r--projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj16
-rw-r--r--projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj21
-rw-r--r--projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Physics.vcproj17
-rwxr-xr-x[-rw-r--r--]release/beos-4.5-i386/specific.sh0
-rwxr-xr-x[-rw-r--r--]release/beos-5.0-i386/specific.sh0
-rwxr-xr-x[-rw-r--r--]release/irix-6.2-mips/specific.sh0
-rw-r--r--release/scripts/3ds_import.py5
-rw-r--r--release/scripts/bevel_center.py2
-rw-r--r--release/scripts/bpymodules/dxfLibrary.py59
-rw-r--r--release/scripts/export_dxf.py195
-rw-r--r--release/scripts/image_auto_layout.py13
-rw-r--r--release/scripts/import_dxf.py245
-rw-r--r--release/scripts/import_obj.py2
-rw-r--r--[-rwxr-xr-x]release/scripts/import_web3d.py7
-rw-r--r--release/scripts/mesh_poly_reduce_grid.py351
-rw-r--r--release/scripts/scripttemplate_camera_object.py (renamed from release/scripts/scripttemplate_camer_object.py)0
-rw-r--r--release/scripts/uvcalc_smart_project.py2
-rwxr-xr-xrelease/windows/specific.sh4
-rw-r--r--source/Makefile12
-rw-r--r--source/blender/blenkernel/BKE_DerivedMesh.h2
-rw-r--r--source/blender/blenkernel/BKE_bmesh.h2
-rw-r--r--source/blender/blenkernel/BKE_bmeshCustomData.h2
-rw-r--r--source/blender/blenkernel/BKE_booleanops.h5
-rw-r--r--source/blender/blenkernel/BKE_bvhutils.h45
-rw-r--r--source/blender/blenkernel/BKE_cloth.h2
-rw-r--r--source/blender/blenkernel/BKE_collision.h2
-rw-r--r--source/blender/blenkernel/BKE_curve.h6
-rw-r--r--source/blender/blenkernel/BKE_particle.h19
-rw-r--r--source/blender/blenkernel/BKE_scene.h3
-rw-r--r--source/blender/blenkernel/BKE_shrinkwrap.h19
-rw-r--r--source/blender/blenkernel/BKE_suggestions.h2
-rw-r--r--source/blender/blenkernel/SConscript32
-rw-r--r--source/blender/blenkernel/intern/BME_Customdata.c2
-rw-r--r--source/blender/blenkernel/intern/BME_conversions.c2
-rw-r--r--source/blender/blenkernel/intern/BME_eulers.c2
-rw-r--r--source/blender/blenkernel/intern/BME_mesh.c2
-rw-r--r--source/blender/blenkernel/intern/BME_structure.c2
-rw-r--r--source/blender/blenkernel/intern/BME_tools.c2
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c5
-rw-r--r--source/blender/blenkernel/intern/anim.c108
-rw-r--r--source/blender/blenkernel/intern/bmesh_private.h2
-rw-r--r--source/blender/blenkernel/intern/booleanops.c122
-rw-r--r--source/blender/blenkernel/intern/bvhutils.c196
-rw-r--r--source/blender/blenkernel/intern/constraint.c197
-rw-r--r--source/blender/blenkernel/intern/curve.c18
-rw-r--r--source/blender/blenkernel/intern/effect.c29
-rw-r--r--source/blender/blenkernel/intern/modifier.c121
-rw-r--r--source/blender/blenkernel/intern/node.c39
-rw-r--r--source/blender/blenkernel/intern/particle.c142
-rw-r--r--source/blender/blenkernel/intern/particle_system.c49
-rw-r--r--source/blender/blenkernel/intern/scene.c16
-rw-r--r--source/blender/blenkernel/intern/shrinkwrap.c298
-rw-r--r--source/blender/blenkernel/intern/suggestions.c2
-rw-r--r--source/blender/blenkernel/intern/world.c2
-rw-r--r--source/blender/blenkernel/intern/writeffmpeg.c36
-rw-r--r--source/blender/blenlib/BLI_noise.h1
-rw-r--r--source/blender/blenlib/BLI_rect.h1
-rw-r--r--source/blender/blenlib/intern/freetypefont.c2
-rw-r--r--source/blender/blenlib/intern/psfont.c1
-rw-r--r--source/blender/blenloader/intern/readfile.c60
-rw-r--r--source/blender/blenloader/intern/writefile.c6
-rw-r--r--source/blender/editors/armature/BIF_generate.h2
-rw-r--r--source/blender/editors/armature/BIF_retarget.h2
-rw-r--r--source/blender/editors/armature/editarmature_generate.c8
-rw-r--r--source/blender/editors/armature/editarmature_retarget.c13
-rw-r--r--source/blender/editors/armature/editarmature_sketch.c25
-rw-r--r--source/blender/editors/armature/poseobject.c31
-rw-r--r--source/blender/editors/curve/editcurve.c78
-rw-r--r--source/blender/editors/gpencil/drawgpencil.c4
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c38
-rw-r--r--source/blender/editors/mesh/mesh_ops.c1
-rw-r--r--source/blender/editors/object/editconstraint.c5
-rw-r--r--source/blender/editors/object/object_edit.c17
-rw-r--r--source/blender/editors/physics/editparticle.c2
-rw-r--r--source/blender/editors/physics/physics_intern.h6
-rw-r--r--source/blender/editors/screen/screen_ops.c1
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c3
-rw-r--r--source/blender/editors/space_image/image_header.c1
-rw-r--r--source/blender/editors/space_image/image_ops.c1
-rw-r--r--source/blender/editors/space_image/image_panels.c1
-rw-r--r--source/blender/editors/space_text/text_header.c2
-rw-r--r--source/blender/editors/space_view3d/drawobject.c358
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c3
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c10
-rw-r--r--source/blender/editors/transform/transform.h4
-rw-r--r--source/blender/editors/transform/transform_snap.c31
-rw-r--r--source/blender/editors/uvedit/uvedit_draw.c1
-rw-r--r--source/blender/editors/uvedit/uvedit_parametrizer.c32
-rw-r--r--source/blender/editors/uvedit/uvedit_parametrizer.h2
-rw-r--r--source/blender/editors/uvedit/uvedit_unwrap_ops.c4
-rw-r--r--source/blender/gpu/intern/gpu_draw.c34
-rw-r--r--source/blender/imbuf/intern/IMB_anim.h6
-rw-r--r--source/blender/imbuf/intern/IMB_jp2.h2
-rw-r--r--source/blender/imbuf/intern/anim.c8
-rw-r--r--source/blender/imbuf/intern/anim5.c2
-rw-r--r--source/blender/imbuf/intern/dds/Makefile2
-rw-r--r--source/blender/imbuf/intern/scaling.c3
-rw-r--r--source/blender/imbuf/intern/util.c8
-rw-r--r--source/blender/makesdna/DNA_actuator_types.h5
-rw-r--r--source/blender/makesdna/DNA_cloth_types.h2
-rw-r--r--source/blender/makesdna/DNA_constraint_types.h12
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h9
-rw-r--r--source/blender/makesdna/DNA_object_fluidsim.h2
-rw-r--r--source/blender/makesdna/DNA_object_force.h1
-rw-r--r--source/blender/makesdna/DNA_object_types.h6
-rw-r--r--source/blender/makesdna/DNA_particle_types.h4
-rw-r--r--source/blender/makesdna/DNA_scene_types.h11
-rw-r--r--source/blender/makesdna/DNA_sensor_types.h11
-rw-r--r--source/blender/makesdna/DNA_world_types.h6
-rw-r--r--source/blender/makesrna/intern/rna_particle.c5
-rw-r--r--source/blender/nodes/SConscript30
-rw-r--r--source/blender/nodes/TEX_node.h2
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_normalize.c2
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c6
-rw-r--r--source/blender/nodes/intern/SHD_nodes/SHD_invert.c2
-rw-r--r--source/blender/nodes/intern/TEX_nodes/Makefile2
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_image.c2
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_texture.c2
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_valToNor.c2
-rw-r--r--source/blender/nodes/intern/TEX_nodes/TEX_valToRgb.c2
-rw-r--r--source/blender/nodes/intern/TEX_util.c9
-rw-r--r--source/blender/python/SConscript1
-rw-r--r--source/blender/render/intern/source/convertblender.c953
-rw-r--r--source/blender/render/intern/source/raytrace.c2
-rw-r--r--source/blender/render/intern/source/renderdatabase.c4
-rw-r--r--source/creator/CMakeLists.txt1
-rw-r--r--source/creator/Makefile10
-rw-r--r--source/creator/SConscript16
-rw-r--r--source/darwin/Makefile3
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp14
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderGL.cpp2
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp4
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp166
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h3
-rw-r--r--source/gameengine/Converter/BL_ActionActuator.cpp172
-rw-r--r--source/gameengine/Converter/BL_ActionActuator.h14
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp112
-rw-r--r--source/gameengine/Converter/BL_ShapeActionActuator.cpp176
-rw-r--r--source/gameengine/Converter/BL_ShapeActionActuator.h36
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.cpp7
-rw-r--r--source/gameengine/Converter/KX_ConvertActuators.cpp16
-rw-r--r--source/gameengine/Converter/KX_ConvertSensors.cpp6
-rw-r--r--source/gameengine/Expressions/BoolValue.cpp4
-rw-r--r--source/gameengine/Expressions/BoolValue.h2
-rw-r--r--source/gameengine/Expressions/ConstExpr.cpp2
-rw-r--r--source/gameengine/Expressions/ConstExpr.h2
-rw-r--r--source/gameengine/Expressions/EmptyValue.cpp2
-rw-r--r--source/gameengine/Expressions/EmptyValue.h2
-rw-r--r--source/gameengine/Expressions/ErrorValue.cpp2
-rw-r--r--source/gameengine/Expressions/ErrorValue.h2
-rw-r--r--source/gameengine/Expressions/FloatValue.cpp4
-rw-r--r--source/gameengine/Expressions/FloatValue.h2
-rw-r--r--source/gameengine/Expressions/InputParser.cpp17
-rw-r--r--source/gameengine/Expressions/InputParser.h2
-rw-r--r--source/gameengine/Expressions/IntValue.cpp21
-rw-r--r--source/gameengine/Expressions/IntValue.h12
-rw-r--r--source/gameengine/Expressions/ListValue.cpp138
-rw-r--r--source/gameengine/Expressions/ListValue.h13
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.cpp1137
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.h298
-rw-r--r--source/gameengine/Expressions/StringValue.cpp2
-rw-r--r--source/gameengine/Expressions/StringValue.h2
-rw-r--r--source/gameengine/Expressions/Value.cpp357
-rw-r--r--source/gameengine/Expressions/Value.h38
-rw-r--r--source/gameengine/Expressions/VectorValue.cpp2
-rw-r--r--source/gameengine/Expressions/VectorValue.h2
-rw-r--r--source/gameengine/Expressions/VoidValue.h2
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp91
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.h41
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h6
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp4
-rw-r--r--source/gameengine/GameLogic/SCA_2DFilterActuator.cpp92
-rw-r--r--source/gameengine/GameLogic/SCA_2DFilterActuator.h37
-rw-r--r--source/gameengine/GameLogic/SCA_ANDController.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_ANDController.h2
-rw-r--r--source/gameengine/GameLogic/SCA_ActuatorSensor.cpp42
-rw-r--r--source/gameengine/GameLogic/SCA_ActuatorSensor.h6
-rw-r--r--source/gameengine/GameLogic/SCA_AlwaysSensor.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_AlwaysSensor.h2
-rw-r--r--source/gameengine/GameLogic/SCA_DelaySensor.cpp50
-rw-r--r--source/gameengine/GameLogic/SCA_DelaySensor.h10
-rw-r--r--source/gameengine/GameLogic/SCA_ExpressionController.cpp2
-rw-r--r--source/gameengine/GameLogic/SCA_ExpressionController.h2
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.cpp67
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.h10
-rw-r--r--source/gameengine/GameLogic/SCA_IObject.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_IObject.h2
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.cpp101
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.h19
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickSensor.cpp244
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickSensor.h13
-rw-r--r--source/gameengine/GameLogic/SCA_KeyboardSensor.cpp478
-rw-r--r--source/gameengine/GameLogic/SCA_KeyboardSensor.h58
-rw-r--r--source/gameengine/GameLogic/SCA_MouseSensor.cpp46
-rw-r--r--source/gameengine/GameLogic/SCA_MouseSensor.h8
-rw-r--r--source/gameengine/GameLogic/SCA_NANDController.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_NANDController.h2
-rw-r--r--source/gameengine/GameLogic/SCA_NORController.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_NORController.h2
-rw-r--r--source/gameengine/GameLogic/SCA_ORController.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_ORController.h2
-rw-r--r--source/gameengine/GameLogic/SCA_PropertyActuator.cpp67
-rw-r--r--source/gameengine/GameLogic/SCA_PropertyActuator.h5
-rw-r--r--source/gameengine/GameLogic/SCA_PropertySensor.cpp58
-rw-r--r--source/gameengine/GameLogic/SCA_PropertySensor.h16
-rw-r--r--source/gameengine/GameLogic/SCA_PythonController.cpp152
-rw-r--r--source/gameengine/GameLogic/SCA_PythonController.h8
-rw-r--r--source/gameengine/GameLogic/SCA_RandomActuator.cpp218
-rw-r--r--source/gameengine/GameLogic/SCA_RandomActuator.h64
-rw-r--r--source/gameengine/GameLogic/SCA_RandomSensor.cpp76
-rw-r--r--source/gameengine/GameLogic/SCA_RandomSensor.h15
-rw-r--r--source/gameengine/GameLogic/SCA_XNORController.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_XNORController.h2
-rw-r--r--source/gameengine/GameLogic/SCA_XORController.cpp22
-rw-r--r--source/gameengine/GameLogic/SCA_XORController.h2
-rw-r--r--source/gameengine/GamePlayer/common/GPC_KeyboardDevice.cpp8
-rw-r--r--source/gameengine/GamePlayer/common/GPC_RenderTools.cpp200
-rw-r--r--source/gameengine/GamePlayer/common/GPC_RenderTools.h3
-rw-r--r--source/gameengine/GamePlayer/common/windows/Makefile1
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_Application.cpp22
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_Application.h6
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_ghost.cpp15
-rw-r--r--source/gameengine/Ketsji/BL_BlenderShader.cpp2
-rw-r--r--source/gameengine/Ketsji/BL_Shader.cpp276
-rw-r--r--source/gameengine/Ketsji/BL_Shader.h3
-rw-r--r--source/gameengine/Ketsji/CMakeLists.txt4
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp56
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h7
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp79
-rw-r--r--source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h8
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp46
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.h5
-rw-r--r--source/gameengine/Ketsji/KX_BulletPhysicsController.cpp38
-rw-r--r--source/gameengine/Ketsji/KX_BulletPhysicsController.h7
-rw-r--r--source/gameengine/Ketsji/KX_CDActuator.cpp113
-rw-r--r--source/gameengine/Ketsji/KX_CDActuator.h23
-rw-r--r--source/gameengine/Ketsji/KX_Camera.cpp298
-rw-r--r--source/gameengine/Ketsji/KX_Camera.h41
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.cpp137
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.h23
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintActuator.cpp198
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintActuator.h29
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintWrapper.cpp37
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintWrapper.h4
-rw-r--r--source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp29
-rw-r--r--source/gameengine/Ketsji/KX_Dome.cpp1819
-rw-r--r--source/gameengine/Ketsji/KX_Dome.h183
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.cpp53
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.h6
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.cpp1253
-rw-r--r--source/gameengine/Ketsji/KX_GameObject.h156
-rw-r--r--source/gameengine/Ketsji/KX_IPhysicsController.h7
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.cpp135
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.h24
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp191
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.h9
-rw-r--r--source/gameengine/Ketsji/KX_Light.cpp146
-rw-r--r--source/gameengine/Ketsji/KX_Light.h5
-rw-r--r--source/gameengine/Ketsji/KX_MeshProxy.cpp223
-rw-r--r--source/gameengine/Ketsji/KX_MeshProxy.h18
-rw-r--r--source/gameengine/Ketsji/KX_MotionState.cpp18
-rw-r--r--source/gameengine/Ketsji/KX_MotionState.h1
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.cpp245
-rw-r--r--source/gameengine/Ketsji/KX_MouseFocusSensor.h28
-rw-r--r--source/gameengine/Ketsji/KX_NearSensor.cpp51
-rw-r--r--source/gameengine/Ketsji/KX_NearSensor.h4
-rw-r--r--source/gameengine/Ketsji/KX_ObjectActuator.cpp110
-rw-r--r--source/gameengine/Ketsji/KX_ObjectActuator.h24
-rw-r--r--source/gameengine/Ketsji/KX_OdePhysicsController.h4
-rw-r--r--source/gameengine/Ketsji/KX_ParentActuator.cpp91
-rw-r--r--source/gameengine/Ketsji/KX_ParentActuator.h14
-rw-r--r--source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp54
-rw-r--r--source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h12
-rw-r--r--source/gameengine/Ketsji/KX_PolyProxy.cpp78
-rw-r--r--source/gameengine/Ketsji/KX_PolyProxy.h4
-rw-r--r--source/gameengine/Ketsji/KX_PolygonMaterial.cpp270
-rw-r--r--source/gameengine/Ketsji/KX_PolygonMaterial.h17
-rw-r--r--source/gameengine/Ketsji/KX_PyConstraintBinding.cpp5
-rw-r--r--source/gameengine/Ketsji/KX_PyMath.cpp36
-rw-r--r--source/gameengine/Ketsji/KX_PyMath.h33
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp347
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.h5
-rw-r--r--source/gameengine/Ketsji/KX_PythonInitTypes.cpp233
-rw-r--r--source/gameengine/Ketsji/KX_PythonInitTypes.h35
-rw-r--r--source/gameengine/Ketsji/KX_RadarSensor.cpp45
-rw-r--r--source/gameengine/Ketsji/KX_RadarSensor.h4
-rw-r--r--source/gameengine/Ketsji/KX_RayCast.cpp3
-rw-r--r--source/gameengine/Ketsji/KX_RaySensor.cpp113
-rw-r--r--source/gameengine/Ketsji/KX_RaySensor.h28
-rw-r--r--source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp157
-rw-r--r--source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h15
-rw-r--r--source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp37
-rw-r--r--source/gameengine/Ketsji/KX_SCA_DynamicActuator.h13
-rw-r--r--source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp22
-rw-r--r--source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h2
-rw-r--r--source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp82
-rw-r--r--source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h7
-rw-r--r--source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp7
-rw-r--r--source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.h3
-rw-r--r--source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp52
-rw-r--r--source/gameengine/Ketsji/KX_SG_NodeRelationships.h9
-rw-r--r--source/gameengine/Ketsji/KX_Scene.cpp274
-rw-r--r--source/gameengine/Ketsji/KX_Scene.h45
-rw-r--r--source/gameengine/Ketsji/KX_SceneActuator.cpp158
-rw-r--r--source/gameengine/Ketsji/KX_SceneActuator.h18
-rw-r--r--source/gameengine/Ketsji/KX_SoundActuator.cpp382
-rw-r--r--source/gameengine/Ketsji/KX_SoundActuator.h65
-rw-r--r--source/gameengine/Ketsji/KX_StateActuator.cpp47
-rw-r--r--source/gameengine/Ketsji/KX_StateActuator.h13
-rw-r--r--source/gameengine/Ketsji/KX_SumoPhysicsController.cpp5
-rw-r--r--source/gameengine/Ketsji/KX_SumoPhysicsController.h5
-rw-r--r--source/gameengine/Ketsji/KX_TouchSensor.cpp83
-rw-r--r--source/gameengine/Ketsji/KX_TouchSensor.h8
-rw-r--r--source/gameengine/Ketsji/KX_TrackToActuator.cpp107
-rw-r--r--source/gameengine/Ketsji/KX_TrackToActuator.h18
-rw-r--r--source/gameengine/Ketsji/KX_VehicleWrapper.cpp121
-rw-r--r--source/gameengine/Ketsji/KX_VehicleWrapper.h34
-rw-r--r--source/gameengine/Ketsji/KX_VertexProxy.cpp171
-rw-r--r--source/gameengine/Ketsji/KX_VertexProxy.h6
-rw-r--r--source/gameengine/Ketsji/KX_VisibilityActuator.cpp51
-rw-r--r--source/gameengine/Ketsji/KX_VisibilityActuator.h12
-rw-r--r--source/gameengine/Ketsji/SConscript13
-rw-r--r--source/gameengine/Network/NG_NetworkScene.h5
-rw-r--r--source/gameengine/Physics/BlOde/OdePhysicsController.h4
-rw-r--r--source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h1
-rw-r--r--source/gameengine/Physics/Bullet/CMakeLists.txt10
-rw-r--r--source/gameengine/Physics/Bullet/CcdGraphicController.cpp112
-rw-r--r--source/gameengine/Physics/Bullet/CcdGraphicController.h74
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.cpp338
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.h47
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp655
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h15
-rw-r--r--source/gameengine/Physics/Bullet/Makefile8
-rw-r--r--source/gameengine/Physics/Bullet/SConscript16
-rw-r--r--source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h1
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsController.h5
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h1
-rw-r--r--source/gameengine/Physics/common/CMakeLists.txt2
-rw-r--r--source/gameengine/Physics/common/PHY_DynamicTypes.h35
-rw-r--r--source/gameengine/Physics/common/PHY_IController.cpp39
-rw-r--r--source/gameengine/Physics/common/PHY_IController.h53
-rw-r--r--source/gameengine/Physics/common/PHY_IGraphicController.cpp39
-rw-r--r--source/gameengine/Physics/common/PHY_IGraphicController.h56
-rw-r--r--source/gameengine/Physics/common/PHY_IMotionState.h2
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsController.h14
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h4
-rw-r--r--source/gameengine/Physics/common/PHY_Pro.h6
-rw-r--r--source/gameengine/Physics/common/SConscript2
-rw-r--r--source/gameengine/PyDoc/BL_ActionActuator.py8
-rw-r--r--source/gameengine/PyDoc/BL_Shader.py228
-rw-r--r--source/gameengine/PyDoc/BL_ShapeActionActuator.py3
-rw-r--r--source/gameengine/PyDoc/CListValue.py59
-rw-r--r--source/gameengine/PyDoc/GameKeys.py26
-rw-r--r--source/gameengine/PyDoc/GameLogic.py53
-rw-r--r--source/gameengine/PyDoc/GameTypes.py75
-rw-r--r--source/gameengine/PyDoc/KX_BlenderMaterial.py38
-rw-r--r--source/gameengine/PyDoc/KX_CDActuator.py23
-rw-r--r--source/gameengine/PyDoc/KX_Camera.py22
-rw-r--r--source/gameengine/PyDoc/KX_ConstraintActuator.py69
-rw-r--r--source/gameengine/PyDoc/KX_ConstraintWrapper.py28
-rw-r--r--source/gameengine/PyDoc/KX_GameActuator.py7
-rw-r--r--source/gameengine/PyDoc/KX_GameObject.py137
-rw-r--r--source/gameengine/PyDoc/KX_IpoActuator.py47
-rw-r--r--source/gameengine/PyDoc/KX_LightObject.py (renamed from source/gameengine/PyDoc/KX_Light.py)2
-rw-r--r--source/gameengine/PyDoc/KX_MeshProxy.py9
-rw-r--r--source/gameengine/PyDoc/KX_MouseFocusSensor.py53
-rw-r--r--source/gameengine/PyDoc/KX_NetworkMessageActuator.py13
-rw-r--r--source/gameengine/PyDoc/KX_NetworkMessageSensor.py17
-rw-r--r--source/gameengine/PyDoc/KX_ParentActuator.py7
-rw-r--r--source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py47
-rw-r--r--source/gameengine/PyDoc/KX_RaySensor.py25
-rw-r--r--source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py22
-rw-r--r--source/gameengine/PyDoc/KX_SCA_DynamicActuator.py30
-rw-r--r--source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py24
-rw-r--r--source/gameengine/PyDoc/KX_Scene.py16
-rw-r--r--source/gameengine/PyDoc/KX_SceneActuator.py14
-rw-r--r--source/gameengine/PyDoc/KX_SoundActuator.py56
-rw-r--r--source/gameengine/PyDoc/KX_StateActuator.py18
-rw-r--r--source/gameengine/PyDoc/KX_TouchSensor.py4
-rw-r--r--source/gameengine/PyDoc/KX_TrackToActuator.py11
-rw-r--r--source/gameengine/PyDoc/KX_VehicleWrapper.py166
-rw-r--r--source/gameengine/PyDoc/KX_VertexProxy.py26
-rw-r--r--source/gameengine/PyDoc/KX_VisibilityActuator.py11
-rw-r--r--source/gameengine/PyDoc/SCA_2DFilterActuator.py44
-rw-r--r--source/gameengine/PyDoc/SCA_ActuatorSensor.py (renamed from source/gameengine/PyDoc/KX_ActuatorSensor.py)5
-rw-r--r--source/gameengine/PyDoc/SCA_ILogicBrick.py6
-rw-r--r--source/gameengine/PyDoc/SCA_JoystickSensor.py30
-rw-r--r--source/gameengine/PyDoc/SCA_KeyboardSensor.py37
-rw-r--r--source/gameengine/PyDoc/SCA_MouseSensor.py10
-rw-r--r--source/gameengine/PyDoc/SCA_NANDController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_NORController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_RandomSensor.py7
-rw-r--r--source/gameengine/PyDoc/SCA_XNORController.py11
-rw-r--r--source/gameengine/PyDoc/SCA_XORController.py11
-rw-r--r--source/gameengine/PyDoc/SConscript45
-rw-r--r--source/gameengine/PyDoc/WhatsNew.py2
-rw-r--r--source/gameengine/PyDoc/bge_api_validate_py.txt110
-rwxr-xr-x[-rw-r--r--]source/gameengine/PyDoc/epy_docgen.sh2
-rw-r--r--source/gameengine/Rasterizer/RAS_2DFilterManager.cpp8
-rw-r--r--source/gameengine/Rasterizer/RAS_BucketManager.cpp8
-rw-r--r--source/gameengine/Rasterizer/RAS_FramingManager.h7
-rw-r--r--source/gameengine/Rasterizer/RAS_IRasterizer.h1
-rw-r--r--source/gameengine/Rasterizer/RAS_IRenderTools.h6
-rw-r--r--source/gameengine/Rasterizer/RAS_LightObject.h1
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.cpp29
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.h5
-rw-r--r--source/gameengine/Rasterizer/RAS_MeshObject.cpp2
-rw-r--r--source/gameengine/Rasterizer/RAS_MeshObject.h10
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp4
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h2
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp29
-rw-r--r--source/gameengine/Rasterizer/RAS_Polygon.cpp16
-rw-r--r--source/gameengine/Rasterizer/RAS_Polygon.h17
-rw-r--r--source/gameengine/SceneGraph/SG_BBox.cpp7
-rw-r--r--source/gameengine/SceneGraph/SG_BBox.h2
-rw-r--r--source/gameengine/SceneGraph/SG_IObject.cpp2
-rw-r--r--source/gameengine/SceneGraph/SG_IObject.h30
-rw-r--r--source/gameengine/SceneGraph/SG_Node.cpp7
-rw-r--r--source/gameengine/SceneGraph/SG_Node.h3
-rw-r--r--source/gameengine/SceneGraph/SG_ParentRelation.h3
-rw-r--r--source/gameengine/SceneGraph/SG_Spatial.cpp19
-rw-r--r--source/gameengine/SceneGraph/SG_Spatial.h13
-rw-r--r--source/gameengine/VideoTexture/FilterNormal.cpp21
-rw-r--r--source/gameengine/VideoTexture/FilterSource.h3
-rw-r--r--source/gameengine/VideoTexture/ImageRender.cpp27
-rw-r--r--source/gameengine/VideoTexture/ImageViewport.cpp2
-rw-r--r--source/gameengine/VideoTexture/Texture.cpp2
-rw-r--r--source/gameengine/VideoTexture/VideoBase.cpp2
-rw-r--r--source/gameengine/VideoTexture/VideoFFmpeg.h8
-rw-r--r--source/gameengine/VideoTexture/blendVideoTex.cpp10
-rw-r--r--source/nan_compile.mk5
-rw-r--r--source/nan_definitions.mk168
-rwxr-xr-xtools/btools.py6
554 files changed, 35824 insertions, 26833 deletions
diff --git a/SConstruct b/SConstruct
index cfe48257c3e..63bc4cd1625 100644
--- a/SConstruct
+++ b/SConstruct
@@ -270,29 +270,35 @@ if 'blendernogame' in B.targets:
env['WITH_BF_GAMEENGINE'] = False
if 'blenderlite' in B.targets:
- env['WITH_BF_GAMEENGINE'] = False
- env['WITH_BF_OPENAL'] = False
- env['WITH_BF_OPENEXR'] = False
- env['WITH_BF_ICONV'] = False
- env['WITH_BF_INTERNATIONAL'] = False
- env['WITH_BF_OPENJPEG'] = False
- env['WITH_BF_FFMPEG'] = False
- env['WITH_BF_QUICKTIME'] = False
- env['WITH_BF_YAFRAY'] = False
- env['WITH_BF_REDCODE'] = False
- env['WITH_BF_FTGL'] = False
- env['WITH_BF_DDS'] = False
- env['WITH_BF_ZLIB'] = False
- env['WITH_BF_SDL'] = False
- env['WITH_BF_JPEG'] = False
- env['WITH_BF_PNG'] = False
- env['WITH_BF_ODE'] = False
- env['WITH_BF_BULLET'] = False
- env['WITH_BF_SOLID'] = False
- env['WITH_BF_BINRELOC'] = False
- env['BF_BUILDINFO'] = False
- env['BF_NO_ELBEEM'] = True
- env['WITH_BF_PYTHON'] = False
+ target_env_defs = {}
+ target_env_defs['WITH_BF_GAMEENGINE'] = False
+ target_env_defs['WITH_BF_OPENAL'] = False
+ target_env_defs['WITH_BF_OPENEXR'] = False
+ target_env_defs['WITH_BF_ICONV'] = False
+ target_env_defs['WITH_BF_INTERNATIONAL'] = False
+ target_env_defs['WITH_BF_OPENJPEG'] = False
+ target_env_defs['WITH_BF_FFMPEG'] = False
+ target_env_defs['WITH_BF_QUICKTIME'] = False
+ target_env_defs['WITH_BF_YAFRAY'] = False
+ target_env_defs['WITH_BF_REDCODE'] = False
+ target_env_defs['WITH_BF_FTGL'] = False
+ target_env_defs['WITH_BF_DDS'] = False
+ target_env_defs['WITH_BF_ZLIB'] = False
+ target_env_defs['WITH_BF_SDL'] = False
+ target_env_defs['WITH_BF_JPEG'] = False
+ target_env_defs['WITH_BF_PNG'] = False
+ target_env_defs['WITH_BF_ODE'] = False
+ target_env_defs['WITH_BF_BULLET'] = False
+ target_env_defs['WITH_BF_SOLID'] = False
+ target_env_defs['WITH_BF_BINRELOC'] = False
+ target_env_defs['BF_BUILDINFO'] = False
+ target_env_defs['BF_NO_ELBEEM'] = True
+ target_env_defs['WITH_BF_PYTHON'] = False
+
+ # Merge blenderlite, let command line to override
+ for k,v in target_env_defs.iteritems():
+ if k not in B.arguments:
+ env[k] = v
if env['WITH_BF_SDL'] == False and env['OURPLATFORM'] in ('win32-vc', 'win32-ming', 'win64-vc'):
env['PLATFORM_LINKFLAGS'].remove('/ENTRY:mainCRTStartup')
@@ -576,7 +582,9 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc'):
else:
dllsources.append('${BF_SDL_LIBPATH}/SDL.dll')
if env['WITH_BF_PYTHON']:
- dllsources.append('#release/windows/extra/python25.zip')
+ ver = env["BF_PYTHON_VERSION"].replace(".", "")
+
+ dllsources.append('#release/windows/extra/python' + ver + '.zip')
dllsources.append('#release/windows/extra/zlib.pyd')
if env['BF_DEBUG']:
dllsources.append('${BF_PYTHON_LIBPATH}/${BF_PYTHON_LIB}_d.dll')
@@ -588,14 +596,14 @@ if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'win64-vc'):
else:
dllsources += ['${BF_ICONV_LIBPATH}/iconv.dll']
if env['WITH_BF_FFMPEG']:
- dllsources += ['${LCGDIR}/ffmpeg/lib/avcodec-51.dll',
+ dllsources += ['${LCGDIR}/ffmpeg/lib/avcodec-52.dll',
'${LCGDIR}/ffmpeg/lib/avformat-52.dll',
'${LCGDIR}/ffmpeg/lib/avdevice-52.dll',
- '${LCGDIR}/ffmpeg/lib/avutil-49.dll',
- '${LCGDIR}/ffmpeg/lib/libfaad-0.dll',
+ '${LCGDIR}/ffmpeg/lib/avutil-50.dll',
+ '${LCGDIR}/ffmpeg/lib/libfaad-2.dll',
'${LCGDIR}/ffmpeg/lib/libfaac-0.dll',
'${LCGDIR}/ffmpeg/lib/libmp3lame-0.dll',
- '${LCGDIR}/ffmpeg/lib/libx264-59.dll',
+ '${LCGDIR}/ffmpeg/lib/libx264-67.dll',
'${LCGDIR}/ffmpeg/lib/xvidcore.dll',
'${LCGDIR}/ffmpeg/lib/swscale-0.dll']
windlls = env.Install(dir=env['BF_INSTALLDIR'], source = dllsources)
@@ -633,6 +641,13 @@ if not env['WITHOUT_BF_INSTALL']:
#------------ EPYDOC
if env['WITH_BF_DOCS']:
- SConscript('source/blender/python/api2_2x/doc/SConscript')
- SConscript('source/gameengine/PyDoc/SConscript')
+ try: import epydoc
+ except: epydoc = None
+
+ if epydoc:
+ SConscript('source/blender/python/api2_2x/doc/SConscript')
+ SConscript('source/gameengine/PyDoc/SConscript')
+ else:
+ print "No epydoc install detected, Python API and Gameengine API Docs will not be generated "
+
diff --git a/config/darwin-config.py b/config/darwin-config.py
index 4f002aecef7..8ac83ce4a0d 100644
--- a/config/darwin-config.py
+++ b/config/darwin-config.py
@@ -40,11 +40,7 @@ else:
# enable ffmpeg support
WITH_BF_FFMPEG = True # -DWITH_FFMPEG
BF_FFMPEG = "#extern/ffmpeg"
-# trick : The version of ffmpeg in extern/ffmpeg uses explicit libav.. directory in #include statements
-# To keep Blender compatible with older versions, I add ${BF_FFMPEG} to the inc dir so that ffmpeg
-# finds the files directly in extern/ffmpeg/libav... while blender finds them in
-# extern/ffmpeg/include.
-BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}'
+BF_FFMPEG_INC = '${BF_FFMPEG}'
if USE_SDK==True:
BF_FFMPEG_EXTRA = '-isysroot '+MACOSX_SDK+' -mmacosx-version-min='+MAC_MIN_VERS
#BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
@@ -104,9 +100,6 @@ BF_SDL_INC = '${BF_SDL}/include' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
BF_SDL_LIBPATH = '${BF_SDL}/lib'
-WITH_BF_FMOD = False
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = '${LCGDIR}/openexr'
diff --git a/config/irix6-config.py b/config/irix6-config.py
index cb66dbafcce..711d16e623c 100644
--- a/config/irix6-config.py
+++ b/config/irix6-config.py
@@ -30,14 +30,11 @@ WITH_BF_STATICCXX = 'false'
BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
WITH_BF_SDL = 'true'
-BF_SDL = LCGDIR+'/SDL' #$(shell sdl-config --prefix)
+BF_SDL = LCGDIR+'/sdl' #$(shell sdl-config --prefix)
BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
BF_SDL_LIB = 'SDL audio iconv charset' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
BF_SDL_LIBPATH = '${BF_SDL}/lib'
-WITH_BF_FMOD = 'false'
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = 'false'
WITH_BF_STATICOPENEXR = 'false'
BF_OPENEXR = '/usr'
diff --git a/config/linux2-config.py b/config/linux2-config.py
index 45363f16cb0..d7c09258152 100644
--- a/config/linux2-config.py
+++ b/config/linux2-config.py
@@ -32,9 +32,6 @@ BF_SDL = '/usr' #$(shell sdl-config --prefix)
BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
-WITH_BF_FMOD = False
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = '/usr'
@@ -138,19 +135,14 @@ BF_FFMPEG_LIB = ''
# Uncomment the following two lines to use system's ffmpeg
# BF_FFMPEG = '/usr'
# BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
-# trick : The version of ffmpeg in extern/ffmpeg uses explicit libav.. directory in #include statements
-# To keep Blender compatible with older version, I add ${BF_FFMPEG} to the inc dir so that ffmpeg
-# finds the files directly in extern/ffmpeg/libav... while blender finds them in
-# extern/ffmpeg/include. When using system ffmpeg, you don't need that, assuming the system library
-# still use the flat directory model, otherwise will not compile anyway
-BF_FFMPEG_INC = '${BF_FFMPEG}/include ${BF_FFMPEG}'
+BF_FFMPEG_INC = '${BF_FFMPEG}'
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
# enable ogg, vorbis and theora in ffmpeg
WITH_BF_OGG = False # -DWITH_OGG
BF_OGG = '/usr'
BF_OGG_INC = '${BF_OGG}/include'
-BF_OGG_LIB = 'ogg vorbis theoraenc theoradec'
+BF_OGG_LIB = 'ogg vorbis vorbisenc theoraenc theoradec'
WITH_BF_OPENJPEG = True
BF_OPENJPEG = '#extern/libopenjpeg'
diff --git a/config/linuxcross-config.py b/config/linuxcross-config.py
index 8c643b75d63..4214ca52aac 100644
--- a/config/linuxcross-config.py
+++ b/config/linuxcross-config.py
@@ -35,9 +35,6 @@ BF_PTHREADS_INC = '${BF_PTHREADS}/include'
BF_PTHREADS_LIB = 'pthreadGC2'
BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib'
-WITH_BF_FMOD = False
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = LIBDIR + '/gcc/openexr'
diff --git a/config/openbsd3-config.py b/config/openbsd3-config.py
index 8fc334874f9..3a36f8df663 100644
--- a/config/openbsd3-config.py
+++ b/config/openbsd3-config.py
@@ -22,9 +22,6 @@ BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
BF_SDL_LIBPATH = '${BF_SDL}/lib'
-WITH_BF_FMOD = False
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = False
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = '/usr/local'
diff --git a/config/sunos5-config.py b/config/sunos5-config.py
index dda7d0ff2f3..6fa9529e1cd 100644
--- a/config/sunos5-config.py
+++ b/config/sunos5-config.py
@@ -28,9 +28,6 @@ BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
BF_SDL_LIBPATH = '${BF_SDL}/lib'
BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
-WITH_BF_FMOD = False
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = '/usr/local'
diff --git a/config/win32-mingw-config.py b/config/win32-mingw-config.py
index 0ad93c3d38c..80082002b21 100644
--- a/config/win32-mingw-config.py
+++ b/config/win32-mingw-config.py
@@ -35,9 +35,6 @@ BF_PTHREADS_INC = '${BF_PTHREADS}/include'
BF_PTHREADS_LIB = 'pthreadGC2'
BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib'
-WITH_BF_FMOD = False
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = LIBDIR + '/gcc/openexr'
diff --git a/config/win32-vc-config.py b/config/win32-vc-config.py
index 685c8dc860f..b5ad19890e1 100644
--- a/config/win32-vc-config.py
+++ b/config/win32-vc-config.py
@@ -6,7 +6,7 @@ WITH_BF_FFMPEG = True # -DWITH_FFMPEG
BF_FFMPEG = LIBDIR +'/ffmpeg'
BF_FFMPEG_INC = '${BF_FFMPEG}/include'
BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
-BF_FFMPEG_LIB = 'avformat-52.lib avcodec-51.lib avdevice-52.lib avutil-49.lib swscale-0.lib'
+BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
BF_PYTHON = LIBDIR + '/python'
BF_PYTHON_VERSION = '2.5'
@@ -46,9 +46,6 @@ BF_PTHREADS_INC = '${BF_PTHREADS}/include'
BF_PTHREADS_LIB = 'pthreadVC2'
BF_PTHREADS_LIBPATH = '${BF_PTHREADS}/lib'
-WITH_BF_FMOD = False
-BF_FMOD = LIBDIR + '/fmod'
-
WITH_BF_OPENEXR = True
WITH_BF_STATICOPENEXR = False
BF_OPENEXR = LIBDIR + '/openexr'
diff --git a/extern/bullet2/make/msvc_9_0/Bullet.vcproj b/extern/bullet2/make/msvc_9_0/Bullet.vcproj
index e64cf4c8564..9c8f9668f56 100644
--- a/extern/bullet2/make/msvc_9_0/Bullet.vcproj
+++ b/extern/bullet2/make/msvc_9_0/Bullet.vcproj
@@ -445,6 +445,10 @@
Name="Dynamics"
>
<File
+ RelativePath="..\..\src\BulletDynamics\Dynamics\btActionInterface.h"
+ >
+ </File>
+ <File
RelativePath="..\..\src\BulletDynamics\Dynamics\btContinuousDynamicsWorld.cpp"
>
</File>
diff --git a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
index d4e29882d37..eecf927ee10 100644
--- a/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
+++ b/extern/bullet2/src/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp
@@ -172,6 +172,9 @@ int btPersistentManifold::addManifoldPoint(const btManifoldPoint& newPoint)
#if MANIFOLD_CACHE_SIZE >= 4
//sort cache so best points come first, based on area
insertIndex = sortCachedPoints(newPoint);
+
+ if (insertIndex<0)
+ insertIndex=0;
#else
insertIndex = 0;
#endif
@@ -180,11 +183,7 @@ int btPersistentManifold::addManifoldPoint(const btManifoldPoint& newPoint)
} else
{
m_cachedPoints++;
-
-
}
- if (insertIndex<0)
- insertIndex=0;
btAssert(m_pointCache[insertIndex].m_userPersistentData==0);
m_pointCache[insertIndex] = newPoint;
diff --git a/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
index ea2e0ad2a2b..b6231a8fda6 100644
--- a/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
+++ b/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
@@ -350,12 +350,13 @@ int btDiscreteDynamicsWorld::stepSimulation( btScalar timeStep,int maxSubSteps,
for (int i=0;i<clampedSimulationSteps;i++)
{
internalSingleStepSimulation(fixedTimeStep);
- synchronizeMotionStates();
+ //for Blender, no need to synchronize here, it is done in blender anyway
+ //synchronizeMotionStates();
}
}
-
- synchronizeMotionStates();
+ //else
+ // synchronizeMotionStates();
clearForces();
@@ -725,9 +726,13 @@ void btDiscreteDynamicsWorld::calculateSimulationIslands()
{
if (colObj0->isActive() || colObj1->isActive())
{
-
- getSimulationIslandManager()->getUnionFind().unite((colObj0)->getIslandTag(),
- (colObj1)->getIslandTag());
+ if ((colObj0)->getIslandTag() != -1 && (colObj1)->getIslandTag() != -1)
+ {
+
+ getSimulationIslandManager()->getUnionFind().unite((colObj0)->getIslandTag(),
+ (colObj1)->getIslandTag());
+ }
+
}
}
}
diff --git a/extern/libopenjpeg/opj_includes.h b/extern/libopenjpeg/opj_includes.h
index 80d43df990f..3464cfcf9ed 100644
--- a/extern/libopenjpeg/opj_includes.h
+++ b/extern/libopenjpeg/opj_includes.h
@@ -88,6 +88,12 @@ Most compilers implement their own version of this keyword ...
/* MSVC does not have lrintf */
#ifdef _MSC_VER
+#ifdef _M_X64
+#include <emmintrin.h>
+static INLINE long lrintf(float f) {
+ return _mm_cvtss_si32(_mm_load_ss(&f));
+}
+#else
static INLINE long lrintf(float f){
int i;
@@ -99,6 +105,7 @@ static INLINE long lrintf(float f){
return i;
}
#endif
+#endif
#include "j2k_lib.h"
#include "opj_malloc.h"
diff --git a/intern/SoundSystem/Makefile b/intern/SoundSystem/Makefile
index 61785e44e68..4d346f65138 100644
--- a/intern/SoundSystem/Makefile
+++ b/intern/SoundSystem/Makefile
@@ -40,7 +40,6 @@ DIRS += dummy
ifneq ($(NAN_NO_OPENAL),true)
ifeq ($(OS),windows)
- DIRS += fmod
DIRS += openal sdl
endif
ifeq ($(OS),darwin)
diff --git a/intern/SoundSystem/SND_DependKludge.h b/intern/SoundSystem/SND_DependKludge.h
index 1a95f977abe..06d4ec9c0c9 100644
--- a/intern/SoundSystem/SND_DependKludge.h
+++ b/intern/SoundSystem/SND_DependKludge.h
@@ -43,9 +43,6 @@
# ifdef USE_OPENAL
# undef USE_OPENAL
# endif
-# ifdef USE_FMOD
-# undef USE_FMOD
-# endif
#endif
#endif /* NO_SOUND */
diff --git a/intern/SoundSystem/SoundDefines.h b/intern/SoundSystem/SoundDefines.h
index 450fde187b5..5238507c866 100644
--- a/intern/SoundSystem/SoundDefines.h
+++ b/intern/SoundSystem/SoundDefines.h
@@ -38,7 +38,6 @@
enum
{
snd_e_dummydevice = 0,
- snd_e_fmoddevice,
snd_e_openaldevice
};
@@ -49,15 +48,6 @@ enum
/* openal related stuff */
#define AL_LOOPING 0x1007
-/* fmod related stuff */
-#ifdef WIN32
-#define MIXRATE 22050
-#else
-#define MIXRATE 44100
-#endif
-#define NUM_FMOD_MIN_HW_CHANNELS 16
-#define NUM_FMOD_MAX_HW_CHANNELS 16
-
/* activelist defines */
enum
{
diff --git a/intern/SoundSystem/dummy/SND_DummyDevice.cpp b/intern/SoundSystem/dummy/SND_DummyDevice.cpp
index 3e5874f02ca..672c73e9c52 100644
--- a/intern/SoundSystem/dummy/SND_DummyDevice.cpp
+++ b/intern/SoundSystem/dummy/SND_DummyDevice.cpp
@@ -25,7 +25,7 @@
* Contributor(s): none yet.
*
* ***** END GPL LICENSE BLOCK *****
- * SND_FmodDevice derived from SND_IAudioDevice
+ * SND_DummyDevice derived from SND_IAudioDevice
*/
#ifdef HAVE_CONFIG_H
diff --git a/intern/SoundSystem/intern/Makefile b/intern/SoundSystem/intern/Makefile
index c52be01f69f..7684b6b0bca 100644
--- a/intern/SoundSystem/intern/Makefile
+++ b/intern/SoundSystem/intern/Makefile
@@ -35,12 +35,10 @@ include nan_compile.mk
CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
-CPPFLAGS += -I$(NAN_FMOD)/include
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I../../../source/blender/include
CPPFLAGS += -I../dummy
-CPPFLAGS += -I../fmod
CPPFLAGS += -I../openal
CPPFLAGS += -I..
CPPFLAGS += -I.
diff --git a/intern/SoundSystem/intern/SND_DeviceManager.cpp b/intern/SoundSystem/intern/SND_DeviceManager.cpp
index 215c0f5b6fa..c4bc887dffe 100644
--- a/intern/SoundSystem/intern/SND_DeviceManager.cpp
+++ b/intern/SoundSystem/intern/SND_DeviceManager.cpp
@@ -38,9 +38,6 @@
#include "SND_DeviceManager.h"
#include "SND_DependKludge.h"
#include "SND_DummyDevice.h"
-#ifdef USE_FMOD
-#include "SND_FmodDevice.h"
-#endif
#ifdef USE_OPENAL
#include "SND_OpenALDevice.h"
#endif
@@ -51,11 +48,7 @@ int SND_DeviceManager::m_subscriptions = 0;
#ifdef USE_OPENAL
int SND_DeviceManager::m_device_type = snd_e_openaldevice;
#else
-# ifdef USE_FMOD
-int SND_DeviceManager::m_device_type = snd_e_fmoddevice;
-# else
int SND_DeviceManager::m_device_type = snd_e_dummydevice;
-# endif
#endif
void SND_DeviceManager::Subscribe()
@@ -115,14 +108,6 @@ void SND_DeviceManager::SetDeviceType(int device_type)
// let's create the chosen device
switch (device_type)
{
-#ifdef USE_FMOD
- case snd_e_fmoddevice:
- {
- m_instance = new SND_FmodDevice();
- m_device_type = device_type;
- break;
- }
-#endif
#ifdef USE_OPENAL
case snd_e_openaldevice:
{
diff --git a/intern/SoundSystem/intern/SND_Scene.cpp b/intern/SoundSystem/intern/SND_Scene.cpp
index 9d050a81161..af1b43a08aa 100644
--- a/intern/SoundSystem/intern/SND_Scene.cpp
+++ b/intern/SoundSystem/intern/SND_Scene.cpp
@@ -217,14 +217,8 @@ void SND_Scene::UpdateListener()
if (m_listener.IsModified())
{
m_audiodevice->SetListenerGain(m_listener.GetGain());
-
- // fmod doesn't support dopplervelocity, so just use the dopplerfactor instead
-#ifdef USE_FMOD
- m_audiodevice->SetDopplerFactor(m_listener.GetDopplerVelocity());
-#else
m_audiodevice->SetDopplerVelocity(m_listener.GetDopplerVelocity());
m_audiodevice->SetDopplerFactor(m_listener.GetDopplerFactor());
-#endif
m_listener.SetModified(false);
}
}
@@ -304,23 +298,6 @@ void SND_Scene::UpdateActiveObects()
if (id >= 0)
{
-#ifdef USE_FMOD
- // fmod wants these set before playing the sample
- if (pObject->IsModified())
- {
- m_audiodevice->SetObjectLoop(id, pObject->GetLoopMode());
- m_audiodevice->SetObjectLoopPoints(id, pObject->GetLoopStart(), pObject->GetLoopEnd());
- }
-
- // ok, properties Set. now see if it must play
- if (pObject->GetPlaystate() == SND_MUST_PLAY)
- {
- m_audiodevice->PlayObject(id);
- pObject->SetPlaystate(SND_PLAYING);
- pObject->InitRunning();
-// printf("start play: %d\n", tijd);
- }
-#endif
if (pObject->Is3D())
{
// Get the global positions and velocity vectors
diff --git a/intern/SoundSystem/intern/SND_Utils.cpp b/intern/SoundSystem/intern/SND_Utils.cpp
index a9239576c96..dbc3135b35c 100644
--- a/intern/SoundSystem/intern/SND_Utils.cpp
+++ b/intern/SoundSystem/intern/SND_Utils.cpp
@@ -158,39 +158,7 @@ bool SND_IsSampleValid(const STR_String& name, void* memlocation)
if (shortbuf == SND_WAVE_FORMAT_PCM)
result = true;
-
- /* only fmod supports compressed wav */
-#ifdef USE_FMOD
- switch (shortbuf)
- {
- case SND_WAVE_FORMAT_ADPCM:
- case SND_WAVE_FORMAT_ALAW:
- case SND_WAVE_FORMAT_MULAW:
- case SND_WAVE_FORMAT_DIALOGIC_OKI_ADPCM:
- case SND_WAVE_FORMAT_CONTROL_RES_VQLPC:
- case SND_WAVE_FORMAT_GSM_610:
- case SND_WAVE_FORMAT_MPEG3:
- result = true;
- break;
- default:
- {
- break;
- }
- }
-#endif
}
-#ifdef USE_FMOD
- /* only valid publishers may use ogg vorbis */
- else if (!memcmp(buffer, "OggS", 4))
- {
- result = true;
- }
- /* only valid publishers may use mp3 */
- else if (((!memcmp(buffer, "ID3", 3)) || (!memcmp(buffer, "ÿû", 2))))
- {
- result = true;
- }
-#endif
}
if (loadedsample)
{
diff --git a/intern/SoundSystem/make/msvc_6_0/SoundSystem.dsp b/intern/SoundSystem/make/msvc_6_0/SoundSystem.dsp
index c7ce7aa7a70..1bd973dfb6c 100644
--- a/intern/SoundSystem/make/msvc_6_0/SoundSystem.dsp
+++ b/intern/SoundSystem/make/msvc_6_0/SoundSystem.dsp
@@ -1,206 +1,206 @@
-# Microsoft Developer Studio Project File - Name="SoundSystem" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SoundSystem - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SoundSystem.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SoundSystem.mak" CFG="SoundSystem - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SoundSystem - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SoundSystem - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SoundSystem - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\soundsystem"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\soundsystem"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/moto/include" /I "../../dummy" /I "../../openal" /I "..\..\..\string" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\soundsystem\libSoundSystem.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\SoundSystem\include\*.h ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\soundsystem\*.lib ..\..\..\..\..\lib\windows\SoundSystem\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "SoundSystem - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SoundSystem___Win32_Debug"
-# PROP BASE Intermediate_Dir "SoundSystem___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\soundsystem\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\soundsystem\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/moto/include" /I "../../dummy" /I "../../openal" /I "..\..\..\string" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\soundsystem\debug\libSoundSystem.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\SoundSystem\include\*.h ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\soundsystem\debug\*.lib ..\..\..\..\..\lib\windows\SoundSystem\lib\debug\*.a ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "SoundSystem - Win32 Release"
-# Name "SoundSystem - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\intern\SND_AudioDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\intern\SND_C-api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_CDObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_DeviceManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_IdObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_Scene.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_SoundListener.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_SoundObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_Utils.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_WaveCache.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_WaveSlot.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\intern\SND_AudioDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\SND_C-api.h"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_CDObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_DependKludge.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_DeviceManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_IAudioDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\SND_IdObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_Object.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_Scene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_SoundListener.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_SoundObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_Utils.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_WaveCache.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SND_WaveSlot.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\SoundDefines.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SoundSystem" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SoundSystem - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SoundSystem.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SoundSystem.mak" CFG="SoundSystem - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SoundSystem - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SoundSystem - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SoundSystem - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\soundsystem"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\soundsystem"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/moto/include" /I "../../dummy" /I "../../openal" /I "..\..\..\string" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\soundsystem\libSoundSystem.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\SoundSystem\include\*.h ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\soundsystem\*.lib ..\..\..\..\..\lib\windows\SoundSystem\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "SoundSystem - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SoundSystem___Win32_Debug"
+# PROP BASE Intermediate_Dir "SoundSystem___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\soundsystem\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\soundsystem\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/moto/include" /I "../../dummy" /I "../../openal" /I "..\..\..\string" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\soundsystem\debug\libSoundSystem.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\SoundSystem\include\*.h ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\soundsystem\debug\*.lib ..\..\..\..\..\lib\windows\SoundSystem\lib\debug\*.a ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "SoundSystem - Win32 Release"
+# Name "SoundSystem - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\intern\SND_AudioDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\intern\SND_C-api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_CDObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_DeviceManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_IdObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_Scene.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_SoundListener.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_SoundObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_Utils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_WaveCache.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_WaveSlot.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\intern\SND_AudioDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\SND_C-api.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_CDObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_DependKludge.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_DeviceManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_IAudioDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\SND_IdObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_Object.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_Scene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_SoundListener.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_SoundObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_Utils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_WaveCache.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SND_WaveSlot.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\SoundDefines.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/SoundSystem/make/msvc_6_0/dummy/DummySoundSystem.dsp b/intern/SoundSystem/make/msvc_6_0/dummy/DummySoundSystem.dsp
index 4a27fdfa6e3..2bf372d0382 100644
--- a/intern/SoundSystem/make/msvc_6_0/dummy/DummySoundSystem.dsp
+++ b/intern/SoundSystem/make/msvc_6_0/dummy/DummySoundSystem.dsp
@@ -1,103 +1,103 @@
-# Microsoft Developer Studio Project File - Name="DummySoundSystem" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=DummySoundSystem - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "DummySoundSystem.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "DummySoundSystem.mak" CFG="DummySoundSystem - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "DummySoundSystem - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "DummySoundSystem - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "DummySoundSystem - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\dummy\libDummySoundSystem.lib"
-
-!ELSEIF "$(CFG)" == "DummySoundSystem - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy\debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\dummy\debug\libDummySoundSystem.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "DummySoundSystem - Win32 Release"
-# Name "DummySoundSystem - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\dummy\SND_DummyDevice.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\dummy\SND_DummyDevice.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="DummySoundSystem" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=DummySoundSystem - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "DummySoundSystem.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "DummySoundSystem.mak" CFG="DummySoundSystem - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "DummySoundSystem - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "DummySoundSystem - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "DummySoundSystem - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\dummy\libDummySoundSystem.lib"
+
+!ELSEIF "$(CFG)" == "DummySoundSystem - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy\debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\dummy\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\dummy\debug\libDummySoundSystem.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "DummySoundSystem - Win32 Release"
+# Name "DummySoundSystem - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\dummy\SND_DummyDevice.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\dummy\SND_DummyDevice.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/SoundSystem/make/msvc_6_0/openal/OpenALSoundSystem.dsp b/intern/SoundSystem/make/msvc_6_0/openal/OpenALSoundSystem.dsp
index 67a6bd0bb5a..ef0c10e8eff 100644
--- a/intern/SoundSystem/make/msvc_6_0/openal/OpenALSoundSystem.dsp
+++ b/intern/SoundSystem/make/msvc_6_0/openal/OpenALSoundSystem.dsp
@@ -1,106 +1,106 @@
-# Microsoft Developer Studio Project File - Name="OpenALSoundSystem" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=OpenALSoundSystem - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "OpenALSoundSystem.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "OpenALSoundSystem.mak" CFG="OpenALSoundSystem - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "OpenALSoundSystem - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "OpenALSoundSystem - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "OpenALSoundSystem - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\SoundSystem\sdl" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /I "..\..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\..\lib\windows\sdl\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\openal\libOpenALSoundSystem.lib"
-
-!ELSEIF "$(CFG)" == "OpenALSoundSystem - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "OpenALSoundSystem___Win32_Debug"
-# PROP BASE Intermediate_Dir "OpenALSoundSystem___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal\debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\SoundSystem\sdl" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /I "..\..\..\..\..\..\lib\windows\sdl\include" /I "..\..\..\..\..\..\lib\windows\openal\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\openal\debug\libOpenALSoundSystem.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "OpenALSoundSystem - Win32 Release"
-# Name "OpenALSoundSystem - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\openal\SND_OpenALDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\sdl\SND_SDLCDDevice.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\openal\SND_OpenALDevice.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="OpenALSoundSystem" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=OpenALSoundSystem - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "OpenALSoundSystem.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "OpenALSoundSystem.mak" CFG="OpenALSoundSystem - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "OpenALSoundSystem - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "OpenALSoundSystem - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "OpenALSoundSystem - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\SoundSystem\sdl" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /I "..\..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\..\lib\windows\sdl\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\openal\libOpenALSoundSystem.lib"
+
+!ELSEIF "$(CFG)" == "OpenALSoundSystem - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "OpenALSoundSystem___Win32_Debug"
+# PROP BASE Intermediate_Dir "OpenALSoundSystem___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal\debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\intern\soundsystem\openal\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\intern" /I "..\..\..\..\SoundSystem" /I "..\..\..\..\SoundSystem\sdl" /I "..\..\..\..\moto\include" /I "..\..\..\..\string" /I "..\..\..\..\..\..\lib\windows\sdl\include" /I "..\..\..\..\..\..\lib\windows\openal\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\intern\soundsystem\openal\debug\libOpenALSoundSystem.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "OpenALSoundSystem - Win32 Release"
+# Name "OpenALSoundSystem - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\openal\SND_OpenALDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\sdl\SND_SDLCDDevice.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\openal\SND_OpenALDevice.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/SoundSystem/openal/SND_OpenALDevice.cpp b/intern/SoundSystem/openal/SND_OpenALDevice.cpp
index 9ce30f985ac..3649cf6de5a 100644
--- a/intern/SoundSystem/openal/SND_OpenALDevice.cpp
+++ b/intern/SoundSystem/openal/SND_OpenALDevice.cpp
@@ -316,7 +316,7 @@ SND_OpenALDevice::SND_OpenALDevice()
void SND_OpenALDevice::UseCD(void) const
{
- // only fmod has CD support, so only create it here
+ // we use SDL for CD, so we create the system
SND_CDObject::CreateSystem();
}
diff --git a/intern/bmfont/make/msvc_6_0/bmfont.dsp b/intern/bmfont/make/msvc_6_0/bmfont.dsp
index a9d2d9722e1..b7ff7774fa1 100644
--- a/intern/bmfont/make/msvc_6_0/bmfont.dsp
+++ b/intern/bmfont/make/msvc_6_0/bmfont.dsp
@@ -1,176 +1,176 @@
-# Microsoft Developer Studio Project File - Name="bmfont" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=bmfont - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "bmfont.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "bmfont.mak" CFG="bmfont - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "bmfont - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "bmfont - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "bmfont - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\bmfont"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bmfont"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../.." /I "../../intern" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bmfont\libbmfont.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copying BMFONT files library (release target) to lib tree.
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\bmfont\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bmfont\*.lib ..\..\..\..\..\lib\windows\bmfont\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "bmfont - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\bmfont\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bmfont\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../.." /I "../../intern" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bmfont\debug\libbmfont.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copying BMFONT files library (debug target) to lib tree.
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\bmfont\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bmfont\debug\*.lib ..\..\..\..\..\lib\windows\bmfont\lib\debug\*.a ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "bmfont - Win32 Release"
-# Name "bmfont - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_Api.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_BitmapFont.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_helv10.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_helv12.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_helvb10.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_helvb12.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_helvb14.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_helvb8.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_scr12.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_scr14.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_font_scr15.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_BitmapFont.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BMF_FontData.h
-# End Source File
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\BMF_Api.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\BMF_Fonts.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\BMF_Settings.h
-# End Source File
-# End Group
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="bmfont" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=bmfont - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "bmfont.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "bmfont.mak" CFG="bmfont - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "bmfont - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "bmfont - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "bmfont - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\bmfont"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bmfont"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../.." /I "../../intern" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bmfont\libbmfont.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copying BMFONT files library (release target) to lib tree.
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\bmfont\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bmfont\*.lib ..\..\..\..\..\lib\windows\bmfont\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "bmfont - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\bmfont\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bmfont\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../.." /I "../../intern" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bmfont\debug\libbmfont.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copying BMFONT files library (debug target) to lib tree.
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\bmfont\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bmfont\debug\*.lib ..\..\..\..\..\lib\windows\bmfont\lib\debug\*.a ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "bmfont - Win32 Release"
+# Name "bmfont - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_Api.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_BitmapFont.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_helv10.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_helv12.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_helvb10.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_helvb12.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_helvb14.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_helvb8.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_scr12.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_scr14.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_font_scr15.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_BitmapFont.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BMF_FontData.h
+# End Source File
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\BMF_Api.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\BMF_Fonts.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\BMF_Settings.h
+# End Source File
+# End Group
+# End Group
+# End Target
+# End Project
diff --git a/intern/bmfont/make/msvc_6_0/bmfont.dsw b/intern/bmfont/make/msvc_6_0/bmfont.dsw
index d2e2f94cd0b..265738bc0fe 100644
--- a/intern/bmfont/make/msvc_6_0/bmfont.dsw
+++ b/intern/bmfont/make/msvc_6_0/bmfont.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "bmfont"=.\bmfont.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "bmfont"=.\bmfont.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsp b/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsp
index 13e6e65f706..d178f5b4dc1 100644
--- a/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsp
+++ b/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsp
@@ -1,109 +1,109 @@
-# Microsoft Developer Studio Project File - Name="BMF_Test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=BMF_Test - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BMF_Test.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BMF_Test.mak" CFG="BMF_Test - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BMF_Test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "BMF_Test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BMF_Test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test"
-# PROP Intermediate_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/ghost/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libstring.a libghost.a glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../../../lib/windows/string/lib" /libpath:"../../../../../lib/windows/ghost/lib"
-
-!ELSEIF "$(CFG)" == "BMF_Test - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test/debug"
-# PROP Intermediate_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test/debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/ghost/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 glu32.lib opengl32.lib libstring.a libghost.a user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../../../lib/windows/string/lib" /libpath:"../../../../../lib/windows/ghost/lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "BMF_Test - Win32 Release"
-# Name "BMF_Test - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\intern\BMF_glut_helb8.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\intern\BMF_glut_helb8.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\BMF_Test.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BMF_Test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=BMF_Test - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BMF_Test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BMF_Test.mak" CFG="BMF_Test - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BMF_Test - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "BMF_Test - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BMF_Test - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test"
+# PROP Intermediate_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/ghost/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libstring.a libghost.a glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../../../lib/windows/string/lib" /libpath:"../../../../../lib/windows/ghost/lib"
+
+!ELSEIF "$(CFG)" == "BMF_Test - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test/debug"
+# PROP Intermediate_Dir "../../../../../../obj/windows/intern/BMF_bmfont/test/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../" /I "../../../../../lib/windows/string/include" /I "../../../../../lib/windows/ghost/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 glu32.lib opengl32.lib libstring.a libghost.a user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../../../lib/windows/string/lib" /libpath:"../../../../../lib/windows/ghost/lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "BMF_Test - Win32 Release"
+# Name "BMF_Test - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\intern\BMF_glut_helb8.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\intern\BMF_glut_helb8.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\BMF_Test.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsw b/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsw
index 5baacb9adf7..321de497224 100644
--- a/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsw
+++ b/intern/bmfont/test/make/msvc_6_0/BMF_Test.dsw
@@ -1,44 +1,44 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "BMF_Test"=.\BMF_Test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name BMF_bmfont
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "BMF_bmfont"=..\..\..\make\msvc_6_0\BMF_bmfont.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "BMF_Test"=.\BMF_Test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name BMF_bmfont
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "BMF_bmfont"=..\..\..\make\msvc_6_0\BMF_bmfont.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/boolop/intern/BOP_Merge2.cpp b/intern/boolop/intern/BOP_Merge2.cpp
index f75fddc554e..e2367d1319e 100644
--- a/intern/boolop/intern/BOP_Merge2.cpp
+++ b/intern/boolop/intern/BOP_Merge2.cpp
@@ -1,6 +1,6 @@
/**
*
- * $Id: BOP_Merge22.cpp 14444 2008-04-16 22:40:48Z hos $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/intern/boolop/intern/BOP_Misc.h b/intern/boolop/intern/BOP_Misc.h
index d021579d161..ce963b5ce92 100644
--- a/intern/boolop/intern/BOP_Misc.h
+++ b/intern/boolop/intern/BOP_Misc.h
@@ -1,6 +1,6 @@
/**
*
- * $Id: BOP_Misc.h 14444 2008-04-16 22:40:48Z khughes $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/intern/boolop/make/msvc_6_0/boolop.dsp b/intern/boolop/make/msvc_6_0/boolop.dsp
index f8a072b4531..d4e0025adc2 100644
--- a/intern/boolop/make/msvc_6_0/boolop.dsp
+++ b/intern/boolop/make/msvc_6_0/boolop.dsp
@@ -1,222 +1,222 @@
-# Microsoft Developer Studio Project File - Name="boolop" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=boolop - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "boolop.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "boolop.mak" CFG="boolop - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "boolop - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "boolop - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "boolop - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\source\blender\makesdna\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "../../extern" /I "..\..\..\..\..\lib\windows\guardedalloc\include\\" /I "..\..\..\..\source\blender\blenlib\\" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x407 /d "NDEBUG"
-# ADD RSC /l 0x407 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO copy to lib folder XCOPY /Y .\release\*.lib ..\..\..\..\..\lib\windows\boolop\lib\*.lib
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "boolop - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\blender\makesdna\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "../../extern" /I "..\..\..\..\..\lib\windows\guardedalloc\include\\" /I "..\..\..\..\source\blender\blenlib\\" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x407 /d "_DEBUG"
-# ADD RSC /l 0x407 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "boolop - Win32 Release"
-# Name "boolop - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_BBox.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_BSPNode.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_BSPTree.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Edge.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Face.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Face2Face.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Interface.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_MathUtils.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Merge.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Mesh.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Segment.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Splitter.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Tag.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Triangulator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Vertex.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_BBox.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_BSPNode.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_BSPTree.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Chrono.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Edge.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Face.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Face2Face.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Indexs.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_MathUtils.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Merge.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Mesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Segment.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Splitter.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Tag.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Triangulator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BOP_Vertex.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="boolop" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=boolop - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "boolop.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "boolop.mak" CFG="boolop - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "boolop - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "boolop - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "boolop - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\source\blender\makesdna\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "../../extern" /I "..\..\..\..\..\lib\windows\guardedalloc\include\\" /I "..\..\..\..\source\blender\blenlib\\" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO copy to lib folder XCOPY /Y .\release\*.lib ..\..\..\..\..\lib\windows\boolop\lib\*.lib
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "boolop - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\blender\makesdna\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "../../extern" /I "..\..\..\..\..\lib\windows\guardedalloc\include\\" /I "..\..\..\..\source\blender\blenlib\\" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "boolop - Win32 Release"
+# Name "boolop - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_BBox.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_BSPNode.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_BSPTree.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Edge.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Face.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Face2Face.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Interface.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_MathUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Merge.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Mesh.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Segment.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Splitter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Tag.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Triangulator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Vertex.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_BBox.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_BSPNode.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_BSPTree.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Chrono.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Edge.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Face.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Face2Face.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Indexs.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_MathUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Merge.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Mesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Segment.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Splitter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Tag.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Triangulator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BOP_Vertex.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/bsp/make/msvc6_0/bsplib.dsp b/intern/bsp/make/msvc6_0/bsplib.dsp
index 00bac967221..703a6326d3a 100644
--- a/intern/bsp/make/msvc6_0/bsplib.dsp
+++ b/intern/bsp/make/msvc6_0/bsplib.dsp
@@ -1,138 +1,138 @@
-# Microsoft Developer Studio Project File - Name="bsplib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=bsplib - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "bsplib.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "bsplib.mak" CFG="bsplib - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "bsplib - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "bsplib - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "bsplib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\bsp\"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bsp\"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "../../../../../lib/windows/memutil/include" /I "../.." /I "../../../../../lib/windows/moto/include" /I "../../../../../lib/windows/container/include" /I "..\..\..\container" /I "..\..\..\moto\include" /I "..\..\..\memutil" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bsp\libbsp.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\bsp\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bsp\*.lib ..\..\..\..\..\lib\windows\bsp\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "bsplib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\bsp\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bsp\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../../lib/windows/memutil" /I "../.." /I "../../../../../lib/windows/moto/include" /I "../../../../../lib/windows/container/include" /I "../../../../../lib/windows/memutil/include" /I "..\..\..\container" /I "..\..\..\moto\include" /I "..\..\..\memutil" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bsp\debug\libbsp.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\bsp\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bsp\debug\*.lib ..\..\..\..\..\lib\windows\bsp\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\bsp\debug\vc60.* ..\..\..\..\..\lib\windows\bsp\lib\debug\ ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "bsplib - Win32 Release"
-# Name "bsplib - Win32 Debug"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\intern\BSP_CSGException.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BSP_CSGISplitter.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BSP_CSGMesh.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BSP_CSGMesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BSP_CSGMesh_CFIterator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BSP_MeshPrimitives.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\BSP_MeshPrimitives.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\CSG_BooleanOps.cpp
-# End Source File
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\extern\CSG_BooleanOps.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="bsplib" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=bsplib - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "bsplib.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "bsplib.mak" CFG="bsplib - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "bsplib - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "bsplib - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "bsplib - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\bsp\"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bsp\"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "../../../../../lib/windows/memutil/include" /I "../.." /I "../../../../../lib/windows/moto/include" /I "../../../../../lib/windows/container/include" /I "..\..\..\container" /I "..\..\..\moto\include" /I "..\..\..\memutil" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bsp\libbsp.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\bsp\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bsp\*.lib ..\..\..\..\..\lib\windows\bsp\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "bsplib - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\bsp\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\bsp\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../../lib/windows/memutil" /I "../.." /I "../../../../../lib/windows/moto/include" /I "../../../../../lib/windows/container/include" /I "../../../../../lib/windows/memutil/include" /I "..\..\..\container" /I "..\..\..\moto\include" /I "..\..\..\memutil" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\bsp\debug\libbsp.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\bsp\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\bsp\debug\*.lib ..\..\..\..\..\lib\windows\bsp\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\bsp\debug\vc60.* ..\..\..\..\..\lib\windows\bsp\lib\debug\ ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "bsplib - Win32 Release"
+# Name "bsplib - Win32 Debug"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\intern\BSP_CSGException.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BSP_CSGISplitter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BSP_CSGMesh.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BSP_CSGMesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BSP_CSGMesh_CFIterator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BSP_MeshPrimitives.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\BSP_MeshPrimitives.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\CSG_BooleanOps.cpp
+# End Source File
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\extern\CSG_BooleanOps.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/bsp/make/msvc6_0/bsplib.dsw b/intern/bsp/make/msvc6_0/bsplib.dsw
index 1827dc3746e..de8cdcd1d33 100644
--- a/intern/bsp/make/msvc6_0/bsplib.dsw
+++ b/intern/bsp/make/msvc6_0/bsplib.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "bsplib"=.\bsplib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "bsplib"=.\bsplib.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsp b/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsp
index aaa45273845..4474eaa5d90 100644
--- a/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsp
+++ b/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsp
@@ -1,126 +1,126 @@
-# Microsoft Developer Studio Project File - Name="BSP_GhostTest" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=BSP_GhostTest - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BSP_GhostTest.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BSP_GhostTest.mak" CFG="BSP_GhostTest - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BSP_GhostTest - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "BSP_GhostTest - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BSP_GhostTest - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /G6 /MT /W3 /GX /O2 /Ob2 /I "../../extern/" /I "../../../../lib/windows/string/include" /I "../../../../lib/windows/ghost/include" /I "../../../../lib/windows/moto/include" /I "../../../../lib/windows/memutil/include" /I "../../../../lib/windows/container/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\lib\windows\glut-3.7\lib\\"
-
-!ELSEIF "$(CFG)" == "BSP_GhostTest - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../extern/" /I "../../../../lib/windows/string/include" /I "../../../../lib/windows/ghost/include" /I "../../../../lib/windows/moto/include" /I "../../../../lib/windows/memutil/include" /I "../../../../lib/windows/container/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\windows\glut-3.7\lib\\"
-
-!ENDIF
-
-# Begin Target
-
-# Name "BSP_GhostTest - Win32 Release"
-# Name "BSP_GhostTest - Win32 Debug"
-# Begin Source File
-
-SOURCE=.\BSP_GhostTest3D.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\BSP_GhostTest3D.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\BSP_MeshDrawer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\BSP_MeshDrawer.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\BSP_PlyLoader.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\BSP_PlyLoader.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\BSP_TMesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=.\ply.h
-# End Source File
-# Begin Source File
-
-SOURCE=.\plyfile.c
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BSP_GhostTest" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=BSP_GhostTest - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BSP_GhostTest.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BSP_GhostTest.mak" CFG="BSP_GhostTest - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BSP_GhostTest - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "BSP_GhostTest - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BSP_GhostTest - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /G6 /MT /W3 /GX /O2 /Ob2 /I "../../extern/" /I "../../../../lib/windows/string/include" /I "../../../../lib/windows/ghost/include" /I "../../../../lib/windows/moto/include" /I "../../../../lib/windows/memutil/include" /I "../../../../lib/windows/container/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\lib\windows\glut-3.7\lib\\"
+
+!ELSEIF "$(CFG)" == "BSP_GhostTest - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../extern/" /I "../../../../lib/windows/string/include" /I "../../../../lib/windows/ghost/include" /I "../../../../lib/windows/moto/include" /I "../../../../lib/windows/memutil/include" /I "../../../../lib/windows/container/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\windows\glut-3.7\lib\\"
+
+!ENDIF
+
+# Begin Target
+
+# Name "BSP_GhostTest - Win32 Release"
+# Name "BSP_GhostTest - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\BSP_GhostTest3D.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\BSP_GhostTest3D.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\BSP_MeshDrawer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\BSP_MeshDrawer.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\BSP_PlyLoader.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\BSP_PlyLoader.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\BSP_TMesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\ply.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\plyfile.c
+# End Source File
+# End Target
+# End Project
diff --git a/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsw b/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsw
index 802fba84bef..0d9ca3d2b08 100644
--- a/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsw
+++ b/intern/bsp/test/BSP_GhostTest/BSP_GhostTest.dsw
@@ -1,125 +1,125 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "BSP_GhostTest"=.\BSP_GhostTest.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name bsplib
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ghost
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name string
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name MoTo
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "MoTo"=..\..\..\moto\make\msvc_6_0\MoTo.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "bsplib"=..\..\make\msvc6_0\bsplib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name container
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name memutil
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name MoTo
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "container"=..\..\..\container\make\msvc_6_0\container.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name memutil
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ghost"=..\..\..\ghost\make\msvc\ghost.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "memutil"=..\..\..\memutil\make\msvc_60\memutil.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "string"=..\..\..\string\make\msvc_6_0\string.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "BSP_GhostTest"=.\BSP_GhostTest.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name bsplib
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ghost
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name string
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name MoTo
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "MoTo"=..\..\..\moto\make\msvc_6_0\MoTo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "bsplib"=..\..\make\msvc6_0\bsplib.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name container
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name memutil
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name MoTo
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "container"=..\..\..\container\make\msvc_6_0\container.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name memutil
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "ghost"=..\..\..\ghost\make\msvc\ghost.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "memutil"=..\..\..\memutil\make\msvc_60\memutil.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "string"=..\..\..\string\make\msvc_6_0\string.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/container/make/msvc_6_0/container.dsp b/intern/container/make/msvc_6_0/container.dsp
index 2ccf1f0a384..ac565c4c1ec 100644
--- a/intern/container/make/msvc_6_0/container.dsp
+++ b/intern/container/make/msvc_6_0/container.dsp
@@ -1,133 +1,133 @@
-# Microsoft Developer Studio Project File - Name="container" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=container - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "container.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "container.mak" CFG="container - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "container - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "container - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "container - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\container"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\container"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/container/libcontainer.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\container\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\container\*.lib ..\..\..\..\..\lib\windows\container\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "container - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\container\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\container\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\container\debug\libcontainer.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\container\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\container\debug\*.lib ..\..\..\..\..\lib\windows\container\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\container\debug\vc60.* ..\..\..\..\..\lib\windows\container\lib\debug\ ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "container - Win32 Release"
-# Name "container - Win32 Debug"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\intern\CTR_List.cpp
-
-!IF "$(CFG)" == "container - Win32 Release"
-
-# ADD CPP /I "../extern" /I "../../"
-
-!ELSEIF "$(CFG)" == "container - Win32 Debug"
-
-# ADD CPP /I "../../"
-
-!ENDIF
-
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\CTR_List.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\CTR_Map.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\CTR_TaggedIndex.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\CTR_TaggedSetOps.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\CTR_UHeap.h
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="container" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=container - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "container.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "container.mak" CFG="container - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "container - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "container - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "container - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\container"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\container"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/container/libcontainer.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\container\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\container\*.lib ..\..\..\..\..\lib\windows\container\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "container - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\container\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\container\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\container\debug\libcontainer.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\container\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\container\debug\*.lib ..\..\..\..\..\lib\windows\container\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\container\debug\vc60.* ..\..\..\..\..\lib\windows\container\lib\debug\ ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "container - Win32 Release"
+# Name "container - Win32 Debug"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\intern\CTR_List.cpp
+
+!IF "$(CFG)" == "container - Win32 Release"
+
+# ADD CPP /I "../extern" /I "../../"
+
+!ELSEIF "$(CFG)" == "container - Win32 Debug"
+
+# ADD CPP /I "../../"
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\CTR_List.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\CTR_Map.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\CTR_TaggedIndex.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\CTR_TaggedSetOps.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\CTR_UHeap.h
+# End Source File
+# End Target
+# End Project
diff --git a/intern/container/make/msvc_6_0/container.dsw b/intern/container/make/msvc_6_0/container.dsw
index 13092e3c427..ed9604641fb 100644
--- a/intern/container/make/msvc_6_0/container.dsw
+++ b/intern/container/make/msvc_6_0/container.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "container"=.\container.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "container"=.\container.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/decimation/make/msvc_6_0/decimation.dsp b/intern/decimation/make/msvc_6_0/decimation.dsp
index 013e9e077fb..40b65a032db 100644
--- a/intern/decimation/make/msvc_6_0/decimation.dsp
+++ b/intern/decimation/make/msvc_6_0/decimation.dsp
@@ -1,186 +1,186 @@
-# Microsoft Developer Studio Project File - Name="decimation" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=decimation - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "decimation.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "decimation.mak" CFG="decimation - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "decimation - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "decimation - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "decimation - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\decimation"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\decimation"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /Ob2 /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I"..\..\..\moto\include" /I"..\..\..\memutil" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\decimation\libdecimation.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\decimation\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\decimation\*.lib ..\..\..\..\..\lib\windows\decimation\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "decimation - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\decimation\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\decimation\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W4 /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I"..\..\..\moto\include" /I"..\..\..\memutil" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\decimation\debug\libdecimation.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\decimation\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\decimation\debug\*.lib ..\..\..\..\..\lib\windows\decimation\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\decimation\debug\vc60.* ..\..\..\..\..\lib\windows\decimation\lib\debug\ ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "decimation - Win32 Release"
-# Name "decimation - Win32 Debug"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_decimation.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_DecimationClass.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_EdgeCollapser.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_EdgeCollapser.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_ExternBufferEditor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_ExternNormalEditor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_ExternNormalEditor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_FaceNormalEditor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_FaceNormalEditor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_ManMesh2.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_ManMesh2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_MeshBounds.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_MeshException.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_MeshPrimitives.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_MeshPrimitives.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_QSDecimator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_QSDecimator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_Quadric.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_QuadricEditor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\LOD_QuadricEditor.h
-# End Source File
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\extern\LOD_decimation.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="decimation" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=decimation - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "decimation.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "decimation.mak" CFG="decimation - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "decimation - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "decimation - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "decimation - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\decimation"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\decimation"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /Ob2 /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I"..\..\..\moto\include" /I"..\..\..\memutil" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\decimation\libdecimation.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\decimation\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\decimation\*.lib ..\..\..\..\..\lib\windows\decimation\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "decimation - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\decimation\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\decimation\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W4 /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\container\include\\" /I "..\..\..\..\..\lib\windows\memutil\include\\" /I "..\..\..\..\..\lib\windows\moto\include\\" /I"..\..\..\moto\include" /I"..\..\..\memutil" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\decimation\debug\libdecimation.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\decimation\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\decimation\debug\*.lib ..\..\..\..\..\lib\windows\decimation\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\decimation\debug\vc60.* ..\..\..\..\..\lib\windows\decimation\lib\debug\ ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "decimation - Win32 Release"
+# Name "decimation - Win32 Debug"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_decimation.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_DecimationClass.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_EdgeCollapser.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_EdgeCollapser.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_ExternBufferEditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_ExternNormalEditor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_ExternNormalEditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_FaceNormalEditor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_FaceNormalEditor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_ManMesh2.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_ManMesh2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_MeshBounds.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_MeshException.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_MeshPrimitives.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_MeshPrimitives.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_QSDecimator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_QSDecimator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_Quadric.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_QuadricEditor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\LOD_QuadricEditor.h
+# End Source File
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\extern\LOD_decimation.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/decimation/make/msvc_6_0/decimation.dsw b/intern/decimation/make/msvc_6_0/decimation.dsw
index f874b324725..d46268c2545 100644
--- a/intern/decimation/make/msvc_6_0/decimation.dsw
+++ b/intern/decimation/make/msvc_6_0/decimation.dsw
@@ -1,33 +1,33 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "decimation"=.\decimation.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
-
-
-
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "decimation"=.\decimation.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
+
+
+
+
diff --git a/intern/elbeem/make/msvc_6_0/elbeem.dsp b/intern/elbeem/make/msvc_6_0/elbeem.dsp
index ef5daa29fa4..652687ca82b 100644
--- a/intern/elbeem/make/msvc_6_0/elbeem.dsp
+++ b/intern/elbeem/make/msvc_6_0/elbeem.dsp
@@ -1,290 +1,290 @@
-# Microsoft Developer Studio Project File - Name="elbeem" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=elbeem - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "elbeem.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "elbeem.mak" CFG="elbeem - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "elbeem - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "elbeem - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "elbeem - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /I "../../../../../lib/windows/sdl/include" /I "../../../../../lib/windows/zlib/include" /I "../../../../../lib/windows/png/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "NOGUI" /D "ELBEEM_BLENDER" /YX /FD /c
-# ADD BASE RSC /l 0x407 /d "NDEBUG"
-# ADD RSC /l 0x407 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Release\blender_elbeem.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO copy to lib ... xcopy /Y .\release\blender_elbeem.lib ..\..\..\..\..\lib\windows\elbeem\lib\*.*
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "elbeem - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../../lib/windows/sdl/include" /I "../../../../../lib/windows/zlib/include" /I "../../../../../lib/windows/png/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "NOGUI" /D "ELBEEM_BLENDER" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x407 /d "_DEBUG"
-# ADD RSC /l 0x407 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"Debug\blender_elbeem.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO copy to lib ... xcopy /Y .\debug\blender_elbeem.lib ..\..\..\..\..\lib\windows\elbeem\lib\debug\*.*
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "elbeem - Win32 Release"
-# Name "elbeem - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\intern\attributes.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\elbeem.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\isosurface.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_blenderdumper.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_bsptree.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_geometrymodel.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_geometryobject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_lighting.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_ray.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_world.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\parametrizer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\particletracer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\simulation_object.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_adap.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_init.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_interface.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_util.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\utilities.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\intern\attributes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\isosurface.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\mcubes_tables.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_blenderdumper.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_bsptree.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_geometryclass.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_geometrymodel.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_geometryobject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_geometryshader.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_lighting.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_lightobject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_material.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_matrices.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_ray.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_renderglobals.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_rndstream.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_scene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_triangle.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_vector3dim.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\ntl_world.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\parametrizer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\particletracer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\simulation_object.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_class.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_dimenions.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_interface.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\solver_relax.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\utilities.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="elbeem" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=elbeem - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "elbeem.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "elbeem.mak" CFG="elbeem - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "elbeem - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "elbeem - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "elbeem - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /I "../../../../../lib/windows/sdl/include" /I "../../../../../lib/windows/zlib/include" /I "../../../../../lib/windows/png/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "NOGUI" /D "ELBEEM_BLENDER" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Release\blender_elbeem.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO copy to lib ... xcopy /Y .\release\blender_elbeem.lib ..\..\..\..\..\lib\windows\elbeem\lib\*.*
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "elbeem - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../../lib/windows/sdl/include" /I "../../../../../lib/windows/zlib/include" /I "../../../../../lib/windows/png/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "NOGUI" /D "ELBEEM_BLENDER" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"Debug\blender_elbeem.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO copy to lib ... xcopy /Y .\debug\blender_elbeem.lib ..\..\..\..\..\lib\windows\elbeem\lib\debug\*.*
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "elbeem - Win32 Release"
+# Name "elbeem - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\intern\attributes.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\elbeem.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\isosurface.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_blenderdumper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_bsptree.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_geometrymodel.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_geometryobject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_lighting.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_ray.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_world.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\parametrizer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\particletracer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\simulation_object.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_adap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_init.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_interface.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_main.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_util.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\utilities.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\intern\attributes.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\isosurface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\mcubes_tables.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_blenderdumper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_bsptree.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_geometryclass.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_geometrymodel.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_geometryobject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_geometryshader.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_lighting.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_lightobject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_material.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_matrices.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_ray.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_renderglobals.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_rndstream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_scene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_triangle.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_vector3dim.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\ntl_world.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\parametrizer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\particletracer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\simulation_object.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_class.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_dimenions.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_interface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\solver_relax.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\utilities.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/ghost/make/msvc/ghost.dsp b/intern/ghost/make/msvc/ghost.dsp
index fd287488b56..741d1c3a247 100644
--- a/intern/ghost/make/msvc/ghost.dsp
+++ b/intern/ghost/make/msvc/ghost.dsp
@@ -1,292 +1,292 @@
-# Microsoft Developer Studio Project File - Name="ghost" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=ghost - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ghost.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ghost.mak" CFG="ghost - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ghost - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "ghost - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ghost - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\ghost"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\ghost"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../.." /I "../../../../../lib/windows/string/include" /I "..\..\..\..\intern\string" /I "../../../../../lib/windows/wintab/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\ghost\libghost.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copying GHOST files library (release target) to lib tree.
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\ghost\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\ghost\*.lib ..\..\..\..\..\lib\windows\ghost\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "ghost - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\ghost\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\ghost\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../.." /I "../../../../../lib/windows/string/include" /I "..\..\..\..\intern\string" /I "../../../../../lib/windows/wintab/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\ghost\debug\libghost.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copying GHOST files library (debug target) to lib tree.
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\ghost\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\ghost\debug\*.lib ..\..\..\..\..\lib\windows\ghost\lib\debug\*.a ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "ghost - Win32 Release"
-# Name "ghost - Win32 Debug"
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_Buttons.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_CallbackEventConsumer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_Debug.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_DisplayManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_DisplayManagerWin32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_Event.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventButton.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventCursor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventKey.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventPrinter.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventWheel.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventWindow.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_ModifierKeys.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_System.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_SystemWin32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_TimerManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_TimerTask.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_Window.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_WindowManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_WindowWin32.h
-# End Source File
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE="..\..\GHOST_C-api.h"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\GHOST_IEvent.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\GHOST_IEventConsumer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\GHOST_ISystem.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\GHOST_ITimerTask.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\GHOST_IWindow.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\GHOST_Rect.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\GHOST_Types.h
-# End Source File
-# End Group
-# End Group
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_Buttons.cpp
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\intern\GHOST_C-api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_CallbackEventConsumer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_DisplayManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_DisplayManagerWin32.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_EventPrinter.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_ISystem.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_ModifierKeys.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_Rect.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_System.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_SystemWin32.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_TimerManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_Window.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_WindowManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\GHOST_WindowWin32.cpp
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="ghost" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=ghost - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ghost.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ghost.mak" CFG="ghost - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ghost - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "ghost - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ghost - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\ghost"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\ghost"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../.." /I "../../../../../lib/windows/string/include" /I "..\..\..\..\intern\string" /I "../../../../../lib/windows/wintab/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\ghost\libghost.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copying GHOST files library (release target) to lib tree.
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\ghost\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\ghost\*.lib ..\..\..\..\..\lib\windows\ghost\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "ghost - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\ghost\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\ghost\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../.." /I "../../../../../lib/windows/string/include" /I "..\..\..\..\intern\string" /I "../../../../../lib/windows/wintab/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FR /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\ghost\debug\libghost.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Copying GHOST files library (debug target) to lib tree.
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\ghost\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\ghost\debug\*.lib ..\..\..\..\..\lib\windows\ghost\lib\debug\*.a ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "ghost - Win32 Release"
+# Name "ghost - Win32 Debug"
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_Buttons.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_CallbackEventConsumer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_Debug.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_DisplayManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_DisplayManagerWin32.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_Event.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventButton.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventCursor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventKey.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventPrinter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventWheel.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventWindow.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_ModifierKeys.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_System.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_SystemWin32.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_TimerManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_TimerTask.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_Window.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_WindowManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_WindowWin32.h
+# End Source File
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE="..\..\GHOST_C-api.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\GHOST_IEvent.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\GHOST_IEventConsumer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\GHOST_ISystem.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\GHOST_ITimerTask.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\GHOST_IWindow.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\GHOST_Rect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\GHOST_Types.h
+# End Source File
+# End Group
+# End Group
+# Begin Group "Source Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_Buttons.cpp
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\intern\GHOST_C-api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_CallbackEventConsumer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_DisplayManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_DisplayManagerWin32.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_EventPrinter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_ISystem.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_ModifierKeys.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_Rect.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_System.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_SystemWin32.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_TimerManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_Window.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_WindowManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\GHOST_WindowWin32.cpp
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/ghost/make/msvc/ghost.dsw b/intern/ghost/make/msvc/ghost.dsw
index 807a6ec3157..a98e7644c11 100644
--- a/intern/ghost/make/msvc/ghost.dsw
+++ b/intern/ghost/make/msvc/ghost.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "ghost"=".\ghost.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "ghost"=".\ghost.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/ghost/test/make/msvc_6_0/gears.dsp b/intern/ghost/test/make/msvc_6_0/gears.dsp
index 3e809a6b604..e068231bf32 100644
--- a/intern/ghost/test/make/msvc_6_0/gears.dsp
+++ b/intern/ghost/test/make/msvc_6_0/gears.dsp
@@ -1,102 +1,102 @@
-# Microsoft Developer Studio Project File - Name="gears" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=gears - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gears.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gears.mak" CFG="gears - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gears - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "gears - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gears - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/"
-# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /I "../../../../string" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "gears - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
-# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /I "../../../../string" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "gears - Win32 Release"
-# Name "gears - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\gears\GHOST_Test.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="gears" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=gears - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "gears.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "gears.mak" CFG="gears - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "gears - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "gears - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "gears - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/"
+# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /I "../../../../string" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "gears - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
+# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /I "../../../../string" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "gears - Win32 Release"
+# Name "gears - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\gears\GHOST_Test.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/intern/ghost/test/make/msvc_6_0/gears_C.dsp b/intern/ghost/test/make/msvc_6_0/gears_C.dsp
index 5972d123268..df0ae0448fd 100644
--- a/intern/ghost/test/make/msvc_6_0/gears_C.dsp
+++ b/intern/ghost/test/make/msvc_6_0/gears_C.dsp
@@ -1,102 +1,102 @@
-# Microsoft Developer Studio Project File - Name="gears_C" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=gears_C - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gears_C.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gears_C.mak" CFG="gears_C - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gears_C - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "gears_C - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gears_C - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/"
-# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /I "../../../../string" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "gears_C - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
-# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /I "../../../../string" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "gears_C - Win32 Release"
-# Name "gears_C - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\gears\GHOST_C-Test.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="gears_C" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=gears_C - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "gears_C.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "gears_C.mak" CFG="gears_C - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "gears_C - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "gears_C - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "gears_C - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/"
+# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../.." /I "../../../../string" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "gears_C - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
+# PROP Intermediate_Dir "../../../../../../obj/windows/intern/ghost/test/debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../.." /I "../../../../string" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 glu32.lib opengl32.lib user32.lib gdi32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "gears_C - Win32 Release"
+# Name "gears_C - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="..\..\gears\GHOST_C-Test.c"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/intern/ghost/test/make/msvc_6_0/ghost_test.dsw b/intern/ghost/test/make/msvc_6_0/ghost_test.dsw
index 03bf5eb5c9a..7a56a3b5ef1 100644
--- a/intern/ghost/test/make/msvc_6_0/ghost_test.dsw
+++ b/intern/ghost/test/make/msvc_6_0/ghost_test.dsw
@@ -1,77 +1,77 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "gears"=.\gears.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name ghost
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name string
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "gears_C"=.\gears_C.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name ghost
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name string
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ghost"=..\..\..\make\msvc\ghost.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "string"=..\..\..\..\string\make\msvc_6_0\string.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "gears"=.\gears.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name ghost
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name string
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gears_C"=.\gears_C.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name ghost
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name string
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "ghost"=..\..\..\make\msvc\ghost.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "string"=..\..\..\..\string\make\msvc_6_0\string.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/guardedalloc/intern/mmap_win.c b/intern/guardedalloc/intern/mmap_win.c
index 642cc16296e..5c59640200f 100644
--- a/intern/guardedalloc/intern/mmap_win.c
+++ b/intern/guardedalloc/intern/mmap_win.c
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/intern/guardedalloc/make/msvc_6_0/guardedalloc.dsp b/intern/guardedalloc/make/msvc_6_0/guardedalloc.dsp
index 21cc20e14f1..1c02b639a30 100644
--- a/intern/guardedalloc/make/msvc_6_0/guardedalloc.dsp
+++ b/intern/guardedalloc/make/msvc_6_0/guardedalloc.dsp
@@ -1,114 +1,114 @@
-# Microsoft Developer Studio Project File - Name="guardedalloc" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=guardedalloc - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "guardedalloc.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "guardedalloc.mak" CFG="guardedalloc - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "guardedalloc - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "guardedalloc - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "guardedalloc - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\guardedalloc\"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\guardedalloc\"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\guardedalloc\libguardedalloc.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\guardedalloc\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\guardedalloc\*.lib ..\..\..\..\..\lib\windows\guardedalloc\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "guardedalloc - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\guardedalloc\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\guardedalloc\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\guardedalloc\debug\libguardedalloc.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\guardedalloc\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\guardedalloc\debug\*.lib ..\..\..\..\..\lib\windows\guardedalloc\lib\debug\*.a ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "guardedalloc - Win32 Release"
-# Name "guardedalloc - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\intern\mallocn.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\MEM_guardedalloc.h
-# End Source File
-# End Group
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="guardedalloc" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=guardedalloc - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "guardedalloc.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "guardedalloc.mak" CFG="guardedalloc - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "guardedalloc - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "guardedalloc - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "guardedalloc - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\guardedalloc\"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\guardedalloc\"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\guardedalloc\libguardedalloc.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\guardedalloc\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\guardedalloc\*.lib ..\..\..\..\..\lib\windows\guardedalloc\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "guardedalloc - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\guardedalloc\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\guardedalloc\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\guardedalloc\debug\libguardedalloc.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\guardedalloc\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\guardedalloc\debug\*.lib ..\..\..\..\..\lib\windows\guardedalloc\lib\debug\*.a ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "guardedalloc - Win32 Release"
+# Name "guardedalloc - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\intern\mallocn.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\MEM_guardedalloc.h
+# End Source File
+# End Group
+# End Group
+# End Target
+# End Project
diff --git a/intern/guardedalloc/mmap_win.h b/intern/guardedalloc/mmap_win.h
index 443c3b6f4ce..855c46c08da 100644
--- a/intern/guardedalloc/mmap_win.h
+++ b/intern/guardedalloc/mmap_win.h
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/intern/iksolver/make/msvc_6_0/iksolver.dsp b/intern/iksolver/make/msvc_6_0/iksolver.dsp
index c5e842bdd04..f40ef72a62a 100644
--- a/intern/iksolver/make/msvc_6_0/iksolver.dsp
+++ b/intern/iksolver/make/msvc_6_0/iksolver.dsp
@@ -1,260 +1,260 @@
-# Microsoft Developer Studio Project File - Name="iksolver" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=iksolver - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "iksolver.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "iksolver.mak" CFG="iksolver - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "iksolver - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "iksolver - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "iksolver - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\iksolver"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\iksolver"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /Ob2 /I "..\..\..\..\intern\moto\include" /I "..\..\..\..\intern\memutil" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\iksolver\libiksolver.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\iksolver\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\iksolver\*.lib ..\..\..\..\..\lib\windows\iksolver\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "iksolver - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\iksolver\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\iksolver\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\intern\moto\include" /I "..\..\..\..\intern\memutil" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\iksolver\debug\libiksolver.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\iksolver\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\iksolver\debug\*.lib ..\..\..\..\..\lib\windows\iksolver\lib\debug\*.a ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "iksolver - Win32 Release"
-# Name "iksolver - Win32 Debug"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Group "common"
-
-# PROP Default_Filter ""
-# End Group
-# Begin Group "TNT"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\cholesky.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\cmat.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\fcscmat.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\fmat.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\fortran.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\fspvec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\index.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\lapack.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\lu.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\qr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\region1d.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\region2d.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\stopwatch.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\subscript.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\svd.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\tnt.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\tntmath.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\tntreqs.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\transv.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\triang.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\trisolve.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\vec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\vecadaptor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\TNT\version.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QJacobian.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QJacobian.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QJacobianSolver.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QJacobianSolver.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QSegment.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QSegment.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QSolver_Class.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QTask.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_QTask.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\IK_Solver.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_ExpMap.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_ExpMap.h
-# End Source File
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\extern\IK_solver.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="iksolver" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=iksolver - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "iksolver.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "iksolver.mak" CFG="iksolver - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "iksolver - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "iksolver - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "iksolver - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\iksolver"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\iksolver"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /Ob2 /I "..\..\..\..\intern\moto\include" /I "..\..\..\..\intern\memutil" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\iksolver\libiksolver.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\iksolver\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\iksolver\*.lib ..\..\..\..\..\lib\windows\iksolver\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "iksolver - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\iksolver\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\iksolver\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\intern\moto\include" /I "..\..\..\..\intern\memutil" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\iksolver\debug\libiksolver.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\iksolver\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\iksolver\debug\*.lib ..\..\..\..\..\lib\windows\iksolver\lib\debug\*.a ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "iksolver - Win32 Release"
+# Name "iksolver - Win32 Debug"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Group "common"
+
+# PROP Default_Filter ""
+# End Group
+# Begin Group "TNT"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\cholesky.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\cmat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\fcscmat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\fmat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\fortran.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\fspvec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\index.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\lapack.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\lu.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\qr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\region1d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\region2d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\stopwatch.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\subscript.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\svd.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\tnt.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\tntmath.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\tntreqs.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\transv.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\triang.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\trisolve.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\vec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\vecadaptor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\TNT\version.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QJacobian.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QJacobian.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QJacobianSolver.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QJacobianSolver.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QSegment.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QSegment.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QSolver_Class.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QTask.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_QTask.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\IK_Solver.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_ExpMap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_ExpMap.h
+# End Source File
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\extern\IK_solver.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/iksolver/make/msvc_6_0/iksolver.dsw b/intern/iksolver/make/msvc_6_0/iksolver.dsw
index 90a123d9ce8..9771088c42d 100644
--- a/intern/iksolver/make/msvc_6_0/iksolver.dsw
+++ b/intern/iksolver/make/msvc_6_0/iksolver.dsw
@@ -1,35 +1,35 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "iksolver"=.\iksolver.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
-
-
-
-
-
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "iksolver"=.\iksolver.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
+
+
+
+
+
+
diff --git a/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsp b/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsp
index 8688b2fcc2c..2de994d12e3 100644
--- a/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsp
+++ b/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsp
@@ -1,130 +1,130 @@
-# Microsoft Developer Studio Project File - Name="ik_glut_test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ik_glut_test - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ik_glut_test.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ik_glut_test.mak" CFG="ik_glut_test - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ik_glut_test - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ik_glut_test - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ik_glut_test - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\extern" /I "..\..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\..\lib\windows\memutil\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 iksolver_rmtd.lib libmoto.a /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\lib\windows\release" /libpath:"..\..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\..\lib\windows\moto\lib"
-
-!ELSEIF "$(CFG)" == "ik_glut_test - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\extern" /I "..\..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\..\lib\windows\memutil\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 iksolver_dmtd.lib libmoto.a /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCMTD.lib" /pdbtype:sept /libpath:"..\..\..\..\lib\windows\debug" /libpath:"..\..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\..\lib\windows\moto\lib\debug"
-
-!ENDIF
-
-# Begin Target
-
-# Name "ik_glut_test - Win32 Release"
-# Name "ik_glut_test - Win32 Debug"
-# Begin Group "common"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\common\GlutDrawer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\GlutDrawer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\GlutKeyboardManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\GlutKeyboardManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\GlutMouseManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\common\GlutMouseManager.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\intern\ChainDrawer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MyGlutKeyHandler.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MyGlutMouseHandler.h
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="ik_glut_test" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=ik_glut_test - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ik_glut_test.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ik_glut_test.mak" CFG="ik_glut_test - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ik_glut_test - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "ik_glut_test - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ik_glut_test - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\extern" /I "..\..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\..\lib\windows\memutil\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 iksolver_rmtd.lib libmoto.a /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\lib\windows\release" /libpath:"..\..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\..\lib\windows\moto\lib"
+
+!ELSEIF "$(CFG)" == "ik_glut_test - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\extern" /I "..\..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\..\lib\windows\memutil\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 iksolver_dmtd.lib libmoto.a /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"LIBCMTD.lib" /pdbtype:sept /libpath:"..\..\..\..\lib\windows\debug" /libpath:"..\..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\..\lib\windows\moto\lib\debug"
+
+!ENDIF
+
+# Begin Target
+
+# Name "ik_glut_test - Win32 Release"
+# Name "ik_glut_test - Win32 Debug"
+# Begin Group "common"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\common\GlutDrawer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\GlutDrawer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\GlutKeyboardManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\GlutKeyboardManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\GlutMouseManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\common\GlutMouseManager.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\intern\ChainDrawer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\main.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MyGlutKeyHandler.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MyGlutMouseHandler.h
+# End Source File
+# End Target
+# End Project
diff --git a/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsw b/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsw
index 09b7094137b..84915beaeb2 100644
--- a/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsw
+++ b/intern/iksolver/test/ik_glut_test/make/msvc_6_0/ik_glut_test.dsw
@@ -1,49 +1,49 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "ik_glut_test"=.\ik_glut_test.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name iksolver
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "iksolver"=..\..\..\..\make\msvc_6_0\iksolver.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
-
-
-
-
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "ik_glut_test"=.\ik_glut_test.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name iksolver
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "iksolver"=..\..\..\..\make\msvc_6_0\iksolver.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
+
+
+
+
+
diff --git a/intern/make/msvc_6_0/build_install_all.dsp b/intern/make/msvc_6_0/build_install_all.dsp
index 110c28ddeac..714c30fc5cf 100644
--- a/intern/make/msvc_6_0/build_install_all.dsp
+++ b/intern/make/msvc_6_0/build_install_all.dsp
@@ -1,68 +1,68 @@
-# Microsoft Developer Studio Project File - Name="Build_install_all" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Generic Project" 0x010a
-
-CFG=Build_install_all - Win32 Debug
-!MESSAGE This is not a valid makefile. To Build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "Build_install_all.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "Build_install_all.mak" CFG="Build_install_all - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "Build_install_all - Win32 Release" (based on "Win32 (x86) Generic Project")
-!MESSAGE "Build_install_all - Win32 Debug" (based on "Win32 (x86) Generic Project")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-MTL=midl.exe
-
-!IF "$(CFG)" == "Build_install_all - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-
-!ELSEIF "$(CFG)" == "Build_install_all - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Python freeze
-PostBuild_Cmds=ECHO Freezing Blender Python code ..\..\python\freeze\freeze.bat
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "Build_install_all - Win32 Release"
-# Name "Build_install_all - Win32 Debug"
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="Build_install_all" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Generic Project" 0x010a
+
+CFG=Build_install_all - Win32 Debug
+!MESSAGE This is not a valid makefile. To Build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "Build_install_all.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "Build_install_all.mak" CFG="Build_install_all - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Build_install_all - Win32 Release" (based on "Win32 (x86) Generic Project")
+!MESSAGE "Build_install_all - Win32 Debug" (based on "Win32 (x86) Generic Project")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+MTL=midl.exe
+
+!IF "$(CFG)" == "Build_install_all - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+
+!ELSEIF "$(CFG)" == "Build_install_all - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Python freeze
+PostBuild_Cmds=ECHO Freezing Blender Python code ..\..\python\freeze\freeze.bat
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "Build_install_all - Win32 Release"
+# Name "Build_install_all - Win32 Debug"
+# End Target
+# End Project
diff --git a/intern/make/msvc_6_0/intern.dsw b/intern/make/msvc_6_0/intern.dsw
index 2818636c1c6..1f37f3c618a 100644
--- a/intern/make/msvc_6_0/intern.dsw
+++ b/intern/make/msvc_6_0/intern.dsw
@@ -1,302 +1,302 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "Build_install_all"=.\build_install_all.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name OpenNL
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name bmfont
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name bsplib
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name container
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name decimation
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DummySoundSystem
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ghost
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name guardedalloc
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name iksolver
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name memutil
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name MoTo
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SoundSystem
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name string
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name elbeem
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name boolop
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name OpenALSoundSystem
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "DummySoundSystem"=..\..\SoundSystem\make\msvc_6_0\dummy\DummySoundSystem.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "MoTo"=..\..\moto\make\msvc_6_0\MoTo.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "OpenALSoundSystem"=..\..\SoundSystem\make\msvc_6_0\openal\OpenALSoundSystem.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "OpenNL"=..\..\opennl\make\msvc_6_0\OpenNL.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SoundSystem"=..\..\SoundSystem\make\msvc_6_0\SoundSystem.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "bmfont"=..\..\bmfont\make\msvc_6_0\bmfont.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "boolop"=..\..\boolop\make\msvc_6_0\boolop.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "bsplib"=..\..\bsp\make\msvc6_0\bsplib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name container
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name memutil
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name MoTo
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "container"=..\..\container\make\msvc_6_0\container.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "csg"=..\..\csg\make\msvc60\csg.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "decimation"=..\..\decimation\make\msvc_6_0\decimation.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name memutil
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name MoTo
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name container
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "elbeem"=..\..\elbeem\make\msvc_6_0\elbeem.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "ghost"=..\..\ghost\make\msvc\ghost.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name string
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "guardedalloc"=..\..\guardedalloc\make\msvc_6_0\guardedalloc.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "iksolver"=..\..\iksolver\make\msvc_6_0\iksolver.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "memutil"=..\..\memutil\make\msvc_60\memutil.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "string"=..\..\string\make\msvc_6_0\string.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "Build_install_all"=.\build_install_all.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name OpenNL
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name bmfont
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name bsplib
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name container
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name decimation
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name DummySoundSystem
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name ghost
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name guardedalloc
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name iksolver
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name memutil
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name MoTo
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SoundSystem
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name string
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name elbeem
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name boolop
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name OpenALSoundSystem
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "DummySoundSystem"=..\..\SoundSystem\make\msvc_6_0\dummy\DummySoundSystem.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "MoTo"=..\..\moto\make\msvc_6_0\MoTo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "OpenALSoundSystem"=..\..\SoundSystem\make\msvc_6_0\openal\OpenALSoundSystem.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "OpenNL"=..\..\opennl\make\msvc_6_0\OpenNL.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SoundSystem"=..\..\SoundSystem\make\msvc_6_0\SoundSystem.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "bmfont"=..\..\bmfont\make\msvc_6_0\bmfont.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "boolop"=..\..\boolop\make\msvc_6_0\boolop.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "bsplib"=..\..\bsp\make\msvc6_0\bsplib.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name container
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name memutil
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name MoTo
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "container"=..\..\container\make\msvc_6_0\container.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "csg"=..\..\csg\make\msvc60\csg.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "decimation"=..\..\decimation\make\msvc_6_0\decimation.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name memutil
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name MoTo
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name container
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "elbeem"=..\..\elbeem\make\msvc_6_0\elbeem.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "ghost"=..\..\ghost\make\msvc\ghost.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name string
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "guardedalloc"=..\..\guardedalloc\make\msvc_6_0\guardedalloc.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "iksolver"=..\..\iksolver\make\msvc_6_0\iksolver.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "memutil"=..\..\memutil\make\msvc_60\memutil.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "string"=..\..\string\make\msvc_6_0\string.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/memutil/make/msvc_60/memutil.dsp b/intern/memutil/make/msvc_60/memutil.dsp
index 62b7efba9d8..b7e7904e9bf 100644
--- a/intern/memutil/make/msvc_60/memutil.dsp
+++ b/intern/memutil/make/msvc_60/memutil.dsp
@@ -1,150 +1,150 @@
-# Microsoft Developer Studio Project File - Name="memutil" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=memutil - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "memutil.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "memutil.mak" CFG="memutil - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "memutil - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "memutil - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "memutil - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\memutil\"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\memutil\"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "../../" /I "../../../" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\memutil\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\memutil\*.lib ..\..\..\..\..\lib\windows\memutil\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "memutil - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\memutil\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\memutil\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../" /I "../../../" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\memutil\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\memutil\debug\*.lib ..\..\..\..\..\lib\windows\memutil\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\memutil\debug\vc60.* ..\..\..\..\..\lib\windows\memutil\lib\debug\ ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "memutil - Win32 Release"
-# Name "memutil - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\MEM_Allocator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\MEM_CacheLimiter.h
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\intern\MEM_CacheLimiterC-Api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\guardedalloc\MEM_guardedalloc.h
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\intern\MEM_RefCountedC-Api.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\MEM_NonCopyable.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\MEM_RefCounted.h
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\MEM_RefCountedC-Api.h"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\MEM_RefCountPtr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\MEM_SmartPtr.h
-# End Source File
-# End Group
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="memutil" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=memutil - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "memutil.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "memutil.mak" CFG="memutil - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "memutil - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "memutil - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "memutil - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\memutil\"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\memutil\"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /Ob2 /I "../../" /I "../../../" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\memutil\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\memutil\*.lib ..\..\..\..\..\lib\windows\memutil\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "memutil - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\memutil\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\memutil\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../" /I "../../../" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\memutil\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\memutil\debug\*.lib ..\..\..\..\..\lib\windows\memutil\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\memutil\debug\vc60.* ..\..\..\..\..\lib\windows\memutil\lib\debug\ ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "memutil - Win32 Release"
+# Name "memutil - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\MEM_Allocator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\MEM_CacheLimiter.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\intern\MEM_CacheLimiterC-Api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\guardedalloc\MEM_guardedalloc.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\intern\MEM_RefCountedC-Api.cpp"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\MEM_NonCopyable.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\MEM_RefCounted.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\MEM_RefCountedC-Api.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\MEM_RefCountPtr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\MEM_SmartPtr.h
+# End Source File
+# End Group
+# End Group
+# End Target
+# End Project
diff --git a/intern/memutil/make/msvc_60/memutil.dsw b/intern/memutil/make/msvc_60/memutil.dsw
index bba4cbcdafd..3c19a94c701 100644
--- a/intern/memutil/make/msvc_60/memutil.dsw
+++ b/intern/memutil/make/msvc_60/memutil.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "memutil"=".\memutil.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "memutil"=".\memutil.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/moto/include/MT_Quaternion.inl b/intern/moto/include/MT_Quaternion.inl
index ecfd6699f67..ec747c453d3 100644
--- a/intern/moto/include/MT_Quaternion.inl
+++ b/intern/moto/include/MT_Quaternion.inl
@@ -74,19 +74,27 @@ GEN_INLINE MT_Scalar MT_Quaternion::angle(const MT_Quaternion& q) const
GEN_INLINE MT_Quaternion MT_Quaternion::slerp(const MT_Quaternion& q, const MT_Scalar& t) const
{
- MT_Scalar theta = angle(q);
-
- if (!MT_fuzzyZero(theta))
+ MT_Scalar d, s0, s1;
+ MT_Scalar s = dot(q);
+ bool neg = (s < 0.0);
+
+ if (neg)
+ s = -s;
+ if ((1.0 - s) > 0.0001)
{
- MT_Scalar d = MT_Scalar(1.0) / sin(theta);
- MT_Scalar s0 = sin((MT_Scalar(1.0) - t) * theta);
- MT_Scalar s1 = sin(t * theta);
-
- return d*(*this * s0 + q * s1);
+ MT_Scalar theta = acos(s);
+ d = MT_Scalar(1.0) / sin(theta);
+ s0 = sin((MT_Scalar(1.0) - t) * theta);
+ s1 = sin(t * theta);
}
else
{
- return *this;
+ d = MT_Scalar(1.0);
+ s0 = MT_Scalar(1.0) - t;
+ s1 = t;
}
+ if (neg)
+ s1 = -s1;
+ return d*(*this * s0 + q * s1);
}
diff --git a/intern/moto/make/msvc_6_0/MoTo.dsp b/intern/moto/make/msvc_6_0/MoTo.dsp
index 23224fc7fa8..541c4aa4774 100644
--- a/intern/moto/make/msvc_6_0/MoTo.dsp
+++ b/intern/moto/make/msvc_6_0/MoTo.dsp
@@ -1,379 +1,379 @@
-# Microsoft Developer Studio Project File - Name="MoTo" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=MoTo - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "MoTo.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "MoTo.mak" CFG="MoTo - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "MoTo - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "MoTo - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\moto\"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\moto\"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W4 /GX /O2 /Ob2 /I "..\..\include\\" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\moto\libmoto.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\include\*.h ..\..\..\..\..\lib\windows\moto\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\moto\*.lib ..\..\..\..\..\lib\windows\moto\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\moto\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\moto\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include\\" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\moto\debug\libmoto.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\include\*.h ..\..\..\..\..\lib\windows\moto\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\moto\debug\*.lib ..\..\..\..\..\lib\windows\moto\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\moto\debug\vc60.* ..\..\..\..\..\lib\windows\moto\lib\debug\ ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "MoTo - Win32 Release"
-# Name "MoTo - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\intern\MT_CmMatrix4x4.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Matrix3x3.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Matrix4x4.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Plane3.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Point3.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Quaternion.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_random.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Transform.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Vector2.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Vector3.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\MT_Vector4.cpp
-
-!IF "$(CFG)" == "MoTo - Win32 Release"
-
-# ADD CPP /W3 /I "../../include"
-
-!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
-
-!ENDIF
-
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "inlines"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\include\MT_Matrix3x3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Matrix4x4.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Plane3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Point2.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Point3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Quaternion.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Vector2.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Vector3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Vector4.inl
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\include\GEN_List.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\GEN_Map.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_assert.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_CmMatrix4x4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Matrix3x3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Matrix4x4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_MinMax.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Optimize.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Plane3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Point2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Point3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Quaternion.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_random.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Scalar.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Stream.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Transform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Tuple2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Tuple3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Tuple4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Vector2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Vector3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\MT_Vector4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\include\NM_Scalar.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="MoTo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=MoTo - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "MoTo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "MoTo.mak" CFG="MoTo - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MoTo - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "MoTo - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\moto\"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\moto\"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W4 /GX /O2 /Ob2 /I "..\..\include\\" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\moto\libmoto.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\include\*.h ..\..\..\..\..\lib\windows\moto\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\moto\*.lib ..\..\..\..\..\lib\windows\moto\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\moto\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\moto\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\include\\" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /FD /GZ /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\moto\debug\libmoto.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\include\*.h ..\..\..\..\..\lib\windows\moto\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\moto\debug\*.lib ..\..\..\..\..\lib\windows\moto\lib\debug\*.a ECHO Copying Debug info. XCOPY /Y ..\..\..\..\obj\windows\intern\moto\debug\vc60.* ..\..\..\..\..\lib\windows\moto\lib\debug\ ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "MoTo - Win32 Release"
+# Name "MoTo - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\intern\MT_CmMatrix4x4.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Matrix3x3.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Matrix4x4.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Plane3.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Point3.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Quaternion.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_random.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Transform.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Vector2.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Vector3.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\MT_Vector4.cpp
+
+!IF "$(CFG)" == "MoTo - Win32 Release"
+
+# ADD CPP /W3 /I "../../include"
+
+!ELSEIF "$(CFG)" == "MoTo - Win32 Debug"
+
+!ENDIF
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "inlines"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\include\MT_Matrix3x3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Matrix4x4.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Plane3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Point2.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Point3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Quaternion.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Vector2.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Vector3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Vector4.inl
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\include\GEN_List.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\GEN_Map.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_assert.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_CmMatrix4x4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Matrix3x3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Matrix4x4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_MinMax.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Optimize.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Plane3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Point2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Point3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Quaternion.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_random.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Scalar.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Stream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Transform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Tuple2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Tuple3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Tuple4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Vector2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Vector3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\MT_Vector4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\include\NM_Scalar.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/moto/make/msvc_6_0/MoTo.dsw b/intern/moto/make/msvc_6_0/MoTo.dsw
index bc76539dd6c..e45520d5c72 100644
--- a/intern/moto/make/msvc_6_0/MoTo.dsw
+++ b/intern/moto/make/msvc_6_0/MoTo.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "MoTo"=.\MoTo.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "MoTo"=.\MoTo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/opennl/make/msvc_6_0/OpenNL.dsp b/intern/opennl/make/msvc_6_0/OpenNL.dsp
index bce93059e50..aaf8f0298c1 100644
--- a/intern/opennl/make/msvc_6_0/OpenNL.dsp
+++ b/intern/opennl/make/msvc_6_0/OpenNL.dsp
@@ -1,252 +1,252 @@
-# Microsoft Developer Studio Project File - Name="OpenNL" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=OpenNL - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "OpenNL.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "OpenNL.mak" CFG="OpenNL - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "OpenNL - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "OpenNL - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "OpenNL - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "../../../../obj/windows/intern/opennl"
-# PROP Intermediate_Dir "../../../../obj/windows/intern/opennl/imf"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../extern" /I "../../superlu" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x407 /d "NDEBUG"
-# ADD RSC /l 0x407 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/opennl\blender_ONL.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO copy header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\opennl\include\*.h ECHO copy library XCOPY /Y ..\..\..\..\obj\windows\intern\openNL\*.lib ..\..\..\..\..\lib\windows\openNL\*.lib
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "OpenNL - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "../../../../obj/windows/intern/opennl/Debug/"
-# PROP Intermediate_Dir "../../../../obj/windows/intern/opennl/imf/Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../extern" /I "../../superlu" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x407 /d "_DEBUG"
-# ADD RSC /l 0x407 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/opennl/Debug/blender_ONL.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO copy header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\opennl\include\*.h ECHO copy library XCOPY /Y ..\..\..\..\obj\windows\intern\openNL\debug\*.lib ..\..\..\..\..\lib\windows\openNL\debug\*.lib
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "OpenNL - Win32 Release"
-# Name "OpenNL - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\superlu\colamd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\get_perm_c.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\heap_relax_snode.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\lsame.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\memory.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\mmd.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\intern\opennl.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\relax_snode.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\scolumn_bmod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\scolumn_dfs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\scopy_to_ucol.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\sgssv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\sgstrf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\sgstrs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\smemory.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\smyblas2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\sp_coletree.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\sp_ienv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\sp_preorder.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\spanel_bmod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\spanel_dfs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\spivotL.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\spruneL.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\ssnode_bmod.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\ssnode_dfs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\ssp_blas2.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\ssp_blas3.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\strsv.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\superlu_timer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\sutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\xerbla.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\superlu\Cnames.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\colamd.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\extern\ONL_opennl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\ssp_defs.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\supermatrix.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\superlu\util.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="OpenNL" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=OpenNL - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "OpenNL.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "OpenNL.mak" CFG="OpenNL - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "OpenNL - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "OpenNL - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "OpenNL - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "../../../../obj/windows/intern/opennl"
+# PROP Intermediate_Dir "../../../../obj/windows/intern/opennl/imf"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../extern" /I "../../superlu" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/opennl\blender_ONL.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO copy header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\opennl\include\*.h ECHO copy library XCOPY /Y ..\..\..\..\obj\windows\intern\openNL\*.lib ..\..\..\..\..\lib\windows\openNL\*.lib
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "OpenNL - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../../../obj/windows/intern/opennl/Debug/"
+# PROP Intermediate_Dir "../../../../obj/windows/intern/opennl/imf/Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../extern" /I "../../superlu" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/opennl/Debug/blender_ONL.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO copy header files XCOPY /Y ..\..\extern\*.h ..\..\..\..\..\lib\windows\opennl\include\*.h ECHO copy library XCOPY /Y ..\..\..\..\obj\windows\intern\openNL\debug\*.lib ..\..\..\..\..\lib\windows\openNL\debug\*.lib
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "OpenNL - Win32 Release"
+# Name "OpenNL - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\superlu\colamd.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\get_perm_c.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\heap_relax_snode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\lsame.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\memory.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\mmd.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\intern\opennl.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\relax_snode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\scolumn_bmod.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\scolumn_dfs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\scopy_to_ucol.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\sgssv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\sgstrf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\sgstrs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\smemory.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\smyblas2.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\sp_coletree.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\sp_ienv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\sp_preorder.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\spanel_bmod.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\spanel_dfs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\spivotL.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\spruneL.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\ssnode_bmod.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\ssnode_dfs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\ssp_blas2.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\ssp_blas3.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\strsv.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\superlu_timer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\sutil.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\xerbla.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\superlu\Cnames.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\colamd.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\extern\ONL_opennl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\ssp_defs.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\supermatrix.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\superlu\util.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/intern/opennl/make/msvc_6_0/OpenNL.dsw b/intern/opennl/make/msvc_6_0/OpenNL.dsw
index 407aeb006fd..5b7c9138c97 100644
--- a/intern/opennl/make/msvc_6_0/OpenNL.dsw
+++ b/intern/opennl/make/msvc_6_0/OpenNL.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "OpenNL"=.\OpenNL.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "OpenNL"=.\OpenNL.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/intern/string/make/msvc_6_0/string.dsp b/intern/string/make/msvc_6_0/string.dsp
index c6ac70e193a..38250e44170 100644
--- a/intern/string/make/msvc_6_0/string.dsp
+++ b/intern/string/make/msvc_6_0/string.dsp
@@ -1,122 +1,122 @@
-# Microsoft Developer Studio Project File - Name="string" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=string - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "string.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "string.mak" CFG="string - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "string - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "string - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "string - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\intern\string"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\string"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\string\libstring.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\string\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\string\*.lib ..\..\..\..\..\lib\windows\string\lib\*.a ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "string - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "../../../../obj/windows/intern/string/debug"
-# PROP Intermediate_Dir "../../../../obj/windows/intern/string/debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/string/debug\libstring.lib"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\string\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\string\debug\*.lib ..\..\..\..\..\lib\windows\string\lib\debug\*.a ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "string - Win32 Release"
-# Name "string - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\intern\STR_String.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\STR_HashedString.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\STR_String.h
-# End Source File
-# End Group
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="string" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=string - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "string.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "string.mak" CFG="string - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "string - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "string - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "string - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\intern\string"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\intern\string"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../.." /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\intern\string\libstring.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\string\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\string\*.lib ..\..\..\..\..\lib\windows\string\lib\*.a ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "string - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "../../../../obj/windows/intern/string/debug"
+# PROP Intermediate_Dir "../../../../obj/windows/intern/string/debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../.." /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"../../../../obj/windows/intern/string/debug\libstring.lib"
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying header files XCOPY /Y ..\..\*.h ..\..\..\..\..\lib\windows\string\include\ ECHO Copying lib XCOPY /Y ..\..\..\..\obj\windows\intern\string\debug\*.lib ..\..\..\..\..\lib\windows\string\lib\debug\*.a ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "string - Win32 Release"
+# Name "string - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\intern\STR_String.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\STR_HashedString.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\STR_String.h
+# End Source File
+# End Group
+# End Group
+# End Target
+# End Project
diff --git a/intern/string/make/msvc_6_0/string.dsw b/intern/string/make/msvc_6_0/string.dsw
index b599b6407c5..23886681438 100644
--- a/intern/string/make/msvc_6_0/string.dsw
+++ b/intern/string/make/msvc_6_0/string.dsw
@@ -1,29 +1,29 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "string"=".\string.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "string"=".\string.dsp" - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/projectfiles/blender/BLO_readblenfile/BLO_readblenfile.dsp b/projectfiles/blender/BLO_readblenfile/BLO_readblenfile.dsp
index 8e478f425d9..2cfb77b61aa 100644
--- a/projectfiles/blender/BLO_readblenfile/BLO_readblenfile.dsp
+++ b/projectfiles/blender/BLO_readblenfile/BLO_readblenfile.dsp
@@ -1,155 +1,155 @@
-# Microsoft Developer Studio Project File - Name="BLO_readblenfile" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BLO_readblenfile - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BLO_readblenfile.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BLO_readblenfile.mak" CFG="BLO_readblenfile - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BLO_readblenfile - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLO_readblenfile - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLO_readblenfile - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLO_readblenfile - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BLO_readblenfile - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLO_readblenfile - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\blender\readstreamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLO_readblenfile - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "BLO_readblenfile___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "BLO_readblenfile___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLO_readblenfile - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BLO_readblenfile___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "BLO_readblenfile___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\readstreamglue\\" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\source\blender\readstreamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BLO_readblenfile - Win32 Release"
-# Name "BLO_readblenfile - Win32 Debug"
-# Name "BLO_readblenfile - Win32 MT DLL Release"
-# Name "BLO_readblenfile - Win32 MT DLL Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\readblenfile\intern\BLO_readblenfile.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\readblenfile\BLO_readblenfile.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BLO_readblenfile" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BLO_readblenfile - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BLO_readblenfile.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BLO_readblenfile.mak" CFG="BLO_readblenfile - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BLO_readblenfile - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLO_readblenfile - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLO_readblenfile - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLO_readblenfile - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BLO_readblenfile - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLO_readblenfile - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\blender\readstreamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLO_readblenfile - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "BLO_readblenfile___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "BLO_readblenfile___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLO_readblenfile - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BLO_readblenfile___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "BLO_readblenfile___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\readblenfile\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\readstreamglue\\" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\source\blender\readstreamglue\\" /I "..\..\..\source\blender\blenloader\\" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readstreamglue" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BLO_readblenfile - Win32 Release"
+# Name "BLO_readblenfile - Win32 Debug"
+# Name "BLO_readblenfile - Win32 MT DLL Release"
+# Name "BLO_readblenfile - Win32 MT DLL Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\readblenfile\intern\BLO_readblenfile.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\readblenfile\BLO_readblenfile.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/BPY_python/BPY_python.dsp b/projectfiles/blender/BPY_python/BPY_python.dsp
index e122f0ffe90..2cbb9e05717 100644
--- a/projectfiles/blender/BPY_python/BPY_python.dsp
+++ b/projectfiles/blender/BPY_python/BPY_python.dsp
@@ -1,588 +1,588 @@
-# Microsoft Developer Studio Project File - Name="BPY_python" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BPY_python - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BPY_python.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BPY_python.mak" CFG="BPY_python - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BPY_python - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BPY_python - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BPY_python - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\bpython"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\bpython"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\img" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\source\blender\bpython\include" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\blender\radiosity\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui\\" /I "..\..\source\blender\python" /I "../../../../lib/windows/bsp/include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\bpython\include" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "..\..\..\source\blender\python" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BPY_python - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\bpython\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\bpython\debug"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /w /W0 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\img" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\source\blender\bpython\include" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui\\" /I "..\..\source\blender\python" /I "../../../../lib/windows/bsp/include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\bpython\include" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "..\..\..\source\blender\python" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BPY_python - Win32 Release"
-# Name "BPY_python - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Armature.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\BezTriple.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\BGL.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Blender.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Bone.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\BPY_interface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\BPY_menus.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Camera.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\charRGBA.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\constant.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Constraint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\CurNurb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Curve.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Draw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Effect.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\euler.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\EXPP_interface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Font.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\gen_utils.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Geometry.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Group.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\IDProp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Image.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Ipo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Ipocurve.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Key.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Lamp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Lattice.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Library.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\logic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Material.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Mathutils.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\matrix.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Mesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\meshPrimitive.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Metaball.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Modifier.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\MTex.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\NLA.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\NMesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Noise.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Object.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Particle.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\point.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Pose.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\quat.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Registry.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\rgbTuple.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Scene.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\sceneRadio.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\sceneRender.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\sceneTimeLine.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Sound.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\SurfNurb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Sys.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Text.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Text3d.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Texture.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Types.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\vector.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Window.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\windowTheme.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\World.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Armature.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\BezTriple.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\BGL.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Blender.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Bone.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\BPY_extern.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\BPY_menus.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\bpy_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Camera.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\charRGBA.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\constant.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Constraint.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\CurNurb.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Curve.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Draw.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Effect.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\euler.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\EXPP_interface.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Font.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\gen_utils.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Geometry.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Group.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Image.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Ipo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Ipocurve.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Key.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Lamp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Lattice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Material.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Mathutils.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\matrix.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Mesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\meshPrimitive.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Metaball.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Modifier.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\modules.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\MTex.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\NLA.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\NMesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Object.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Particle.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\point.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\quat.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Registry.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\rgbTuple.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Scene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\sceneRadio.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\sceneRender.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\sceneTimeLine.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Sound.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\SurfNurb.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Sys.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Text.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Text3d.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Texture.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\vector.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\Window.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\windowTheme.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\python\api2_2x\World.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BPY_python" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BPY_python - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BPY_python.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BPY_python.mak" CFG="BPY_python - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BPY_python - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BPY_python - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BPY_python - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\bpython"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\bpython"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\img" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\source\blender\bpython\include" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\blender\radiosity\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui\\" /I "..\..\source\blender\python" /I "../../../../lib/windows/bsp/include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\bpython\include" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "..\..\..\source\blender\python" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BPY_python - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\bpython\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\bpython\debug"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /w /W0 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\img" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\source\blender\bpython\include" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui\\" /I "..\..\source\blender\python" /I "../../../../lib/windows/bsp/include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\bpython\include" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "..\..\..\source\blender\python" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BPY_python - Win32 Release"
+# Name "BPY_python - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Armature.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\BezTriple.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\BGL.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Blender.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Bone.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\BPY_interface.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\BPY_menus.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Camera.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\charRGBA.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\constant.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Constraint.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\CurNurb.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Curve.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Draw.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Effect.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\euler.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\EXPP_interface.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Font.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\gen_utils.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Geometry.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Group.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\IDProp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Image.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Ipo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Ipocurve.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Key.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Lamp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Lattice.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Library.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\logic.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Material.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Mathutils.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\matrix.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Mesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\meshPrimitive.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Metaball.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Modifier.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\MTex.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\NLA.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\NMesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Noise.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Object.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Particle.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\point.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Pose.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\quat.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Registry.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\rgbTuple.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Scene.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\sceneRadio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\sceneRender.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\sceneTimeLine.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Sound.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\SurfNurb.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Sys.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Text.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Text3d.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Texture.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Types.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\vector.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Window.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\windowTheme.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\World.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Armature.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\BezTriple.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\BGL.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Blender.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Bone.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\BPY_extern.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\BPY_menus.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\bpy_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Camera.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\charRGBA.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\constant.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Constraint.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\CurNurb.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Curve.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Draw.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Effect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\euler.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\EXPP_interface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Font.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\gen_utils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Geometry.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Group.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Image.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Ipo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Ipocurve.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Key.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Lamp.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Lattice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Material.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Mathutils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\matrix.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Mesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\meshPrimitive.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Metaball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Modifier.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\modules.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\MTex.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\NLA.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\NMesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Object.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Particle.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\point.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\quat.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Registry.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\rgbTuple.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Scene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\sceneRadio.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\sceneRender.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\sceneTimeLine.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Sound.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\SurfNurb.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Sys.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Text.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Text3d.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Texture.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\vector.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\Window.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\windowTheme.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\python\api2_2x\World.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/avi/BL_avi.dsp b/projectfiles/blender/avi/BL_avi.dsp
index 1237ddcec47..4aafde508c0 100644
--- a/projectfiles/blender/avi/BL_avi.dsp
+++ b/projectfiles/blender/avi/BL_avi.dsp
@@ -1,199 +1,199 @@
-# Microsoft Developer Studio Project File - Name="BL_avi" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BL_avi - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BL_avi.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BL_avi.mak" CFG="BL_avi - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BL_avi - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_avi - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_avi - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_avi - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BL_avi - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\avi"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_avi - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\avi\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_avi - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BL_avi___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "BL_avi___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\avi\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\avi\debug\BL_avi.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_avi - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "BL_avi___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "BL_avi___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\avi\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\avi\BL_avi.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BL_avi - Win32 Release"
-# Name "BL_avi - Win32 Debug"
-# Name "BL_avi - Win32 MT DLL Debug"
-# Name "BL_avi - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\avi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\avirgb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\codecs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\endian.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\mjpeg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\options.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\rgb32.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\AVI_avi.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\avi_intern.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\avirgb.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\endian.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\mjpeg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\avi\intern\rgb32.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BL_avi" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BL_avi - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BL_avi.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BL_avi.mak" CFG="BL_avi - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BL_avi - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_avi - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_avi - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_avi - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BL_avi - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\avi"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_avi - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\avi\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_avi - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BL_avi___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "BL_avi___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\avi\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\avi\debug\BL_avi.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_avi - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "BL_avi___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "BL_avi___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\avi\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\avi\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "DWORDS_LITTLEENDIAN" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\avi\BL_avi.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BL_avi - Win32 Release"
+# Name "BL_avi - Win32 Debug"
+# Name "BL_avi - Win32 MT DLL Debug"
+# Name "BL_avi - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\avi.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\avirgb.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\codecs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\endian.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\mjpeg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\options.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\rgb32.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\AVI_avi.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\avi_intern.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\avirgb.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\endian.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\mjpeg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\avi\intern\rgb32.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/blender.dsp b/projectfiles/blender/blender.dsp
index 17cd7022d82..48bc7b4b41e 100644
--- a/projectfiles/blender/blender.dsp
+++ b/projectfiles/blender/blender.dsp
@@ -1,124 +1,124 @@
-# Microsoft Developer Studio Project File - Name="blender" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=blender - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "blender.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "blender.mak" CFG="blender - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "blender - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "blender - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "blender - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\obj\windows\blender"
-# PROP Intermediate_Dir "..\..\obj\windows\blender"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\source\blender\python" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\blender\radiosity\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui\\" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WITH_QUICKTIME" /YX /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 solid.lib SDL.lib freetype2ST.lib ftgl_static_ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.a libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.a libbsp.a libbmfont.a libghost.a libstring.a ws2_32.lib dxguid.lib opengl32.lib libjpeg.a glu32.lib user32.lib shell32.lib gdi32.lib vfw32.lib advapi32.lib winmm.lib ole32.lib libdecimation.a libiksolver.a libpng.a zlib.lib libmoto.a blender_ONL.lib blender_elbeem.lib boolop.lib BLI_bullet.lib pthreadVC2.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"msvcprt.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib:"glut32.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"libcpd.lib" /nodefaultlib:"libcp.lib" /nodefaultlib:"libcmtd.lib" /out:"..\..\bin\blender.exe" /libpath:"..\..\..\lib\windows\sdl\lib" /libpath:"..\..\..\lib\windows\freetype\lib" /libpath:"..\..\..\lib\windows\ftgl\lib" /libpath:"..\..\..\lib\windows\gettext\lib" /libpath:"..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\lib\windows\bsp\lib" /libpath:"..\..\..\lib\windows\moto\lib" /libpath:"..\..\..\lib\windows\bmfont\lib" /libpath:"..\..\..\lib\windows\ghost\lib" /libpath:"..\..\..\lib\windows\python\frozen" /libpath:"..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\lib\windows\string\lib" /libpath:"..\..\..\lib\windows\solid\lib" /libpath:"..\..\..\lib\windows\python\lib" /libpath:"..\..\..\lib\windows\iksolver\lib" /libpath:"..\..\..\lib\windows\decimation\lib" /libpath:"..\..\..\lib\windows\openal\lib" /libpath:"..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\lib\windows\openssl\lib" /libpath:"..\..\obj\windows\intern\soundsystem\dummy" /libpath:"..\..\obj\windows\intern\soundsystem\openal" /libpath:"..\..\..\lib\windows\soundsystem\lib\\" /libpath:"..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\lib\windows\png\lib\\" /libpath:"..\..\..\lib\windows\opennl" /libpath:"..\..\..\lib\windows\elbeem\lib" /libpath:"..\..\..\lib\windows\boolop\lib" /libpath:"..\..\..\lib\windows\bullet\lib" /libpath:"..\..\..\lib\windows\pthreads\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying required 3rd party dlls... XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\bin\ XCOPY /Y ..\..\..\lib\windows\sdl\lib\*dll ..\..\bin\ ECHO Done
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "blender - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\obj\windows\blender\debug"
-# PROP Intermediate_Dir "..\..\obj\windows\blender\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\source\blender\python" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\blender\radiosity\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WITH_QUICKTIME" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 solid.lib SDL.lib freetype2ST.lib ftgl_static_ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.a libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.a libbsp.a libbmfont.a libghost.a libstring.a ws2_32.lib dxguid.lib opengl32.lib libjpeg.a glu32.lib user32.lib gdi32.lib shell32.lib vfw32.lib advapi32.lib winmm.lib ole32.lib libdecimation.a libiksolver.a libpng.a zlib.lib libmoto.a blender_ONL.lib blender_elbeem.lib boolop.lib BLI_bullet_d.lib pthreadVC2.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"glut32.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"libcpd.lib" /nodefaultlib:"libcp.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"libcpmtd.lib" /nodefaultlib:"msvcprtd.lib" /out:"..\..\bin\debug\blender.exe" /pdbtype:sept /libpath:"..\..\..\lib\windows\sdl\lib" /libpath:"..\..\..\lib\windows\freetype\lib" /libpath:"..\..\..\lib\windows\ftgl\lib" /libpath:"..\..\..\lib\windows\gettext\lib" /libpath:"..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\lib\windows\bsp\lib\debug" /libpath:"..\..\..\lib\windows\moto\lib\debug" /libpath:"..\..\..\lib\windows\bmfont\lib\debug" /libpath:"..\..\..\lib\windows\ghost\lib\debug" /libpath:"..\..\..\lib\windows\python\frozen" /libpath:"..\..\..\lib\windows\guardedalloc\lib\debug" /libpath:"..\..\..\lib\windows\string\lib\debug" /libpath:"..\..\..\lib\windows\solid\lib\\" /libpath:"..\..\..\lib\windows\python\lib" /libpath:"..\..\..\lib\windows\iksolver\lib\debug" /libpath:"..\..\..\lib\windows\decimation\lib\debug" /libpath:"..\..\..\lib\windows\openal\lib" /libpath:"..\..\obj\windows\intern\soundsystem\dummy\debug" /libpath:"..\..\obj\windows\intern\soundsystem\openal\debug" /libpath:"..\..\..\lib\windows\soundsystem\lib\debug\\" /libpath:"..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\lib\windows\blenkey\lib\debug" /libpath:"..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\lib\windows\png\lib\\" /libpath:"..\..\..\lib\windows\opennl\debug" /libpath:"..\..\..\lib\windows\elbeem\lib\debug" /libpath:"..\..\..\lib\windows\boolop\lib" /libpath:"..\..\..\lib\windows\bullet\lib" /libpath:"..\..\..\lib\windows\elbeem\lib" /libpath:"..\..\..\lib\windows\pthreads\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=ECHO Copying required 3rd party dlls... XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\bin\ ECHO Done
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "blender - Win32 Release"
-# Name "blender - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\source\creator\creator.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\source\icons\winblender.rc
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\source\icons\winblender.ico
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\source\icons\winblenderfile.ico
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="blender" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=blender - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "blender.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "blender.mak" CFG="blender - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "blender - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "blender - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "blender - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\obj\windows\blender"
+# PROP Intermediate_Dir "..\..\obj\windows\blender"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\source\blender\python" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\blender\radiosity\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui\\" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WITH_QUICKTIME" /YX /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 solid.lib SDL.lib freetype2ST.lib ftgl_static_ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.a libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.a libbsp.a libbmfont.a libghost.a libstring.a ws2_32.lib dxguid.lib opengl32.lib libjpeg.a glu32.lib user32.lib shell32.lib gdi32.lib vfw32.lib advapi32.lib winmm.lib ole32.lib libdecimation.a libiksolver.a libpng.a zlib.lib libmoto.a blender_ONL.lib blender_elbeem.lib boolop.lib BLI_bullet.lib pthreadVC2.lib /nologo /subsystem:console /machine:I386 /nodefaultlib:"msvcprt.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib:"glut32.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"libcpd.lib" /nodefaultlib:"libcp.lib" /nodefaultlib:"libcmtd.lib" /out:"..\..\bin\blender.exe" /libpath:"..\..\..\lib\windows\sdl\lib" /libpath:"..\..\..\lib\windows\freetype\lib" /libpath:"..\..\..\lib\windows\ftgl\lib" /libpath:"..\..\..\lib\windows\gettext\lib" /libpath:"..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\lib\windows\bsp\lib" /libpath:"..\..\..\lib\windows\moto\lib" /libpath:"..\..\..\lib\windows\bmfont\lib" /libpath:"..\..\..\lib\windows\ghost\lib" /libpath:"..\..\..\lib\windows\python\frozen" /libpath:"..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\lib\windows\string\lib" /libpath:"..\..\..\lib\windows\solid\lib" /libpath:"..\..\..\lib\windows\python\lib" /libpath:"..\..\..\lib\windows\iksolver\lib" /libpath:"..\..\..\lib\windows\decimation\lib" /libpath:"..\..\..\lib\windows\openal\lib" /libpath:"..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\lib\windows\openssl\lib" /libpath:"..\..\obj\windows\intern\soundsystem\dummy" /libpath:"..\..\obj\windows\intern\soundsystem\openal" /libpath:"..\..\..\lib\windows\soundsystem\lib\\" /libpath:"..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\lib\windows\png\lib\\" /libpath:"..\..\..\lib\windows\opennl" /libpath:"..\..\..\lib\windows\elbeem\lib" /libpath:"..\..\..\lib\windows\boolop\lib" /libpath:"..\..\..\lib\windows\bullet\lib" /libpath:"..\..\..\lib\windows\pthreads\lib"
+# SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying required 3rd party dlls... XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\bin\ XCOPY /Y ..\..\..\lib\windows\sdl\lib\*dll ..\..\bin\ ECHO Done
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "blender - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\obj\windows\blender\debug"
+# PROP Intermediate_Dir "..\..\obj\windows\blender\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\source\blender\misc" /I "..\..\..\lib\windows\guardedalloc\include" /I "..\..\source\blender\blenlib" /I "..\..\source\kernel\gen_messaging" /I "..\..\source\blender\include" /I "..\..\source\blender" /I "..\..\source\blender\makesdna" /I "..\..\source\blender\blenkernel" /I "..\..\source\blender\blenloader" /I "..\..\source\blender\python" /I "..\..\source\blender\imbuf" /I "..\..\source\blender\render\extern\include" /I "..\..\source\blender\radiosity\extern\include" /I "..\..\source\kernel\gen_system" /I "..\..\source\blender\renderconverter\\" /I "..\..\source\blender\renderui" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WITH_QUICKTIME" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 solid.lib SDL.lib freetype2ST.lib ftgl_static_ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib libsoundsystem.a libopenalsoundsystem.lib libdummysoundsystem.lib libguardedalloc.a libbsp.a libbmfont.a libghost.a libstring.a ws2_32.lib dxguid.lib opengl32.lib libjpeg.a glu32.lib user32.lib gdi32.lib shell32.lib vfw32.lib advapi32.lib winmm.lib ole32.lib libdecimation.a libiksolver.a libpng.a zlib.lib libmoto.a blender_ONL.lib blender_elbeem.lib boolop.lib BLI_bullet_d.lib pthreadVC2.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"glut32.lib" /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"libcpd.lib" /nodefaultlib:"libcp.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"libcpmtd.lib" /nodefaultlib:"msvcprtd.lib" /out:"..\..\bin\debug\blender.exe" /pdbtype:sept /libpath:"..\..\..\lib\windows\sdl\lib" /libpath:"..\..\..\lib\windows\freetype\lib" /libpath:"..\..\..\lib\windows\ftgl\lib" /libpath:"..\..\..\lib\windows\gettext\lib" /libpath:"..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\lib\windows\bsp\lib\debug" /libpath:"..\..\..\lib\windows\moto\lib\debug" /libpath:"..\..\..\lib\windows\bmfont\lib\debug" /libpath:"..\..\..\lib\windows\ghost\lib\debug" /libpath:"..\..\..\lib\windows\python\frozen" /libpath:"..\..\..\lib\windows\guardedalloc\lib\debug" /libpath:"..\..\..\lib\windows\string\lib\debug" /libpath:"..\..\..\lib\windows\solid\lib\\" /libpath:"..\..\..\lib\windows\python\lib" /libpath:"..\..\..\lib\windows\iksolver\lib\debug" /libpath:"..\..\..\lib\windows\decimation\lib\debug" /libpath:"..\..\..\lib\windows\openal\lib" /libpath:"..\..\obj\windows\intern\soundsystem\dummy\debug" /libpath:"..\..\obj\windows\intern\soundsystem\openal\debug" /libpath:"..\..\..\lib\windows\soundsystem\lib\debug\\" /libpath:"..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\lib\windows\blenkey\lib\debug" /libpath:"..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\lib\windows\png\lib\\" /libpath:"..\..\..\lib\windows\opennl\debug" /libpath:"..\..\..\lib\windows\elbeem\lib\debug" /libpath:"..\..\..\lib\windows\boolop\lib" /libpath:"..\..\..\lib\windows\bullet\lib" /libpath:"..\..\..\lib\windows\elbeem\lib" /libpath:"..\..\..\lib\windows\pthreads\lib"
+# SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=ECHO Copying required 3rd party dlls... XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\bin\ ECHO Done
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "blender - Win32 Release"
+# Name "blender - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\source\creator\creator.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\source\icons\winblender.rc
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\source\icons\winblender.ico
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\source\icons\winblenderfile.ico
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/blender.dsw b/projectfiles/blender/blender.dsw
index 3a69055807e..c7369f9df6c 100644
--- a/projectfiles/blender/blender.dsw
+++ b/projectfiles/blender/blender.dsw
@@ -1,743 +1,743 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "BKE_blenkernel"=.\blenkernel\BKE_blenkernel.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BLI_blenlib"=.\blenlib\BLI_blenlib.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BLO_loader"=.\loader\BLO_loader.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BLO_readblenfile"=.\BLO_readblenfile\BLO_readblenfile.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BL_avi"=.\avi\BL_avi.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BL_imbuf"=.\imbuf\BL_imbuf.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BL_src"=.\src\BL_src.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BL_src_cre"=.\src\BL_src_cre.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BPY_python"=.\BPY_python\BPY_python.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BRA_radiosity"=.\radiosity\BRA_radiosity.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BRE_render"=.\render\BRE_render.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name BRE_yafray
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "BRE_renderconverter"=.\renderconverter\BRE_renderconverter.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BRE_yafray"=.\yafray\BRE_yafray.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "Bullet"=..\..\extern\bullet\Bullet\BLI_Bullet.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "BulletDynamics"=..\..\extern\bullet\BulletDynamics\BLI_BulletDynamics.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "DNA_makesdna"=.\makesdna\DNA_makesdna.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "EXP_expressions"=..\gameengine\expression\EXP_expressions.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "FTF_ftfont"=.\ftfont\FTF_ftfont.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "GP_axctl"=..\gameengine\gameplayer\axctl\GP_axctl.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name KX_converter
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name EXP_expressions
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SCA_GameLogic
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_ketsji
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SG_SceneGraph
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_openglrasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_rasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SYS_system
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name GP_common
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_loopbacknetwork
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DNA_makesdna
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name gen_messaging
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_verify
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_decrypt
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_loader
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_readblenfile
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BKE_blenkernel
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_avi
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_imbuf
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLI_blenlib
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SND_OpenAL
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Physics
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Ode
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Dummy
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "GP_common"=..\gameengine\gameplayer\common\GP_common.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "GP_ghost"=..\gameengine\gameplayer\ghost\GP_ghost.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name BKE_blenkernel
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_avi
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_imbuf
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLI_blenlib
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_loader
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DNA_makesdna
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name EXP_expressions
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_converter
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_ketsji
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_loopbacknetwork
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_openglrasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_rasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SCA_GameLogic
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SG_SceneGraph
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SYS_system
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name gen_messaging
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_readblenfile
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_decrypt
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_verify
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SND_OpenAL
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name GP_common
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Physics
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Dummy
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Sumo
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "KX_blenderhook"=..\gameengine\blenderhook\KX_blenderhook.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "KX_converter"=..\gameengine\converter\KX_converter.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "KX_ketsji"=..\gameengine\ketsji\KX_ketsji.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "KX_network"=..\gameengine\ketsji\network\KX_network.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "NG_loopbacknetwork"=..\gameengine\network\loopbacknetwork\NG_loopbacknetwork.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "NG_network"=..\gameengine\network\network\NG_network.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "PHY_Dummy"=..\GAMEENGINE\PHYSICS\PHY_PHYSICS\PHY_Dummy\PHY_Dummy.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "PHY_Ode"=..\gameengine\physics\PHY_Physics\PHY_Ode\PHY_Ode.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "PHY_Physics"=..\gameengine\physics\PHY_Physics\PHY_Physics.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "PHY_Sumo"=..\gameengine\physics\PHY_Physics\PHY_Sumo\PHY_Sumo.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "RAS_openglrasterizer"=..\gameengine\rasterizer\openglrasterizer\RAS_openglrasterizer.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "RAS_rasterizer"=..\gameengine\rasterizer\RAS_rasterizer.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SCA_GameLogic"=..\gameengine\gamelogic\SCA_GameLogic.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SG_SceneGraph"=..\gameengine\scenegraph\SG_SceneGraph.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SYS_system"=..\kernel\system\SYS_system.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "blender"=.\blender.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name BKE_blenkernel
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_avi
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_imbuf
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLI_blenlib
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_decrypt
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_encrypt
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_loader
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_sign
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_verify
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BRA_radiosity
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BRE_render
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name DNA_makesdna
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name EXP_expressions
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name gen_messaging
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_loopbacknetwork
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_openglrasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_rasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SCA_GameLogic
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SG_SceneGraph
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SYS_system
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_src_pub
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name blenpluginapi
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BL_src
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SND_OpenAL
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Dummy
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Physics
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name FTF_ftfont
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BPY_python
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name PHY_Sumo
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BLO_readblenfile
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name Bullet
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name BulletDynamics
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "blenpluginapi"=.\blenpluginapi\blenpluginapi\blenpluginapi.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "gen_messaging"=..\KERNEL\gen_messaging\gen_messaging.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "BKE_blenkernel"=.\blenkernel\BKE_blenkernel.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BLI_blenlib"=.\blenlib\BLI_blenlib.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BLO_loader"=.\loader\BLO_loader.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BLO_readblenfile"=.\BLO_readblenfile\BLO_readblenfile.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BL_avi"=.\avi\BL_avi.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BL_imbuf"=.\imbuf\BL_imbuf.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BL_src"=.\src\BL_src.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BL_src_cre"=.\src\BL_src_cre.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BPY_python"=.\BPY_python\BPY_python.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BRA_radiosity"=.\radiosity\BRA_radiosity.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BRE_render"=.\render\BRE_render.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name BRE_yafray
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "BRE_renderconverter"=.\renderconverter\BRE_renderconverter.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BRE_yafray"=.\yafray\BRE_yafray.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "Bullet"=..\..\extern\bullet\Bullet\BLI_Bullet.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "BulletDynamics"=..\..\extern\bullet\BulletDynamics\BLI_BulletDynamics.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "DNA_makesdna"=.\makesdna\DNA_makesdna.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "EXP_expressions"=..\gameengine\expression\EXP_expressions.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "FTF_ftfont"=.\ftfont\FTF_ftfont.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "GP_axctl"=..\gameengine\gameplayer\axctl\GP_axctl.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name KX_converter
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name EXP_expressions
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SCA_GameLogic
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_ketsji
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SG_SceneGraph
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_openglrasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_rasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SYS_system
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name GP_common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_loopbacknetwork
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name DNA_makesdna
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gen_messaging
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_verify
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_decrypt
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_loader
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_readblenfile
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BKE_blenkernel
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_avi
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_imbuf
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLI_blenlib
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SND_OpenAL
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Physics
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Ode
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Dummy
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "GP_common"=..\gameengine\gameplayer\common\GP_common.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "GP_ghost"=..\gameengine\gameplayer\ghost\GP_ghost.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name BKE_blenkernel
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_avi
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_imbuf
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLI_blenlib
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_loader
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name DNA_makesdna
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name EXP_expressions
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_converter
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_ketsji
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_loopbacknetwork
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_openglrasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_rasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SCA_GameLogic
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SG_SceneGraph
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SYS_system
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gen_messaging
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_readblenfile
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_decrypt
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_verify
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SND_OpenAL
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name GP_common
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Physics
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Dummy
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Sumo
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "KX_blenderhook"=..\gameengine\blenderhook\KX_blenderhook.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "KX_converter"=..\gameengine\converter\KX_converter.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "KX_ketsji"=..\gameengine\ketsji\KX_ketsji.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "KX_network"=..\gameengine\ketsji\network\KX_network.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "NG_loopbacknetwork"=..\gameengine\network\loopbacknetwork\NG_loopbacknetwork.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "NG_network"=..\gameengine\network\network\NG_network.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "PHY_Dummy"=..\GAMEENGINE\PHYSICS\PHY_PHYSICS\PHY_Dummy\PHY_Dummy.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "PHY_Ode"=..\gameengine\physics\PHY_Physics\PHY_Ode\PHY_Ode.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "PHY_Physics"=..\gameengine\physics\PHY_Physics\PHY_Physics.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "PHY_Sumo"=..\gameengine\physics\PHY_Physics\PHY_Sumo\PHY_Sumo.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "RAS_openglrasterizer"=..\gameengine\rasterizer\openglrasterizer\RAS_openglrasterizer.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "RAS_rasterizer"=..\gameengine\rasterizer\RAS_rasterizer.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SCA_GameLogic"=..\gameengine\gamelogic\SCA_GameLogic.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SG_SceneGraph"=..\gameengine\scenegraph\SG_SceneGraph.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SYS_system"=..\kernel\system\SYS_system.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "blender"=.\blender.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name BKE_blenkernel
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_avi
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_imbuf
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLI_blenlib
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_decrypt
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_encrypt
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_loader
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_sign
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_verify
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BRA_radiosity
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BRE_render
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name DNA_makesdna
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name EXP_expressions
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name gen_messaging
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_loopbacknetwork
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_openglrasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_rasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SCA_GameLogic
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SG_SceneGraph
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SYS_system
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_src_pub
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name blenpluginapi
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BL_src
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SND_OpenAL
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Dummy
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Physics
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name FTF_ftfont
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BPY_python
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name PHY_Sumo
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BLO_readblenfile
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name Bullet
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name BulletDynamics
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "blenpluginapi"=.\blenpluginapi\blenpluginapi\blenpluginapi.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "gen_messaging"=..\KERNEL\gen_messaging\gen_messaging.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/projectfiles/blender/blenkernel/BKE_blenkernel.dsp b/projectfiles/blender/blenkernel/BKE_blenkernel.dsp
index 171bfab7dad..d430498d44d 100644
--- a/projectfiles/blender/blenkernel/BKE_blenkernel.dsp
+++ b/projectfiles/blender/blenkernel/BKE_blenkernel.dsp
@@ -1,564 +1,564 @@
-# Microsoft Developer Studio Project File - Name="BKE_blenkernel" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BKE_blenkernel - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BKE_blenkernel.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BKE_blenkernel.mak" CFG="BKE_blenkernel - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BKE_blenkernel - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BKE_blenkernel - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BKE_blenkernel - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BKE_blenkernel - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BKE_blenkernel - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\decimation\include" /I "../../../../lib/windows/zlib/include" /I "..\..\..\intern\elbeem\extern" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /D "USE_CCGSUBSURFLIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BKE_blenkernel - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel\debug"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\decimation\include" /I "../../../../lib/windows/zlib/include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /I "..\..\..\intern\elbeem\extern" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BKE_blenkernel - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BKE_blenkernel___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "BKE_blenkernel___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll_debug"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT BASE CPP /WX
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\blenloader" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /I "..\..\..\intern\elbeem\extern" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /WX
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenkernel\debug\BKE_blenkernel.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BKE_blenkernel - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "BKE_blenkernel___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "BKE_blenkernel___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /I "..\..\..\intern\elbeem\extern" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenkernel\BKE_blenkernel.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BKE_blenkernel - Win32 Release"
-# Name "BKE_blenkernel - Win32 Debug"
-# Name "BKE_blenkernel - Win32 MT DLL Debug"
-# Name "BKE_blenkernel - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\action.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\idprop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\anim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\armature.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\blender.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\bmfont.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\brush.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\CCGSubSurf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\cdderivedmesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\colortools.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\constraint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\curve.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\customdata.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\deform.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\depsgraph.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\DerivedMesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\displist.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\effect.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\exotic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\font.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\group.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\icons.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\image.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\ipo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\key.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\lattice.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\library.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\material.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\mball.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\mesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\modifier.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\nla.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\node.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\node_composite.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\node_shaders.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\object.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\packedFile.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\property.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\sca.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\scene.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\screen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\script.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\softbody.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\sound.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\subsurf_ccg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\text.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\texture.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\world.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\writeavi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\writeframeserver.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_action.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_anim.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_armature.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_bad_level_calls.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_blender.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_bmfont.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_bmfont_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_booleanops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_booleanops_mesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_brush.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_cdderivedmesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_constraint.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_curve.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_customdata.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_deform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_depsgraph.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_DerivedMesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_displist.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_effect.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_endian.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_exotic.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_font.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_global.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_group.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_image.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_ipo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_key.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_lattice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_library.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_main.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_material.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_mball.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_mesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_modifier.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_nla.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_object.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_packedFile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_plugin_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_property.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_sca.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_scene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_screen.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_script.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_softbody.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_sound.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_subsurf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_text.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_texture.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_utildefines.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_world.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\BKE_writeavi.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\intern\CCGSubSurf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenkernel\depsgraph_private.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BKE_blenkernel" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BKE_blenkernel - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BKE_blenkernel.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BKE_blenkernel.mak" CFG="BKE_blenkernel - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BKE_blenkernel - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BKE_blenkernel - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BKE_blenkernel - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BKE_blenkernel - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BKE_blenkernel - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\decimation\include" /I "../../../../lib/windows/zlib/include" /I "..\..\..\intern\elbeem\extern" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /D "USE_CCGSUBSURFLIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BKE_blenkernel - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel\debug"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\decimation\include" /I "../../../../lib/windows/zlib/include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /I "..\..\..\intern\elbeem\extern" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BKE_blenkernel - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BKE_blenkernel___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "BKE_blenkernel___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll_debug"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT BASE CPP /WX
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\blenloader" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /I "..\..\..\intern\elbeem\extern" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /WX
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenkernel\debug\BKE_blenkernel.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BKE_blenkernel - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "BKE_blenkernel___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "BKE_blenkernel___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenkernel\mtdll"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenlib" /I "../../../source/gameengine\SoundSystem\\" /I "../../../../lib/windows/iksolver/include" /I "../../../../lib/windows/bsp/include" /I "..\..\..\intern\elbeem\extern" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenkernel\BKE_blenkernel.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BKE_blenkernel - Win32 Release"
+# Name "BKE_blenkernel - Win32 Debug"
+# Name "BKE_blenkernel - Win32 MT DLL Debug"
+# Name "BKE_blenkernel - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\action.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\idprop.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\anim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\armature.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\blender.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\bmfont.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\brush.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\CCGSubSurf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\cdderivedmesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\colortools.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\constraint.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\curve.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\customdata.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\deform.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\depsgraph.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\DerivedMesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\displist.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\effect.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\exotic.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\font.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\group.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\icons.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\image.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\ipo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\key.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\lattice.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\library.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\material.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\mball.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\mesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\modifier.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\nla.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\node.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\node_composite.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\node_shaders.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\object.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\packedFile.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\property.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\sca.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\scene.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\screen.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\script.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\softbody.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\sound.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\subsurf_ccg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\text.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\texture.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\world.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\writeavi.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\writeframeserver.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_action.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_anim.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_armature.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_bad_level_calls.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_blender.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_bmfont.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_bmfont_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_booleanops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_booleanops_mesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_brush.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_cdderivedmesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_constraint.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_curve.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_customdata.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_deform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_depsgraph.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_DerivedMesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_displist.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_effect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_endian.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_exotic.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_font.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_global.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_group.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_image.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_ipo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_key.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_lattice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_library.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_main.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_material.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_mball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_mesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_modifier.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_nla.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_object.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_packedFile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_plugin_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_property.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_sca.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_scene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_screen.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_script.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_softbody.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_sound.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_subsurf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_text.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_texture.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_utildefines.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_world.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\BKE_writeavi.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\intern\CCGSubSurf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenkernel\depsgraph_private.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/blenlib/BLI_blenlib.dsp b/projectfiles/blender/blenlib/BLI_blenlib.dsp
index 137725d3f7f..0a5ed2c4d9d 100644
--- a/projectfiles/blender/blenlib/BLI_blenlib.dsp
+++ b/projectfiles/blender/blenlib/BLI_blenlib.dsp
@@ -1,318 +1,318 @@
-# Microsoft Developer Studio Project File - Name="BLI_blenlib" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BLI_blenlib - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BLI_blenlib.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BLI_blenlib.mak" CFG="BLI_blenlib - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BLI_blenlib - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLI_blenlib - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLI_blenlib - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLI_blenlib - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BLI_blenlib - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\freetype\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /I "../../../../lib/windows/zlib/include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLI_blenlib - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\freetype\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /I "../../../../lib/windows/zlib/include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLI_blenlib - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BLI_blenlib___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "BLI_blenlib___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenlib\debug\BLI_blenlib.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLI_blenlib - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "BLI_blenlib___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "BLI_blenlib___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenlib\BLI_blenlib.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BLI_blenlib - Win32 Release"
-# Name "BLI_blenlib - Win32 Debug"
-# Name "BLI_blenlib - Win32 MT DLL Debug"
-# Name "BLI_blenlib - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\arithb.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_dynstr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_ghash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_heap.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_linklist.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_memarena.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\dynlib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\edgehash.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\fileops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\freetypefont.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\gsqueue.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\jitter.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\matrixops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\noise.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\psfont.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\rand.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\rct.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\scanfill.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\storage.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\threads.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\time.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\vectorops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\winstuff.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_arithb.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_blenlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_callbacks.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_edgehash.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_editVert.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_fileops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_ghash.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_linklist.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_memarena.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_scanfill.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_storage.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_storage_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\intern\BLI_util.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\BLI_winstuff.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\MTC_matrixops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\MTC_vectorops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\PIL_dynlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenlib\PIL_time.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BLI_blenlib" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BLI_blenlib - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BLI_blenlib.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BLI_blenlib.mak" CFG="BLI_blenlib - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BLI_blenlib - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLI_blenlib - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLI_blenlib - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLI_blenlib - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BLI_blenlib - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\freetype\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /I "../../../../lib/windows/zlib/include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLI_blenlib - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\freetype\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /I "../../../../lib/windows/zlib/include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_FREETYPE2" /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLI_blenlib - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BLI_blenlib___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "BLI_blenlib___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenlib\debug\BLI_blenlib.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLI_blenlib - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "BLI_blenlib___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "BLI_blenlib___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\blenlib\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\blenlib\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\blenlib\BLI_blenlib.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BLI_blenlib - Win32 Release"
+# Name "BLI_blenlib - Win32 Debug"
+# Name "BLI_blenlib - Win32 MT DLL Debug"
+# Name "BLI_blenlib - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\arithb.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_dynstr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_ghash.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_heap.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_linklist.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_memarena.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\dynlib.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\edgehash.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\fileops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\freetypefont.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\gsqueue.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\jitter.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\matrixops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\noise.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\psfont.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\rand.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\rct.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\scanfill.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\storage.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\threads.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\time.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\vectorops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\winstuff.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_arithb.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_blenlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_callbacks.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_edgehash.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_editVert.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_fileops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_ghash.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_linklist.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_memarena.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_scanfill.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_storage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_storage_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\intern\BLI_util.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\BLI_winstuff.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\MTC_matrixops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\MTC_vectorops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\PIL_dynlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenlib\PIL_time.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/blenpluginapi/blenpluginapi/blenpluginapi.dsp b/projectfiles/blender/blenpluginapi/blenpluginapi/blenpluginapi.dsp
index 6b219ffad19..935335448a4 100644
--- a/projectfiles/blender/blenpluginapi/blenpluginapi/blenpluginapi.dsp
+++ b/projectfiles/blender/blenpluginapi/blenpluginapi/blenpluginapi.dsp
@@ -1,119 +1,119 @@
-# Microsoft Developer Studio Project File - Name="blenpluginapi" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=blenpluginapi - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "blenpluginapi.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "blenpluginapi.mak" CFG="blenpluginapi - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "blenpluginapi - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "blenpluginapi - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "blenpluginapi - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\blender\blenpluginapi"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\blenpluginapi"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\blender" /I "..\..\..\..\source\blender\blenpluginapi" /I "..\..\..\..\source\blender\blenlib" /I "..\..\..\..\source\blender\imbuf" /I "..\..\..\..\source\blender\makesdna" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\blenpluginapi.lib"
-
-!ELSEIF "$(CFG)" == "blenpluginapi - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\blender\blenpluginapi\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\blenpluginapi\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\blender" /I "..\..\..\..\source\blender\blenpluginapi" /I "..\..\..\..\source\blender\blenlib" /I "..\..\..\..\source\blender\imbuf" /I "..\..\..\..\source\blender\makesdna" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# SUBTRACT CPP /X
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\debug\blenpluginapi.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "blenpluginapi - Win32 Release"
-# Name "blenpluginapi - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenpluginapi\intern\pluginapi.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenpluginapi\documentation.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenpluginapi\floatpatch.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenpluginapi\iff.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenpluginapi\plugin.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenpluginapi\util.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="blenpluginapi" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=blenpluginapi - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "blenpluginapi.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "blenpluginapi.mak" CFG="blenpluginapi - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "blenpluginapi - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "blenpluginapi - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "blenpluginapi - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\blender\blenpluginapi"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\blenpluginapi"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\blender" /I "..\..\..\..\source\blender\blenpluginapi" /I "..\..\..\..\source\blender\blenlib" /I "..\..\..\..\source\blender\imbuf" /I "..\..\..\..\source\blender\makesdna" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\blenpluginapi.lib"
+
+!ELSEIF "$(CFG)" == "blenpluginapi - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\blender\blenpluginapi\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\blenpluginapi\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\blender" /I "..\..\..\..\source\blender\blenpluginapi" /I "..\..\..\..\source\blender\blenlib" /I "..\..\..\..\source\blender\imbuf" /I "..\..\..\..\source\blender\makesdna" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# SUBTRACT CPP /X
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\debug\blenpluginapi.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "blenpluginapi - Win32 Release"
+# Name "blenpluginapi - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenpluginapi\intern\pluginapi.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenpluginapi\documentation.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenpluginapi\floatpatch.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenpluginapi\iff.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenpluginapi\plugin.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenpluginapi\util.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/ftfont/FTF_ftfont.dsp b/projectfiles/blender/ftfont/FTF_ftfont.dsp
index 7ecd50aa75f..9a90df08483 100644
--- a/projectfiles/blender/ftfont/FTF_ftfont.dsp
+++ b/projectfiles/blender/ftfont/FTF_ftfont.dsp
@@ -1,118 +1,118 @@
-# Microsoft Developer Studio Project File - Name="FTF_ftfont" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=FTF_ftfont - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "FTF_ftfont.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "FTF_ftfont.mak" CFG="FTF_ftfont - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "FTF_ftfont - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "FTF_ftfont - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "FTF_ftfont - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\ftfont"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\ftfont"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../source\blender\makesdna" /I "../../../source\blender\blenloader" /I "../../../source\blender\blenlib" /I "../../../../lib/windows/ftgl/include" /I "../../../../lib/windows/freetype/include" /I "../../../lib/windows/iconv/include" /I "../../../../lib/windows/gettext/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "WCHAR_T16" /D "HAVE_LC_MESSAGES" /YX /FD /c
-# ADD BASE RSC /l 0x411 /d "NDEBUG"
-# ADD RSC /l 0x411 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "FTF_ftfont - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\ftfont"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\ftfont"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../source\blender\blenlib" /I "../../../source\blender\makesdna" /I "../../../../lib/windows/ftgl/include" /I "../../../../lib/windows/freetype/include" /I "../../../lib/windows/iconv/include" /I "../../../../lib/windows/gettext/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "WCHAR_T16" /D "HAVE_LC_MESSAGES" /D "FTGL_LIBRARY_STATIC" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x411 /d "_DEBUG"
-# ADD RSC /l 0x411 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "FTF_ftfont - Win32 Release"
-# Name "FTF_ftfont - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\ftfont\intern\FTF_Api.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\ftfont\intern\FTF_TTFont.cpp
-# End Source File
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\ftfont\FTF_Api.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\ftfont\FTF_Settings.h
-# End Source File
-# End Group
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\ftfont\intern\FTF_TTFont.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="FTF_ftfont" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=FTF_ftfont - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "FTF_ftfont.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "FTF_ftfont.mak" CFG="FTF_ftfont - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "FTF_ftfont - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "FTF_ftfont - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "FTF_ftfont - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\ftfont"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\ftfont"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../../source\blender\makesdna" /I "../../../source\blender\blenloader" /I "../../../source\blender\blenlib" /I "../../../../lib/windows/ftgl/include" /I "../../../../lib/windows/freetype/include" /I "../../../lib/windows/iconv/include" /I "../../../../lib/windows/gettext/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "WCHAR_T16" /D "HAVE_LC_MESSAGES" /YX /FD /c
+# ADD BASE RSC /l 0x411 /d "NDEBUG"
+# ADD RSC /l 0x411 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "FTF_ftfont - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\ftfont"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\ftfont"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../source\blender\blenlib" /I "../../../source\blender\makesdna" /I "../../../../lib/windows/ftgl/include" /I "../../../../lib/windows/freetype/include" /I "../../../lib/windows/iconv/include" /I "../../../../lib/windows/gettext/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "WCHAR_T16" /D "HAVE_LC_MESSAGES" /D "FTGL_LIBRARY_STATIC" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x411 /d "_DEBUG"
+# ADD RSC /l 0x411 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "FTF_ftfont - Win32 Release"
+# Name "FTF_ftfont - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\ftfont\intern\FTF_Api.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\ftfont\intern\FTF_TTFont.cpp
+# End Source File
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\ftfont\FTF_Api.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\ftfont\FTF_Settings.h
+# End Source File
+# End Group
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\ftfont\intern\FTF_TTFont.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/glut/BL_glut.dsp b/projectfiles/blender/glut/BL_glut.dsp
index 2e351603e67..a4f1573ab38 100644
--- a/projectfiles/blender/glut/BL_glut.dsp
+++ b/projectfiles/blender/glut/BL_glut.dsp
@@ -1,324 +1,324 @@
-# Microsoft Developer Studio Project File - Name="BL_glut" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BL_glut - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BL_glut.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BL_glut.mak" CFG="BL_glut - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BL_glut - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_glut - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_glut - Win32 Profile" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BL_glut - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\glut"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\source\blender\\" /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\BL_glut.lib"
-
-!ELSEIF "$(CFG)" == "BL_glut - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\glut\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /I "..\..\..\source\blender\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\debug\BL_glut.lib"
-
-!ELSEIF "$(CFG)" == "BL_glut - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BL_glut___Win32_Profile"
-# PROP BASE Intermediate_Dir "BL_glut___Win32_Profile"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "BL_glut___Win32_Profile"
-# PROP Intermediate_Dir "BL_glut___Win32_Profile"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /I "..\..\..\source\blender\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /I "..\..\..\source\blender\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\debug\BL_glut.lib"
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\profile\BL_glut.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "BL_glut - Win32 Release"
-# Name "BL_glut - Win32 Debug"
-# Name "BL_glut - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_8x13.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_9x15.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_bitmap.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_blender.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_bwidth.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_cindex.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_cmap.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_cursor.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_dials.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_draw.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_dstr.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_event.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_ext.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_fullscrn.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_get.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_hel10.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_hel12.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_hel18.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_helb10.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_helb12.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_helb14.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_helb8.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_init.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_input.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_mesa.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_modifier.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_mroman.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_overlay.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_roman.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_scr12.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_scr14.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_scr15.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_shapes.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_space.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_stroke.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_swap.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_swidth.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_tablet.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_teapot.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_tr10.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_tr24.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_util.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_vidresize.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_warp.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_win.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\glut_winmisc.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\win32_glx.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\win32_menu.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\win32_util.c"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\blender\glut-win\win32_x11.c"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\glut\blenderglut.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BL_glut" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BL_glut - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BL_glut.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BL_glut.mak" CFG="BL_glut - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BL_glut - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_glut - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_glut - Win32 Profile" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BL_glut - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\glut"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\source\blender\\" /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\BL_glut.lib"
+
+!ELSEIF "$(CFG)" == "BL_glut - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\blender\glut\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /I "..\..\..\source\blender\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\debug\BL_glut.lib"
+
+!ELSEIF "$(CFG)" == "BL_glut - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BL_glut___Win32_Profile"
+# PROP BASE Intermediate_Dir "BL_glut___Win32_Profile"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "BL_glut___Win32_Profile"
+# PROP Intermediate_Dir "BL_glut___Win32_Profile"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /I "..\..\..\source\blender\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\source\blender\glut-win" /I "..\..\..\source\blender\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\debug\BL_glut.lib"
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\blender\glut\profile\BL_glut.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "BL_glut - Win32 Release"
+# Name "BL_glut - Win32 Debug"
+# Name "BL_glut - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_8x13.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_9x15.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_bitmap.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_blender.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_bwidth.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_cindex.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_cmap.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_cursor.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_dials.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_draw.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_dstr.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_event.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_ext.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_fullscrn.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_get.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_hel10.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_hel12.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_hel18.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_helb10.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_helb12.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_helb14.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_helb8.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_init.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_input.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_mesa.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_modifier.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_mroman.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_overlay.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_roman.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_scr12.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_scr14.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_scr15.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_shapes.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_space.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_stroke.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_swap.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_swidth.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_tablet.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_teapot.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_tr10.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_tr24.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_util.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_vidresize.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_warp.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_win.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\glut_winmisc.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\win32_glx.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\win32_menu.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\win32_util.c"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\blender\glut-win\win32_x11.c"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\glut\blenderglut.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/imbuf/BL_imbuf.dsp b/projectfiles/blender/imbuf/BL_imbuf.dsp
index 002426124b6..04d81d8229c 100644
--- a/projectfiles/blender/imbuf/BL_imbuf.dsp
+++ b/projectfiles/blender/imbuf/BL_imbuf.dsp
@@ -1,438 +1,438 @@
-# Microsoft Developer Studio Project File - Name="BL_imbuf" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BL_imbuf - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BL_imbuf.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BL_imbuf.mak" CFG="BL_imbuf - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BL_imbuf - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_imbuf - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_imbuf - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_imbuf - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BL_imbuf - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\imbuf\intern" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\tiff\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_imbuf - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\blender\imbuf\intern" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\tiff\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /FD /I /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_imbuf - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BL_imbuf___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "BL_imbuf___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\blender\makesdna..\..\..\lib\windows\\" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\tiff\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\imbuf\debug\BL_imbuf.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_imbuf - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "BL_imbuf___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "BL_imbuf___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\blender\makesdna..\..\..\lib\windows\\" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\tiff\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\imbuf\BL_imbuf.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BL_imbuf - Win32 Release"
-# Name "BL_imbuf - Win32 Debug"
-# Name "BL_imbuf - Win32 MT DLL Debug"
-# Name "BL_imbuf - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\allocimbuf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\amiga.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\anim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\anim5.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\antialias.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\bitplanes.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\bmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineon_dpx.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineonlib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cmap.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\data.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\dither.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\divers.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\dpxlib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\dynlibtiff.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\filter.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\ham.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\hamx.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\iff.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\imageprocess.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\iris.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\jpeg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageCore.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageLib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logmemfile.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\png.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\quicktime\apple\quicktime_export.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\quicktime\apple\quicktime_import.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\radiance_hdr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\readimage.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\rectop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\rotate.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\scaling.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\targa.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\tiff.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\util.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\writeimage.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cin_debug_stuff.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineonfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineonlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\dpxfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\dpxlib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\dynlibtiff.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_allocimbuf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_amiga.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_anim.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_anim5.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_bitplanes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_bmp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_cmap.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_divers.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_filter.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_ham.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_hamx.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_iff.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\IMB_imbuf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\IMB_imbuf_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_iris.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_jpeg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_png.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_radiance_hdr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_targa.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\IMB_tiff.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\imbuf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\imbuf_patch.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageCore.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageLib.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logmemfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\imbuf\intern\matrix.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\quicktime\quicktime_export.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\quicktime\quicktime_import.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BL_imbuf" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BL_imbuf - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BL_imbuf.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BL_imbuf.mak" CFG="BL_imbuf - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BL_imbuf - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_imbuf - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_imbuf - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_imbuf - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BL_imbuf - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\imbuf\intern" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\tiff\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_imbuf - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\blender\imbuf\intern" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\tiff\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /FD /I /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_imbuf - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BL_imbuf___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "BL_imbuf___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\blender\makesdna..\..\..\lib\windows\\" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\tiff\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\imbuf\debug\BL_imbuf.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_imbuf - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "BL_imbuf___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "BL_imbuf___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\imbuf\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\imbuf\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\source\blender\makesdna" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\blender\makesdna..\..\..\lib\windows\\" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\avi" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\include" /I "..\..\..\..\lib\windows\jpeg\include" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\..\lib\windows\png\include" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\tiff\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\imbuf\BL_imbuf.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BL_imbuf - Win32 Release"
+# Name "BL_imbuf - Win32 Debug"
+# Name "BL_imbuf - Win32 MT DLL Debug"
+# Name "BL_imbuf - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\allocimbuf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\amiga.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\anim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\anim5.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\antialias.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\bitplanes.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\bmp.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineon_dpx.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineonlib.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cmap.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cspace.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\data.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\dither.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\divers.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\dpxlib.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\dynlibtiff.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\filter.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\ham.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\hamx.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\iff.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\imageprocess.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\iris.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\jpeg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageCore.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageLib.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logmemfile.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\png.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\quicktime\apple\quicktime_export.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\quicktime\apple\quicktime_import.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\radiance_hdr.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\readimage.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\rectop.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\rotate.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\scaling.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\targa.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\tiff.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\util.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\writeimage.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cin_debug_stuff.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineonfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\cineonlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\dpxfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\dpxlib.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\dynlibtiff.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_allocimbuf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_amiga.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_anim.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_anim5.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_bitplanes.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_bmp.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_cmap.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_divers.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_filter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_ham.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_hamx.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_iff.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\IMB_imbuf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\IMB_imbuf_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_iris.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_jpeg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_png.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_radiance_hdr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_targa.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\IMB_tiff.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\imbuf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\imbuf_patch.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageCore.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logImageLib.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\cineon\logmemfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\imbuf\intern\matrix.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\quicktime\quicktime_export.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\quicktime\quicktime_import.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/img/BL_img.dsp b/projectfiles/blender/img/BL_img.dsp
index 16f0827fbe9..465db34f4da 100644
--- a/projectfiles/blender/img/BL_img.dsp
+++ b/projectfiles/blender/img/BL_img.dsp
@@ -1,171 +1,171 @@
-# Microsoft Developer Studio Project File - Name="BL_img" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BL_IMG - WIN32 DEBUG
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BL_img.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BL_img.mak" CFG="BL_IMG - WIN32 DEBUG"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BL_img - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_img - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BL_img - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\img"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\img"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_img - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\img\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\img\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BL_img - Win32 Release"
-# Name "BL_img - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Api.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_BrushRGBA32.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_CanvasRGBA32.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Line.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Pixmap.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_PixmapRGBA32.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Rect.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "intern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_BrushRGBA32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_CanvasRGBA32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Color.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Line.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_MemPtr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Pixmap.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_PixmapRGBA32.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Rect.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\intern\IMG_Types.h
-# End Source File
-# End Group
-# Begin Group "extern"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\img\IMG_Api.h
-# End Source File
-# End Group
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BL_img" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BL_IMG - WIN32 DEBUG
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BL_img.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BL_img.mak" CFG="BL_IMG - WIN32 DEBUG"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BL_img - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_img - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BL_img - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\img"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\img"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_img - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\img\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\img\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BL_img - Win32 Release"
+# Name "BL_img - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Api.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_BrushRGBA32.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_CanvasRGBA32.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Line.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Pixmap.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_PixmapRGBA32.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Rect.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "intern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_BrushRGBA32.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_CanvasRGBA32.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Color.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Line.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_MemPtr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Pixmap.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_PixmapRGBA32.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Rect.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\intern\IMG_Types.h
+# End Source File
+# End Group
+# Begin Group "extern"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\img\IMG_Api.h
+# End Source File
+# End Group
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/loader/BLO_loader.dsp b/projectfiles/blender/loader/BLO_loader.dsp
index 13b32246652..6671f256bc9 100644
--- a/projectfiles/blender/loader/BLO_loader.dsp
+++ b/projectfiles/blender/loader/BLO_loader.dsp
@@ -1,186 +1,186 @@
-# Microsoft Developer Studio Project File - Name="BLO_loader" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BLO_loader - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BLO_loader.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BLO_loader.mak" CFG="BLO_loader - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BLO_loader - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLO_loader - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLO_loader - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "BLO_loader - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BLO_loader - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\loader"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\blenloader" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLO_loader - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\loader\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLO_loader - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BLO_loader___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "BLO_loader___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\loader\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\loader\debug\BLO_loader.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BLO_loader - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "BLO_loader___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "BLO_loader___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\loader\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\loader\BLO_loader.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BLO_loader - Win32 Release"
-# Name "BLO_loader - Win32 Debug"
-# Name "BLO_loader - Win32 MT DLL Debug"
-# Name "BLO_loader - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\intern\genfile.c
-# ADD CPP /I "..\..\..\source\blender"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\intern\readblenentry.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\intern\readfile.c
-# ADD CPP /I "..\..\..\source\blender"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\intern\undofile.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\intern\writefile.c
-# ADD CPP /I "..\..\..\source\blender"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\BLO_genfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\BLO_readfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\BLO_soundfile.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenloader\BLO_undofile.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BLO_loader" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BLO_loader - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BLO_loader.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BLO_loader.mak" CFG="BLO_loader - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BLO_loader - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLO_loader - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLO_loader - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "BLO_loader - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BLO_loader - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\loader"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\blender\blenloader" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLO_loader - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\loader\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLO_loader - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BLO_loader___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "BLO_loader___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\loader\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\loader\debug\BLO_loader.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BLO_loader - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "BLO_loader___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "BLO_loader___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\loader\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\loader\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\streamglue\\" /I "..\..\..\source\blender\readblenfile\\" /I "..\..\..\source\blender\writeblenfile\\" /I "..\..\..\source\blender\deflate\\" /I "..\..\..\source\blender\inflate\\" /I "..\..\..\..\lib\windows\zlib\include" /I "..\..\..\source\blender\readblenfile" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\blender\writestreamglue" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\python" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\blender\loader\BLO_loader.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BLO_loader - Win32 Release"
+# Name "BLO_loader - Win32 Debug"
+# Name "BLO_loader - Win32 MT DLL Debug"
+# Name "BLO_loader - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\intern\genfile.c
+# ADD CPP /I "..\..\..\source\blender"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\intern\readblenentry.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\intern\readfile.c
+# ADD CPP /I "..\..\..\source\blender"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\intern\undofile.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\intern\writefile.c
+# ADD CPP /I "..\..\..\source\blender"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\BLO_genfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\BLO_readfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\BLO_soundfile.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenloader\BLO_undofile.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/makesdna/DNA_makesdna.dsp b/projectfiles/blender/makesdna/DNA_makesdna.dsp
index 993968c2f6d..e08d44ade7c 100644
--- a/projectfiles/blender/makesdna/DNA_makesdna.dsp
+++ b/projectfiles/blender/makesdna/DNA_makesdna.dsp
@@ -1,373 +1,373 @@
-# Microsoft Developer Studio Project File - Name="DNA_makesdna" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=DNA_makesdna - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "DNA_makesdna.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "DNA_makesdna.mak" CFG="DNA_makesdna - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "DNA_makesdna - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "DNA_makesdna - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "DNA_makesdna - Win32 MT DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "DNA_makesdna - Win32 MT DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "DNA_makesdna - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libguardedalloc.a BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /machine:I386 /nodefaultlib:"libc.lib" /libpath:"..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\obj\windows\blender\blenlib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Building DNA
-PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "DNA_makesdna - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libguardedalloc.a BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\..\..\lib\windows\guardedalloc\lib\debug" /libpath:"..\..\..\obj\windows\blender\blenlib\debug"
-# SUBTRACT LINK32 /pdb:none
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Building DNA
-PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "DNA_makesdna - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "DNA_makesdna___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "DNA_makesdna___Win32_MT_DLL_Release"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna\mtdll"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo /o"DNA_makesdna.bsc"
-# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /machine:I386 /out:"..\..\..\source\blender\makesdna\intern\DNA_makesdna.exe" /libpath:"..\..\..\..\obj\windows\blender\blenlib"
-# SUBTRACT BASE LINK32 /pdb:none
-# ADD LINK32 libguardedalloc.a /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /machine:I386 /libpath:"..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\obj\windows\blender\blenlib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "DNA_makesdna - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "DNA_makesdna___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "DNA_makesdna___Win32_MT_DLL_Debug"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna\mtdll_debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo /o"DNA_makesdna.bsc"
-# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
-LINK32=link.exe
-# ADD BASE LINK32 BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /debug /machine:I386 /out:"..\..\..\source\blender\makesdna\debug\DNA_makesdna.exe" /pdbtype:sept /libpath:"..\..\..\..\obj\windows\blender\blenlib\debug"
-# SUBTRACT BASE LINK32 /pdb:none
-# ADD LINK32 libguardedalloc.a /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\windows\guardedalloc\lib"
-# SUBTRACT LINK32 /pdb:none
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "DNA_makesdna - Win32 Release"
-# Name "DNA_makesdna - Win32 Debug"
-# Name "DNA_makesdna - Win32 MT DLL Release"
-# Name "DNA_makesdna - Win32 MT DLL Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\intern\makesdna.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_action_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_actuator_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_armature_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_camera_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_constraint_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_controller_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_curve_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_customdata_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_documentation.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_effect_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_fileglobal_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_group_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_ID.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_image_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_ipo_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_key_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_lamp_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_lattice_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_listBase.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_material_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_mesh_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_meshdata_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_meta_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_modifier_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_nla_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_object_force.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_object_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_oops_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_packedFile_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_property_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_radio_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_scene_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_screen_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_scriptlink_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_sdna_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_sensor_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_sequence_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_sound_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_space_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_text_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_texture_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_userdef_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_vec_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_vfont_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_view2d_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_view3d_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_wave_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\DNA_world_types.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="DNA_makesdna" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=DNA_makesdna - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "DNA_makesdna.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "DNA_makesdna.mak" CFG="DNA_makesdna - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "DNA_makesdna - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "DNA_makesdna - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "DNA_makesdna - Win32 MT DLL Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "DNA_makesdna - Win32 MT DLL Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "DNA_makesdna - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 libguardedalloc.a BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /machine:I386 /nodefaultlib:"libc.lib" /libpath:"..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\obj\windows\blender\blenlib"
+# SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Building DNA
+PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "DNA_makesdna - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 libguardedalloc.a BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /debug /machine:I386 /nodefaultlib:"libc.lib" /pdbtype:sept /libpath:"..\..\..\..\lib\windows\guardedalloc\lib\debug" /libpath:"..\..\..\obj\windows\blender\blenlib\debug"
+# SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Desc=Building DNA
+PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "DNA_makesdna - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "DNA_makesdna___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "DNA_makesdna___Win32_MT_DLL_Release"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna\mtdll"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo /o"DNA_makesdna.bsc"
+# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
+LINK32=link.exe
+# ADD BASE LINK32 BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /machine:I386 /out:"..\..\..\source\blender\makesdna\intern\DNA_makesdna.exe" /libpath:"..\..\..\..\obj\windows\blender\blenlib"
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD LINK32 libguardedalloc.a /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /machine:I386 /libpath:"..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\obj\windows\blender\blenlib"
+# SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "DNA_makesdna - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "DNA_makesdna___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "DNA_makesdna___Win32_MT_DLL_Debug"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\source\blender\makesdna\intern"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\makesdna\mtdll_debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo /o"DNA_makesdna.bsc"
+# ADD BSC32 /nologo /o"DNA_makesdna.bsc"
+LINK32=link.exe
+# ADD BASE LINK32 BLI_blenlib.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /debug /machine:I386 /out:"..\..\..\source\blender\makesdna\debug\DNA_makesdna.exe" /pdbtype:sept /libpath:"..\..\..\..\obj\windows\blender\blenlib\debug"
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD LINK32 libguardedalloc.a /nologo /subsystem:console /pdb:"DNA_makesdna.pdb" /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\lib\windows\guardedalloc\lib"
+# SUBTRACT LINK32 /pdb:none
+# Begin Special Build Tool
+SOURCE="$(InputPath)"
+PostBuild_Cmds=CD ..\..\..\source\blender\makesdna\intern\ DNA_makesdna.exe dna.c
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "DNA_makesdna - Win32 Release"
+# Name "DNA_makesdna - Win32 Debug"
+# Name "DNA_makesdna - Win32 MT DLL Release"
+# Name "DNA_makesdna - Win32 MT DLL Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\intern\makesdna.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_action_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_actuator_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_armature_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_camera_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_constraint_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_controller_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_curve_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_customdata_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_documentation.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_effect_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_fileglobal_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_group_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_ID.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_image_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_ipo_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_key_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_lamp_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_lattice_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_listBase.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_material_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_mesh_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_meshdata_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_meta_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_modifier_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_nla_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_object_force.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_object_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_oops_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_packedFile_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_property_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_radio_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_scene_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_screen_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_scriptlink_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_sdna_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_sensor_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_sequence_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_sound_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_space_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_text_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_texture_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_userdef_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_vec_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_vfont_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_view2d_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_view3d_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_wave_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\DNA_world_types.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/radiosity/BRA_radiosity.dsp b/projectfiles/blender/radiosity/BRA_radiosity.dsp
index be9e33e311f..4bae7c4e50f 100644
--- a/projectfiles/blender/radiosity/BRA_radiosity.dsp
+++ b/projectfiles/blender/radiosity/BRA_radiosity.dsp
@@ -1,133 +1,133 @@
-# Microsoft Developer Studio Project File - Name="BRA_radiosity" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BRA_radiosity - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BRA_radiosity.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BRA_radiosity.mak" CFG="BRA_radiosity - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BRA_radiosity - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BRA_radiosity - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BRA_radiosity - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\radiosity"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\radiosity"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\intern\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BRA_radiosity - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\radiosity\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\radiosity\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\intern\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BRA_radiosity - Win32 Release"
-# Name "BRA_radiosity - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\intern\source\raddisplay.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\intern\source\radfactors.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\intern\source\radio.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\intern\source\radnode.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\intern\source\radpostprocess.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\intern\source\radpreprocess.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\intern\source\radrender.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\extern\include\radio.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\radiosity\extern\include\radio_types.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BRA_radiosity" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BRA_radiosity - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BRA_radiosity.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BRA_radiosity.mak" CFG="BRA_radiosity - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BRA_radiosity - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BRA_radiosity - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BRA_radiosity - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\radiosity"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\radiosity"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\intern\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BRA_radiosity - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\radiosity\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\radiosity\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\render\intern\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BRA_radiosity - Win32 Release"
+# Name "BRA_radiosity - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\intern\source\raddisplay.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\intern\source\radfactors.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\intern\source\radio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\intern\source\radnode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\intern\source\radpostprocess.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\intern\source\radpreprocess.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\intern\source\radrender.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\extern\include\radio.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\radiosity\extern\include\radio_types.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/render/BRE_render.dsp b/projectfiles/blender/render/BRE_render.dsp
index 7d29bce934c..2e41812071f 100644
--- a/projectfiles/blender/render/BRE_render.dsp
+++ b/projectfiles/blender/render/BRE_render.dsp
@@ -1,192 +1,192 @@
-# Microsoft Developer Studio Project File - Name="BRE_render" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BRE_render - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BRE_render.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BRE_render.mak" CFG="BRE_render - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BRE_render - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BRE_render - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BRE_render - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\render"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\render"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\kernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\intern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender" /I "..\..\..\source\blender\yafray" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BRE_render - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\render\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\render\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\kernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\intern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender" /I "..\..\..\source\blender\yafray" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BRE_render - Win32 Release"
-# Name "BRE_render - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\convertblender.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\envmap.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\gammaCorrectionTables.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\imagetexture.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\initrender.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\pipeline.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\pixelblending.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\pixelshading.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\ray.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\rendercore.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\renderdatabase.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\shadbuf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\texture.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\source\zbuf.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\edgeRender.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\envmap.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\gammaCorrectionTables.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\initrender.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\pixelblending.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\pixelshading.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\rendercore.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\shadbuf.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\texture.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\render\intern\include\zbuf.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BRE_render" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BRE_render - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BRE_render.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BRE_render.mak" CFG="BRE_render - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BRE_render - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BRE_render - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BRE_render - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\render"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\render"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\kernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\intern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender" /I "..\..\..\source\blender\yafray" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BRE_render - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\render\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\render\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\kernel\gen_messaging" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\kernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\intern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender" /I "..\..\..\source\blender\yafray" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "WITH_QUICKTIME" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BRE_render - Win32 Release"
+# Name "BRE_render - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\convertblender.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\envmap.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\gammaCorrectionTables.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\imagetexture.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\initrender.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\pipeline.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\pixelblending.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\pixelshading.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\ray.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\rendercore.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\renderdatabase.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\shadbuf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\texture.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\source\zbuf.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\edgeRender.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\envmap.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\gammaCorrectionTables.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\initrender.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\pixelblending.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\pixelshading.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\rendercore.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\shadbuf.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\texture.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\render\intern\include\zbuf.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/renderconverter/BRE_renderconverter.dsp b/projectfiles/blender/renderconverter/BRE_renderconverter.dsp
index 4b3729061a8..6f07a365069 100644
--- a/projectfiles/blender/renderconverter/BRE_renderconverter.dsp
+++ b/projectfiles/blender/renderconverter/BRE_renderconverter.dsp
@@ -1,102 +1,102 @@
-# Microsoft Developer Studio Project File - Name="BRE_renderconverter" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BRE_renderconverter - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BRE_renderconverter.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BRE_renderconverter.mak" CFG="BRE_renderconverter - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BRE_renderconverter - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BRE_renderconverter - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BRE_renderconverter - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\renderconverter"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\renderconverter"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\yafray" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\render\extern\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BRE_renderconverter - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BRE_renderconverter___Win32_Debug"
-# PROP BASE Intermediate_Dir "BRE_renderconverter___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\render\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\render\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\yafray" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\render\extern\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x413 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\obj\windows\blender\renderconverter\debug\BRE_renderconverter.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "BRE_renderconverter - Win32 Release"
-# Name "BRE_renderconverter - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\renderconverter\intern\convertBlenderScene.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\renderconverter\RE_renderconverter.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BRE_renderconverter" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BRE_renderconverter - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BRE_renderconverter.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BRE_renderconverter.mak" CFG="BRE_renderconverter - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BRE_renderconverter - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BRE_renderconverter - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BRE_renderconverter - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\renderconverter"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\renderconverter"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\yafray" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\render\extern\include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BRE_renderconverter - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BRE_renderconverter___Win32_Debug"
+# PROP BASE Intermediate_Dir "BRE_renderconverter___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\render\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\render\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\yafray" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\render\extern\include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x413 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\obj\windows\blender\renderconverter\debug\BRE_renderconverter.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "BRE_renderconverter - Win32 Release"
+# Name "BRE_renderconverter - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\renderconverter\intern\convertBlenderScene.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\renderconverter\RE_renderconverter.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/src/BL_src.dsp b/projectfiles/blender/src/BL_src.dsp
index d6a1c3945e9..82bc14bc0a8 100644
--- a/projectfiles/blender/src/BL_src.dsp
+++ b/projectfiles/blender/src/BL_src.dsp
@@ -1,1040 +1,1040 @@
-# Microsoft Developer Studio Project File - Name="BL_src" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BL_SRC - WIN32 DEBUG
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BL_src.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BL_src.mak" CFG="BL_SRC - WIN32 DEBUG"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BL_src - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_src - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BL_src - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\src"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\sdl\include\\" /I "..\..\..\source\blender\img" /I "..\..\..\source\blender\renderui" /I "..\..\..\..\lib\windows\soundsystem\include\\" /I "..\..\..\..\lib\windows\python\include\python2.0\\" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\blender\ftfont" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\ghost\include" /I "..\..\..\..\lib\windows\bsp\include" /I "..\..\..\..\lib\windows\opennl\include" /I "..\..\..\intern\elbeem\extern" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "xGAMEBLENDER" /D "WITH_QUICKTIME" /D "INTERNATIONAL" /FR /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "BL_src - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\src\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\sdl\include\\" /I "..\..\..\source\blender\img" /I "..\..\..\source\blender\renderui" /I "..\..\..\..\lib\windows\soundsystem\include\\" /I "..\..\..\..\lib\windows\python\include\python2.0\\" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\blender\ftfont" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\ghost\include" /I "..\..\..\..\lib\windows\bsp\include" /I "..\..\..\..\lib\windows\opennl\include" /I "..\..\..\intern\elbeem\extern" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "xGAMEBLENDER" /D "WITH_QUICKTIME" /D "INTERNATIONAL" /U "_DEBUG" /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "BL_src - Win32 Release"
-# Name "BL_src - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\B.blend.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\Bfont.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\bfont.ttf.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\blenderbuttons.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\booleanops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\booleanops_mesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\butspace.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\buttons_editing.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\buttons_logic.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\buttons_object.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\buttons_scene.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\buttons_script.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\buttons_shading.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\cmap.tga.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\cmovie.tga.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\cursors.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\makesdna\intern\dna.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawaction.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawarmature.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawdeps.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawimage.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawimasel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawipo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawmesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawnla.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawnode.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawobject.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawoops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawscene.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawscript.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawseq.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawsound.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawtext.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawtime.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\drawview.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\edit.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editaction.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editarmature.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editconstraint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editcurve.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editdeform.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editfont.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editgroup.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editimasel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editipo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editipo_lib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editipo_mods.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editkey.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editlattice.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmball.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmesh.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmesh_add.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmesh_lib.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmesh_loop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmesh_mods.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmesh_tools.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editmode_undo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editnla.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editnode.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editobject.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editoops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editscreen.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editseq.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editsima.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editsound.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\edittime.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\editview.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\eventdebug.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\filesel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\fluidsim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\ghostwinlay.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\glutil.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\hddaudio.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_action.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_buttonswin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_filesel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_image.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_imasel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_info.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_ipo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_nla.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_node.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_oops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_script.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_seq.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_sound.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_text.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_time.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\header_view3d.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\headerbuttons.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\imagepaint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\imasel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\interface.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\interface_draw.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\interface_icons.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\interface_panel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\keyval.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\language.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\lorem.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\mainqueue.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\meshtools.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\multires.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\mywindow.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\oops.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\outliner.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\parametrizer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\playanim.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\blenpluginapi\intern\pluginapi.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\poseobject.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\preview.blend.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\previewrender.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\renderwin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\resources.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\retopo.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\scrarea.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\screendump.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\sculptmode.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\seqaudio.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\seqeffects.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\seqscopes.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\sequence.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\space.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\spacetypes.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\splash.jpg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\swapbuffers.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\toets.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\toolbox.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\transform.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\transform_constraints.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\transform_conversions.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\transform_generics.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\transform_manipulator.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\transform_numinput.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\transform_snap.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\unwrapper.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\usiblender.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\view.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\vpaint.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\writeavicodec.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\writeimage.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\writemovie.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_drawaction.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_drawmesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_drawobject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_editcurve.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_editface.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_editmball.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_editobject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_sculptmode.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_unwrapper.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BDR_vpaint.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_butspace.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_cursors.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_drawimage.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_drawoops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_drawscene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_drawscript.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_drawseq.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_drawtext.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editaction.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editarmature.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editconstraint.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editdeform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editfont.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editgroup.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editkey.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editlattice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editmesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editmode_undo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editnla.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editoops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editsca.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editseq.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editsima.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editsound.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_editview.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_fsmenu.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_gl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_glutil.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_graphics.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_imasel.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_interface.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_keyval.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_language.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_mainqueue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_meshtools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_mywindow.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_oops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_outliner.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_poseobject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_previewrender.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_renderwin.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_resources.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_retopo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_scrarea.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_screen.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_space.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_spacetypes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_tbcallback.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_toets.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_toolbox.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_transform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_usiblender.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_writeavicodec.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_writeimage.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BIF_writemovie.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\blendef.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BPI_script.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_buttons.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_drawimasel.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_drawipo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_drawnla.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_drawoops.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_drawview.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_edit.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_editaction.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_editaction_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_editipo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_editipo_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_editnla_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_filesel.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_headerbuttons.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_seqaudio.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_sequence.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_time.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_trans_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_types.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\BSE_view.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\butspace.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\editmesh.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\multires.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\parametrizer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\parametrizer_intern.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\include\transform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\winlay.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BL_src" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BL_SRC - WIN32 DEBUG
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BL_src.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BL_src.mak" CFG="BL_SRC - WIN32 DEBUG"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BL_src - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_src - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BL_src - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\src"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\sdl\include\\" /I "..\..\..\source\blender\img" /I "..\..\..\source\blender\renderui" /I "..\..\..\..\lib\windows\soundsystem\include\\" /I "..\..\..\..\lib\windows\python\include\python2.0\\" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\blender\ftfont" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\ghost\include" /I "..\..\..\..\lib\windows\bsp\include" /I "..\..\..\..\lib\windows\opennl\include" /I "..\..\..\intern\elbeem\extern" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "xGAMEBLENDER" /D "WITH_QUICKTIME" /D "INTERNATIONAL" /FR /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "BL_src - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\src\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\sdl\include\\" /I "..\..\..\source\blender\img" /I "..\..\..\source\blender\renderui" /I "..\..\..\..\lib\windows\soundsystem\include\\" /I "..\..\..\..\lib\windows\python\include\python2.0\\" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\blender\ftfont" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\blender\quicktime" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\ghost\include" /I "..\..\..\..\lib\windows\bsp\include" /I "..\..\..\..\lib\windows\opennl\include" /I "..\..\..\intern\elbeem\extern" /I "..\..\..\..\lib\windows\memutil\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "xGAMEBLENDER" /D "WITH_QUICKTIME" /D "INTERNATIONAL" /U "_DEBUG" /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "BL_src - Win32 Release"
+# Name "BL_src - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\B.blend.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\Bfont.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\bfont.ttf.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\blenderbuttons.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\booleanops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\booleanops_mesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\butspace.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\buttons_editing.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\buttons_logic.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\buttons_object.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\buttons_scene.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\buttons_script.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\buttons_shading.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\cmap.tga.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\cmovie.tga.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\cursors.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\makesdna\intern\dna.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawaction.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawarmature.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawdeps.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawimage.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawimasel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawipo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawmesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawnla.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawnode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawoops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawscene.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawscript.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawseq.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawsound.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawtext.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawtime.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\drawview.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\edit.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editaction.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editarmature.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editconstraint.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editcurve.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editdeform.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editface.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editfont.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editgroup.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editimasel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editipo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editipo_lib.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editipo_mods.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editkey.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editlattice.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmball.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmesh.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmesh_add.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmesh_lib.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmesh_loop.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmesh_mods.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmesh_tools.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editmode_undo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editnla.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editnode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editoops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editscreen.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editseq.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editsima.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editsound.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\edittime.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\editview.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\eventdebug.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\filesel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\fluidsim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\ghostwinlay.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\glutil.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\hddaudio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_action.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_buttonswin.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_filesel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_image.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_imasel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_info.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_ipo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_nla.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_node.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_oops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_script.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_seq.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_sound.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_text.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_time.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\header_view3d.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\headerbuttons.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\imagepaint.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\imasel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\interface.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\interface_draw.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\interface_icons.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\interface_panel.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\keyval.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\language.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\lorem.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\mainqueue.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\meshtools.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\multires.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\mywindow.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\oops.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\outliner.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\parametrizer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\playanim.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\blenpluginapi\intern\pluginapi.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\poseobject.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\preview.blend.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\previewrender.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\renderwin.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\resources.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\retopo.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\scrarea.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\screendump.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\sculptmode.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\seqaudio.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\seqeffects.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\seqscopes.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\sequence.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\space.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\spacetypes.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\splash.jpg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\swapbuffers.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\toets.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\toolbox.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\transform.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\transform_constraints.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\transform_conversions.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\transform_generics.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\transform_manipulator.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\transform_numinput.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\transform_snap.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\unwrapper.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\usiblender.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\view.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\vpaint.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\writeavicodec.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\writeimage.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\writemovie.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_drawaction.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_drawmesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_drawobject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_editcurve.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_editface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_editmball.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_editobject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_sculptmode.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_unwrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BDR_vpaint.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_butspace.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_cursors.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_drawimage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_drawoops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_drawscene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_drawscript.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_drawseq.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_drawtext.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editaction.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editarmature.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editconstraint.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editdeform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editfont.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editgroup.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editkey.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editlattice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editmesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editmode_undo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editnla.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editoops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editsca.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editseq.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editsima.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editsound.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_editview.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_fsmenu.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_gl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_glutil.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_graphics.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_imasel.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_interface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_keyval.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_language.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_mainqueue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_meshtools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_mywindow.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_oops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_outliner.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_poseobject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_previewrender.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_renderwin.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_resources.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_retopo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_scrarea.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_screen.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_space.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_spacetypes.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_tbcallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_toets.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_toolbox.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_transform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_usiblender.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_writeavicodec.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_writeimage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BIF_writemovie.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\blendef.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BPI_script.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_buttons.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_drawimasel.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_drawipo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_drawnla.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_drawoops.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_drawview.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_edit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_editaction.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_editaction_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_editipo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_editipo_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_editnla_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_filesel.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_headerbuttons.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_seqaudio.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_sequence.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_time.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_trans_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_types.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\BSE_view.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\butspace.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\editmesh.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\multires.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\parametrizer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\parametrizer_intern.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\include\transform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\winlay.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/blender/src/BL_src_cre.dsp b/projectfiles/blender/src/BL_src_cre.dsp
index 1705b45a96f..448f0962dcf 100644
--- a/projectfiles/blender/src/BL_src_cre.dsp
+++ b/projectfiles/blender/src/BL_src_cre.dsp
@@ -1,102 +1,102 @@
-# Microsoft Developer Studio Project File - Name="BL_src_cre" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=BL_src_cre - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BL_src_cre.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BL_src_cre.mak" CFG="BL_src_cre - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BL_src_cre - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "BL_src_cre - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BL_src_cre - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\blender\src_cre"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src_cre"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderui" /I "..\..\..\source\gameengine\soundsystem\\" /I "..\..\..\..\lib\windows\python\include\python2.2\\" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "NAN_GAME" /D "GAME" /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\obj\windows\blender\src\BL_src_cre.lib"
-
-!ELSEIF "$(CFG)" == "BL_src_cre - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\blender\src_cre\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src_cre\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderui" /I "..\..\..\source\gameengine\soundsystem\\" /I "..\..\..\..\lib\windows\python\include\python2.2\\" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "NAN_GAME" /D "GAME" /U "_DEBUG" /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\obj\windows\blender\src\debug\BL_src_cre.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "BL_src_cre - Win32 Release"
-# Name "BL_src_cre - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\cre\license.jpeg.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\blender\src\cre\license_key.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BL_src_cre" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=BL_src_cre - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BL_src_cre.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BL_src_cre.mak" CFG="BL_src_cre - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BL_src_cre - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "BL_src_cre - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BL_src_cre - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\blender\src_cre"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src_cre"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderui" /I "..\..\..\source\gameengine\soundsystem\\" /I "..\..\..\..\lib\windows\python\include\python2.2\\" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "NAN_GAME" /D "GAME" /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\obj\windows\blender\src\BL_src_cre.lib"
+
+!ELSEIF "$(CFG)" == "BL_src_cre - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\blender\src_cre\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\blender\src_cre\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\renderui" /I "..\..\..\source\gameengine\soundsystem\\" /I "..\..\..\..\lib\windows\python\include\python2.2\\" /I "..\..\..\source\blender\renderconverter" /I "..\..\..\source\blender\verify" /I "..\..\..\source\blender\readstreamglue" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\blender\blenloader" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\radiosity\extern\include" /I "..\..\..\source\blender\render\extern\include" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\..\lib\windows\decimation\include" /I "..\..\..\source\blender\blenpluginapi\\" /I "..\..\..\..\lib\windows\blenkey\include" /I "..\..\..\..\lib\windows\pthreads\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "_CONSOLE" /D "NAN_GAME" /D "GAME" /U "_DEBUG" /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\obj\windows\blender\src\debug\BL_src_cre.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "BL_src_cre - Win32 Release"
+# Name "BL_src_cre - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\cre\license.jpeg.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\blender\src\cre\license_key.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/datatoc/datatoc.dsp b/projectfiles/datatoc/datatoc.dsp
index 4e55182bb2c..f5dd5348fda 100644
--- a/projectfiles/datatoc/datatoc.dsp
+++ b/projectfiles/datatoc/datatoc.dsp
@@ -1,100 +1,100 @@
-# Microsoft Developer Studio Project File - Name="datatoc" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=datatoc - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "datatoc.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "datatoc.mak" CFG="datatoc - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "datatoc - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "datatoc - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "datatoc - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "datatoc - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "datatoc - Win32 Release"
-# Name "datatoc - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\release\datafiles\datatoc.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="datatoc" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=datatoc - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "datatoc.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "datatoc.mak" CFG="datatoc - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "datatoc - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "datatoc - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "datatoc - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "datatoc - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "datatoc - Win32 Release"
+# Name "datatoc - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\release\datafiles\datatoc.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/blenderhook/KX_blenderhook.dsp b/projectfiles/gameengine/blenderhook/KX_blenderhook.dsp
index c3657ed30c5..f43db4bf02b 100644
--- a/projectfiles/gameengine/blenderhook/KX_blenderhook.dsp
+++ b/projectfiles/gameengine/blenderhook/KX_blenderhook.dsp
@@ -1,161 +1,161 @@
-# Microsoft Developer Studio Project File - Name="KX_blenderhook" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=KX_blenderhook - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "KX_blenderhook.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "KX_blenderhook.mak" CFG="KX_blenderhook - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "KX_blenderhook - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_blenderhook - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "KX_blenderhook - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\blenderhook"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\blenderhook"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\extern\solid" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\gameengine\Converter\\" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\gameengine\ketsji" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\blenloader" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_blenderhook - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\blenderhook\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\blenderhook\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\extern\solid" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\gameengine\Converter\\" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\gameengine\ketsji" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\blenloader" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "KX_blenderhook - Win32 Release"
-# Name "KX_blenderhook - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\BL_KetsjiEmbedStart.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderCanvas.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderGL.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderInputDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderKeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderMouseDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderPolyMaterial.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderRenderTools.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderSystem.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderCanvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderGL.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderInputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderKeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderMouseDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderPolyMaterial.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderRenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderSystem.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="KX_blenderhook" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=KX_blenderhook - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "KX_blenderhook.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "KX_blenderhook.mak" CFG="KX_blenderhook - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "KX_blenderhook - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_blenderhook - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "KX_blenderhook - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\blenderhook"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\blenderhook"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\extern\solid" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\gameengine\Converter\\" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\gameengine\ketsji" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\blenloader" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_blenderhook - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\blenderhook\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\blenderhook\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\extern\solid" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\source\gameengine\Converter\\" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\gameengine\ketsji" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\blender\misc" /I "..\..\..\source\blender\blenloader" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "KX_blenderhook - Win32 Release"
+# Name "KX_blenderhook - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\BL_KetsjiEmbedStart.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderCanvas.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderGL.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderInputDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderKeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderMouseDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderPolyMaterial.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderRenderTools.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderSystem.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderCanvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderGL.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderInputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderKeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderMouseDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderPolyMaterial.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderRenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\BlenderRoutines\KX_BlenderSystem.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/converter/KX_converter.dsp b/projectfiles/gameengine/converter/KX_converter.dsp
index 96826d3004b..5eb80f58305 100644
--- a/projectfiles/gameengine/converter/KX_converter.dsp
+++ b/projectfiles/gameengine/converter/KX_converter.dsp
@@ -1,278 +1,278 @@
-# Microsoft Developer Studio Project File - Name="KX_converter" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=KX_converter - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "KX_converter.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "KX_converter.mak" CFG="KX_converter - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "KX_converter - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_converter - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_converter - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_converter - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "KX_converter - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\source\gameengine\physics\Dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\\gameengine\physics\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SUMO_SOLID" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_converter - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter\debug"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\source\gameengine\physics\Dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\\gameengine\physics\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SUMO_SOLID" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_converter - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "KX_converter___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "KX_converter___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter\mtdll_debug"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\converter\debug\KX_converter.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_converter - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "KX_converter___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "KX_converter___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter\mtdll"
-# PROP Target_Dir ""
-MTL=midl.exe
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\converter\KX_converter.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "KX_converter - Win32 Release"
-# Name "KX_converter - Win32 Debug"
-# Name "KX_converter - Win32 MT DLL Debug"
-# Name "KX_converter - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_ActionActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_ArmatureObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_BlenderDataConversion.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_DeformableGameObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_MeshDeformer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_SkinDeformer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_SkinMeshObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BlenderWorldInfo.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Bullet\CcdPhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Bullet\CcdPhysicsEnvironment.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderScalarInterpolator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderSceneConverter.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertActuators.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertControllers.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertProperties.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertSensors.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_IpoConvert.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_ActionActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_ArmatureObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_BlenderDataConversion.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_DeformableGameObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_MeshDeformer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_SkinDeformer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BL_SkinMeshObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\BlenderWorldInfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderScalarInterpolator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderSceneConverter.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertActuators.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertControllers.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertProperties.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertSensors.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Converter\KX_IpoConvert.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="KX_converter" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=KX_converter - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "KX_converter.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "KX_converter.mak" CFG="KX_converter - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "KX_converter - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_converter - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_converter - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_converter - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "KX_converter - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\source\gameengine\physics\Dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\\gameengine\physics\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SUMO_SOLID" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_converter - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter\debug"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\source\gameengine\physics\Dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\\gameengine\physics\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /D "WIN32" /D "_MBCS" /D "_LIB" /D "USE_SUMO_SOLID" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_converter - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "KX_converter___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "KX_converter___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter\mtdll_debug"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\converter\debug\KX_converter.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_converter - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "KX_converter___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "KX_converter___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\converter\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\converter\mtdll"
+# PROP Target_Dir ""
+MTL=midl.exe
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\ode" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\gameengine\BlenderRoutines" /I "..\..\..\source\sumo\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\source\gameengine\Ketsji" /I "..\..\..\source\gameengine\SceneGraph" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\source\gameengine\soundsystem\snd_blenderwavecache" /I "..\..\..\source\blender\blenlib" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\BlOde" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\converter\KX_converter.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "KX_converter - Win32 Release"
+# Name "KX_converter - Win32 Debug"
+# Name "KX_converter - Win32 MT DLL Debug"
+# Name "KX_converter - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_ActionActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_ArmatureObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_BlenderDataConversion.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_DeformableGameObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_MeshDeformer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_SkinDeformer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_SkinMeshObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BlenderWorldInfo.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Bullet\CcdPhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Bullet\CcdPhysicsEnvironment.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderScalarInterpolator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderSceneConverter.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertActuators.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertControllers.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertProperties.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertSensors.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_IpoConvert.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_ActionActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_ArmatureObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_BlenderDataConversion.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_DeformableGameObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_MeshDeformer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_SkinDeformer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BL_SkinMeshObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\BlenderWorldInfo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderScalarInterpolator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_BlenderSceneConverter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertActuators.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertControllers.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertProperties.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_ConvertSensors.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Converter\KX_IpoConvert.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/expression/EXP_expressions.dsp b/projectfiles/gameengine/expression/EXP_expressions.dsp
index 94ded903d41..7fa6e9da45e 100644
--- a/projectfiles/gameengine/expression/EXP_expressions.dsp
+++ b/projectfiles/gameengine/expression/EXP_expressions.dsp
@@ -1,302 +1,302 @@
-# Microsoft Developer Studio Project File - Name="EXP_expressions" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=EXP_expressions - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "EXP_expressions.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "EXP_expressions.mak" CFG="EXP_expressions - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "EXP_expressions - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "EXP_expressions - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "EXP_expressions - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "EXP_expressions - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "EXP_expressions - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\intern\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "EXP_expressions - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\intern\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "EXP_expressions - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "EXP_expressions___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "EXP_expressions___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\expressions\debug\EXP_expressions.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "EXP_expressions - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "EXP_expressions___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "EXP_expressions___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\expressions\EXP_expressions.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "EXP_expressions - Win32 Release"
-# Name "EXP_expressions - Win32 Debug"
-# Name "EXP_expressions - Win32 MT DLL Debug"
-# Name "EXP_expressions - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\BoolValue.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\ConstExpr.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\EmptyValue.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\ErrorValue.cpp
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Expressions\EXP_C-Api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Expression.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\FloatValue.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\IdentifierExpr.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\IfExpr.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\InputParser.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\IntValue.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\KX_HashedPtr.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\ListValue.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Operator1Expr.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Operator2Expr.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\PyObjectPlus.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\StringValue.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Value.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\VectorValue.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\BoolValue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\ConstExpr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\EmptyValue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\ErrorValue.h
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Expressions\EXP_C-Api.h"
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Expression.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\FloatValue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\IdentifierExpr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\IfExpr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\InputParser.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\IntValue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\KX_HashedPtr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\ListValue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Operator1Expr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Operator2Expr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\PyObjectPlus.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\StringValue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\Value.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\VectorValue.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Expressions\VoidValue.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="EXP_expressions" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=EXP_expressions - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "EXP_expressions.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "EXP_expressions.mak" CFG="EXP_expressions - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "EXP_expressions - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "EXP_expressions - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "EXP_expressions - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "EXP_expressions - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "EXP_expressions - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\intern\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "EXP_expressions - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\intern\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "EXP_expressions - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "EXP_expressions___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "EXP_expressions___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\expressions\debug\EXP_expressions.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "EXP_expressions - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "EXP_expressions___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "EXP_expressions___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\expressions\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\expressions\EXP_expressions.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "EXP_expressions - Win32 Release"
+# Name "EXP_expressions - Win32 Debug"
+# Name "EXP_expressions - Win32 MT DLL Debug"
+# Name "EXP_expressions - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\BoolValue.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\ConstExpr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\EmptyValue.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\ErrorValue.cpp
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Expressions\EXP_C-Api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Expression.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\FloatValue.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\IdentifierExpr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\IfExpr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\InputParser.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\IntValue.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\KX_HashedPtr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\ListValue.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Operator1Expr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Operator2Expr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\PyObjectPlus.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\StringValue.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Value.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\VectorValue.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\BoolValue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\ConstExpr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\EmptyValue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\ErrorValue.h
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Expressions\EXP_C-Api.h"
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Expression.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\FloatValue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\IdentifierExpr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\IfExpr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\InputParser.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\IntValue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\KX_HashedPtr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\ListValue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Operator1Expr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Operator2Expr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\PyObjectPlus.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\StringValue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\Value.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\VectorValue.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Expressions\VoidValue.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gamelogic/SCA_gamelogic.dsp b/projectfiles/gameengine/gamelogic/SCA_gamelogic.dsp
index 45be1cf2772..fcdbf33a80c 100644
--- a/projectfiles/gameengine/gamelogic/SCA_gamelogic.dsp
+++ b/projectfiles/gameengine/gamelogic/SCA_gamelogic.dsp
@@ -1,406 +1,406 @@
-# Microsoft Developer Studio Project File - Name="SCA_GameLogic" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SCA_GameLogic - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SCA_GameLogic.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SCA_GameLogic.mak" CFG="SCA_GameLogic - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SCA_GameLogic - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SCA_GameLogic - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SCA_GameLogic - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SCA_GameLogic - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SCA_GameLogic - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SCA_GameLogic - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SCA_GameLogic___Win32_Debug"
-# PROP BASE Intermediate_Dir "SCA_GameLogic___Win32_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SCA_GameLogic - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SCA_GameLogic___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SCA_GameLogic___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gamelogic\debug\SCA_GameLogic.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SCA_GameLogic - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SCA_GameLogic___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SCA_GameLogic___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gamelogic\SCA_GameLogic.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "SCA_GameLogic - Win32 Release"
-# Name "SCA_GameLogic - Win32 Debug"
-# Name "SCA_GameLogic - Win32 MT DLL Debug"
-# Name "SCA_GameLogic - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Group "JoystickImp"
-
-# PROP Default_Filter "cpp"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_Joystick.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_JoystickEvents.cpp
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysEventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ANDController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_EventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ExpressionController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IScene.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ISensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_LogicManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ORController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyEventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertySensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PythonController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomEventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomNumberGenerator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_TimeEventManager.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "Joystick"
-
-# PROP Default_Filter "h"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_Joystick.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_JoystickDefines.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_JoystickPrivate.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysEventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ANDController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_EventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ExpressionController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IScene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ISensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_LogicManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ORController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyEventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertySensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PythonController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomEventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomNumberGenerator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\GameLogic\SCA_TimeEventManager.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SCA_GameLogic" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SCA_GameLogic - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SCA_GameLogic.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SCA_GameLogic.mak" CFG="SCA_GameLogic - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SCA_GameLogic - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SCA_GameLogic - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SCA_GameLogic - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SCA_GameLogic - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SCA_GameLogic - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SCA_GameLogic - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SCA_GameLogic___Win32_Debug"
+# PROP BASE Intermediate_Dir "SCA_GameLogic___Win32_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SCA_GameLogic - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SCA_GameLogic___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SCA_GameLogic___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gamelogic\debug\SCA_GameLogic.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SCA_GameLogic - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SCA_GameLogic___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SCA_GameLogic___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\gamelogic\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\sdl\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gamelogic\SCA_GameLogic.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "SCA_GameLogic - Win32 Release"
+# Name "SCA_GameLogic - Win32 Debug"
+# Name "SCA_GameLogic - Win32 MT DLL Debug"
+# Name "SCA_GameLogic - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Group "JoystickImp"
+
+# PROP Default_Filter "cpp"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_Joystick.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_JoystickEvents.cpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysEventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ANDController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_EventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ExpressionController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IScene.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ISensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_LogicManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ORController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyEventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertySensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PythonController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomEventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomNumberGenerator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_TimeEventManager.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "Joystick"
+
+# PROP Default_Filter "h"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_Joystick.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_JoystickDefines.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\Joystick\SCA_JoystickPrivate.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysEventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_AlwaysSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ANDController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_EventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ExpressionController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_IScene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ISensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_JoystickSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_KeyboardSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_LogicManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_MouseSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_ORController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertyEventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PropertySensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_PythonController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomEventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomNumberGenerator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_RandomSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\GameLogic\SCA_TimeEventManager.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/axctl/GP_axctl.dsp b/projectfiles/gameengine/gameplayer/axctl/GP_axctl.dsp
index 99b6798bf59..56ba052b32d 100644
--- a/projectfiles/gameengine/gameplayer/axctl/GP_axctl.dsp
+++ b/projectfiles/gameengine/gameplayer/axctl/GP_axctl.dsp
@@ -1,253 +1,253 @@
-# Microsoft Developer Studio Project File - Name="GP_axctl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=GP_axctl - Win32 MT DLL Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_axctl.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_axctl.mak" CFG="GP_axctl - Win32 MT DLL Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_axctl - Win32 MT DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "GP_axctl - Win32 MT DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_axctl - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 2
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "GP_axctl___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "GP_axctl___Win32_MT_DLL_Debug"
-# PROP BASE Target_Ext "ocx"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll_debug"
-# PROP Target_Ext "ocx"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /FR /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\GamePlayer\common" /I "..\..\..\..\source\gameengine\GamePlayer\common\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /U "_DEBUG" /YX /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 opengl32.lib glu32.lib glaux.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/ActiveXgp.ocx" /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-# SUBTRACT BASE LINK32 /nodefaultlib
-# ADD LINK32 openal_static.lib libmoto.a libguardedalloc.a libbmfont.a libstring.a ws2_32.lib opengl32.lib glu32.lib glaux.lib dxguid.lib ole32.lib vfw32.lib libblenkey.a libeay32.lib libz.a libpng.a libjpeg.a odelib.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"msvcrt.lib" /out:"..\..\..\..\obj\windows\debug\Blender3DPlugin.ocx" /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\ode\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\openal\lib" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib" /libpath:"../../../../../lib/windows/bmfont/lib" /libpath:"../../../../../lib/windows/string/lib" /libpath:"../../../../../lib/windows/python/lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont/lib" /libpath:"..\..\..\..\..\lib\windows\string\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib\\" /libpath:"..\..\..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib"
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF "$(CFG)" == "GP_axctl - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 2
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "GP_axctl___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "GP_axctl___Win32_MT_DLL_Release"
-# PROP BASE Target_Ext "ocx"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 2
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll"
-# PROP Target_Ext "ocx"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\GamePlayer\common" /I "..\..\..\..\source\gameengine\GamePlayer\common\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
-# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 opengl32.lib glu32.lib glaux.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release/ActiveXgp.ocx"
-# ADD LINK32 openal_static.lib libmoto.a libguardedalloc.a libbmfont.a libstring.a ws2_32.lib opengl32.lib glu32.lib glaux.lib dxguid.lib ole32.lib vfw32.lib libblenkey.a libeay32.lib libz.a libpng.a libjpeg.a odelib.lib /nologo /subsystem:windows /dll /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"msvcrtd.lib" /out:"..\..\..\..\obj\windows\Blender3DPlugin.ocx" /libpath:"..\..\..\..\..\lib\windows\ode\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\openal\lib" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont/lib" /libpath:"..\..\..\..\..\lib\windows\string\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib"
-# SUBTRACT LINK32 /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_axctl - Win32 MT DLL Debug"
-# Name "GP_axctl - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderDataPathProperty.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.odl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.rc
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerCtl.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerPpg.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\CControlRefresher.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\MemoryResource.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\RawImageRsrc.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\SafeControl.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\StdAfx.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderDataPathProperty.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerCtl.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerPpg.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\CControlRefresher.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\MemoryResource.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\RawImageRsrc.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\Resource.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\SafeControl.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.ico
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerCtl.bmp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\splash.bmp
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\ActiveXandNetscapeTest.html
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.html
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerDuo.html
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\load.blend
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\logo_blender.raw
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\logo_blender3d.raw
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\logo_nan.raw
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\ReadMe.txt
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\ReadMeBuilding.txt
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_axctl" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=GP_axctl - Win32 MT DLL Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_axctl.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_axctl.mak" CFG="GP_axctl - Win32 MT DLL Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_axctl - Win32 MT DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "GP_axctl - Win32 MT DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_axctl - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 2
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "GP_axctl___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "GP_axctl___Win32_MT_DLL_Debug"
+# PROP BASE Target_Ext "ocx"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 2
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll_debug"
+# PROP Target_Ext "ocx"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\GamePlayer\common" /I "..\..\..\..\source\gameengine\GamePlayer\common\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /U "_DEBUG" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
+# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 opengl32.lib glu32.lib glaux.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug/ActiveXgp.ocx" /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+# SUBTRACT BASE LINK32 /nodefaultlib
+# ADD LINK32 openal_static.lib libmoto.a libguardedalloc.a libbmfont.a libstring.a ws2_32.lib opengl32.lib glu32.lib glaux.lib dxguid.lib ole32.lib vfw32.lib libblenkey.a libeay32.lib libz.a libpng.a libjpeg.a odelib.lib /nologo /subsystem:windows /dll /debug /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"msvcrt.lib" /out:"..\..\..\..\obj\windows\debug\Blender3DPlugin.ocx" /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\ode\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\openal\lib" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib" /libpath:"../../../../../lib/windows/bmfont/lib" /libpath:"../../../../../lib/windows/string/lib" /libpath:"../../../../../lib/windows/python/lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont/lib" /libpath:"..\..\..\..\..\lib\windows\string\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib\\" /libpath:"..\..\..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "GP_axctl - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 2
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "GP_axctl___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "GP_axctl___Win32_MT_DLL_Release"
+# PROP BASE Target_Ext "ocx"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 2
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\axctl\mtdll"
+# PROP Target_Ext "ocx"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\GamePlayer\common" /I "..\..\..\..\source\gameengine\GamePlayer\common\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
+# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 opengl32.lib glu32.lib glaux.lib /nologo /subsystem:windows /dll /machine:I386 /out:"Release/ActiveXgp.ocx"
+# ADD LINK32 openal_static.lib libmoto.a libguardedalloc.a libbmfont.a libstring.a ws2_32.lib opengl32.lib glu32.lib glaux.lib dxguid.lib ole32.lib vfw32.lib libblenkey.a libeay32.lib libz.a libpng.a libjpeg.a odelib.lib /nologo /subsystem:windows /dll /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"msvcrtd.lib" /out:"..\..\..\..\obj\windows\Blender3DPlugin.ocx" /libpath:"..\..\..\..\..\lib\windows\ode\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\openal\lib" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont/lib" /libpath:"..\..\..\..\..\lib\windows\string\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib\mt_dll" /libpath:"..\..\..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_axctl - Win32 MT DLL Debug"
+# Name "GP_axctl - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderDataPathProperty.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.def
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.odl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerCtl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerPpg.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\CControlRefresher.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\MemoryResource.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\RawImageRsrc.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\SafeControl.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\StdAfx.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderDataPathProperty.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerCtl.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerPpg.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\CControlRefresher.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\MemoryResource.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\RawImageRsrc.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\Resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\SafeControl.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.ico
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerCtl.bmp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\splash.bmp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\ActiveXandNetscapeTest.html
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayer.html
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\BlenderPlayerDuo.html
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\load.blend
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\logo_blender.raw
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\logo_blender3d.raw
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\logo_nan.raw
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\ReadMe.txt
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ActiveX\ReadMeBuilding.txt
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/common/GP_common.dsp b/projectfiles/gameengine/gameplayer/common/GP_common.dsp
index c1509608731..d3103c4f88a 100644
--- a/projectfiles/gameengine/gameplayer/common/GP_common.dsp
+++ b/projectfiles/gameengine/gameplayer/common/GP_common.dsp
@@ -1,255 +1,255 @@
-# Microsoft Developer Studio Project File - Name="GP_common" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=GP_common - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_common.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_common.mak" CFG="GP_common - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_common - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "GP_common - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "GP_common - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "GP_common - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_common - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "GP_common - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /FD /GZ /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "GP_common - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "GP_common___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "GP_common___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gameplayer\common\debug\GP_common.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "GP_common - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "GP_common___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "GP_common___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gameplayer\common\GP_common.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_common - Win32 Release"
-# Name "GP_common - Win32 Debug"
-# Name "GP_common - Win32 MT DLL Debug"
-# Name "GP_common - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\bmfont.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Canvas.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Engine.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_KeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_MouseDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_PolygonMaterial.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawImage.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawLoadDotBlendArray.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawLogoArrays.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RenderTools.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_System.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Canvas.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Engine.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_KeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_System.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Canvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Engine.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_KeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_MouseDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_PolygonMaterial.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_System.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Canvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Engine.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_KeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_System.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\Makefile
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_common" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=GP_common - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_common.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_common.mak" CFG="GP_common - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_common - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "GP_common - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "GP_common - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "GP_common - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_common - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "GP_common - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /FD /GZ /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "GP_common - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "GP_common___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "GP_common___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gameplayer\common\debug\GP_common.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "GP_common - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "GP_common___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "GP_common___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\common\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\..\source\gameengine\Converter" /I "..\..\..\..\source\gameengine\soundsystem\snd_dummy" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\GamePlayer\common\\" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\gameplayer\common\GP_common.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_common - Win32 Release"
+# Name "GP_common - Win32 Debug"
+# Name "GP_common - Win32 MT DLL Debug"
+# Name "GP_common - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\bmfont.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Canvas.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Engine.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_KeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_MouseDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_PolygonMaterial.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawImage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawLoadDotBlendArray.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawLogoArrays.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RenderTools.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_System.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Canvas.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Engine.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_KeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_System.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Canvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_Engine.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_KeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_MouseDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_PolygonMaterial.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_RenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\GPC_System.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Canvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_Engine.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_KeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\windows\GPW_System.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\common\Makefile
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/ghost/GP_ghost.dsp b/projectfiles/gameengine/gameplayer/ghost/GP_ghost.dsp
index d569d6fceac..63ce23d2647 100644
--- a/projectfiles/gameengine/gameplayer/ghost/GP_ghost.dsp
+++ b/projectfiles/gameengine/gameplayer/ghost/GP_ghost.dsp
@@ -1,156 +1,156 @@
-# Microsoft Developer Studio Project File - Name="GP_ghost" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=GP_ghost - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_ghost.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_ghost.mak" CFG="GP_ghost - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_ghost - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "GP_ghost - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_ghost - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ghost\"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\gameengine\Physics\Ode" /I "..\..\..\..\source\gameengine\Physics" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/readblenfile" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\ghost\include" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libguardedalloc.a libstring.a libghost.a odelib.lib fmodvc.lib libbmfont.a ws2_32.lib kernel32.lib user32.lib gdi32.lib vfw32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.a opengl32.lib glu32.lib openal_static.lib dxguid.lib libblenkey.a libeay32.lib libpng.a libz.a libmoto.a /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib:"msvcrtd.lib" /nodefaultlib:"msvcprt.lib" /out:"..\..\..\..\obj\windows\blenderplayer.exe" /libpath:"..\..\..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont\lib" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\string\lib" /libpath:"..\..\..\..\..\lib\windows\ghost\lib" /libpath:"..\..\..\..\..\lib\windows\jpeg/lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib" /libpath:"..\..\..\..\..\lib\windows\zlib\lib" /libpath:"..\..\..\..\..\lib\windows\ode-0.03\lib" /libpath:"../../../../../lib/windows/fmod/lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\"
-# SUBTRACT LINK32 /pdb:none
-
-!ELSEIF "$(CFG)" == "GP_ghost - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ghost\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Physics\Ode" /I "..\..\..\..\source\gameengine\Physics" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/readblenfile" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\ghost\include" /I "../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "dSINGLE" /U "_DEBUG" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 libguardedalloc.a libstring.a libghost.a odelib.lib fmodvc.lib libbmfont.a ws2_32.lib kernel32.lib user32.lib gdi32.lib vfw32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.a dxguid.lib libblenkey.a libeay32.lib libpng.a libz.a libmoto.a /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib:"msvcrtd.lib" /nodefaultlib:"msvcprtd.lib" /out:"..\..\..\..\obj\windows\debug\blenderplayer.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont\lib\\" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\string\lib\\" /libpath:"..\..\..\..\..\lib\windows\ghost\lib\\" /libpath:"..\..\..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib\\" /libpath:"..\..\..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib\\" /libpath:"..\..\..\..\..\lib\windows\ode-0.03\lib" /libpath:"../../../../../lib/windows/fmod/lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\"
-# SUBTRACT LINK32 /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_ghost - Win32 Release"
-# Name "GP_ghost - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Application.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Canvas.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_ghost.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_KeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_System.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\icons\winplayer.rc
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Application.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Canvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_KeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_System.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\icons\winplayer.ico
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\Makefile
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_ghost" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=GP_ghost - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_ghost.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_ghost.mak" CFG="GP_ghost - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_ghost - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "GP_ghost - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_ghost - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ghost\"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\gameengine\Physics\Ode" /I "..\..\..\..\source\gameengine\Physics" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/readblenfile" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\ghost\include" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 libguardedalloc.a libstring.a libghost.a odelib.lib fmodvc.lib libbmfont.a ws2_32.lib kernel32.lib user32.lib gdi32.lib vfw32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.a opengl32.lib glu32.lib openal_static.lib dxguid.lib libblenkey.a libeay32.lib libpng.a libz.a libmoto.a /nologo /subsystem:console /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib:"msvcrtd.lib" /nodefaultlib:"msvcprt.lib" /out:"..\..\..\..\obj\windows\blenderplayer.exe" /libpath:"..\..\..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont\lib" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\string\lib" /libpath:"..\..\..\..\..\lib\windows\ghost\lib" /libpath:"..\..\..\..\..\lib\windows\jpeg/lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib" /libpath:"..\..\..\..\..\lib\windows\zlib\lib" /libpath:"..\..\..\..\..\lib\windows\ode-0.03\lib" /libpath:"../../../../../lib/windows/fmod/lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\"
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "GP_ghost - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ghost\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Physics\Ode" /I "..\..\..\..\source\gameengine\Physics" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\bmfont\include" /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/readblenfile" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\ghost\include" /I "../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "dSINGLE" /U "_DEBUG" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 libguardedalloc.a libstring.a libghost.a odelib.lib fmodvc.lib libbmfont.a ws2_32.lib kernel32.lib user32.lib gdi32.lib vfw32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.a dxguid.lib libblenkey.a libeay32.lib libpng.a libz.a libmoto.a /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libc.lib" /nodefaultlib:"libcmt.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib:"msvcrtd.lib" /nodefaultlib:"msvcprtd.lib" /out:"..\..\..\..\obj\windows\debug\blenderplayer.exe" /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\ode\lib" /libpath:"..\..\..\..\..\lib\windows\bmfont\lib\\" /libpath:"..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"..\..\..\..\..\lib\windows\string\lib\\" /libpath:"..\..\..\..\..\lib\windows\ghost\lib\\" /libpath:"..\..\..\..\..\lib\windows\jpeg\lib" /libpath:"..\..\..\..\..\lib\windows\moto\lib\\" /libpath:"..\..\..\..\..\lib\windows\zlib\lib\\" /libpath:"..\..\..\..\..\lib\windows\png\lib\\" /libpath:"..\..\..\..\..\lib\windows\ode-0.03\lib" /libpath:"../../../../../lib/windows/fmod/lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib\\"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_ghost - Win32 Release"
+# Name "GP_ghost - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Application.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Canvas.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_ghost.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_KeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_System.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\icons\winplayer.rc
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Application.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_Canvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_KeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_System.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\icons\winplayer.ico
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\ghost\Makefile
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/glut/GP_glut.dsp b/projectfiles/gameengine/gameplayer/glut/GP_glut.dsp
index 64315293ac6..7e3a2060f92 100644
--- a/projectfiles/gameengine/gameplayer/glut/GP_glut.dsp
+++ b/projectfiles/gameengine/gameplayer/glut/GP_glut.dsp
@@ -1,205 +1,205 @@
-# Microsoft Developer Studio Project File - Name="GP_glut" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=GP_glut - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_glut.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_glut.mak" CFG="GP_glut - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_glut - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "GP_glut - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "GP_glut - Win32 Profile" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_glut - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\glut"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\source\gameengine\SoundSystem" /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-
-!ELSEIF "$(CFG)" == "GP_glut - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\glut\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\source\gameengine\SoundSystem" /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-
-!ELSEIF "$(CFG)" == "GP_glut - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "GP_glut___Win32_Profile"
-# PROP BASE Intermediate_Dir "GP_glut___Win32_Profile"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "GP_glut___Win32_Profile"
-# PROP Intermediate_Dir "GP_glut___Win32_Profile"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\source\gameengine\SoundSystem" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\source\gameengine\SoundSystem" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-# ADD LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_glut - Win32 Release"
-# Name "GP_glut - Win32 Debug"
-# Name "GP_glut - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutGamePlayer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutKeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutSystem.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutCanvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutInputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutKeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutPolygonMaterial.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutRenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutSystem.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\alc\ALc.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\alu\ALu.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\alut\ALut.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alBuffer.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alEax.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alError.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alExtension.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alListener.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alSource.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alState.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\OpenAL32.obj
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_glut" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=GP_glut - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_glut.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_glut.mak" CFG="GP_glut - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_glut - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "GP_glut - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "GP_glut - Win32 Profile" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_glut - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\glut"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\source\gameengine\SoundSystem" /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+
+!ELSEIF "$(CFG)" == "GP_glut - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\glut\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\source\gameengine\SoundSystem" /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+
+!ELSEIF "$(CFG)" == "GP_glut - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "GP_glut___Win32_Profile"
+# PROP BASE Intermediate_Dir "GP_glut___Win32_Profile"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "GP_glut___Win32_Profile"
+# PROP Intermediate_Dir "GP_glut___Win32_Profile"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\source\gameengine\SoundSystem" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\glut-3.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\source\gameengine\SoundSystem" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+# ADD LINK32 glu32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\glut-3.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_glut - Win32 Release"
+# Name "GP_glut - Win32 Debug"
+# Name "GP_glut - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutGamePlayer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutKeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutSystem.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutCanvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutInputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutKeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutPolygonMaterial.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutRenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Glut\GlutSystem.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\alc\ALc.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\alu\ALu.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\alut\ALut.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alBuffer.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alEax.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alError.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alExtension.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alListener.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alSource.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alState.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\OpenAL32.obj
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/loader/BlenderLoader/BlenderLoader.dsp b/projectfiles/gameengine/gameplayer/loader/BlenderLoader/BlenderLoader.dsp
index 1af82b0644f..eb16fea9fd2 100644
--- a/projectfiles/gameengine/gameplayer/loader/BlenderLoader/BlenderLoader.dsp
+++ b/projectfiles/gameengine/gameplayer/loader/BlenderLoader/BlenderLoader.dsp
@@ -1,206 +1,206 @@
-# Microsoft Developer Studio Project File - Name="BlenderLoader" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=BlenderLoader - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "BlenderLoader.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "BlenderLoader.mak" CFG="BlenderLoader - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "BlenderLoader - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "BlenderLoader - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "BlenderLoader - Win32 Profile" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "BlenderLoader - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader"
-# PROP Intermediate_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../../../../lib/windows/python/include/python2.0" /I "../../../../../source/blender/encrypt" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /I "../../../../../source/gameengine/SoundSystem/SND_Dummy" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 libguardedalloc.a libmoto.a sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\..\obj\windows\BlenderLoader.exe" /libpath:"../../../../../../lib/windows/moto/lib" /libpath:"..\..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
-
-!ELSEIF "$(CFG)" == "BlenderLoader - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader\debug"
-# PROP Intermediate_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "../../../../../../lib/windows/python/include/python1.5" /I "../../../../../source/blender/encrypt" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fr /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 sdldebug.lib libguardedalloc.a libmoto.a sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\..\obj\windows\debug\BlenderLoader.exe" /pdbtype:sept /libpath:"..\..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
-
-!ELSEIF "$(CFG)" == "BlenderLoader - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "BlenderLoader___Win32_Profile"
-# PROP BASE Intermediate_Dir "BlenderLoader___Win32_Profile"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "BlenderLoader___Win32_Profile"
-# PROP Intermediate_Dir "BlenderLoader___Win32_Profile"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../../../../lib/windows/python/include/python1.5" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# SUBTRACT BASE CPP /Fr
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "../../../../../../lib/windows/python/include/python1.5" /I "../../../../../source/blender/encrypt" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 sdldebug.lib sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\..\obj\windows\debug\BlenderLoader.exe" /pdbtype:sept /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
-# ADD LINK32 sdldebug.lib libguardedalloc.a libmoto.a sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\..\obj\windows\profile\BlenderLoader.exe" /pdbtype:sept /libpath:"..\..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "BlenderLoader - Win32 Release"
-# Name "BlenderLoader - Win32 Debug"
-# Name "BlenderLoader - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\blender\makesdna\intern\dna.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\loader.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLKeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLSystem.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLCanvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLInputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLKeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLSystem.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\alc\ALc.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\alu\ALu.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\alut\ALut.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alBuffer.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alEax.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alError.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alExtension.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alListener.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alSource.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alState.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\OpenAL32.obj
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="BlenderLoader" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=BlenderLoader - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "BlenderLoader.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "BlenderLoader.mak" CFG="BlenderLoader - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "BlenderLoader - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "BlenderLoader - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "BlenderLoader - Win32 Profile" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "BlenderLoader - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader"
+# PROP Intermediate_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "../../../../../../lib/windows/python/include/python2.0" /I "../../../../../source/blender/encrypt" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /I "../../../../../source/gameengine/SoundSystem/SND_Dummy" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 libguardedalloc.a libmoto.a sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\..\..\..\obj\windows\BlenderLoader.exe" /libpath:"../../../../../../lib/windows/moto/lib" /libpath:"..\..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
+
+!ELSEIF "$(CFG)" == "BlenderLoader - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader\debug"
+# PROP Intermediate_Dir "..\..\..\..\..\..\obj\windows\gameengine\gameplayer\BlenderLoader\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "../../../../../../lib/windows/python/include/python1.5" /I "../../../../../source/blender/encrypt" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fr /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 sdldebug.lib libguardedalloc.a libmoto.a sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\..\obj\windows\debug\BlenderLoader.exe" /pdbtype:sept /libpath:"..\..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
+
+!ELSEIF "$(CFG)" == "BlenderLoader - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "BlenderLoader___Win32_Profile"
+# PROP BASE Intermediate_Dir "BlenderLoader___Win32_Profile"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "BlenderLoader___Win32_Profile"
+# PROP Intermediate_Dir "BlenderLoader___Win32_Profile"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../../../../lib/windows/python/include/python1.5" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# SUBTRACT BASE CPP /Fr
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "../../../../../../lib/windows/python/include/python1.5" /I "../../../../../source/blender/encrypt" /I "../../../../../source/blender/blenkernel" /I "../../../../../source/blender/makesdna" /I "../../../../../source/blender/blenlib" /I "../../../../../source/blender/blenloader" /I "../../../../../source/blender/render/extern/include" /I "../../../../../source/gameengine/Rasterizer" /I "../../../../../../lib\windows\sdl\SDL-1.1.7\include" /I "../../../../../source/gameengine/GameLogic" /I "..\..\..\..\..\source\sumo\include" /I "..\..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\source\kernel\gen_system" /I "../../../../../source/blender/imbuf" /I "../../../../../source/gameengine/SoundSystem" /I "../../../../../source/gameengine/SoundSystem/SND_OpenAL" /I "../../../../../source/gameengine/Ketsji" /I "../../../../../source/gameengine/Expressions" /I "../../../../../source/gameengine/SceneGraph" /I "../../../../../source/gameengine/ketsji/kxnetwork" /I "../../../../../source/gameengine/network" /I "../../../../../source/gameengine/network/loopbacknetwork" /I "../../../../../source/gameengine/GamePlayer/common" /I "../../../../../../lib/windows/iksolver/include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 sdldebug.lib sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\..\obj\windows\debug\BlenderLoader.exe" /pdbtype:sept /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
+# ADD LINK32 sdldebug.lib libguardedalloc.a libmoto.a sdlmain.lib sdl.lib dxguid.lib ole32.lib libjpeg.lib glu32.lib opengl32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\..\..\..\obj\windows\profile\BlenderLoader.exe" /pdbtype:sept /libpath:"..\..\..\..\..\..\lib\windows\guardedalloc\lib" /libpath:"../../../../../../lib/windows/python/lib" /libpath:"../../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../../lib/windows/sdl/SDL-1.1.7\Lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "BlenderLoader - Win32 Release"
+# Name "BlenderLoader - Win32 Debug"
+# Name "BlenderLoader - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\blender\makesdna\intern\dna.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\loader.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLKeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLSystem.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLCanvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLInputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLKeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\GamePlayer\Loaders\Blender\SDLSystem.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\alc\ALc.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\alu\ALu.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\alut\ALut.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alBuffer.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alEax.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alError.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alExtension.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alListener.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alSource.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alState.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\..\lib\windows\openal\lib\OpenAL32\OpenAL32.obj
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/netscape/GP_netscape.dsp b/projectfiles/gameengine/gameplayer/netscape/GP_netscape.dsp
index 60dc29e4918..e3145b14931 100644
--- a/projectfiles/gameengine/gameplayer/netscape/GP_netscape.dsp
+++ b/projectfiles/gameengine/gameplayer/netscape/GP_netscape.dsp
@@ -1,173 +1,173 @@
-# Microsoft Developer Studio Project File - Name="GP_netscape" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=GP_netscape - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_netscape.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_netscape.mak" CFG="GP_netscape - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_netscape - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "GP_netscape - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "GP_netscape - Win32 Profile" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_netscape - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ".\Release"
-# PROP BASE Intermediate_Dir ".\Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
-# PROP Intermediate_Dir ".\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\..\lib\windows\iksolver\include" /I "../../../../../lib/windows/moto/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib libblenkey.a libz.a /nologo /subsystem:windows /dll /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\iksolver\lib\\"
-
-!ELSEIF "$(CFG)" == "GP_netscape - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ".\Debug"
-# PROP BASE Intermediate_Dir ".\Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
-# PROP Intermediate_Dir ".\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /I "../../../../../lib/windows/moto/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib libblenkey.a libz.a kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib python15.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\iksolver\lib\\"
-
-!ELSEIF "$(CFG)" == "GP_netscape - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "GP_netscape___Win32_Profile"
-# PROP BASE Intermediate_Dir "GP_netscape___Win32_Profile"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "GP_netscape___Win32_Profile"
-# PROP Intermediate_Dir "GP_netscape___Win32_Profile"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_netscape - Win32 Release"
-# Name "GP_netscape - Win32 Debug"
-# Name "GP_netscape - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\BlenderPlayer.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\netscape_plugin_Plugin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\npblender.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\npblender.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\npblender.rc
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\npwin.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\NSPlugin\autodownload.html
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\Testing\NetscapeExample.html
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_netscape" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=GP_netscape - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_netscape.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_netscape.mak" CFG="GP_netscape - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_netscape - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "GP_netscape - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "GP_netscape - Win32 Profile" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_netscape - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Release"
+# PROP BASE Intermediate_Dir ".\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
+# PROP Intermediate_Dir ".\Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\..\lib\windows\iksolver\include" /I "../../../../../lib/windows/moto/include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib libblenkey.a libz.a /nologo /subsystem:windows /dll /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\iksolver\lib\\"
+
+!ELSEIF "$(CFG)" == "GP_netscape - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Debug"
+# PROP BASE Intermediate_Dir ".\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
+# PROP Intermediate_Dir ".\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /I "../../../../../lib/windows/moto/include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib libblenkey.a libz.a kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib python15.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\iksolver\lib\\"
+
+!ELSEIF "$(CFG)" == "GP_netscape - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "GP_netscape___Win32_Profile"
+# PROP BASE Intermediate_Dir "GP_netscape___Win32_Profile"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "GP_netscape___Win32_Profile"
+# PROP Intermediate_Dir "GP_netscape___Win32_Profile"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_netscape - Win32 Release"
+# Name "GP_netscape - Win32 Debug"
+# Name "GP_netscape - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\BlenderPlayer.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\netscape_plugin_Plugin.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\npblender.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\npblender.def
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\npblender.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\windows\npwin.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\NSPlugin\autodownload.html
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\Testing\NetscapeExample.html
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/netscape2/GP_netscape.dsp b/projectfiles/gameengine/gameplayer/netscape2/GP_netscape.dsp
index e065ac280b7..5ebdc5c9b7d 100644
--- a/projectfiles/gameengine/gameplayer/netscape2/GP_netscape.dsp
+++ b/projectfiles/gameengine/gameplayer/netscape2/GP_netscape.dsp
@@ -1,181 +1,181 @@
-# Microsoft Developer Studio Project File - Name="GP_netscape2" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=GP_netscape2 - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_netscape.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_netscape.mak" CFG="GP_netscape2 - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_netscape2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "GP_netscape2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "GP_netscape2 - Win32 Profile" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_netscape2 - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir ".\Release"
-# PROP BASE Intermediate_Dir ".\Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
-# PROP Intermediate_Dir ".\Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\gameplayer\Netscape2\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 libblenkey.a libeay32.lib libz.a ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\npBlender3DPlugin.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\iksolver\lib\\" /libpath:"../../../../../lib/windows/openal/lib"
-
-!ELSEIF "$(CFG)" == "GP_netscape2 - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir ".\Debug"
-# PROP BASE Intermediate_Dir ".\Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
-# PROP Intermediate_Dir ".\Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\gameplayer\Netscape2\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 libblenkey.a libeay32.lib libz.a ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\npBlender3DPlugin.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\lib\windows\iksolver\lib\\"
-
-!ELSEIF "$(CFG)" == "GP_netscape2 - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "GP_netscape2___Win32_Profile"
-# PROP BASE Intermediate_Dir "GP_netscape2___Win32_Profile"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "GP_netscape2___Win32_Profile"
-# PROP Intermediate_Dir "GP_netscape2___Win32_Profile"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\gameplayer\Netscape2\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
-# SUBTRACT CPP /Fr
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
-# ADD LINK32 libblenkey.a libeay32.lib libz.a ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\npBlender3DPlugin.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_netscape2 - Win32 Release"
-# Name "GP_netscape2 - Win32 Debug"
-# Name "GP_netscape2 - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\Blender3DPlugin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\netscape_plugin_Plugin.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\npblender.def
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\npblender.rc
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\npshell.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\npwin.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\plgwnd.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\plgwnd.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\NSPlugin\autodownload.html
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\Testing\NetscapeExample.html
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_netscape2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=GP_netscape2 - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_netscape.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_netscape.mak" CFG="GP_netscape2 - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_netscape2 - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "GP_netscape2 - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "GP_netscape2 - Win32 Profile" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_netscape2 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Release"
+# PROP BASE Intermediate_Dir ".\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
+# PROP Intermediate_Dir ".\Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\gameplayer\Netscape2\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 libblenkey.a libeay32.lib libz.a ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\npBlender3DPlugin.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\..\..\lib\windows\iksolver\lib\\" /libpath:"../../../../../lib/windows/openal/lib"
+
+!ELSEIF "$(CFG)" == "GP_netscape2 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Debug"
+# PROP BASE Intermediate_Dir ".\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "C:\Program Files\Netscape\Communicator\Program\Plugins"
+# PROP Intermediate_Dir ".\Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\gameplayer\Netscape2\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /FR /YX /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 libblenkey.a libeay32.lib libz.a ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\npBlender3DPlugin.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib" /libpath:"../../../../../lib/windows/zlib/lib/" /libpath:"..\..\..\..\..\lib\windows\blenkey\lib" /libpath:"..\..\..\lib\windows\openssl\lib" /libpath:"..\..\..\lib\windows\iksolver\lib\\"
+
+!ELSEIF "$(CFG)" == "GP_netscape2 - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "GP_netscape2___Win32_Profile"
+# PROP BASE Intermediate_Dir "GP_netscape2___Win32_Profile"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "GP_netscape2___Win32_Profile"
+# PROP Intermediate_Dir "GP_netscape2___Win32_Profile"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FR /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_messaging" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer" /I "..\..\..\..\source\gameengine\scenegraph" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\soundsystem" /I "..\..\..\..\source\gameengine\soundsystem\snd_openal" /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows_sdk" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\..\lib\windows\openal\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "../../../../source/blender/blenkernel" /I "../../../../source/blender/makesdna" /I "../../../../source/blender/blenlib" /I "../../../../source/blender/blenloader" /I "../../../../source/blender/render/extern/include" /I "../../../../source/blender/imbuf" /I "..\..\..\..\source\gameengine\converter" /I "..\..\..\..\source\gameengine\gameplayer\common\windows" /I "..\..\..\..\source\gameengine\gameplayer\Netscape2\windows" /I "..\..\..\..\..\lib\windows\iksolver\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /YX /FD /c
+# SUBTRACT CPP /Fr
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\NPBlender.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
+# ADD LINK32 libblenkey.a libeay32.lib libz.a ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libjpeg.lib opengl32.lib glu32.lib openal_static.lib dxguid.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"C:\Program Files\Netscape\Communicator\Program\Plugins\npBlender3DPlugin.dll" /libpath:"../../../../../lib/windows/python/lib" /libpath:"../../../../../lib/windows/jpeg/lib" /libpath:"../../../../../lib/windows/openal/lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_netscape2 - Win32 Release"
+# Name "GP_netscape2 - Win32 Debug"
+# Name "GP_netscape2 - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\Blender3DPlugin.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\makesdna\intern\dna.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\netscape_plugin_Plugin.c
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\npblender.def
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\npblender.rc
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\npshell.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\npwin.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape2\windows\plgwnd.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\blender\blenkernel\bad_level_call_stubs\stubs.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\plgwnd.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\NSPlugin\autodownload.html
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Netscape\Testing\NetscapeExample.html
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/ps2/GP_ps2.dsp b/projectfiles/gameengine/gameplayer/ps2/GP_ps2.dsp
index 84aa94ef1a5..6fc1d06c3f1 100644
--- a/projectfiles/gameengine/gameplayer/ps2/GP_ps2.dsp
+++ b/projectfiles/gameengine/gameplayer/ps2/GP_ps2.dsp
@@ -1,182 +1,182 @@
-# Microsoft Developer Studio Project File - Name="GP_ps2" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=GP_ps2 - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_ps2.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_ps2.mak" CFG="GP_ps2 - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_ps2 - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "GP_ps2 - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "GP_ps2 - Win32 Profile" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_ps2 - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ps2"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-
-!ELSEIF "$(CFG)" == "GP_ps2 - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ps2\debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ELSEIF "$(CFG)" == "GP_ps2 - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "GP_ps2___Win32_Profile"
-# PROP BASE Intermediate_Dir "GP_ps2___Win32_Profile"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "GP_ps2___Win32_Profile"
-# PROP Intermediate_Dir "GP_ps2___Win32_Profile"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_ps2 - Win32 Release"
-# Name "GP_ps2 - Win32 Debug"
-# Name "GP_ps2 - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\DebugActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\GPC_Init.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2DualShockDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2GamePlayer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2System.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\DebugActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\ExampleEngine.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\GPC_Init.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2Canvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2DualShockDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2InputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2Rasterizer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2RenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2System.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\SamplePolygonMaterial.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_ps2" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=GP_ps2 - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_ps2.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_ps2.mak" CFG="GP_ps2 - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_ps2 - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "GP_ps2 - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "GP_ps2 - Win32 Profile" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_ps2 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ps2"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+
+!ELSEIF "$(CFG)" == "GP_ps2 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\ps2\debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ELSEIF "$(CFG)" == "GP_ps2 - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "GP_ps2___Win32_Profile"
+# PROP BASE Intermediate_Dir "GP_ps2___Win32_Profile"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "GP_ps2___Win32_Profile"
+# PROP Intermediate_Dir "GP_ps2___Win32_Profile"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\rasterizer" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_ps2 - Win32 Release"
+# Name "GP_ps2 - Win32 Debug"
+# Name "GP_ps2 - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\DebugActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\GPC_Init.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2DualShockDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2GamePlayer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2System.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\DebugActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\ExampleEngine.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\GPC_Init.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2Canvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2DualShockDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2InputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2Rasterizer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2RenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\PS2System.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\PS2\SamplePolygonMaterial.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/qt/gp.dsp b/projectfiles/gameengine/gameplayer/qt/gp.dsp
index 512c5b69de6..9f3e82b6cd6 100644
--- a/projectfiles/gameengine/gameplayer/qt/gp.dsp
+++ b/projectfiles/gameengine/gameplayer/qt/gp.dsp
@@ -1,164 +1,164 @@
-# Microsoft Developer Studio Project File - Name="gp" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Application" 0x0101
-
-CFG=gp - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gp.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gp.mak" CFG="gp - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gp - Win32 Release" (based on "Win32 (x86) Application")
-!MESSAGE "gp - Win32 Debug" (based on "Win32 (x86) Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gp - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
-# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qt.lib h:\qtwin\lib\qnp.lib python20.lib /nologo /subsystem:windows /machine:I386 /out:"..\..\..\..\..\obj\windows\gp.exe" /libpath:"..\..\..\..\..\lib\windows\python\lib\\"
-
-!ELSEIF "$(CFG)" == "gp - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp\debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /GX /Od /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32"
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qt.lib python15_d.lib /nologo /subsystem:windows /debug /machine:I386 /out:"..\..\..\..\..\obj\windows\debug\gp.exe" /libpath:"..\..\..\..\..\lib\windows\python\lib\\"
-# SUBTRACT LINK32 /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "gp - Win32 Release"
-# Name "gp - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\DebugActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\SamplePolygonMaterial.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="gp" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Application" 0x0101
+
+CFG=gp - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "gp.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "gp.mak" CFG="gp - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "gp - Win32 Release" (based on "Win32 (x86) Application")
+!MESSAGE "gp - Win32 Debug" (based on "Win32 (x86) Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "gp - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
+# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qt.lib h:\qtwin\lib\qnp.lib python20.lib /nologo /subsystem:windows /machine:I386 /out:"..\..\..\..\..\obj\windows\gp.exe" /libpath:"..\..\..\..\..\lib\windows\python\lib\\"
+
+!ELSEIF "$(CFG)" == "gp - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp\debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gp\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /GX /Od /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32"
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 opengl32.lib glu32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qt.lib python15_d.lib /nologo /subsystem:windows /debug /machine:I386 /out:"..\..\..\..\..\obj\windows\debug\gp.exe" /libpath:"..\..\..\..\..\lib\windows\python\lib\\"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "gp - Win32 Release"
+# Name "gp - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\DebugActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\SamplePolygonMaterial.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/qt/gpplugin.dsp b/projectfiles/gameengine/gameplayer/qt/gpplugin.dsp
index 180f147c79a..65148dd706d 100644
--- a/projectfiles/gameengine/gameplayer/qt/gpplugin.dsp
+++ b/projectfiles/gameengine/gameplayer/qt/gpplugin.dsp
@@ -1,824 +1,824 @@
-# Microsoft Developer Studio Project File - Name="gpplugin" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-
-CFG=gpplugin - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gpplugin.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gpplugin.mak" CFG="gpplugin - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gpplugin - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "gpplugin - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gpplugin - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GPPLUGIN_EXPORTS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GPPLUGIN_EXPORTS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x413 /d "NDEBUG"
-# ADD RSC /l 0x413 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qnp.lib h:\qtwin\lib\qt.lib opengl32.lib glu32.lib python20.lib /nologo /dll /machine:I386 /out:"..\..\..\..\..\obj\windows\npWebGP.dll" /libpath:"..\..\..\..\..\lib\windows\python\lib\\"
-
-!ELSEIF "$(CFG)" == "gpplugin - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin\debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GPPLUGIN_EXPORTS" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /GX /Zi /Od /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "WIN32" /D "PLUGIN" /D "_DEBUG"
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x413 /d "_DEBUG"
-# ADD RSC /l 0x409
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qnp.lib h:\qtwin\lib\qt.lib opengl32.lib glu32.lib python15_d.lib /nologo /subsystem:windows /dll /debug /machine:I386 /def:"..\..\..\..\source\gameengine\GamePlayer\Qt\GP.def" /out:"..\..\..\..\..\obj\windows\debug\npWebGP.dll" /libpath:"..\..\..\..\..\lib\windows\python\lib"
-# SUBTRACT LINK32 /pdb:none
-
-!ENDIF
-
-# Begin Target
-
-# Name "gpplugin - Win32 Release"
-# Name "gpplugin - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP.cpp
-DEP_CPP_GP_CP=\
- "..\..\..\..\..\qtwin\include\qapplication.h"\
- "..\..\..\..\..\qtwin\include\qarray.h"\
- "..\..\..\..\..\qtwin\include\qasciidict.h"\
- "..\..\..\..\..\qtwin\include\qbrush.h"\
- "..\..\..\..\..\qtwin\include\qcollection.h"\
- "..\..\..\..\..\qtwin\include\qcolor.h"\
- "..\..\..\..\..\qtwin\include\qconfig-large.h"\
- "..\..\..\..\..\qtwin\include\qconfig-medium.h"\
- "..\..\..\..\..\qtwin\include\qconfig-minimal.h"\
- "..\..\..\..\..\qtwin\include\qconfig-small.h"\
- "..\..\..\..\..\qtwin\include\qconfig.h"\
- "..\..\..\..\..\qtwin\include\qcstring.h"\
- "..\..\..\..\..\qtwin\include\qcursor.h"\
- "..\..\..\..\..\qtwin\include\qdatastream.h"\
- "..\..\..\..\..\qtwin\include\qdialog.h"\
- "..\..\..\..\..\qtwin\include\qevent.h"\
- "..\..\..\..\..\qtwin\include\qfeatures.h"\
- "..\..\..\..\..\qtwin\include\qfont.h"\
- "..\..\..\..\..\qtwin\include\qfontinfo.h"\
- "..\..\..\..\..\qtwin\include\qfontmetrics.h"\
- "..\..\..\..\..\qtwin\include\qframe.h"\
- "..\..\..\..\..\qtwin\include\qgarray.h"\
- "..\..\..\..\..\qtwin\include\qgdict.h"\
- "..\..\..\..\..\qtwin\include\qgl.h"\
- "..\..\..\..\..\qtwin\include\qglist.h"\
- "..\..\..\..\..\qtwin\include\qglobal.h"\
- "..\..\..\..\..\qtwin\include\qiconset.h"\
- "..\..\..\..\..\qtwin\include\qimage.h"\
- "..\..\..\..\..\qtwin\include\qintdict.h"\
- "..\..\..\..\..\qtwin\include\qiodevice.h"\
- "..\..\..\..\..\qtwin\include\qlist.h"\
- "..\..\..\..\..\qtwin\include\qmenudata.h"\
- "..\..\..\..\..\qtwin\include\qmessagebox.h"\
- "..\..\..\..\..\qtwin\include\qmime.h"\
- "..\..\..\..\..\qtwin\include\qnamespace.h"\
- "..\..\..\..\..\qtwin\include\qnp.h"\
- "..\..\..\..\..\qtwin\include\qobject.h"\
- "..\..\..\..\..\qtwin\include\qobjectdefs.h"\
- "..\..\..\..\..\qtwin\include\qpaintdevice.h"\
- "..\..\..\..\..\qtwin\include\qpainter.h"\
- "..\..\..\..\..\qtwin\include\qpalette.h"\
- "..\..\..\..\..\qtwin\include\qpen.h"\
- "..\..\..\..\..\qtwin\include\qpixmap.h"\
- "..\..\..\..\..\qtwin\include\qpngio.h"\
- "..\..\..\..\..\qtwin\include\qpoint.h"\
- "..\..\..\..\..\qtwin\include\qpointarray.h"\
- "..\..\..\..\..\qtwin\include\qpopupmenu.h"\
- "..\..\..\..\..\qtwin\include\qrect.h"\
- "..\..\..\..\..\qtwin\include\qregexp.h"\
- "..\..\..\..\..\qtwin\include\qregion.h"\
- "..\..\..\..\..\qtwin\include\qshared.h"\
- "..\..\..\..\..\qtwin\include\qsignal.h"\
- "..\..\..\..\..\qtwin\include\qsize.h"\
- "..\..\..\..\..\qtwin\include\qsizepolicy.h"\
- "..\..\..\..\..\qtwin\include\qstring.h"\
- "..\..\..\..\..\qtwin\include\qstringlist.h"\
- "..\..\..\..\..\qtwin\include\qstrlist.h"\
- "..\..\..\..\..\qtwin\include\qstyle.h"\
- "..\..\..\..\..\qtwin\include\qt_windows.h"\
- "..\..\..\..\..\qtwin\include\qtranslator.h"\
- "..\..\..\..\..\qtwin\include\qvaluelist.h"\
- "..\..\..\..\..\qtwin\include\qwidget.h"\
- "..\..\..\..\..\qtwin\include\qwindowdefs.h"\
- "..\..\..\..\..\qtwin\include\qwindowdefs_win.h"\
- "..\..\..\..\..\qtwin\include\qwmatrix.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h"\
- "..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h"\
- "..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h"\
- "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
- "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.cpp
-DEP_CPP_GP_IN=\
- "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
- "..\..\..\..\source\gameengine\Expressions\BoolValue.h"\
- "..\..\..\..\source\gameengine\Expressions\ListValue.h"\
- "..\..\..\..\source\gameengine\Expressions\PyObjectPlus.h"\
- "..\..\..\..\source\gameengine\Expressions\Value.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_AlwaysEventManager.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_AlwaysSensor.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ANDController.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_EventManager.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IActuator.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IController.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IObject.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ISensor.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_KeyboardManager.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_KeyboardSensor.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_LogicManager.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_PythonController.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\DebugActuator.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\SamplePolygonMaterial.h"\
- "..\..\..\..\source\gameengine\Ketsji\KX_GameObject.h"\
- "..\..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.h"\
- "..\..\..\..\source\gameengine\Ketsji\KX_PythonInit.h"\
- "..\..\..\..\source\gameengine\Ketsji\KX_SoundActuator.h"\
- "..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkEventManager.h"\
- "..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h"\
- "..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h"\
- "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_OpenGLRasterizer.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_Polygon.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
- "..\..\..\..\source\gameengine\SceneGraph\SG_IObject.h"\
- "..\..\..\..\source\gameengine\SceneGraph\SG_Node.h"\
- "..\..\..\..\source\gameengine\SceneGraph\SG_Spatial.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_HashedPtr.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
- "..\..\..\..\source\sumo\include\solid.h"\
- "..\..\..\..\source\sumo\include\solid_types.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
- "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
-
-NODEP_CPP_GP_IN=\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\GPC_OpenALWaveCache.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\OpenALScene.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\SND_SoundObject.h"\
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.cpp
-DEP_CPP_QTEXA=\
- "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
- "..\..\..\..\source\gameengine\Expressions\BoolValue.h"\
- "..\..\..\..\source\gameengine\Expressions\IntValue.h"\
- "..\..\..\..\source\gameengine\Expressions\ListValue.h"\
- "..\..\..\..\source\gameengine\Expressions\PyObjectPlus.h"\
- "..\..\..\..\source\gameengine\Expressions\Value.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IActuator.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IObject.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_LogicManager.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h"\
- "..\..\..\..\source\gameengine\Ketsji\KX_Camera.h"\
- "..\..\..\..\source\gameengine\Ketsji\KX_GameObject.h"\
- "..\..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.h"\
- "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_CameraData.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_Polygon.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
- "..\..\..\..\source\gameengine\SceneGraph\SG_IObject.h"\
- "..\..\..\..\source\gameengine\SceneGraph\SG_Node.h"\
- "..\..\..\..\source\gameengine\SceneGraph\SG_Spatial.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_HashedPtr.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
- "..\..\..\..\source\sumo\Fuzzics\include\SM_Scene.h"\
- "..\..\..\..\source\sumo\include\solid.h"\
- "..\..\..\..\source\sumo\include\solid_types.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
- "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
-
-NODEP_CPP_QTEXA=\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\OpenALScene.h"\
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.cpp
-DEP_CPP_QTKEY=\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.cpp
-DEP_CPP_QTOPE=\
- "..\..\..\..\..\qtwin\include\qapplication.h"\
- "..\..\..\..\..\qtwin\include\qarray.h"\
- "..\..\..\..\..\qtwin\include\qasciidict.h"\
- "..\..\..\..\..\qtwin\include\qbrush.h"\
- "..\..\..\..\..\qtwin\include\qcollection.h"\
- "..\..\..\..\..\qtwin\include\qcolor.h"\
- "..\..\..\..\..\qtwin\include\qconfig-large.h"\
- "..\..\..\..\..\qtwin\include\qconfig-medium.h"\
- "..\..\..\..\..\qtwin\include\qconfig-minimal.h"\
- "..\..\..\..\..\qtwin\include\qconfig-small.h"\
- "..\..\..\..\..\qtwin\include\qconfig.h"\
- "..\..\..\..\..\qtwin\include\qcstring.h"\
- "..\..\..\..\..\qtwin\include\qcursor.h"\
- "..\..\..\..\..\qtwin\include\qdatastream.h"\
- "..\..\..\..\..\qtwin\include\qevent.h"\
- "..\..\..\..\..\qtwin\include\qfeatures.h"\
- "..\..\..\..\..\qtwin\include\qfont.h"\
- "..\..\..\..\..\qtwin\include\qfontinfo.h"\
- "..\..\..\..\..\qtwin\include\qfontmetrics.h"\
- "..\..\..\..\..\qtwin\include\qframe.h"\
- "..\..\..\..\..\qtwin\include\qgarray.h"\
- "..\..\..\..\..\qtwin\include\qgdict.h"\
- "..\..\..\..\..\qtwin\include\qgl.h"\
- "..\..\..\..\..\qtwin\include\qglist.h"\
- "..\..\..\..\..\qtwin\include\qglobal.h"\
- "..\..\..\..\..\qtwin\include\qiconset.h"\
- "..\..\..\..\..\qtwin\include\qintdict.h"\
- "..\..\..\..\..\qtwin\include\qiodevice.h"\
- "..\..\..\..\..\qtwin\include\qlist.h"\
- "..\..\..\..\..\qtwin\include\qmenudata.h"\
- "..\..\..\..\..\qtwin\include\qmime.h"\
- "..\..\..\..\..\qtwin\include\qnamespace.h"\
- "..\..\..\..\..\qtwin\include\qobject.h"\
- "..\..\..\..\..\qtwin\include\qobjectdefs.h"\
- "..\..\..\..\..\qtwin\include\qpaintdevice.h"\
- "..\..\..\..\..\qtwin\include\qpalette.h"\
- "..\..\..\..\..\qtwin\include\qpixmap.h"\
- "..\..\..\..\..\qtwin\include\qpoint.h"\
- "..\..\..\..\..\qtwin\include\qpopupmenu.h"\
- "..\..\..\..\..\qtwin\include\qrect.h"\
- "..\..\..\..\..\qtwin\include\qregexp.h"\
- "..\..\..\..\..\qtwin\include\qregion.h"\
- "..\..\..\..\..\qtwin\include\qshared.h"\
- "..\..\..\..\..\qtwin\include\qsignal.h"\
- "..\..\..\..\..\qtwin\include\qsize.h"\
- "..\..\..\..\..\qtwin\include\qsizepolicy.h"\
- "..\..\..\..\..\qtwin\include\qstring.h"\
- "..\..\..\..\..\qtwin\include\qstringlist.h"\
- "..\..\..\..\..\qtwin\include\qstyle.h"\
- "..\..\..\..\..\qtwin\include\qt_windows.h"\
- "..\..\..\..\..\qtwin\include\qtranslator.h"\
- "..\..\..\..\..\qtwin\include\qvaluelist.h"\
- "..\..\..\..\..\qtwin\include\qwidget.h"\
- "..\..\..\..\..\qtwin\include\qwindowdefs.h"\
- "..\..\..\..\..\qtwin\include\qwindowdefs_win.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
- "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
-
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.cpp
-DEP_CPP_QTSYS=\
- "..\..\..\..\..\qtwin\include\qapplication.h"\
- "..\..\..\..\..\qtwin\include\qarray.h"\
- "..\..\..\..\..\qtwin\include\qasciidict.h"\
- "..\..\..\..\..\qtwin\include\qbrush.h"\
- "..\..\..\..\..\qtwin\include\qcollection.h"\
- "..\..\..\..\..\qtwin\include\qcolor.h"\
- "..\..\..\..\..\qtwin\include\qconfig-large.h"\
- "..\..\..\..\..\qtwin\include\qconfig-medium.h"\
- "..\..\..\..\..\qtwin\include\qconfig-minimal.h"\
- "..\..\..\..\..\qtwin\include\qconfig-small.h"\
- "..\..\..\..\..\qtwin\include\qconfig.h"\
- "..\..\..\..\..\qtwin\include\qcstring.h"\
- "..\..\..\..\..\qtwin\include\qcursor.h"\
- "..\..\..\..\..\qtwin\include\qdatastream.h"\
- "..\..\..\..\..\qtwin\include\qevent.h"\
- "..\..\..\..\..\qtwin\include\qfeatures.h"\
- "..\..\..\..\..\qtwin\include\qfont.h"\
- "..\..\..\..\..\qtwin\include\qfontinfo.h"\
- "..\..\..\..\..\qtwin\include\qfontmetrics.h"\
- "..\..\..\..\..\qtwin\include\qframe.h"\
- "..\..\..\..\..\qtwin\include\qgarray.h"\
- "..\..\..\..\..\qtwin\include\qgdict.h"\
- "..\..\..\..\..\qtwin\include\qgl.h"\
- "..\..\..\..\..\qtwin\include\qglist.h"\
- "..\..\..\..\..\qtwin\include\qglobal.h"\
- "..\..\..\..\..\qtwin\include\qiconset.h"\
- "..\..\..\..\..\qtwin\include\qintdict.h"\
- "..\..\..\..\..\qtwin\include\qiodevice.h"\
- "..\..\..\..\..\qtwin\include\qlist.h"\
- "..\..\..\..\..\qtwin\include\qmenudata.h"\
- "..\..\..\..\..\qtwin\include\qmime.h"\
- "..\..\..\..\..\qtwin\include\qnamespace.h"\
- "..\..\..\..\..\qtwin\include\qobject.h"\
- "..\..\..\..\..\qtwin\include\qobjectdefs.h"\
- "..\..\..\..\..\qtwin\include\qpaintdevice.h"\
- "..\..\..\..\..\qtwin\include\qpalette.h"\
- "..\..\..\..\..\qtwin\include\qpixmap.h"\
- "..\..\..\..\..\qtwin\include\qpoint.h"\
- "..\..\..\..\..\qtwin\include\qpopupmenu.h"\
- "..\..\..\..\..\qtwin\include\qrect.h"\
- "..\..\..\..\..\qtwin\include\qregexp.h"\
- "..\..\..\..\..\qtwin\include\qregion.h"\
- "..\..\..\..\..\qtwin\include\qshared.h"\
- "..\..\..\..\..\qtwin\include\qsignal.h"\
- "..\..\..\..\..\qtwin\include\qsize.h"\
- "..\..\..\..\..\qtwin\include\qsizepolicy.h"\
- "..\..\..\..\..\qtwin\include\qstring.h"\
- "..\..\..\..\..\qtwin\include\qstringlist.h"\
- "..\..\..\..\..\qtwin\include\qstyle.h"\
- "..\..\..\..\..\qtwin\include\qt_windows.h"\
- "..\..\..\..\..\qtwin\include\qtranslator.h"\
- "..\..\..\..\..\qtwin\include\qvaluelist.h"\
- "..\..\..\..\..\qtwin\include\qwidget.h"\
- "..\..\..\..\..\qtwin\include\qwindowdefs.h"\
- "..\..\..\..\..\qtwin\include\qwindowdefs_win.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
- "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
- "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h"\
- "..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h"\
- "..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h"\
- "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
- "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
- "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
- "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
- "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
- "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
-
-NODEP_CPP_QTSYS=\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\BKE_bad_level_calls.h"\
- "..\..\..\..\source\gameengine\GamePlayer\Qt\BLO_readfile.h"\
-
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\DebugActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\resource.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\SamplePolygonMaterial.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP.rc
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="gpplugin" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=gpplugin - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "gpplugin.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "gpplugin.mak" CFG="gpplugin - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "gpplugin - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "gpplugin - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "gpplugin - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GPPLUGIN_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GPPLUGIN_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x413 /d "NDEBUG"
+# ADD RSC /l 0x413 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qnp.lib h:\qtwin\lib\qt.lib opengl32.lib glu32.lib python20.lib /nologo /dll /machine:I386 /out:"..\..\..\..\..\obj\windows\npWebGP.dll" /libpath:"..\..\..\..\..\lib\windows\python\lib\\"
+
+!ELSEIF "$(CFG)" == "gpplugin - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin\debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\gameplayer\qt\gpplugin\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "GPPLUGIN_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /GX /Zi /Od /I "h:\qtwin\include" /I "..\..\..\..\source\gameengine\Expressions" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\Ketsji" /I "..\..\..\..\source\gameengine\Ketsji\KXNetwork" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\source\gameengine\Network\LoopBackNetwork" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\..\source\gameengine\SceneGraph" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "WIN32" /D "PLUGIN" /D "_DEBUG"
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x413 /d "_DEBUG"
+# ADD RSC /l 0x409
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib imm32.lib winmm.lib wsock32.lib h:\qtwin\lib\qnp.lib h:\qtwin\lib\qt.lib opengl32.lib glu32.lib python15_d.lib /nologo /subsystem:windows /dll /debug /machine:I386 /def:"..\..\..\..\source\gameengine\GamePlayer\Qt\GP.def" /out:"..\..\..\..\..\obj\windows\debug\npWebGP.dll" /libpath:"..\..\..\..\..\lib\windows\python\lib"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "gpplugin - Win32 Release"
+# Name "gpplugin - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP.cpp
+DEP_CPP_GP_CP=\
+ "..\..\..\..\..\qtwin\include\qapplication.h"\
+ "..\..\..\..\..\qtwin\include\qarray.h"\
+ "..\..\..\..\..\qtwin\include\qasciidict.h"\
+ "..\..\..\..\..\qtwin\include\qbrush.h"\
+ "..\..\..\..\..\qtwin\include\qcollection.h"\
+ "..\..\..\..\..\qtwin\include\qcolor.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-large.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-medium.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-minimal.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-small.h"\
+ "..\..\..\..\..\qtwin\include\qconfig.h"\
+ "..\..\..\..\..\qtwin\include\qcstring.h"\
+ "..\..\..\..\..\qtwin\include\qcursor.h"\
+ "..\..\..\..\..\qtwin\include\qdatastream.h"\
+ "..\..\..\..\..\qtwin\include\qdialog.h"\
+ "..\..\..\..\..\qtwin\include\qevent.h"\
+ "..\..\..\..\..\qtwin\include\qfeatures.h"\
+ "..\..\..\..\..\qtwin\include\qfont.h"\
+ "..\..\..\..\..\qtwin\include\qfontinfo.h"\
+ "..\..\..\..\..\qtwin\include\qfontmetrics.h"\
+ "..\..\..\..\..\qtwin\include\qframe.h"\
+ "..\..\..\..\..\qtwin\include\qgarray.h"\
+ "..\..\..\..\..\qtwin\include\qgdict.h"\
+ "..\..\..\..\..\qtwin\include\qgl.h"\
+ "..\..\..\..\..\qtwin\include\qglist.h"\
+ "..\..\..\..\..\qtwin\include\qglobal.h"\
+ "..\..\..\..\..\qtwin\include\qiconset.h"\
+ "..\..\..\..\..\qtwin\include\qimage.h"\
+ "..\..\..\..\..\qtwin\include\qintdict.h"\
+ "..\..\..\..\..\qtwin\include\qiodevice.h"\
+ "..\..\..\..\..\qtwin\include\qlist.h"\
+ "..\..\..\..\..\qtwin\include\qmenudata.h"\
+ "..\..\..\..\..\qtwin\include\qmessagebox.h"\
+ "..\..\..\..\..\qtwin\include\qmime.h"\
+ "..\..\..\..\..\qtwin\include\qnamespace.h"\
+ "..\..\..\..\..\qtwin\include\qnp.h"\
+ "..\..\..\..\..\qtwin\include\qobject.h"\
+ "..\..\..\..\..\qtwin\include\qobjectdefs.h"\
+ "..\..\..\..\..\qtwin\include\qpaintdevice.h"\
+ "..\..\..\..\..\qtwin\include\qpainter.h"\
+ "..\..\..\..\..\qtwin\include\qpalette.h"\
+ "..\..\..\..\..\qtwin\include\qpen.h"\
+ "..\..\..\..\..\qtwin\include\qpixmap.h"\
+ "..\..\..\..\..\qtwin\include\qpngio.h"\
+ "..\..\..\..\..\qtwin\include\qpoint.h"\
+ "..\..\..\..\..\qtwin\include\qpointarray.h"\
+ "..\..\..\..\..\qtwin\include\qpopupmenu.h"\
+ "..\..\..\..\..\qtwin\include\qrect.h"\
+ "..\..\..\..\..\qtwin\include\qregexp.h"\
+ "..\..\..\..\..\qtwin\include\qregion.h"\
+ "..\..\..\..\..\qtwin\include\qshared.h"\
+ "..\..\..\..\..\qtwin\include\qsignal.h"\
+ "..\..\..\..\..\qtwin\include\qsize.h"\
+ "..\..\..\..\..\qtwin\include\qsizepolicy.h"\
+ "..\..\..\..\..\qtwin\include\qstring.h"\
+ "..\..\..\..\..\qtwin\include\qstringlist.h"\
+ "..\..\..\..\..\qtwin\include\qstrlist.h"\
+ "..\..\..\..\..\qtwin\include\qstyle.h"\
+ "..\..\..\..\..\qtwin\include\qt_windows.h"\
+ "..\..\..\..\..\qtwin\include\qtranslator.h"\
+ "..\..\..\..\..\qtwin\include\qvaluelist.h"\
+ "..\..\..\..\..\qtwin\include\qwidget.h"\
+ "..\..\..\..\..\qtwin\include\qwindowdefs.h"\
+ "..\..\..\..\..\qtwin\include\qwindowdefs_win.h"\
+ "..\..\..\..\..\qtwin\include\qwmatrix.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h"\
+ "..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h"\
+ "..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h"\
+ "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.cpp
+DEP_CPP_GP_IN=\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
+ "..\..\..\..\source\gameengine\Expressions\BoolValue.h"\
+ "..\..\..\..\source\gameengine\Expressions\ListValue.h"\
+ "..\..\..\..\source\gameengine\Expressions\PyObjectPlus.h"\
+ "..\..\..\..\source\gameengine\Expressions\Value.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_AlwaysEventManager.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_AlwaysSensor.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ANDController.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_EventManager.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IActuator.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IController.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IObject.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ISensor.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_KeyboardManager.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_KeyboardSensor.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_LogicManager.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_PythonController.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\DebugActuator.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\SamplePolygonMaterial.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KX_GameObject.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KX_PythonInit.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KX_SoundActuator.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkEventManager.h"\
+ "..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h"\
+ "..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h"\
+ "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_OpenGLRasterizer.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_Polygon.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
+ "..\..\..\..\source\gameengine\SceneGraph\SG_IObject.h"\
+ "..\..\..\..\source\gameengine\SceneGraph\SG_Node.h"\
+ "..\..\..\..\source\gameengine\SceneGraph\SG_Spatial.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_HashedPtr.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
+ "..\..\..\..\source\sumo\include\solid.h"\
+ "..\..\..\..\source\sumo\include\solid_types.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
+
+NODEP_CPP_GP_IN=\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\GPC_OpenALWaveCache.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\OpenALScene.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\SND_SoundObject.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.cpp
+DEP_CPP_QTEXA=\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
+ "..\..\..\..\source\gameengine\Expressions\BoolValue.h"\
+ "..\..\..\..\source\gameengine\Expressions\IntValue.h"\
+ "..\..\..\..\source\gameengine\Expressions\ListValue.h"\
+ "..\..\..\..\source\gameengine\Expressions\PyObjectPlus.h"\
+ "..\..\..\..\source\gameengine\Expressions\Value.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IActuator.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ILogicBrick.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IObject.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_LogicManager.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KX_Camera.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KX_GameObject.h"\
+ "..\..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.h"\
+ "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_CameraData.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_Polygon.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
+ "..\..\..\..\source\gameengine\SceneGraph\SG_IObject.h"\
+ "..\..\..\..\source\gameengine\SceneGraph\SG_Node.h"\
+ "..\..\..\..\source\gameengine\SceneGraph\SG_Spatial.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_HashedPtr.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
+ "..\..\..\..\source\sumo\Fuzzics\include\SM_Scene.h"\
+ "..\..\..\..\source\sumo\include\solid.h"\
+ "..\..\..\..\source\sumo\include\solid_types.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
+
+NODEP_CPP_QTEXA=\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\OpenALScene.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.cpp
+DEP_CPP_QTKEY=\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.cpp
+DEP_CPP_QTOPE=\
+ "..\..\..\..\..\qtwin\include\qapplication.h"\
+ "..\..\..\..\..\qtwin\include\qarray.h"\
+ "..\..\..\..\..\qtwin\include\qasciidict.h"\
+ "..\..\..\..\..\qtwin\include\qbrush.h"\
+ "..\..\..\..\..\qtwin\include\qcollection.h"\
+ "..\..\..\..\..\qtwin\include\qcolor.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-large.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-medium.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-minimal.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-small.h"\
+ "..\..\..\..\..\qtwin\include\qconfig.h"\
+ "..\..\..\..\..\qtwin\include\qcstring.h"\
+ "..\..\..\..\..\qtwin\include\qcursor.h"\
+ "..\..\..\..\..\qtwin\include\qdatastream.h"\
+ "..\..\..\..\..\qtwin\include\qevent.h"\
+ "..\..\..\..\..\qtwin\include\qfeatures.h"\
+ "..\..\..\..\..\qtwin\include\qfont.h"\
+ "..\..\..\..\..\qtwin\include\qfontinfo.h"\
+ "..\..\..\..\..\qtwin\include\qfontmetrics.h"\
+ "..\..\..\..\..\qtwin\include\qframe.h"\
+ "..\..\..\..\..\qtwin\include\qgarray.h"\
+ "..\..\..\..\..\qtwin\include\qgdict.h"\
+ "..\..\..\..\..\qtwin\include\qgl.h"\
+ "..\..\..\..\..\qtwin\include\qglist.h"\
+ "..\..\..\..\..\qtwin\include\qglobal.h"\
+ "..\..\..\..\..\qtwin\include\qiconset.h"\
+ "..\..\..\..\..\qtwin\include\qintdict.h"\
+ "..\..\..\..\..\qtwin\include\qiodevice.h"\
+ "..\..\..\..\..\qtwin\include\qlist.h"\
+ "..\..\..\..\..\qtwin\include\qmenudata.h"\
+ "..\..\..\..\..\qtwin\include\qmime.h"\
+ "..\..\..\..\..\qtwin\include\qnamespace.h"\
+ "..\..\..\..\..\qtwin\include\qobject.h"\
+ "..\..\..\..\..\qtwin\include\qobjectdefs.h"\
+ "..\..\..\..\..\qtwin\include\qpaintdevice.h"\
+ "..\..\..\..\..\qtwin\include\qpalette.h"\
+ "..\..\..\..\..\qtwin\include\qpixmap.h"\
+ "..\..\..\..\..\qtwin\include\qpoint.h"\
+ "..\..\..\..\..\qtwin\include\qpopupmenu.h"\
+ "..\..\..\..\..\qtwin\include\qrect.h"\
+ "..\..\..\..\..\qtwin\include\qregexp.h"\
+ "..\..\..\..\..\qtwin\include\qregion.h"\
+ "..\..\..\..\..\qtwin\include\qshared.h"\
+ "..\..\..\..\..\qtwin\include\qsignal.h"\
+ "..\..\..\..\..\qtwin\include\qsize.h"\
+ "..\..\..\..\..\qtwin\include\qsizepolicy.h"\
+ "..\..\..\..\..\qtwin\include\qstring.h"\
+ "..\..\..\..\..\qtwin\include\qstringlist.h"\
+ "..\..\..\..\..\qtwin\include\qstyle.h"\
+ "..\..\..\..\..\qtwin\include\qt_windows.h"\
+ "..\..\..\..\..\qtwin\include\qtranslator.h"\
+ "..\..\..\..\..\qtwin\include\qvaluelist.h"\
+ "..\..\..\..\..\qtwin\include\qwidget.h"\
+ "..\..\..\..\..\qtwin\include\qwindowdefs.h"\
+ "..\..\..\..\..\qtwin\include\qwindowdefs_win.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.cpp
+DEP_CPP_QTSYS=\
+ "..\..\..\..\..\qtwin\include\qapplication.h"\
+ "..\..\..\..\..\qtwin\include\qarray.h"\
+ "..\..\..\..\..\qtwin\include\qasciidict.h"\
+ "..\..\..\..\..\qtwin\include\qbrush.h"\
+ "..\..\..\..\..\qtwin\include\qcollection.h"\
+ "..\..\..\..\..\qtwin\include\qcolor.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-large.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-medium.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-minimal.h"\
+ "..\..\..\..\..\qtwin\include\qconfig-small.h"\
+ "..\..\..\..\..\qtwin\include\qconfig.h"\
+ "..\..\..\..\..\qtwin\include\qcstring.h"\
+ "..\..\..\..\..\qtwin\include\qcursor.h"\
+ "..\..\..\..\..\qtwin\include\qdatastream.h"\
+ "..\..\..\..\..\qtwin\include\qevent.h"\
+ "..\..\..\..\..\qtwin\include\qfeatures.h"\
+ "..\..\..\..\..\qtwin\include\qfont.h"\
+ "..\..\..\..\..\qtwin\include\qfontinfo.h"\
+ "..\..\..\..\..\qtwin\include\qfontmetrics.h"\
+ "..\..\..\..\..\qtwin\include\qframe.h"\
+ "..\..\..\..\..\qtwin\include\qgarray.h"\
+ "..\..\..\..\..\qtwin\include\qgdict.h"\
+ "..\..\..\..\..\qtwin\include\qgl.h"\
+ "..\..\..\..\..\qtwin\include\qglist.h"\
+ "..\..\..\..\..\qtwin\include\qglobal.h"\
+ "..\..\..\..\..\qtwin\include\qiconset.h"\
+ "..\..\..\..\..\qtwin\include\qintdict.h"\
+ "..\..\..\..\..\qtwin\include\qiodevice.h"\
+ "..\..\..\..\..\qtwin\include\qlist.h"\
+ "..\..\..\..\..\qtwin\include\qmenudata.h"\
+ "..\..\..\..\..\qtwin\include\qmime.h"\
+ "..\..\..\..\..\qtwin\include\qnamespace.h"\
+ "..\..\..\..\..\qtwin\include\qobject.h"\
+ "..\..\..\..\..\qtwin\include\qobjectdefs.h"\
+ "..\..\..\..\..\qtwin\include\qpaintdevice.h"\
+ "..\..\..\..\..\qtwin\include\qpalette.h"\
+ "..\..\..\..\..\qtwin\include\qpixmap.h"\
+ "..\..\..\..\..\qtwin\include\qpoint.h"\
+ "..\..\..\..\..\qtwin\include\qpopupmenu.h"\
+ "..\..\..\..\..\qtwin\include\qrect.h"\
+ "..\..\..\..\..\qtwin\include\qregexp.h"\
+ "..\..\..\..\..\qtwin\include\qregion.h"\
+ "..\..\..\..\..\qtwin\include\qshared.h"\
+ "..\..\..\..\..\qtwin\include\qsignal.h"\
+ "..\..\..\..\..\qtwin\include\qsize.h"\
+ "..\..\..\..\..\qtwin\include\qsizepolicy.h"\
+ "..\..\..\..\..\qtwin\include\qstring.h"\
+ "..\..\..\..\..\qtwin\include\qstringlist.h"\
+ "..\..\..\..\..\qtwin\include\qstyle.h"\
+ "..\..\..\..\..\qtwin\include\qt_windows.h"\
+ "..\..\..\..\..\qtwin\include\qtranslator.h"\
+ "..\..\..\..\..\qtwin\include\qvaluelist.h"\
+ "..\..\..\..\..\qtwin\include\qwidget.h"\
+ "..\..\..\..\..\qtwin\include\qwindowdefs.h"\
+ "..\..\..\..\..\qtwin\include\qwindowdefs_win.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\abstract.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\bufferobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\ceval.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\classobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\cobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\complexobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\config.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\dictobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\fileobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\floatobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\funcobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\import.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\intrcheck.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\listobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\longobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\methodobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\modsupport.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\moduleobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\mymalloc.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\myproto.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\object.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\objimpl.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\patchlevel.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pydebug.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyerrors.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pyfpe.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pystate.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\Python.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\pythonrun.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\rangeobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sliceobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\stringobject.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\sysmodule.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\traceback.h"\
+ "..\..\..\..\..\lib\windows\python\include\python1.5\tupleobject.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_IInputDevice.h"\
+ "..\..\..\..\source\gameengine\GameLogic\SCA_ISystem.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h"\
+ "..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h"\
+ "..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h"\
+ "..\..\..\..\source\gameengine\Network\NG_NetworkScene.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h"\
+ "..\..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_HashedString.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_Matrix4x4.h"\
+ "..\..\..\..\source\kernel\gen_system\GEN_StdString.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Map.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_MinMax.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Optimize.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_random.h"\
+ "..\..\..\..\..\lib\windows\moto\include\GEN_Stream.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_assert.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Matrix3x3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Point3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Quaternion.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Scalar.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Transform.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Tuple4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector2.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector3.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.h"\
+ "..\..\..\..\..\lib\windows\moto\include\MT_Vector4.inl"\
+ "..\..\..\..\..\lib\windows\moto\include\NM_Scalar.h"\
+
+NODEP_CPP_QTSYS=\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\BKE_bad_level_calls.h"\
+ "..\..\..\..\source\gameengine\GamePlayer\Qt\BLO_readfile.h"\
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\DebugActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP_Init.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtExampleEngine.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtInputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtKeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtOpenGLWidget.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtRenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\QtSystem.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\SamplePolygonMaterial.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\Qt\GP.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/gameplayer/qt/qtgp.dsw b/projectfiles/gameengine/gameplayer/qt/qtgp.dsw
index 22d9c5db23c..aac0b0f2423 100644
--- a/projectfiles/gameengine/gameplayer/qt/qtgp.dsw
+++ b/projectfiles/gameengine/gameplayer/qt/qtgp.dsw
@@ -1,323 +1,323 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "BLO_loader"=..\..\..\blender\loader\BLO_loader.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "EXP_expressions"=..\..\expression\EXP_expressions.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SCA_GameLogic"=..\..\gamelogic\SCA_GameLogic.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "KX_ketsji"=..\..\ketsji\KX_ketsji.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "KX_network"=..\..\ketsji\network\KX_network.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SG_SceneGraph"=..\..\scenegraph\SG_SceneGraph.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "NG_loopbacknetwork"=..\..\network\loopbacknetwork\NG_loopbacknetwork.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "NG_network"=..\..\network\network\NG_network.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "RAS_openglrasterizer"=..\..\rasterizer\openglrasterizer\RAS_openglrasterizer.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "RAS_rasterizer"=..\..\rasterizer\RAS_rasterizer.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SM_fuzzics"=..\..\..\sumo\fuzzics\SM_fuzzics.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SM_moto"=..\..\..\sumo\moto\SM_moto.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SM_solid"=..\..\..\sumo\solid\SM_solid.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SND_openal"=..\..\sound\openal\SND_openal.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SND_sound"=..\..\sound\SND_sound.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "SYS_system"=..\..\..\kernel\system\SYS_system.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "gp"=.\gp.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name EXP_expressions
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SCA_GameLogic
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_ketsji
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SG_SceneGraph
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_loopbacknetwork
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_openglrasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_rasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SM_fuzzics
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SM_moto
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SM_solid
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SND_openal
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SND_sound
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SYS_system
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "gpplugin"=.\gpplugin.dsp - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name EXP_expressions
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SCA_GameLogic
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_ketsji
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name KX_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SG_SceneGraph
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_loopbacknetwork
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name NG_network
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_openglrasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name RAS_rasterizer
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SM_fuzzics
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SM_moto
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SM_solid
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SND_openal
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SND_sound
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name SYS_system
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "BLO_loader"=..\..\..\blender\loader\BLO_loader.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "EXP_expressions"=..\..\expression\EXP_expressions.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SCA_GameLogic"=..\..\gamelogic\SCA_GameLogic.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "KX_ketsji"=..\..\ketsji\KX_ketsji.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "KX_network"=..\..\ketsji\network\KX_network.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SG_SceneGraph"=..\..\scenegraph\SG_SceneGraph.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "NG_loopbacknetwork"=..\..\network\loopbacknetwork\NG_loopbacknetwork.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "NG_network"=..\..\network\network\NG_network.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "RAS_openglrasterizer"=..\..\rasterizer\openglrasterizer\RAS_openglrasterizer.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "RAS_rasterizer"=..\..\rasterizer\RAS_rasterizer.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SM_fuzzics"=..\..\..\sumo\fuzzics\SM_fuzzics.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SM_moto"=..\..\..\sumo\moto\SM_moto.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SM_solid"=..\..\..\sumo\solid\SM_solid.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SND_openal"=..\..\sound\openal\SND_openal.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SND_sound"=..\..\sound\SND_sound.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "SYS_system"=..\..\..\kernel\system\SYS_system.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Project: "gp"=.\gp.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name EXP_expressions
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SCA_GameLogic
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_ketsji
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SG_SceneGraph
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_loopbacknetwork
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_openglrasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_rasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SM_fuzzics
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SM_moto
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SM_solid
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SND_openal
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SND_sound
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SYS_system
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Project: "gpplugin"=.\gpplugin.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+ Begin Project Dependency
+ Project_Dep_Name EXP_expressions
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SCA_GameLogic
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_ketsji
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name KX_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SG_SceneGraph
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_loopbacknetwork
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name NG_network
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_openglrasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name RAS_rasterizer
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SM_fuzzics
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SM_moto
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SM_solid
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SND_openal
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SND_sound
+ End Project Dependency
+ Begin Project Dependency
+ Project_Dep_Name SYS_system
+ End Project Dependency
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/projectfiles/gameengine/gameplayer/sdl/GP_sdl.dsp b/projectfiles/gameengine/gameplayer/sdl/GP_sdl.dsp
index 56c758de7e9..a3a1c226d61 100644
--- a/projectfiles/gameengine/gameplayer/sdl/GP_sdl.dsp
+++ b/projectfiles/gameengine/gameplayer/sdl/GP_sdl.dsp
@@ -1,205 +1,205 @@
-# Microsoft Developer Studio Project File - Name="GP_sdl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=GP_sdl - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "GP_sdl.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "GP_sdl.mak" CFG="GP_sdl - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "GP_sdl - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "GP_sdl - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "GP_sdl - Win32 Profile" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "GP_sdl - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\sdl"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 sdl.lib sdlmain.lib kernel32.lib winspool.lib comdlg32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib"
-
-!ELSEIF "$(CFG)" == "GP_sdl - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\sdl\debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 glu32.lib sdlmaindebug.lib sdldebug.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-
-!ELSEIF "$(CFG)" == "GP_sdl - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "GP_sdl___Win32_Profile"
-# PROP BASE Intermediate_Dir "GP_sdl___Win32_Profile"
-# PROP BASE Ignore_Export_Lib 0
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "GP_sdl___Win32_Profile"
-# PROP Intermediate_Dir "GP_sdl___Win32_Profile"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 glu32.lib sdlmaindebug.lib sdldebug.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-# ADD LINK32 glu32.lib sdlmaindebug.lib sdldebug.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
-
-!ENDIF
-
-# Begin Target
-
-# Name "GP_sdl - Win32 Release"
-# Name "GP_sdl - Win32 Debug"
-# Name "GP_sdl - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\main.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLKeyboardDevice.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLRenderTools.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLSystem.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLCanvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLInputDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLKeyboardDevice.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLRenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLSystem.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\alc\ALc.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\alu\ALu.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\alut\ALut.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alBuffer.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alEax.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alError.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alExtension.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alListener.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alSource.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alState.obj
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\OpenAL32.obj
-# End Source File
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="GP_sdl" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=GP_sdl - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "GP_sdl.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "GP_sdl.mak" CFG="GP_sdl - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "GP_sdl - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "GP_sdl - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE "GP_sdl - Win32 Profile" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "GP_sdl - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\sdl"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 sdl.lib sdlmain.lib kernel32.lib winspool.lib comdlg32.lib shell32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /machine:I386 /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib"
+
+!ELSEIF "$(CFG)" == "GP_sdl - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\gameplayer\sdl\debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 glu32.lib sdlmaindebug.lib sdldebug.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+
+!ELSEIF "$(CFG)" == "GP_sdl - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "GP_sdl___Win32_Profile"
+# PROP BASE Intermediate_Dir "GP_sdl___Win32_Profile"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "GP_sdl___Win32_Profile"
+# PROP Intermediate_Dir "GP_sdl___Win32_Profile"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\gameengine\network\loopbacknetwork" /I "..\..\..\..\source\gameengine\gameplayer\common" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\gamelogic" /I "..\..\..\..\source\gameengine\Rasterizer" /I "..\..\..\..\source\sumo\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\sumo\Fuzzics\include" /I "..\..\..\..\..\lib\windows\sdl\SDL-1.1.7\include" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 glu32.lib sdlmaindebug.lib sdldebug.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+# ADD LINK32 glu32.lib sdlmaindebug.lib sdldebug.lib opengl32.lib user32.lib gdi32.lib advapi32.lib dxguid.lib ole32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"..\..\..\..\..\lib\windows\sdl\sdl-1.1.7\lib" /libpath:"..\..\..\..\..\lib\windows\python\lib" /libpath:"..\..\..\..\..\lib\windows\openal\lib\lib_release"
+
+!ENDIF
+
+# Begin Target
+
+# Name "GP_sdl - Win32 Release"
+# Name "GP_sdl - Win32 Debug"
+# Name "GP_sdl - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\main.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLKeyboardDevice.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLRenderTools.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLSystem.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLCanvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLInputDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLKeyboardDevice.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLRenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\GamePlayer\SDL\SDLSystem.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\alc\ALc.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\alu\ALu.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\alut\ALut.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alBuffer.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alEax.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alError.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alExtension.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alListener.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alSource.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\alState.obj
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\lib\windows\openal\lib\OpenAL32\OpenAL32.obj
+# End Source File
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/ketsji/KX_ketsji.dsp b/projectfiles/gameengine/ketsji/KX_ketsji.dsp
index b7139d01bc3..8c4370d9c9a 100644
--- a/projectfiles/gameengine/ketsji/KX_ketsji.dsp
+++ b/projectfiles/gameengine/ketsji/KX_ketsji.dsp
@@ -1,690 +1,690 @@
-# Microsoft Developer Studio Project File - Name="KX_ketsji" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=KX_ketsji - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "KX_ketsji.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "KX_ketsji.mak" CFG="KX_ketsji - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "KX_ketsji - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_ketsji - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_ketsji - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_ketsji - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "KX_ketsji - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\Converter" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /I "..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\source\blender\blenlib" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /D "USE_SUMO_SOLID" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_ketsji - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\Converter" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /I "..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\source\blender\blenlib" /D "JANCODEPANCO" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /D "USE_SUMO_SOLID" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_ketsji - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "KX_ketsji___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "KX_ketsji___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\ketsji\debug\KX_ketsji.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_ketsji - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "KX_ketsji___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "KX_ketsji___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\ketsji\KX_ketsji.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "KX_ketsji - Win32 Release"
-# Name "KX_ketsji - Win32 Debug"
-# Name "KX_ketsji - Win32 MT DLL Debug"
-# Name "KX_ketsji - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Group "ActuatorsImp"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_CDActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IpoActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_AddObjectActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_EndObjectActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_ReplaceMeshActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SceneActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SoundActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TrackToActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_VisibilityActuator.cpp
-# End Source File
-# End Group
-# Begin Group "SG_ControllersImp"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraIpoSGController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPO_SGController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_LightIpoSGController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObColorIpoSGController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldIpoController.cpp
-# End Source File
-# End Group
-# Begin Group "SensorsImp"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MouseFocusSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_NearSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RadarSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RaySensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchSensor.cpp
-# End Source File
-# End Group
-# Begin Group "IposImp"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_OrientationInterpolator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PositionInterpolator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalarInterpolator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalingInterpolator.cpp
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\BL_Material.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\BL_Shader.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\BL_Texture.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_BlenderMaterial.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_BulletPhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_Camera.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintWrapper.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConvertPhysicsObjects.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_EmptyObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_KetsjiEngine.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_Light.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MaterialIpoController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MeshProxy.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MotionState.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_OdePhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PhysicsObjectWrapper.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PolygonMaterial.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyConstraintBinding.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyMath.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PythonInit.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayCast.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayEventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_Scene.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_BoneParentNodeRelationship.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_NodeRelationships.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SumoPhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeCategoryLogger.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeLogger.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchEventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_VehicleWrapper.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_VertexProxy.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldInfo.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Group "Actuators"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_CDActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IpoActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_AddObjectActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_EndObjectActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_ReplaceMeshActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SceneActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SoundActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TrackToActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_VisibilityActuator.h
-# End Source File
-# End Group
-# Begin Group "SG_Controllers"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraIpoSGController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPO_SGController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_LightIpoSGController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObColorIpoSGController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldIpoController.h
-# End Source File
-# End Group
-# Begin Group "Sensors"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MouseFocusSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_NearSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RadarSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RaySensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchSensor.h
-# End Source File
-# End Group
-# Begin Group "Ipos"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IInterpolator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IScalarInterpolator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_OrientationInterpolator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PositionInterpolator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalarInterpolator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalingInterpolator.h
-# End Source File
-# End Group
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\BL_Material.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\BL_Shader.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\BL_Texture.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_BlenderMaterial.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_BulletPhysicsController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_Camera.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintWrapper.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConvertPhysicsObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_EmptyObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPhysicsController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPOTransform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ISceneConverter.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_ISystem.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_KetsjiEngine.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_Light.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MaterialIpoController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MeshProxy.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_MotionState.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_OdePhysicsController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PhysicsObjectWrapper.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PolygonMaterial.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyConstraintBinding.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyMath.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_PythonInit.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayCast.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayEventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_Scene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_BoneParentNodeRelationship.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_NodeRelationships.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_SumoPhysicsController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeCategoryLogger.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeLogger.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchEventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_VehicleWrapper.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_VertexProxy.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldInfo.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="KX_ketsji" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=KX_ketsji - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "KX_ketsji.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "KX_ketsji.mak" CFG="KX_ketsji - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "KX_ketsji - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_ketsji - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_ketsji - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_ketsji - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "KX_ketsji - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\Converter" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /I "..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\source\blender\blenlib" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /D "USE_SUMO_SOLID" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_ketsji - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\extern\solid" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\..\lib\windows\soundsystem\include" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\Converter" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\blender\python" /I "..\..\..\source\blender\blenkernel" /I "..\..\..\source\blender\makesdna" /I "..\..\..\source\blender\include" /I "..\..\..\source\blender\imbuf" /I "..\..\..\..\lib\windows\guardedalloc\include" /I "..\..\..\source\gameengine\physics\bullet" /I "..\..\..\extern\bullet\linearmath" /I "..\..\..\extern\bullet\Bulletdynamics" /I "..\..\..\extern\bullet\Bullet" /I "..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer" /I "..\..\..\source\blender\blenlib" /D "JANCODEPANCO" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /D "USE_SUMO_SOLID" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_ketsji - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "KX_ketsji___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "KX_ketsji___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\ketsji\debug\KX_ketsji.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_ketsji - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "KX_ketsji___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "KX_ketsji___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\ketsji\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\source\gameengine\physics\common\dummy" /I "..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\..\lib\windows\moto\include" /I "..\..\..\source\kernel\gen_system" /I "..\..\..\source\gameengine\soundsystem" /I "..\..\..\source\gameengine\rasterizer" /I "..\..\..\source\gameengine\scenegraph" /I "..\..\..\source\gameengine\gamelogic" /I "..\..\..\source\gameengine\expressions" /I "..\..\..\source\sumo\include" /I "..\..\..\source\sumo\fuzzics\include" /I "..\..\..\source\gameengine\network" /I "..\..\..\source\gameengine\ketsji\kxnetwork" /I "..\..\..\source\gameengine\physics" /I "..\..\..\source\gameengine\physics\common" /I "..\..\..\source\gameengine\physics\dummy" /I "..\..\..\source\gameengine\physics\sumo" /I "..\..\..\source\gameengine\physics\sumo\fuzzics\include" /I "..\..\..\source\gameengine\physics\sumo\include" /I "..\..\..\source\gameengine\physics\BlOde" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "EXP_PYTHON_EMBEDDING" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\ketsji\KX_ketsji.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "KX_ketsji - Win32 Release"
+# Name "KX_ketsji - Win32 Debug"
+# Name "KX_ketsji - Win32 MT DLL Debug"
+# Name "KX_ketsji - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Group "ActuatorsImp"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_CDActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IpoActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_AddObjectActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_EndObjectActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_ReplaceMeshActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SceneActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SoundActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TrackToActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_VisibilityActuator.cpp
+# End Source File
+# End Group
+# Begin Group "SG_ControllersImp"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraIpoSGController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPO_SGController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_LightIpoSGController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObColorIpoSGController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldIpoController.cpp
+# End Source File
+# End Group
+# Begin Group "SensorsImp"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MouseFocusSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_NearSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RadarSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RaySensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchSensor.cpp
+# End Source File
+# End Group
+# Begin Group "IposImp"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_OrientationInterpolator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PositionInterpolator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalarInterpolator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalingInterpolator.cpp
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\BL_Material.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\BL_Shader.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\BL_Texture.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_BlenderMaterial.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_BulletPhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_Camera.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConvertPhysicsObjects.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_EmptyObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_KetsjiEngine.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_Light.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MaterialIpoController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MeshProxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MotionState.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_OdePhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PhysicsObjectWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PolygonMaterial.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyConstraintBinding.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyMath.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PythonInit.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayCast.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayEventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_Scene.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_BoneParentNodeRelationship.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_NodeRelationships.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SumoPhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeCategoryLogger.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeLogger.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchEventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_VehicleWrapper.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_VertexProxy.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldInfo.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Group "Actuators"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_CDActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IpoActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObjectActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_AddObjectActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_EndObjectActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SCA_ReplaceMeshActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SceneActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SoundActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TrackToActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_VisibilityActuator.h
+# End Source File
+# End Group
+# Begin Group "SG_Controllers"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_CameraIpoSGController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPO_SGController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_LightIpoSGController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ObColorIpoSGController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldIpoController.h
+# End Source File
+# End Group
+# Begin Group "Sensors"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MouseFocusSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_NearSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RadarSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RaySensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchSensor.h
+# End Source File
+# End Group
+# Begin Group "Ipos"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IInterpolator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IScalarInterpolator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_OrientationInterpolator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PositionInterpolator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalarInterpolator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ScalingInterpolator.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\BL_Material.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\BL_Shader.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\BL_Texture.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_BlenderMaterial.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_BulletPhysicsController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_Camera.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConstraintWrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ConvertPhysicsObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_EmptyObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_GameObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPhysicsController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_IPOTransform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ISceneConverter.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_ISystem.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_KetsjiEngine.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_Light.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MaterialIpoController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MeshProxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_MotionState.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_OdePhysicsController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PhysicsObjectWrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PolygonMaterial.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyConstraintBinding.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PyMath.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_PythonInit.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayCast.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_RayEventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_Scene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_BoneParentNodeRelationship.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SG_NodeRelationships.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_SumoPhysicsController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeCategoryLogger.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TimeLogger.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_TouchEventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_VehicleWrapper.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_VertexProxy.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Ketsji\KX_WorldInfo.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/ketsji/network/KX_network.dsp b/projectfiles/gameengine/ketsji/network/KX_network.dsp
index 0c265e9dd56..7a67a825988 100644
--- a/projectfiles/gameengine/ketsji/network/KX_network.dsp
+++ b/projectfiles/gameengine/ketsji/network/KX_network.dsp
@@ -1,186 +1,186 @@
-# Microsoft Developer Studio Project File - Name="KX_network" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=KX_network - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "KX_network.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "KX_network.mak" CFG="KX_network - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "KX_network - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_network - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_network - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "KX_network - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "KX_network - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_network - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_network - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "KX_network___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "KX_network___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\ketsji\network\debug\KX_network.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "KX_network - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "KX_network___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "KX_network___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\ketsji\network\KX_network.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "KX_network - Win32 Release"
-# Name "KX_network - Win32 Debug"
-# Name "KX_network - Win32 MT DLL Debug"
-# Name "KX_network - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkEventManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageSensor.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectActuator.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectSensor.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkEventManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageSensor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectActuator.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectSensor.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="KX_network" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=KX_network - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "KX_network.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "KX_network.mak" CFG="KX_network - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "KX_network - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_network - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_network - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "KX_network - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "KX_network - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_network - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\python\include\python2.4" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_network - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "KX_network___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "KX_network___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\..\lib\windows\python\include\python1.5" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "WIN32" /D "_MBCS" /D "_LIB" /U "_DEBUG" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\ketsji\network\debug\KX_network.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "KX_network - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "KX_network___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "KX_network___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\ketsji\network\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /I "..\..\..\..\..\lib\windows\python\include\python2.0" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\python\include\python2.0" /I "..\..\..\..\..\lib\windows\python\include\python2.2" /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\gameengine\ketsji" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\GameLogic" /I "..\..\..\..\source\gameengine\expressions" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\ketsji\network\KX_network.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "KX_network - Win32 Release"
+# Name "KX_network - Win32 Debug"
+# Name "KX_network - Win32 MT DLL Debug"
+# Name "KX_network - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkEventManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageSensor.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectActuator.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectSensor.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkEventManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkMessageSensor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectActuator.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Ketsji\KXNetwork\KX_NetworkObjectSensor.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/network/loopbacknetwork/NG_loopbacknetwork.dsp b/projectfiles/gameengine/network/loopbacknetwork/NG_loopbacknetwork.dsp
index 08bd4a1326d..30c08933fad 100644
--- a/projectfiles/gameengine/network/loopbacknetwork/NG_loopbacknetwork.dsp
+++ b/projectfiles/gameengine/network/loopbacknetwork/NG_loopbacknetwork.dsp
@@ -1,155 +1,155 @@
-# Microsoft Developer Studio Project File - Name="NG_loopbacknetwork" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=NG_loopbacknetwork - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "NG_loopbacknetwork.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "NG_loopbacknetwork.mak" CFG="NG_loopbacknetwork - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NG_loopbacknetwork - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_loopbacknetwork - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_loopbacknetwork - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_loopbacknetwork - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NG_loopbacknetwork - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_loopbacknetwork - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_loopbacknetwork - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "NG_loopbacknetwork___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "NG_loopbacknetwork___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\debug\NG_loopbacknetwork.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_loopbacknetwork - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "NG_loopbacknetwork___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "NG_loopbacknetwork___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\NG_loopbacknetwork.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "NG_loopbacknetwork - Win32 Release"
-# Name "NG_loopbacknetwork - Win32 Debug"
-# Name "NG_loopbacknetwork - Win32 MT DLL Debug"
-# Name "NG_loopbacknetwork - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="NG_loopbacknetwork" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=NG_loopbacknetwork - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "NG_loopbacknetwork.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "NG_loopbacknetwork.mak" CFG="NG_loopbacknetwork - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "NG_loopbacknetwork - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_loopbacknetwork - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_loopbacknetwork - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_loopbacknetwork - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "NG_loopbacknetwork - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_loopbacknetwork - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_loopbacknetwork - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "NG_loopbacknetwork___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "NG_loopbacknetwork___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\debug\NG_loopbacknetwork.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_loopbacknetwork - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "NG_loopbacknetwork___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "NG_loopbacknetwork___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\source\gameengine\Network" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\loopbacknetwork\NG_loopbacknetwork.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "NG_loopbacknetwork - Win32 Release"
+# Name "NG_loopbacknetwork - Win32 Debug"
+# Name "NG_loopbacknetwork - Win32 MT DLL Debug"
+# Name "NG_loopbacknetwork - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\LoopBackNetwork\NG_LoopBackNetworkDeviceInterface.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/network/network/NG_network.dsp b/projectfiles/gameengine/network/network/NG_network.dsp
index 8c13c01f7e7..ca67963500c 100644
--- a/projectfiles/gameengine/network/network/NG_network.dsp
+++ b/projectfiles/gameengine/network/network/NG_network.dsp
@@ -1,174 +1,174 @@
-# Microsoft Developer Studio Project File - Name="NG_network" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=NG_network - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "NG_network.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "NG_network.mak" CFG="NG_network - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NG_network - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_network - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_network - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_network - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NG_network - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_network - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_network - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "NG_network___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "NG_network___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\network\debug\NG_network.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_network - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "NG_network___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "NG_network___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\network\NG_network.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "NG_network - Win32 Release"
-# Name "NG_network - Win32 Debug"
-# Name "NG_network - Win32 MT DLL Debug"
-# Name "NG_network - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkMessage.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkScene.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkMessage.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkScene.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="NG_network" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=NG_network - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "NG_network.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "NG_network.mak" CFG="NG_network - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "NG_network - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_network - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_network - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_network - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "NG_network - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_network - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\..\lib\windows\moto\include" /I "..\..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_network - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "NG_network___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "NG_network___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\network\debug\NG_network.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_network - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "NG_network___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "NG_network___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\network\network\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\network\NG_network.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "NG_network - Win32 Release"
+# Name "NG_network - Win32 Debug"
+# Name "NG_network - Win32 MT DLL Debug"
+# Name "NG_network - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkMessage.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkScene.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkDeviceInterface.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkMessage.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\NG_NetworkScene.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/network/terraplaynetwork/NG_terraplaynetwork.dsp b/projectfiles/gameengine/network/terraplaynetwork/NG_terraplaynetwork.dsp
index ce407eda0f7..6653783bcae 100644
--- a/projectfiles/gameengine/network/terraplaynetwork/NG_terraplaynetwork.dsp
+++ b/projectfiles/gameengine/network/terraplaynetwork/NG_terraplaynetwork.dsp
@@ -1,180 +1,180 @@
-# Microsoft Developer Studio Project File - Name="NG_terraplaynetwork" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=NG_terraplaynetwork - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "NG_terraplaynetwork.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "NG_terraplaynetwork.mak" CFG="NG_terraplaynetwork - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "NG_terraplaynetwork - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_terraplaynetwork - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_terraplaynetwork - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_terraplaynetwork - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "NG_terraplaynetwork - Win32 Profile" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "NG_terraplaynetwork - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\NG_terraplaynetwork.lib"
-
-!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug\NG_terraplaynetwork.lib"
-
-!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "NG_terraplaynetwork___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "NG_terraplaynetwork___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug\NG_terraplaynetwork.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "NG_terraplaynetwork___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "NG_terraplaynetwork___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\NG_terraplaynetwork.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "NG_terraplaynetwork___Win32_Profile"
-# PROP BASE Intermediate_Dir "NG_terraplaynetwork___Win32_Profile"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "NG_terraplaynetwork___Win32_Profile"
-# PROP Intermediate_Dir "NG_terraplaynetwork___Win32_Profile"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug\NG_terraplaynetwork.lib"
-# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\profile\NG_terraplaynetwork.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "NG_terraplaynetwork - Win32 Release"
-# Name "NG_terraplaynetwork - Win32 Debug"
-# Name "NG_terraplaynetwork - Win32 MT DLL Debug"
-# Name "NG_terraplaynetwork - Win32 MT DLL Release"
-# Name "NG_terraplaynetwork - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\TerraplayNetwork\NG_TerraplayNetworkDeviceInterface.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Network\TerraplayNetwork\NG_TerraplayNetworkDeviceInterface.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="NG_terraplaynetwork" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=NG_terraplaynetwork - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "NG_terraplaynetwork.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "NG_terraplaynetwork.mak" CFG="NG_terraplaynetwork - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "NG_terraplaynetwork - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_terraplaynetwork - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_terraplaynetwork - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_terraplaynetwork - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "NG_terraplaynetwork - Win32 Profile" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "NG_terraplaynetwork - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\NG_terraplaynetwork.lib"
+
+!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug\NG_terraplaynetwork.lib"
+
+!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "NG_terraplaynetwork___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "NG_terraplaynetwork___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug\NG_terraplaynetwork.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "NG_terraplaynetwork___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "NG_terraplaynetwork___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\NG_terraplaynetwork.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "NG_terraplaynetwork - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "NG_terraplaynetwork___Win32_Profile"
+# PROP BASE Intermediate_Dir "NG_terraplaynetwork___Win32_Profile"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "NG_terraplaynetwork___Win32_Profile"
+# PROP Intermediate_Dir "NG_terraplaynetwork___Win32_Profile"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\..\source\gameengine\network" /I "..\..\..\..\source\kernel\gen_system" /I "..\..\..\..\..\lib\windows\terraplay\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\debug\NG_terraplaynetwork.lib"
+# ADD LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\network\terraplaynetwork\profile\NG_terraplaynetwork.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "NG_terraplaynetwork - Win32 Release"
+# Name "NG_terraplaynetwork - Win32 Debug"
+# Name "NG_terraplaynetwork - Win32 MT DLL Debug"
+# Name "NG_terraplaynetwork - Win32 MT DLL Release"
+# Name "NG_terraplaynetwork - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\TerraplayNetwork\NG_TerraplayNetworkDeviceInterface.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Network\TerraplayNetwork\NG_TerraplayNetworkDeviceInterface.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/physics/PHY_Physics/PHY_Dummy/PHY_Dummy.dsp b/projectfiles/gameengine/physics/PHY_Physics/PHY_Dummy/PHY_Dummy.dsp
index 0cc26260fd0..0620baa5d03 100644
--- a/projectfiles/gameengine/physics/PHY_Physics/PHY_Dummy/PHY_Dummy.dsp
+++ b/projectfiles/gameengine/physics/PHY_Physics/PHY_Dummy/PHY_Dummy.dsp
@@ -1,154 +1,154 @@
-# Microsoft Developer Studio Project File - Name="PHY_Dummy" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=PHY_Dummy - Win32 MT DLL Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Dummy.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Dummy.mak" CFG="PHY_Dummy - Win32 MT DLL Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "PHY_Dummy - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Dummy - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Dummy - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Dummy - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "PHY_Dummy - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GR /GX /O2 /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Dummy - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Dummy - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "PHY_Dummy___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "PHY_Dummy___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Dummy - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "PHY_Dummy___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "PHY_Dummy___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "PHY_Dummy - Win32 Release"
-# Name "PHY_Dummy - Win32 Debug"
-# Name "PHY_Dummy - Win32 MT DLL Debug"
-# Name "PHY_Dummy - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Dummy\DummyPhysicsEnvironment.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Dummy\DummyPhysicsEnvironment.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="PHY_Dummy" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=PHY_Dummy - Win32 MT DLL Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Dummy.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Dummy.mak" CFG="PHY_Dummy - Win32 MT DLL Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "PHY_Dummy - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Dummy - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Dummy - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Dummy - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "PHY_Dummy - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GR /GX /O2 /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Dummy - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Dummy - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "PHY_Dummy___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "PHY_Dummy___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Dummy - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "PHY_Dummy___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "PHY_Dummy___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\dummy\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "PHY_Dummy - Win32 Release"
+# Name "PHY_Dummy - Win32 Debug"
+# Name "PHY_Dummy - Win32 MT DLL Debug"
+# Name "PHY_Dummy - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Dummy\DummyPhysicsEnvironment.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Dummy\DummyPhysicsEnvironment.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/physics/PHY_Physics/PHY_Ode/PHY_Ode.dsp b/projectfiles/gameengine/physics/PHY_Physics/PHY_Ode/PHY_Ode.dsp
index fef5dbf63f5..9d607db809c 100644
--- a/projectfiles/gameengine/physics/PHY_Physics/PHY_Ode/PHY_Ode.dsp
+++ b/projectfiles/gameengine/physics/PHY_Physics/PHY_Ode/PHY_Ode.dsp
@@ -1,162 +1,162 @@
-# Microsoft Developer Studio Project File - Name="PHY_Ode" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=PHY_Ode - Win32 MT DLL Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Ode.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Ode.mak" CFG="PHY_Ode - Win32 MT DLL Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "PHY_Ode - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Ode - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Ode - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Ode - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "PHY_Ode - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Ode - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Ode - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "PHY_Ode___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "PHY_Ode___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /I "../../../../../source/ode/include" /I "..\..\..\..\..\..\lib\windows\ode\include" /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "dSINGLE" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Ode - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "PHY_Ode___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "PHY_Ode___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../../../lib/windows/ode/include" /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "dSINGLE" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "PHY_Ode - Win32 Release"
-# Name "PHY_Ode - Win32 Debug"
-# Name "PHY_Ode - Win32 MT DLL Release"
-# Name "PHY_Ode - Win32 MT DLL Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsEnvironment.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsEnvironment.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="PHY_Ode" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=PHY_Ode - Win32 MT DLL Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Ode.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Ode.mak" CFG="PHY_Ode - Win32 MT DLL Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "PHY_Ode - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Ode - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Ode - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Ode - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "PHY_Ode - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GR /GX /O2 /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Ode - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Ode - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "PHY_Ode___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "PHY_Ode___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /I "../../../../../source/ode/include" /I "..\..\..\..\..\..\lib\windows\ode\include" /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "dSINGLE" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Ode - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "PHY_Ode___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "PHY_Ode___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\..\obj\windows\gameengine\physics\ode\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../../../lib/windows/ode/include" /I "../../../../../source/gameengine/physics/common" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "dSINGLE" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\..\..\..\lib\windows\ode\include" /I "..\..\..\..\..\source\gameengine\physics\common" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "PHY_Ode - Win32 Release"
+# Name "PHY_Ode - Win32 Debug"
+# Name "PHY_Ode - Win32 MT DLL Release"
+# Name "PHY_Ode - Win32 MT DLL Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsEnvironment.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\BlOde\OdePhysicsEnvironment.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/physics/PHY_Physics/PHY_Physics.dsp b/projectfiles/gameengine/physics/PHY_Physics/PHY_Physics.dsp
index f54875c2c18..bdf4e0f5db5 100644
--- a/projectfiles/gameengine/physics/PHY_Physics/PHY_Physics.dsp
+++ b/projectfiles/gameengine/physics/PHY_Physics/PHY_Physics.dsp
@@ -1,178 +1,178 @@
-# Microsoft Developer Studio Project File - Name="PHY_Physics" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=PHY_Physics - Win32 MT DLL Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Physics.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Physics.mak" CFG="PHY_Physics - Win32 MT DLL Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "PHY_Physics - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Physics - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Physics - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Physics - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "PHY_Physics - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GR /GX /O2 /I "common" /I "dummy" /I "../../../../extern/solid/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Physics - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "common" /I "dummy" /I "../../../../extern/solid/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Physics - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "PHY_Physics___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "PHY_Physics___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "common" /I "dummy" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "common" /I "dummy" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "PHY_Physics - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "PHY_Physics___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "PHY_Physics___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /I "common" /I "dummy" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "common" /I "dummy" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "PHY_Physics - Win32 Release"
-# Name "PHY_Physics - Win32 Debug"
-# Name "PHY_Physics - Win32 MT DLL Debug"
-# Name "PHY_Physics - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IMotionState.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsEnvironment.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_DynamicTypes.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IMotionState.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsEnvironment.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_Pro.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="PHY_Physics" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=PHY_Physics - Win32 MT DLL Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Physics.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Physics.mak" CFG="PHY_Physics - Win32 MT DLL Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "PHY_Physics - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Physics - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Physics - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Physics - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "PHY_Physics - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GR /GX /O2 /I "common" /I "dummy" /I "../../../../extern/solid/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Physics - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "common" /I "dummy" /I "../../../../extern/solid/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Physics - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "PHY_Physics___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "PHY_Physics___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "common" /I "dummy" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "common" /I "dummy" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "PHY_Physics - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "PHY_Physics___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "PHY_Physics___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\physics\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /I "common" /I "dummy" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "common" /I "dummy" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "PHY_Physics - Win32 Release"
+# Name "PHY_Physics - Win32 Debug"
+# Name "PHY_Physics - Win32 MT DLL Debug"
+# Name "PHY_Physics - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IMotionState.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsEnvironment.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_DynamicTypes.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IMotionState.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_IPhysicsEnvironment.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Physics\common\PHY_Pro.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/physics/PHY_Physics/PHY_Sumo/PHY_Sumo.dsp b/projectfiles/gameengine/physics/PHY_Physics/PHY_Sumo/PHY_Sumo.dsp
index 8f148363add..1a9f6e98201 100644
--- a/projectfiles/gameengine/physics/PHY_Physics/PHY_Sumo/PHY_Sumo.dsp
+++ b/projectfiles/gameengine/physics/PHY_Physics/PHY_Sumo/PHY_Sumo.dsp
@@ -1,162 +1,162 @@
-# Microsoft Developer Studio Project File - Name="PHY_Sumo" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=PHY_Sumo - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Sumo.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "PHY_Sumo.mak" CFG="PHY_Sumo - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "PHY_Sumo - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "PHY_Sumo - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "PHY_Sumo - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "../../../../../extern/solid" /I "../../../../../source/gameengine/physics" /I "../../../../../source/gameengine/physics/common" /I "../../../../../source/gameengine/physics/sumo" /I "../../../../../source/gameengine/physics/sumo/include" /I "../../../../../source/gameengine/physics/sumo/fuzzics/include" /I "../../../../../../lib/windows/Moto/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\gameengine\physics\sumo\PHY_Sumo.lib"
-
-!ELSEIF "$(CFG)" == "PHY_Sumo - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "../../../../../extern/solid" /I "../../../../../source/gameengine/physics" /I "../../../../../source/gameengine/physics/common" /I "../../../../../source/gameengine/physics/sumo" /I "../../../../../source/gameengine/physics/sumo/include" /I "../../../../../source/gameengine/physics/sumo/fuzzics/include" /I "../../../../../../lib/windows/Moto/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\gameengine\physics\sumo\debug\PHY_Sumo.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "PHY_Sumo - Win32 Release"
-# Name "PHY_Sumo - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_FhObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_MotionState.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Object.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Scene.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPHYCallbackBridge.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsController.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsEnvironment.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Callback.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_ClientObjectInfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_FhObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_MotionState.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Object.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Props.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Scene.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPHYCallbackBridge.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsController.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsEnvironment.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="PHY_Sumo" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=PHY_Sumo - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Sumo.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "PHY_Sumo.mak" CFG="PHY_Sumo - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "PHY_Sumo - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "PHY_Sumo - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "PHY_Sumo - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "../../../../../extern/solid" /I "../../../../../source/gameengine/physics" /I "../../../../../source/gameengine/physics/common" /I "../../../../../source/gameengine/physics/sumo" /I "../../../../../source/gameengine/physics/sumo/include" /I "../../../../../source/gameengine/physics/sumo/fuzzics/include" /I "../../../../../../lib/windows/Moto/include" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\gameengine\physics\sumo\PHY_Sumo.lib"
+
+!ELSEIF "$(CFG)" == "PHY_Sumo - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "../../../../../extern/solid" /I "../../../../../source/gameengine/physics" /I "../../../../../source/gameengine/physics/common" /I "../../../../../source/gameengine/physics/sumo" /I "../../../../../source/gameengine/physics/sumo/include" /I "../../../../../source/gameengine/physics/sumo/fuzzics/include" /I "../../../../../../lib/windows/Moto/include" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\gameengine\physics\sumo\debug\PHY_Sumo.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "PHY_Sumo - Win32 Release"
+# Name "PHY_Sumo - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_FhObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_MotionState.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Object.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Scene.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPHYCallbackBridge.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsController.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsEnvironment.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Callback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_ClientObjectInfo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_FhObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_MotionState.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Object.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Props.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Scene.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPHYCallbackBridge.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsController.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\..\source\gameengine\Physics\Sumo\SumoPhysicsEnvironment.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/rasterizer/RAS_rasterizer.dsp b/projectfiles/gameengine/rasterizer/RAS_rasterizer.dsp
index c764823632e..bb960e95969 100644
--- a/projectfiles/gameengine/rasterizer/RAS_rasterizer.dsp
+++ b/projectfiles/gameengine/rasterizer/RAS_rasterizer.dsp
@@ -1,243 +1,243 @@
-# Microsoft Developer Studio Project File - Name="RAS_rasterizer" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=RAS_rasterizer - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "RAS_rasterizer.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RAS_rasterizer.mak" CFG="RAS_rasterizer - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RAS_rasterizer - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "RAS_rasterizer - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "RAS_rasterizer - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "RAS_rasterizer - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RAS_rasterizer - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "RAS_rasterizer - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "RAS_rasterizer - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "RAS_rasterizer___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "RAS_rasterizer___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "../../../../lib/windows/moto/include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\rasterizer\debug\RAS_rasterizer.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "RAS_rasterizer - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "RAS_rasterizer___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "RAS_rasterizer___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "../../../../lib/windows/moto/include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\rasterizer\RAS_rasterizer.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "RAS_rasterizer - Win32 Release"
-# Name "RAS_rasterizer - Win32 Debug"
-# Name "RAS_rasterizer - Win32 MT DLL Debug"
-# Name "RAS_rasterizer - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_FramingManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_Polygon.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_texmatrix.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_TexVert.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_CameraData.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_Deformer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_FramingManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_LightObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_ObjectColor.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_Polygon.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_TexMatrix.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="RAS_rasterizer" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=RAS_rasterizer - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "RAS_rasterizer.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "RAS_rasterizer.mak" CFG="RAS_rasterizer - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "RAS_rasterizer - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "RAS_rasterizer - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "RAS_rasterizer - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "RAS_rasterizer - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "RAS_rasterizer - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "RAS_rasterizer - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\lib\windows\moto\include\\" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "RAS_rasterizer - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "RAS_rasterizer___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "RAS_rasterizer___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "../../../../lib/windows/moto/include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\rasterizer\debug\RAS_rasterizer.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "RAS_rasterizer - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "RAS_rasterizer___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "RAS_rasterizer___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\rasterizer\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "../../../../lib/windows/moto/include" /I "..\..\..\..\lib\windows\string\include" /I "..\..\..\source\kernel\gen_system" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\rasterizer\RAS_rasterizer.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "RAS_rasterizer - Win32 Release"
+# Name "RAS_rasterizer - Win32 Debug"
+# Name "RAS_rasterizer - Win32 MT DLL Debug"
+# Name "RAS_rasterizer - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_FramingManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_Polygon.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_texmatrix.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_TexVert.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_BucketManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_CameraData.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_Deformer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_FramingManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_ICanvas.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IPolygonMaterial.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IRasterizer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_IRenderTools.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_LightObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MaterialBucket.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_MeshObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_ObjectColor.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_Polygon.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_TexMatrix.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Rasterizer\RAS_TexVert.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.dsp b/projectfiles/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.dsp
index 1f1b95291ed..8b4cce618d1 100644
--- a/projectfiles/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.dsp
+++ b/projectfiles/gameengine/rasterizer/openglrasterizer/RAS_openglrasterizer.dsp
@@ -1,183 +1,183 @@
-# Microsoft Developer Studio Project File - Name="RAS_openglrasterizer" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=RAS_openglrasterizer - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "RAS_openglrasterizer.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "RAS_openglrasterizer.mak" CFG="RAS_openglrasterizer - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "RAS_openglrasterizer - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "RAS_openglrasterizer - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "RAS_openglrasterizer - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "RAS_openglrasterizer - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "RAS_openglrasterizer - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "RAS_openglrasterizer - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "RAS_openglrasterizer - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "RAS_openglrasterizer___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "RAS_openglrasterizer___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\debug\RAS_openglrasterizer.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "RAS_openglrasterizer - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "RAS_openglrasterizer___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "RAS_openglrasterizer___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-MTL=midl.exe
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I ".../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\RAS_openglrasterizer.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "RAS_openglrasterizer - Win32 Release"
-# Name "RAS_openglrasterizer - Win32 Debug"
-# Name "RAS_openglrasterizer - Win32 MT DLL Debug"
-# Name "RAS_openglrasterizer - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_GLExtensionManager.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_ListRasterizer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_OpenGLRasterizer.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_VAOpenGLRasterizer.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_GLExtensionManager.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_ListRasterizer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_OpenGLRasterizer.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_VAOpenGLRasterizer.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="RAS_openglrasterizer" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=RAS_openglrasterizer - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "RAS_openglrasterizer.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "RAS_openglrasterizer.mak" CFG="RAS_openglrasterizer - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "RAS_openglrasterizer - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "RAS_openglrasterizer - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "RAS_openglrasterizer - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "RAS_openglrasterizer - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "RAS_openglrasterizer - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "RAS_openglrasterizer - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "RAS_openglrasterizer - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "RAS_openglrasterizer___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "RAS_openglrasterizer___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\debug\RAS_openglrasterizer.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "RAS_openglrasterizer - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "RAS_openglrasterizer___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "RAS_openglrasterizer___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+MTL=midl.exe
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\..\source\kernel\gen_system" /I ".../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\..\lib\windows\string\include" /I "..\..\..\..\source\kernel\gen_system" /I "../../../../../lib/windows/moto/include" /I "..\..\..\..\source\gameengine\Rasterizer" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\..\obj\windows\gameengine\rasterizer\openglrasterizer\RAS_openglrasterizer.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "RAS_openglrasterizer - Win32 Release"
+# Name "RAS_openglrasterizer - Win32 Debug"
+# Name "RAS_openglrasterizer - Win32 MT DLL Debug"
+# Name "RAS_openglrasterizer - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_GLExtensionManager.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_ListRasterizer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_OpenGLRasterizer.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_VAOpenGLRasterizer.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_GLExtensionManager.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_ListRasterizer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_OpenGLRasterizer.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer\RAS_VAOpenGLRasterizer.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/gameengine/scenegraph/SG_scenegraph.dsp b/projectfiles/gameengine/scenegraph/SG_scenegraph.dsp
index 5a2b4c8cba3..72777059b50 100644
--- a/projectfiles/gameengine/scenegraph/SG_scenegraph.dsp
+++ b/projectfiles/gameengine/scenegraph/SG_scenegraph.dsp
@@ -1,199 +1,199 @@
-# Microsoft Developer Studio Project File - Name="SG_SceneGraph" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SG_SceneGraph - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SG_SceneGraph.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SG_SceneGraph.mak" CFG="SG_SceneGraph - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SG_SceneGraph - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SG_SceneGraph - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SG_SceneGraph - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SG_SceneGraph - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SG_SceneGraph - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SG_SceneGraph - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SG_SceneGraph - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SG_SceneGraph___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SG_SceneGraph___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\scenegraph\debug\SG_SceneGraph.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SG_SceneGraph - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SG_SceneGraph___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SG_SceneGraph___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\scenegraph\SG_SceneGraph.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "SG_SceneGraph - Win32 Release"
-# Name "SG_SceneGraph - Win32 Debug"
-# Name "SG_SceneGraph - Win32 MT DLL Debug"
-# Name "SG_SceneGraph - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_BBox.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Controller.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_IObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Node.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Spatial.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Tree.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_BBox.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Controller.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_IObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Node.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_ParentRelation.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Spatial.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Tree.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SG_SceneGraph" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SG_SceneGraph - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SG_SceneGraph.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SG_SceneGraph.mak" CFG="SG_SceneGraph - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SG_SceneGraph - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SG_SceneGraph - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SG_SceneGraph - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SG_SceneGraph - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SG_SceneGraph - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SG_SceneGraph - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SG_SceneGraph - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SG_SceneGraph___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SG_SceneGraph___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\scenegraph\debug\SG_SceneGraph.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SG_SceneGraph - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SG_SceneGraph___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SG_SceneGraph___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\scenegraph\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\scenegraph\SG_SceneGraph.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "SG_SceneGraph - Win32 Release"
+# Name "SG_SceneGraph - Win32 Debug"
+# Name "SG_SceneGraph - Win32 MT DLL Debug"
+# Name "SG_SceneGraph - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_BBox.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Controller.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_IObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Node.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Spatial.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Tree.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_BBox.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Controller.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_IObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Node.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_ParentRelation.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Spatial.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\SceneGraph\SG_Tree.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/kernel/gen_messaging/gen_messaging.dsp b/projectfiles/kernel/gen_messaging/gen_messaging.dsp
index 578f8971122..8aebbedecde 100644
--- a/projectfiles/kernel/gen_messaging/gen_messaging.dsp
+++ b/projectfiles/kernel/gen_messaging/gen_messaging.dsp
@@ -1,155 +1,155 @@
-# Microsoft Developer Studio Project File - Name="gen_messaging" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=gen_messaging - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gen_messaging.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gen_messaging.mak" CFG="gen_messaging - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gen_messaging - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "gen_messaging - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "gen_messaging - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "gen_messaging - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gen_messaging - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging"
-# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "gen_messaging - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "gen_messaging - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "gen_messaging___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "gen_messaging___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "gen_messaging - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "gen_messaging___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "gen_messaging___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "gen_messaging - Win32 Release"
-# Name "gen_messaging - Win32 Debug"
-# Name "gen_messaging - Win32 MT DLL Release"
-# Name "gen_messaging - Win32 MT DLL Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_messaging\intern\messaging.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_messaging\GEN_messaging.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="gen_messaging" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=gen_messaging - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "gen_messaging.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "gen_messaging.mak" CFG="gen_messaging - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "gen_messaging - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "gen_messaging - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "gen_messaging - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "gen_messaging - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "gen_messaging - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging"
+# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "gen_messaging - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "gen_messaging - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "gen_messaging___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "gen_messaging___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "gen_messaging - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "gen_messaging___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "gen_messaging___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\kernel\gen_messaging\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\..\source\kernel\gen_messaging" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "gen_messaging - Win32 Release"
+# Name "gen_messaging - Win32 Debug"
+# Name "gen_messaging - Win32 MT DLL Release"
+# Name "gen_messaging - Win32 MT DLL Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_messaging\intern\messaging.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_messaging\GEN_messaging.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/kernel/system/SYS_system.dsp b/projectfiles/kernel/system/SYS_system.dsp
index b424839e4ba..c5b66202f9c 100644
--- a/projectfiles/kernel/system/SYS_system.dsp
+++ b/projectfiles/kernel/system/SYS_system.dsp
@@ -1,183 +1,183 @@
-# Microsoft Developer Studio Project File - Name="SYS_system" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SYS_system - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SYS_system.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SYS_system.mak" CFG="SYS_system - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SYS_system - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SYS_system - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SYS_system - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SYS_system - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SYS_system - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SYS_system - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SYS_system - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SYS_system___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SYS_system___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /MDd /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\kernel\gen_system\debug\SYS_system.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SYS_system - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SYS_system___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SYS_system___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\kernel\gen_system\SYS_system.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "SYS_system - Win32 Release"
-# Name "SYS_system - Win32 Debug"
-# Name "SYS_system - Win32 MT DLL Debug"
-# Name "SYS_system - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\GEN_HashedPtr.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\SYS_SingletonSystem.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\SYS_System.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\GEN_DataCache.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\GEN_HashedPtr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\GEN_Map.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\GEN_SmartPtr.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\SYS_SingletonSystem.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\kernel\gen_system\SYS_System.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SYS_system" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SYS_system - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SYS_system.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SYS_system.mak" CFG="SYS_system - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SYS_system - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SYS_system - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SYS_system - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SYS_system - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SYS_system - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SYS_system - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SYS_system - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SYS_system___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SYS_system___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /MDd /Gm /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\kernel\gen_system\debug\SYS_system.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SYS_system - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SYS_system___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SYS_system___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\gameengine\kernel\gen_system\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\..\lib\windows\string\include" /I "../../../../../lib/windows/moto/include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\gameengine\kernel\gen_system\SYS_system.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "SYS_system - Win32 Release"
+# Name "SYS_system - Win32 Debug"
+# Name "SYS_system - Win32 MT DLL Debug"
+# Name "SYS_system - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\GEN_HashedPtr.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\SYS_SingletonSystem.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\SYS_System.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\GEN_DataCache.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\GEN_HashedPtr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\GEN_Map.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\GEN_SmartPtr.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\SYS_SingletonSystem.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\kernel\gen_system\SYS_System.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/sumo/fuzzics/SM_fuzzics.dsp b/projectfiles/sumo/fuzzics/SM_fuzzics.dsp
index c415810d2c9..8804fdcb796 100644
--- a/projectfiles/sumo/fuzzics/SM_fuzzics.dsp
+++ b/projectfiles/sumo/fuzzics/SM_fuzzics.dsp
@@ -1,216 +1,216 @@
-# Microsoft Developer Studio Project File - Name="SM_fuzzics" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SM_fuzzics - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SM_fuzzics.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SM_fuzzics.mak" CFG="SM_fuzzics - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SM_fuzzics - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_fuzzics - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_fuzzics - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_fuzzics - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_fuzzics - Win32 Profile" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SM_fuzzics - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\sumo\fuzzics"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\fuzzics"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "../../../extern/solid" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\sumo\fuzzics\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\fuzzics\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\source\gameengine\physics\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "../../../extern/solid" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_fuzzics___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SM_fuzzics___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\fuzzics\debug\SM_fuzzics.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SM_fuzzics___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SM_fuzzics___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\fuzzics\SM_fuzzics.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_fuzzics___Win32_Profile"
-# PROP BASE Intermediate_Dir "SM_fuzzics___Win32_Profile"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "SM_fuzzics___Win32_Profile"
-# PROP Intermediate_Dir "SM_fuzzics___Win32_Profile"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\fuzzics\debug\SM_fuzzics.lib"
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\fuzzics\profile\SM_fuzzics.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "SM_fuzzics - Win32 Release"
-# Name "SM_fuzzics - Win32 Debug"
-# Name "SM_fuzzics - Win32 MT DLL Debug"
-# Name "SM_fuzzics - Win32 MT DLL Release"
-# Name "SM_fuzzics - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_FhObject.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Object.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Scene.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Callback.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_ClientObjectInfo.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Debug.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_FhObject.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_MotionState.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Object.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Props.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Scene.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SM_fuzzics" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SM_fuzzics - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SM_fuzzics.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SM_fuzzics.mak" CFG="SM_fuzzics - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SM_fuzzics - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_fuzzics - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_fuzzics - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_fuzzics - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_fuzzics - Win32 Profile" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SM_fuzzics - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\sumo\fuzzics"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\fuzzics"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GR /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "../../../extern/solid" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\sumo\fuzzics\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\fuzzics\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /Zi /Od /I "..\..\..\source\gameengine\physics\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "../../../extern/solid" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_fuzzics___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SM_fuzzics___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\fuzzics\debug\SM_fuzzics.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SM_fuzzics___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SM_fuzzics___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\fuzzics\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\fuzzics\SM_fuzzics.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_fuzzics - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_fuzzics___Win32_Profile"
+# PROP BASE Intermediate_Dir "SM_fuzzics___Win32_Profile"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "SM_fuzzics___Win32_Profile"
+# PROP Intermediate_Dir "SM_fuzzics___Win32_Profile"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\Fuzzics\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\fuzzics\debug\SM_fuzzics.lib"
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\fuzzics\profile\SM_fuzzics.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "SM_fuzzics - Win32 Release"
+# Name "SM_fuzzics - Win32 Debug"
+# Name "SM_fuzzics - Win32 MT DLL Debug"
+# Name "SM_fuzzics - Win32 MT DLL Release"
+# Name "SM_fuzzics - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_FhObject.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Object.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\src\SM_Scene.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Callback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_ClientObjectInfo.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Debug.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_FhObject.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_MotionState.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Object.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Props.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include\SM_Scene.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/sumo/moto/SM_moto.dsp b/projectfiles/sumo/moto/SM_moto.dsp
index 3fd627ce60d..0a27fad5a0d 100644
--- a/projectfiles/sumo/moto/SM_moto.dsp
+++ b/projectfiles/sumo/moto/SM_moto.dsp
@@ -1,332 +1,332 @@
-# Microsoft Developer Studio Project File - Name="SM_moto" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SM_moto - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SM_moto.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SM_moto.mak" CFG="SM_moto - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SM_moto - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 Profile" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SM_moto - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_moto___Win32_Profile"
-# PROP BASE Intermediate_Dir "SM_moto___Win32_Profile"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "SM_moto___Win32_Profile"
-# PROP Intermediate_Dir "SM_moto___Win32_Profile"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\profile\SM_moto.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "SM_moto - Win32 Release"
-# Name "SM_moto - Win32 Debug"
-# Name "SM_moto - Win32 MT DLL Debug"
-# Name "SM_moto - Win32 MT DLL Release"
-# Name "SM_moto - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_CmMatrix4x4.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix3x3.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix4x4.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Point3.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Quaternion.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_random.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Transform.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector2.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector3.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector4.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\GEN_List.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\GEN_Map.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_assert.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_CmMatrix4x4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_MinMax.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Optimize.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_random.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Scalar.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Stream.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Transform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\NM_Scalar.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SM_moto" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SM_moto - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SM_moto.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SM_moto.mak" CFG="SM_moto - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SM_moto - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 Profile" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SM_moto - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_moto___Win32_Profile"
+# PROP BASE Intermediate_Dir "SM_moto___Win32_Profile"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "SM_moto___Win32_Profile"
+# PROP Intermediate_Dir "SM_moto___Win32_Profile"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\profile\SM_moto.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "SM_moto - Win32 Release"
+# Name "SM_moto - Win32 Debug"
+# Name "SM_moto - Win32 MT DLL Debug"
+# Name "SM_moto - Win32 MT DLL Release"
+# Name "SM_moto - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_CmMatrix4x4.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix3x3.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix4x4.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Point3.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Quaternion.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_random.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Transform.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector2.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector3.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector4.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\GEN_List.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\GEN_Map.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_assert.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_CmMatrix4x4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_MinMax.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Optimize.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_random.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Scalar.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Stream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Transform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\NM_Scalar.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles/sumo/solid/SM_solid.dsp b/projectfiles/sumo/solid/SM_solid.dsp
index dfaa85c35d8..221a72f67ef 100644
--- a/projectfiles/sumo/solid/SM_solid.dsp
+++ b/projectfiles/sumo/solid/SM_solid.dsp
@@ -1,340 +1,340 @@
-# Microsoft Developer Studio Project File - Name="SM_solid" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SM_solid - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SM_solid.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SM_solid.mak" CFG="SM_solid - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SM_solid - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_solid - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_solid - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_solid - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SM_solid - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /J /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_solid - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\debug\SM_solid.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\SM_solid.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "SM_solid - Win32 Release"
-# Name "SM_solid - Win32 Debug"
-# Name "SM_solid - Win32 MT DLL Debug"
-# Name "SM_solid - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\BBoxTree.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Box.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Complex.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cone.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Convex.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cylinder.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_C-api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Endpoint.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Proxy.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Scene.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_C-api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_DoubleBase.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Encounter.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_FloatBase.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_LineSegment.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Object.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_RespTable.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Scene.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polyhedron.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polytope.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Sphere.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\AlgoTable.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\BBoxTree.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Box.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Complex.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cone.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Convex.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cylinder.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_AABBox.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BBox.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Endpoint.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Proxy.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Scene.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_DoubleBase.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Encounter.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_FloatBase.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_LineSegment.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Object.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Response.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_RespTable.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Scene.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBase.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBased.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\IndexArray.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polyhedron.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polytope.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Shape.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Sphere.h"
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SM_solid" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SM_solid - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SM_solid.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SM_solid.mak" CFG="SM_solid - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SM_solid - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_solid - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_solid - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_solid - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SM_solid - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /J /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_solid - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\debug\SM_solid.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\SM_solid.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "SM_solid - Win32 Release"
+# Name "SM_solid - Win32 Debug"
+# Name "SM_solid - Win32 MT DLL Debug"
+# Name "SM_solid - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\BBoxTree.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Box.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Complex.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cone.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Convex.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cylinder.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_C-api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Endpoint.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Proxy.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Scene.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_C-api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_DoubleBase.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Encounter.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_FloatBase.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_LineSegment.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Object.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_RespTable.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Scene.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polyhedron.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polytope.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Sphere.cpp"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\AlgoTable.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\BBoxTree.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Box.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Complex.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cone.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Convex.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cylinder.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_AABBox.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BBox.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Endpoint.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Proxy.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Scene.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_DoubleBase.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Encounter.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_FloatBase.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_LineSegment.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Object.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Response.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_RespTable.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Scene.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBase.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBased.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\IndexArray.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polyhedron.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polytope.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Shape.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Sphere.h"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles_vc7/sumo/moto/SM_moto.dsp b/projectfiles_vc7/sumo/moto/SM_moto.dsp
index 3fd627ce60d..0a27fad5a0d 100644
--- a/projectfiles_vc7/sumo/moto/SM_moto.dsp
+++ b/projectfiles_vc7/sumo/moto/SM_moto.dsp
@@ -1,332 +1,332 @@
-# Microsoft Developer Studio Project File - Name="SM_moto" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SM_moto - Win32 Profile
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SM_moto.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SM_moto.mak" CFG="SM_moto - Win32 Profile"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SM_moto - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_moto - Win32 Profile" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SM_moto - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
-# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_moto - Win32 Profile"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_moto___Win32_Profile"
-# PROP BASE Intermediate_Dir "SM_moto___Win32_Profile"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "SM_moto___Win32_Profile"
-# PROP Intermediate_Dir "SM_moto___Win32_Profile"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
-# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\profile\SM_moto.lib"
-
-!ENDIF
-
-# Begin Target
-
-# Name "SM_moto - Win32 Release"
-# Name "SM_moto - Win32 Debug"
-# Name "SM_moto - Win32 MT DLL Debug"
-# Name "SM_moto - Win32 MT DLL Release"
-# Name "SM_moto - Win32 Profile"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_CmMatrix4x4.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix3x3.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix4x4.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Point3.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Quaternion.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_random.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Transform.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector2.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector3.cpp
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector4.cpp
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\GEN_List.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\GEN_Map.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_assert.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_CmMatrix4x4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_MinMax.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Optimize.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_random.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Scalar.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Stream.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Transform.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.inl
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\..\source\sumo\MoTo\include\NM_Scalar.h
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SM_moto" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SM_moto - Win32 Profile
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SM_moto.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SM_moto.mak" CFG="SM_moto - Win32 Profile"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SM_moto - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_moto - Win32 Profile" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SM_moto - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /W3 /GX /O2 /I "..\..\..\..\lib\windows\moto\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FR /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SM_moto___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SM_moto___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
+# PROP Intermediate_Dir "..\..\..\..\obj\windows\sumo\moto\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\sumo\MoTo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\moto\SM_moto.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_moto - Win32 Profile"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_moto___Win32_Profile"
+# PROP BASE Intermediate_Dir "SM_moto___Win32_Profile"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "SM_moto___Win32_Profile"
+# PROP Intermediate_Dir "SM_moto___Win32_Profile"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /Zi /O2 /I "..\..\..\source\sumo\MoTo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\debug\SM_moto.lib"
+# ADD LIB32 /nologo /out:"..\..\..\..\obj\windows\sumo\moto\profile\SM_moto.lib"
+
+!ENDIF
+
+# Begin Target
+
+# Name "SM_moto - Win32 Release"
+# Name "SM_moto - Win32 Debug"
+# Name "SM_moto - Win32 MT DLL Debug"
+# Name "SM_moto - Win32 MT DLL Release"
+# Name "SM_moto - Win32 Profile"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_CmMatrix4x4.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix3x3.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Matrix4x4.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Point3.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Quaternion.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_random.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Transform.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector2.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector3.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\src\MT_Vector4.cpp
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\GEN_List.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\GEN_Map.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_assert.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_CmMatrix4x4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix3x3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Matrix4x4.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_MinMax.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Optimize.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point2.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Point3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Quaternion.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_random.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Scalar.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Stream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Transform.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Tuple4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector2.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector3.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\MT_Vector4.inl
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\..\source\sumo\MoTo\include\NM_Scalar.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles_vc7/sumo/solid/SM_solid.dsp b/projectfiles_vc7/sumo/solid/SM_solid.dsp
index dfaa85c35d8..221a72f67ef 100644
--- a/projectfiles_vc7/sumo/solid/SM_solid.dsp
+++ b/projectfiles_vc7/sumo/solid/SM_solid.dsp
@@ -1,340 +1,340 @@
-# Microsoft Developer Studio Project File - Name="SM_solid" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=SM_solid - Win32 Release
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "SM_solid.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "SM_solid.mak" CFG="SM_solid - Win32 Release"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "SM_solid - Win32 Release" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_solid - Win32 Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_solid - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "SM_solid - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "SM_solid - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /J /FD /c
-# SUBTRACT CPP /YX
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_solid - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# SUBTRACT CPP /Fr
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Debug"
-# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\debug\SM_solid.lib"
-# ADD LIB32 /nologo
-
-!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Release"
-# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
-# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
-# PROP Target_Dir ""
-LINK32=link.exe -lib
-# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\SM_solid.lib"
-# ADD LIB32 /nologo
-
-!ENDIF
-
-# Begin Target
-
-# Name "SM_solid - Win32 Release"
-# Name "SM_solid - Win32 Debug"
-# Name "SM_solid - Win32 MT DLL Debug"
-# Name "SM_solid - Win32 MT DLL Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\BBoxTree.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Box.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Complex.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cone.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Convex.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cylinder.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_C-api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Endpoint.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Proxy.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Scene.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_C-api.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_DoubleBase.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Encounter.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_FloatBase.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_LineSegment.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Object.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_RespTable.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Scene.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polyhedron.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polytope.cpp"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Sphere.cpp"
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\AlgoTable.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\BBoxTree.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Box.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Complex.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cone.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Convex.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cylinder.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_AABBox.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BBox.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Endpoint.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Proxy.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Scene.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_DoubleBase.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Encounter.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_FloatBase.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_LineSegment.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Object.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Response.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_RespTable.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Scene.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBase.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBased.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\IndexArray.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polyhedron.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polytope.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Shape.h"
-# End Source File
-# Begin Source File
-
-SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Sphere.h"
-# End Source File
-# End Group
-# End Target
-# End Project
+# Microsoft Developer Studio Project File - Name="SM_solid" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Static Library" 0x0104
+
+CFG=SM_solid - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "SM_solid.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "SM_solid.mak" CFG="SM_solid - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "SM_solid - Win32 Release" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_solid - Win32 Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_solid - Win32 MT DLL Debug" (based on "Win32 (x86) Static Library")
+!MESSAGE "SM_solid - Win32 MT DLL Release" (based on "Win32 (x86) Static Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "SM_solid - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /J /FD /c
+# SUBTRACT CPP /YX
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_solid - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# SUBTRACT CPP /Fr
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Debug"
+# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll_debug"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /Gm /GX /ZI /Od /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD CPP /nologo /MDd /Gm /GX /ZI /Od /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /GZ /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\debug\SM_solid.lib"
+# ADD LIB32 /nologo
+
+!ELSEIF "$(CFG)" == "SM_solid - Win32 MT DLL Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "SM_solid___Win32_MT_DLL_Release"
+# PROP BASE Intermediate_Dir "SM_solid___Win32_MT_DLL_Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
+# PROP Intermediate_Dir "..\..\..\obj\windows\sumo\solid\mtdll"
+# PROP Target_Dir ""
+LINK32=link.exe -lib
+# ADD BASE CPP /nologo /GX /O2 /I "..\..\..\source\sumo\SOLID-3.0\include" /I "../../../../../lib/windows/moto/include" /I "..\..\..\source\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD CPP /nologo /MD /GX /O2 /I "..\..\..\source\gameengine\physics\sumo\SOLID-3.0\include" /I "../../../../lib/windows/moto/include" /I "..\..\..\source\gameengine\physics\sumo\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /YX /J /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LIB32=link.exe -lib
+# ADD BASE LIB32 /nologo /out:"..\..\..\..\..\obj\windows\sumo\solid\SM_solid.lib"
+# ADD LIB32 /nologo
+
+!ENDIF
+
+# Begin Target
+
+# Name "SM_solid - Win32 Release"
+# Name "SM_solid - Win32 Debug"
+# Name "SM_solid - Win32 MT DLL Debug"
+# Name "SM_solid - Win32 MT DLL Release"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\BBoxTree.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Box.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Complex.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cone.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Convex.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Cylinder.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_C-api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Endpoint.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Proxy.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_BP_Scene.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_C-api.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_DoubleBase.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Encounter.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_FloatBase.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_LineSegment.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Object.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_RespTable.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\DT_Scene.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polyhedron.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Polytope.cpp"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\src\Sphere.cpp"
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\AlgoTable.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\BBoxTree.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Box.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Complex.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cone.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Convex.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Cylinder.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_AABBox.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BBox.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Endpoint.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Proxy.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_BP_Scene.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_DoubleBase.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Encounter.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_FloatBase.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_LineSegment.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Object.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Response.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_RespTable.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_Scene.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBase.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\DT_VertexBased.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\IndexArray.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polyhedron.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Polytope.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Shape.h"
+# End Source File
+# Begin Source File
+
+SOURCE="..\..\..\source\gameengine\Physics\Sumo\SOLID-3.0\include\Sphere.h"
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/projectfiles_vc9/blender/blender.vcproj b/projectfiles_vc9/blender/blender.vcproj
index c05c4df4773..1f8d1dc9d7c 100644
--- a/projectfiles_vc9/blender/blender.vcproj
+++ b/projectfiles_vc9/blender/blender.vcproj
@@ -73,7 +73,7 @@
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python25.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-51.lib avformat-52.lib avutil-49.lib swscale-0.lib avdevice-52.lib"
+ AdditionalDependencies="SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python25.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half.lib Iex.lib IlmImf.lib Imath.lib IlmThread.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
ShowProgress="0"
OutputFile="..\..\..\install\msvc_9\blender.exe"
LinkIncremental="1"
@@ -81,6 +81,7 @@
AdditionalLibraryDirectories="..\..\..\lib\windows\sdl\lib;..\..\..\lib\windows\ode\lib;..\..\..\lib\windows\zlib\lib;..\..\..\lib\windows\png\lib;..\..\..\lib\windows\jpeg\lib;..\..\..\lib\windows\gettext\lib;..\..\..\lib\windows\python\lib\lib25_vs2008;..\..\..\lib\windows\freetype\lib;..\..\..\lib\windows\tiff\lib;..\..\..\lib\windows\pthreads\lib;..\..\..\lib\windows\openal\lib;..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\build\msvc_9\libs\intern;..\..\..\build\msvc_9\libs\extern;..\..\..\lib\windows\ffmpeg\lib"
IgnoreAllDefaultLibraries="false"
IgnoreDefaultLibraryNames="msvcprt.lib;glut32.lib;libc.lib;libcd.lib;libcpd.lib;libcp.lib;libcmtd.lib;odbc32.lib;odbccp32.lib"
+ GenerateDebugInformation="true"
ProgramDatabaseFile="..\..\..\build\msvc_9\libs\blender.pdb"
SubSystem="1"
RandomizedBaseAddress="1"
@@ -167,7 +168,7 @@
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386&#x0D;&#x0A;"
- AdditionalDependencies="freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib avcodec-51.lib avformat-52.lib avdevice-52.lib avutil-49.lib swscale-0.lib"
+ AdditionalDependencies="SDL.lib freetype2ST.lib gnu_gettext.lib qtmlClient.lib openal_static.lib ws2_32.lib dxguid.lib opengl32.lib libjpeg.lib glu32.lib vfw32.lib winmm.lib libpng_st.lib zlib.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib libtiff.lib Half_d.lib Iex_d.lib Imath_d.lib IlmImf_d.lib IlmThread_d.lib avcodec-52.lib avformat-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib"
ShowProgress="0"
OutputFile="..\..\..\install\msvc_9d\blender.exe"
LinkIncremental="2"
diff --git a/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj b/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj
index fe20152388a..01ccd916edb 100644
--- a/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj
+++ b/projectfiles_vc9/gameengine/gameplayer/ghost/GP_ghost.vcproj
@@ -72,7 +72,7 @@
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386&#x0D;&#x0A;"
- AdditionalDependencies="odelib.lib fmodvc.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-51.lib avformat-52.lib avutil-49.lib swscale-0.lib avdevice-52.lib"
+ AdditionalDependencies="odelib.lib fmodvc.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib Half_d.lib Iex_d.lib IlmImf_d.lib IlmThread_d.lib Imath_d.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
ShowProgress="0"
OutputFile="..\..\..\..\bin\debug\blenderplayer.exe"
LinkIncremental="2"
@@ -166,7 +166,7 @@
<Tool
Name="VCLinkerTool"
AdditionalOptions="/MACHINE:I386"
- AdditionalDependencies="odelib.lib fmodvc.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python25_d.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-51.lib avformat-52.lib avutil-49.lib swscale-0.lib avdevice-52.lib"
+ AdditionalDependencies="odelib.lib fmodvc.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib openal_static.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python25.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
OutputFile="..\..\..\..\bin\blenderplayer.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
diff --git a/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj b/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj
index 62a0d7a7bfa..80c34bef223 100644
--- a/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj
+++ b/projectfiles_vc9/gameengine/ketsji/KX_ketsji.vcproj
@@ -514,6 +514,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Ketsji\KX_Dome.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Ketsji\KX_EmptyObject.cpp"
>
</File>
@@ -574,6 +578,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Ketsji\KX_PythonInitTypes.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Ketsji\KX_RayCast.cpp"
>
</File>
@@ -799,6 +807,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Ketsji\KX_Dome.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Ketsji\KX_EmptyObject.h"
>
</File>
@@ -875,6 +887,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\gameengine\Ketsji\KX_PythonInitTypes.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\Ketsji\KX_RayCast.h"
>
</File>
diff --git a/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj b/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj
index 9d55727e90f..e6991592d40 100644
--- a/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj
+++ b/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Bullet/PHY_Bullet.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="PHY_Bullet"
ProjectGUID="{E90C7BC2-CF30-4A60-A8F2-0050D592E358}"
+ RootNamespace="PHY_Bullet"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
>
@@ -41,7 +42,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="false"
BasicRuntimeChecks="3"
@@ -109,7 +110,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
@@ -175,7 +176,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
@@ -242,7 +243,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="false"
BasicRuntimeChecks="3"
@@ -311,7 +312,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="false"
BasicRuntimeChecks="3"
@@ -379,7 +380,7 @@
/>
<Tool
Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\kernel\gen_system"
+ AdditionalIncludeDirectories="..\..\..\..\..\..\lib\windows\python\include\python2.5;..\..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\source\gameengine\Physics\common;..\..\..\..\..\source\gameengine\Physics\Bullet;..\..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\..\source\gameengine\Ketsji;..\..\..\..\..\source\gameengine\Expressions;..\..\..\..\..\source\gameengine\GameLogic;..\..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\..\source\kernel\gen_system;..\..\..\..\..\source\blender\makesdna"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
@@ -430,6 +431,10 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
+ RelativePath="..\..\..\..\..\source\gameengine\Physics\Bullet\CcdGraphicController.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\..\source\gameengine\Physics\Bullet\CcdPhysicsController.cpp"
>
</File>
@@ -444,6 +449,10 @@
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
+ RelativePath="..\..\..\..\..\source\gameengine\Physics\Bullet\CcdGraphicController.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\..\source\gameengine\Physics\Bullet\CcdPhysicsController.h"
>
</File>
diff --git a/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Physics.vcproj b/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Physics.vcproj
index 582aed500ac..5441c5bd4f1 100644
--- a/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Physics.vcproj
+++ b/projectfiles_vc9/gameengine/physics/PHY_Physics/PHY_Physics.vcproj
@@ -4,6 +4,7 @@
Version="9,00"
Name="PHY_Physics"
ProjectGUID="{E109F1A5-FDD3-4F56-A1C4-96867EEA4C5B}"
+ RootNamespace="PHY_Physics"
TargetFrameworkVersion="131072"
>
<Platforms>
@@ -470,6 +471,14 @@
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
+ RelativePath="..\..\..\..\source\gameengine\Physics\common\PHY_IController.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\gameengine\Physics\common\PHY_IGraphicController.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\source\gameengine\Physics\common\PHY_IMotionState.cpp"
>
</File>
@@ -495,6 +504,14 @@
>
</File>
<File
+ RelativePath="..\..\..\..\source\gameengine\Physics\common\PHY_IController.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\source\gameengine\Physics\common\PHY_IGraphicController.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\..\source\gameengine\Physics\common\PHY_IMotionState.h"
>
</File>
diff --git a/release/beos-4.5-i386/specific.sh b/release/beos-4.5-i386/specific.sh
index 9ce063b27a9..9ce063b27a9 100644..100755
--- a/release/beos-4.5-i386/specific.sh
+++ b/release/beos-4.5-i386/specific.sh
diff --git a/release/beos-5.0-i386/specific.sh b/release/beos-5.0-i386/specific.sh
index 9ce063b27a9..9ce063b27a9 100644..100755
--- a/release/beos-5.0-i386/specific.sh
+++ b/release/beos-5.0-i386/specific.sh
diff --git a/release/irix-6.2-mips/specific.sh b/release/irix-6.2-mips/specific.sh
index 1b053ce6a3e..1b053ce6a3e 100644..100755
--- a/release/irix-6.2-mips/specific.sh
+++ b/release/irix-6.2-mips/specific.sh
diff --git a/release/scripts/3ds_import.py b/release/scripts/3ds_import.py
index 028b9633606..1963d2e7433 100644
--- a/release/scripts/3ds_import.py
+++ b/release/scripts/3ds_import.py
@@ -844,11 +844,13 @@ def load_3ds(filename, PREF_UI= True):
# IMPORT_AS_INSTANCE= Blender.Draw.Create(0)
IMPORT_CONSTRAIN_BOUNDS= Blender.Draw.Create(10.0)
IMAGE_SEARCH= Blender.Draw.Create(1)
+ APPLY_MATRIX= Blender.Draw.Create(0)
# Get USER Options
pup_block= [\
('Size Constraint:', IMPORT_CONSTRAIN_BOUNDS, 0.0, 1000.0, 'Scale the model by 10 until it reacehs the size constraint. Zero Disables.'),\
('Image Search', IMAGE_SEARCH, 'Search subdirs for any assosiated images (Warning, may be slow)'),\
+ ('Transform Fix', APPLY_MATRIX, 'Workaround for object transformations importing incorrectly'),\
#('Group Instance', IMPORT_AS_INSTANCE, 'Import objects into a new scene and group, creating an instance in the current scene.'),\
]
@@ -861,6 +863,7 @@ def load_3ds(filename, PREF_UI= True):
IMPORT_CONSTRAIN_BOUNDS= IMPORT_CONSTRAIN_BOUNDS.val
# IMPORT_AS_INSTANCE= IMPORT_AS_INSTANCE.val
IMAGE_SEARCH = IMAGE_SEARCH.val
+ APPLY_MATRIX = APPLY_MATRIX.val
if IMPORT_CONSTRAIN_BOUNDS:
BOUNDS_3DS[:]= [1<<30, 1<<30, 1<<30, -1<<30, -1<<30, -1<<30]
@@ -887,6 +890,8 @@ def load_3ds(filename, PREF_UI= True):
if ob.type=='Mesh':
me= ob.getData(mesh=1)
me.verts.delete([me.verts[0],])
+ if not APPLY_MATRIX:
+ me.transform(ob.matrixWorld.copy().invert())
# Done DUMMYVERT
"""
diff --git a/release/scripts/bevel_center.py b/release/scripts/bevel_center.py
index 063c6380483..637ed08127f 100644
--- a/release/scripts/bevel_center.py
+++ b/release/scripts/bevel_center.py
@@ -1,5 +1,5 @@
#!BPY
-# coding: utf-8
+# -*- coding: utf-8 -*-
""" Registration info for Blender menus
Name: 'Bevel Center'
Blender: 243
diff --git a/release/scripts/bpymodules/dxfLibrary.py b/release/scripts/bpymodules/dxfLibrary.py
index 96caa50cc41..5390be084ee 100644
--- a/release/scripts/bpymodules/dxfLibrary.py
+++ b/release/scripts/bpymodules/dxfLibrary.py
@@ -1,6 +1,6 @@
#dxfLibrary.py : provides functions for generating DXF files
# --------------------------------------------------------------------------
-__version__ = "v1.28beta - 2008.12.13"
+__version__ = "v1.29beta - 2008.12.28"
__author__ = "Stani Michiels(Stani), Remigiusz Fiedler(migius)"
__license__ = "GPL"
__url__ = "http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_dxf"
@@ -18,9 +18,11 @@ IDEAs:
-
TODO:
-- add support for SPLINEs
+- add support for SPLINEs, (bad idea, cause DXF r14 object :(
History
+v1.29 - 2008.12.28 by Yorik
+- modif POLYLINE to support bulge segments
v1.28 - 2008.12.13 by Steeve/BlenderArtists
- bugfix for EXTMIN/EXTMAX to suit Cycas-CAD
v1.27 - 2008.10.07 by migius
@@ -297,41 +299,60 @@ class Line(_Entity):
#-----------------------------------------------
class PolyLine(_Entity):
def __init__(self,points,org_point=[0,0,0],flag=0,width=None,**common):
+ #width = number, or width = list [width_start=None, width_end=None]
+ #for 2d-polyline: points = [ [x, y, z, width_start=None, width_end=None, bulge=0 or None], ...]
+ #for 3d-polyline: points = [ [x, y, z], ...]
+ #for polyface: points = [points_list, faces_list]
_Entity.__init__(self,**common)
self.points=points
self.org_point=org_point
self.flag=flag
- if self.flag==64:
+ if self.flag & POLYFACE_MESH:
+ self.polyface=True
self.points=points[0]
self.faces=points[1]
self.p_count=len(self.points)
self.f_count=len(self.faces)
- self.width=width
+ elif not self.flag & POLYLINE_3D:
+ self.polyline2d = True
+ if width:
+ if type(width)!='list':
+ width=[width,width]
+ self.width=width
def __str__(self):
result= ' 0\nPOLYLINE\n%s 70\n%s\n' %(self._common(),self.flag)
#print 'deb: self._common()', self._common() #----------
result+=' 66\n1\n'
result+='%s\n' %_point(self.org_point)
- if self.flag==64:
+ if self.polyface:
result+=' 71\n%s\n' %self.p_count
result+=' 72\n%s\n' %self.f_count
+ elif self.polyline2d:
+ if self.width: result+=' 40\n%s\n 41\n%s\n' %(self.width[0],self.width[1])
for point in self.points:
result+=' 0\nVERTEX\n'
result+=' 8\n%s\n' %self.layer
- result+='%s\n' %_point(point)
- if self.flag==64: result+=' 70\n192\n'
- if self.width: result+=' 40\n%s\n 41\n%s\n' %(self.width,self.width)
- if self.flag==64:
- for face in self.faces:
- result+=' 0\nVERTEX\n'
- result+=' 8\n%s\n' %self.layer
- result+='%s\n' %_point(self.org_point)
- result+=' 70\n128\n'
- result+=' 71\n%s\n' %face[0]
- result+=' 72\n%s\n' %face[1]
- result+=' 73\n%s\n' %face[2]
- if len(face)==4: result+=' 74\n%s\n' %face[3]
+ result+='%s\n' %_point(point[0:2])
+ if self.polyface:
+ result+=' 70\n192\n'
+ elif self.polyline2d:
+ if len(point)>4:
+ width1, width2 = point[3], point[4]
+ if width1!=None: result+=' 40\n%s\n' %width1
+ if width2!=None: result+=' 41\n%s\n' %width2
+ if len(point)==6:
+ bulge = point[5]
+ if bulge: result+=' 42\n%s\n' %bulge
+ for face in self.faces:
+ result+=' 0\nVERTEX\n'
+ result+=' 8\n%s\n' %self.layer
+ result+='%s\n' %_point(self.org_point)
+ result+=' 70\n128\n'
+ result+=' 71\n%s\n' %face[0]
+ result+=' 72\n%s\n' %face[1]
+ result+=' 73\n%s\n' %face[2]
+ if len(face)==4: result+=' 74\n%s\n' %face[3]
result+=' 0\nSEQEND\n'
result+=' 8\n%s\n' %self.layer
return result
@@ -711,5 +732,5 @@ def test():
if __name__=='__main__':
if not copy:
Draw.PupMenu('Error%t|This script requires a full python install')
- main()
+ else: main()
\ No newline at end of file
diff --git a/release/scripts/export_dxf.py b/release/scripts/export_dxf.py
index 061e29b81c7..99c6acaceab 100644
--- a/release/scripts/export_dxf.py
+++ b/release/scripts/export_dxf.py
@@ -1,14 +1,14 @@
#!BPY
"""
- Name: 'Autodesk DXF (.dxf)'
+ Name: 'Autodesk (.dxf .dwg)'
Blender: 247
Group: 'Export'
- Tooltip: 'Export geometry to DXF-r12 (Drawing eXchange Format).'
+ Tooltip: 'Export geometry to Autocad DXF/DWG-r12 (Drawing eXchange Format).'
"""
-__version__ = "v1.27beta - 2008.10.07"
-__author__ = "Remigiusz Fiedler (AKA migius)"
+__version__ = "v1.29 - 2009.04.11"
+__author__ = "Remigiusz Fiedler (AKA migius), Alexandros Sigalas (AKA alxarch), Stani Michiels"
__license__ = "GPL"
__url__ = "http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_dxf"
__bpydoc__ ="""The script exports Blender geometry to DXF format r12 version.
@@ -25,8 +25,9 @@ url: %s
IDEAs:
- correct normals for POLYLINE-POLYFACE via proper point-order
- HPGL output for 2d and flattened 3d content
-
+
TODO:
+- export dupligroups and dupliverts as blocks ( option for the user to decide )
- optimize back-faces removal (probably needs matrix transform)
- optimize POLYFACE routine: remove double-vertices
- optimize POLYFACE routine: remove unused vertices
@@ -36,6 +37,11 @@ TODO:
- write drawing extends for automatic view positioning in CAD
History
+v1.29 - 2009.04.11 by migius
+- added DWG support, Stani Michiels idea for binding an extern DXF-DWG-converter
+v1.28 - 2009.02.05 by alxarch
+- added option to apply modifiers on exported meshes
+- added option to also export duplicates (from dupliverts etc)
v1.27 - 2008.10.07 by migius
- exclude Stani's DXF-Library to extern module
v1.26 - 2008.10.05 by migius
@@ -86,14 +92,95 @@ ______________________________________________________________
import Blender
-from Blender import Mathutils, Window, Scene, sys, Draw
+from Blender import Mathutils, Window, Scene, sys, Draw, Mesh
import BPyMessages
+import os
+import subprocess
+
+#print os.sys.platform
+#print dir(os.sys.version)
#import dxfLibrary
#reload(dxfLibrary)
from dxfLibrary import *
+#-------- DWG support ------------------------------------------
+extCONV_OK = True
+extCONV = 'DConvertCon.exe'
+extCONV_PATH = os.path.join(Blender.Get('scriptsdir'),extCONV)
+if not os.path.isfile(extCONV_PATH):
+ extCONV_OK = False
+ extCONV_TEXT = 'DWG-Exporter: Abort, nothing done!|\
+Copy first %s into Blender script directory.|\
+More details in online Help.' %extCONV
+else:
+ if not os.sys.platform.startswith('win'):
+ # check if Wine installed:
+ if subprocess.Popen(('which', 'winepath'), stdout=subprocess.PIPE).stdout.read().strip():
+ extCONV_PATH = 'wine %s'%extCONV_PATH
+ else:
+ extCONV_OK = False
+ extCONV_TEXT = 'DWG-Exporter: Abort, nothing done!|\
+The external DWG-converter (%s) needs Wine installed on your system.|\
+More details in online Help.' %extCONV
+#print 'extCONV_PATH = ', extCONV_PATH
+
+
+
+#-----------------------------------------------------
+def dupTest(object):
+ """
+ Checks objects for duplicates enabled (any type)
+ object: Blender Object.
+ Returns: Boolean - True if object has any kind of duplicates enabled.
+ """
+ if (object.enableDupFrames or \
+ object.enableDupGroup or \
+ object.enableDupVerts):
+ return True
+ else:
+ return False
+
+def getObjectsAndDuplis(oblist,MATRICES=False,HACK=False):
+ """
+ Return a list of real objects and duplicates and optionally their matrices
+ oblist: List of Blender Objects
+ MATRICES: Boolean - Check to also get the objects matrices default=False
+ HACK: Boolean - See note default=False
+ Returns: List of objects or
+ List of tuples of the form:(ob,matrix) if MATRICES is set to True
+ NOTE: There is an ugly hack here that excludes all objects whose name
+ starts with "dpl_" to exclude objects that are parented to a duplicating
+ object, User must name objects properly if hack is used.
+ """
+
+ result = []
+ for ob in oblist:
+ if dupTest(ob):
+ dup_obs=ob.DupObjects
+ if len(dup_obs):
+ for dup_ob, dup_mx in dup_obs:
+ if MATRICES:
+ result.append((dup_ob,dup_mx))
+ else:
+ result.append(dup_ob)
+ else:
+ if HACK:
+ if ob.getName()[0:4] != "dpl_":
+ if MATRICES:
+ mx = ob.mat
+ result.append((ob,mx))
+ else:
+ result.append(ob)
+ else:
+ if MATRICES:
+ mx = ob.mat
+ result.append((ob,mx))
+ else:
+ result.append(ob)
+ return result
+
#-----------------------------------------------------
def hidden_status(faces, mx_n):
#print 'HIDDEN_MODE: caution! not full implemented yet'
@@ -146,9 +233,13 @@ def flatten(points, mw):
return points
#-----------------------------------------------------
-def exportMesh(ob, mx, mx_n):
+def exportMesh(ob, mx, mx_n,me=None):
entities = []
- me = ob.getData(mesh=1)
+ global APPLY_MODIFIERS
+ if me is None:
+ me = ob.getData(mesh=1)
+ else:
+ me.getFromObject(ob)
#me.transform(mx)
# above is eventualy faster, but bad, cause
# directly transforms origin geometry and write back rounding errors
@@ -209,7 +300,7 @@ def exportMesh(ob, mx, mx_n):
points = [ me_verts[key].co[:3] for key in e]
dxfLINE = Line(points)
entities.append(dxfLINE)
-
+
else:
for e in me.edges:
#print 'deb: edge=', e #---------
@@ -257,7 +348,7 @@ def exportCurve(ob, mx):
return entities
#-----------------------------------------------------
-def do_export(sel_group, filepath):
+def do_export(export_list, filepath):
Window.WaitCursor(1)
t = sys.time()
@@ -281,22 +372,27 @@ def do_export(sel_group, filepath):
m0[2][2]=0.0
mw *= m0 #flatten ViewMatrix
- for ob in sel_group:
+ if APPLY_MODIFIERS:
+ tmp_me = Mesh.New('tmp')
+ else:
+ tmp_me = None
+
+ for ob,mx in export_list:
entities = []
- mx = ob.matrix.copy()
+ #mx = ob.matrix.copy()
mb = mx.copy()
#print 'deb: mb =\n', mb #---------
#print 'deb: mw0 =\n', mw0 #---------
mx_n = mx.rotationPart() * mw0.rotationPart() #trans-matrix for normal_vectors
if SCALE_FACTOR!=1.0: mx *= SCALE_FACTOR
if FLATTEN: mx *= mw
-
+
#mx_inv = mx.copy().invert()
#print 'deb: mx =\n', mx #---------
#print 'deb: mx_inv=\n', mx_inv #---------
if (ob.type == 'Mesh'):
- entities = exportMesh(ob, mx, mx_n)
+ entities = exportMesh(ob, mx, mx_n,tmp_me)
elif (ob.type == 'Curve'):
entities = exportCurve(ob, mx)
@@ -305,11 +401,30 @@ def do_export(sel_group, filepath):
something_ready = True
if something_ready:
- d.saveas(filepath)
- Window.WaitCursor(0)
- #Draw.PupMenu('DXF Exporter: job finished')
- print 'exported to %s' % filepath
- print 'finished in %.2f seconds' % (sys.time()-t)
+ if not OUTPUT_DWG:
+ print 'exporting to %s' % filepath
+ d.saveas(filepath)
+ Window.WaitCursor(0)
+ #Draw.PupMenu('DXF Exporter: job finished')
+ print ' finished in %.2f seconds. -----DONE-----' % (sys.time()-t)
+ else:
+ if not extCONV_OK:
+ Draw.PupMenu(extCONV_TEXT)
+ Window.WaitCursor(False)
+ else:
+ print 'temp. exporting to %s' % filepath
+ d.saveas(filepath)
+ #Draw.PupMenu('DXF Exporter: job finished')
+ #print 'exported to %s' % filepath
+ #print 'finished in %.2f seconds' % (sys.time()-t)
+ filedwg = filepath[:-3]+'dwg'
+ print 'exporting to %s' % filedwg
+ os.system('%s %s -acad13 -dwg' %(extCONV_PATH,filepath))
+ #os.chdir(cwd)
+ os.remove(filepath)
+ Window.WaitCursor(0)
+ print ' finished in %.2f seconds. -----DONE-----' % (sys.time()-t)
+
else:
Window.WaitCursor(0)
print "Abort: selected objects dont mach choosen export option, nothing exported!"
@@ -323,8 +438,9 @@ POLYFACES = 1
FLATTEN = 0
HIDDEN_MODE = False #filter out hidden lines
SCALE_FACTOR = 1.0 #optional, can be done later in CAD too
-
-
+APPLY_MODIFIERS = True
+INCLUDE_DUPLIS = False
+OUTPUT_DWG = False #optional save to DWG with extern converter
#-----------------------------------------------------
def dxf_export_ui(filepath):
@@ -334,9 +450,12 @@ def dxf_export_ui(filepath):
POLYFACES,\
FLATTEN,\
HIDDEN_MODE,\
- SCALE_FACTOR
+ SCALE_FACTOR,\
+ APPLY_MODIFIERS,\
+ OUTPUT_DWG,\
+ INCLUDE_DUPLIS
- print '\n\nDXF-Export %s -----------------------' %__version__
+ print '\n\nDXF-Export %s -----------START-----------' %__version__
#filepath = 'blend_test.dxf'
# Dont overwrite
if not BPyMessages.Warning_SaveOver(filepath):
@@ -352,19 +471,26 @@ def dxf_export_ui(filepath):
PREF_FLATTEN= Draw.Create(FLATTEN)
PREF_HIDDEN_MODE= Draw.Create(HIDDEN_MODE)
PREF_SCALE_FACTOR= Draw.Create(SCALE_FACTOR)
+ PREF_APPLY_MODIFIERS= Draw.Create(APPLY_MODIFIERS)
+ PREF_INCLUDE_DUPLIS= Draw.Create(INCLUDE_DUPLIS)
PREF_HELP= Draw.Create(0)
+ PREF_DWG= Draw.Create(OUTPUT_DWG)
block = [\
("only selected", PREF_ONLYSELECTED, "export only selected geometry"),\
+ ("Apply Modifiers", PREF_APPLY_MODIFIERS, "Apply modifier stack to mesh objects before export"),\
+ ("Include Duplis", PREF_INCLUDE_DUPLIS, "Export also Duplicates (dupliverts, dupliframes etc)"),\
("global Scale:", PREF_SCALE_FACTOR, 0.001, 1000, "set global Scale factor for exporting geometry"),\
- ("only faces", PREF_ONLYFACES, "from mesh-objects export only faces, otherwise only edges"),\
- ("write POLYFACE", PREF_POLYFACES, "export mesh to POLYFACE, otherwise to 3DFACEs"),\
- ("write POLYLINEs", PREF_POLYLINES, "export curve to POLYLINE, otherwise to LINEs"),\
+ (''),\
+ ("export to 3DFaces", PREF_ONLYFACES, "from mesh-objects export only faces, otherwise only edges"),\
+ ("mesh to POLYFACE", PREF_POLYFACES, "export mesh to POLYFACE, otherwise to 3DFACEs"),\
+ ("curves to POLYLINEs", PREF_POLYLINES, "export curve to POLYLINE, otherwise to LINEs"),\
("3D-View to Flat", PREF_FLATTEN, "flatten geometry according current 3d-View"),\
("Hidden Mode", PREF_HIDDEN_MODE, "filter out hidden lines"),\
- #(''),\
("online Help", PREF_HELP, "calls DXF-Exporter Manual Page on Wiki.Blender.org"),\
+ (''),\
+ ("DXF->DWG", PREF_DWG, "writes DWG with extern converter"),\
]
-
+
if not Draw.PupBlock("DXF-Exporter %s" %__version__[:10], block): return
if PREF_HELP.val!=0:
@@ -372,7 +498,7 @@ def dxf_export_ui(filepath):
import webbrowser
webbrowser.open('http://wiki.blender.org/index.php?title=Scripts/Manual/Export/autodesk_dxf')
except:
- Draw.PupMenu('DXF Exporter: %t|no connection to manual-page on Blender-Wiki! try:|\
+ Draw.PupMenu('DXF Exporter: %t|no connection to manual-page on Blender-Wiki! try:|\
http://wiki.blender.org/index.php?title=Scripts/Manual/Export/autodesk_dxf')
return
@@ -383,12 +509,14 @@ http://wiki.blender.org/index.php?title=Scripts/Manual/Export/autodesk_dxf')
FLATTEN = PREF_FLATTEN.val
HIDDEN_MODE = PREF_HIDDEN_MODE.val
SCALE_FACTOR = PREF_SCALE_FACTOR.val
-
+ OUTPUT_DWG = PREF_DWG.val
+
sce = Scene.GetCurrent()
if ONLYSELECTED: sel_group = sce.objects.selected
else: sel_group = sce.objects
+ export_list = getObjectsAndDuplis(sel_group,MATRICES=True)
- if sel_group: do_export(sel_group, filepath)
+ if export_list: do_export(export_list, filepath)
else:
print "Abort: selection was empty, no object to export!"
Draw.PupMenu('DXF Exporter: nothing exported!|empty selection!')
@@ -401,7 +529,4 @@ if __name__=='__main__':
#main()
if not copy:
Draw.PupMenu('Error%t|This script requires a full python install')
- Window.FileSelector(dxf_export_ui, 'EXPORT DXF', sys.makename(ext='.dxf'))
-
-
- \ No newline at end of file
+ else: Window.FileSelector(dxf_export_ui, 'EXPORT DXF', sys.makename(ext='.dxf')) \ No newline at end of file
diff --git a/release/scripts/image_auto_layout.py b/release/scripts/image_auto_layout.py
index c6f97a25434..d19ba1da662 100644
--- a/release/scripts/image_auto_layout.py
+++ b/release/scripts/image_auto_layout.py
@@ -9,7 +9,7 @@ Tooltip: 'Pack all texture images into 1 image and remap faces.'
__author__ = "Campbell Barton"
__url__ = ("blender", "blenderartists.org")
-__version__ = "1.1 2007/02/15"
+__version__ = "1.1a 2009/04/01"
__bpydoc__ = """\
This script makes a new image from the used areas of all the images mapped to the selected mesh objects.
@@ -273,9 +273,12 @@ def consolidate_mesh_images(mesh_list, scn, PREF_IMAGE_PATH, PREF_IMAGE_SIZE, PR
# New Mesh and Object
render_mat= B.Material.New()
- render_mat.mode |= B.Material.Modes.SHADELESS
- render_mat.mode |= B.Material.Modes.TEXFACE
- render_mat.mode |= B.Material.Modes.ZTRANSP
+ render_mat.mode |= \
+ B.Material.Modes.SHADELESS | \
+ B.Material.Modes.TEXFACE | \
+ B.Material.Modes.TEXFACE_ALPHA | \
+ B.Material.Modes.ZTRANSP
+
render_mat.setAlpha(0.0)
render_me= B.Mesh.New()
@@ -420,7 +423,7 @@ def main():
PREF_IMAGE_PATH= PREF_IMAGE_PATH.val
PREF_IMAGE_SIZE= PREF_IMAGE_SIZE.val
- PREF_IMAGE_MARGIN= PREF_IMAGE_MARGIN.val
+ PREF_IMAGE_MARGIN= float(PREF_IMAGE_MARGIN.val) # important this is a float otherwise division wont work properly
PREF_KEEP_ASPECT= PREF_KEEP_ASPECT.val
PREF_ALL_SEL_OBS= PREF_ALL_SEL_OBS.val
diff --git a/release/scripts/import_dxf.py b/release/scripts/import_dxf.py
index c3203891c60..ceb4dd56722 100644
--- a/release/scripts/import_dxf.py
+++ b/release/scripts/import_dxf.py
@@ -1,20 +1,21 @@
#!BPY
"""
-Name: 'Autodesk DXF (.dxf)'
+Name: 'Autodesk DXF (.dxf .dwg)'
Blender: 246
Group: 'Import'
-Tooltip: 'Import for DXF geometry data (Drawing eXchange Format).'
+Tooltip: 'Import for DWG/DXF geometry data.'
"""
__author__ = 'Kitsu(Ed Blake) & migius(Remigiusz Fiedler)'
-__version__ = '1.12 - 2009.03.14 by migius'
+__version__ = '1.12 - 2009.04.11 by migius'
__url__ = ["http://blenderartists.org/forum/showthread.php?t=84319",
"http://wiki.blender.org/index.php/Scripts/Manual/Import/DXF-3D"]
__email__ = ["migius(at)4d-vectors.de","Kitsune_e(at)yahoo.com"]
__bpydoc__ = """\
-This script imports objects from DXF (2d/3d) into Blender.
+This script imports objects from DWG/DXF (2d/3d) into Blender.
This script imports 2d and 3d geometery from DXF files.
+It supports DWG format too, with help of an external converter.
Supported DXF format versions: from (r2.5) r12 up to r2008.
Enhanced features are:
- configurable object filtering and geometry manipulation,
@@ -111,6 +112,8 @@ History:
-- support ortho mode for VIEWs and VPORTs as cameras
+ v1.12 - 2009.04.11 by migius
+ d4 added DWG support, Stani Michiels idea for binding an extern DXF-DWG-converter
v1.12 - 2009.03.14 by migius
d3 removed all set()functions (problem with osx/python<2.4 reported by Blinkozo)
d3 code-cleaning
@@ -305,7 +308,8 @@ History:
# --------------------------------------------------------------------------
import Blender
-from Blender import *
+from Blender import Mathutils, BezTriple, Draw, Registry, sys,\
+Text3d, Window, Mesh, Material, Group
#from Blender.Mathutils import Vector, Matrix
#import bpy #not used yet
#import BPyMessages
@@ -314,7 +318,7 @@ from dxfReader import readDXF
#from dxfReader import get_name, get_layer
from dxfReader import Object as dxfObject
from dxfColorMap import color_map
-from math import *
+from math import log10, sqrt, radians, degrees, atan, cos, sin
# osx-patch by Blinkozo
#todo: avoid additional modules, prefer Blender-build-in test routines
@@ -325,9 +329,10 @@ from math import *
#ver = '%s.%s' % version_info[0:2]
# end osx-patch
-try:
- import os
- if os.name != 'mac':
+import subprocess
+import os
+if os.name != 'mac':
+ try:
import psyco
psyco.log(Blender.Get('tempdir')+"/blender.log-psyco")
#psyco.log()
@@ -335,14 +340,13 @@ try:
psyco.profile(0.05, memory=100)
psyco.profile(0.2)
#print 'psyco imported'
-except ImportError:
- print 'psyco not imported'
- pass
+ except ImportError:
+ print 'psyco not imported'
#try: Curve.orderU
print '\n\n\n'
-print 'DXF-Importer v%s *** start ***' %(__version__) #---------------------
+print 'DXF/DWG-Importer v%s *** start ***' %(__version__) #---------------------
SCENE = None
WORLDX = Mathutils.Vector((1,0,0))
@@ -386,6 +390,29 @@ FREE = BezTriple.HandleTypes.FREE
VECT = BezTriple.HandleTypes.VECT
ALIGN = BezTriple.HandleTypes.ALIGN
+UI_MODE = True #activates UI-popup-print, if not multiple files imported
+
+
+#-------- DWG support ------------------------------------------
+extCONV_OK = True
+extCONV = 'DConvertCon.exe'
+extCONV_PATH = os.path.join(Blender.Get('scriptsdir'),extCONV)
+if not os.path.isfile(extCONV_PATH):
+ extCONV_OK = False
+ extCONV_TEXT = 'DWG-Importer cant find external DWG-converter (%s) in Blender script directory.|\
+More details in online Help.' %extCONV
+else:
+ if not os.sys.platform.startswith('win'):
+ # check if Wine installed:
+ if subprocess.Popen(('which', 'winepath'), stdout=subprocess.PIPE).stdout.read().strip():
+ extCONV_PATH = 'wine %s'%extCONV_PATH
+ else:
+ extCONV_OK = False
+ extCONV_TEXT = 'The external DWG-converter (%s) needs Wine installed on your system.|\
+More details in online Help.' %extCONV
+#print 'extCONV_PATH = ', extCONV_PATH
+
+
class View: #-----------------------------------------------------------------
"""Class for objects representing dxf VIEWs.
@@ -754,7 +781,7 @@ class Solid: #-----------------------------------------------------------------
if settings.var['vGroup_on'] and not M_OBJ:
# each MeshSide becomes vertexGroup for easier material assignment ---------------------
- replace = Blender.Mesh.AssignModes.ADD #or .AssignModes.ADD/REPLACE
+ replace = Mesh.AssignModes.ADD #or .AssignModes.ADD/REPLACE
if vg_left: me.addVertGroup('side.left') ; me.assignVertsToGroup('side.left', vg_left, 1.0, replace)
if vg_right:me.addVertGroup('side.right') ; me.assignVertsToGroup('side.right', vg_right, 1.0, replace)
if vg_top: me.addVertGroup('side.top') ; me.assignVertsToGroup('side.top', vg_top, 1.0, replace)
@@ -899,7 +926,7 @@ class Line: #-----------------------------------------------------------------
ob.link(me) # link mesh to that object
vG_name = 'color_%s' %self.color_index
if edges: faces = edges
- replace = Blender.Mesh.AssignModes.ADD #or .AssignModes.REPLACE or ADD
+ replace = Mesh.AssignModes.ADD #or .AssignModes.REPLACE or ADD
try:
me.assignVertsToGroup(vG_name, faces[0], 1.0, replace)
#print 'deb: existed vGroup:', vG_name #---------------------
@@ -1792,7 +1819,7 @@ class Polyline: #--------------------------------------------------------------
# which may be linked to more than one object.
if settings.var['vGroup_on'] and not M_OBJ:
# each MeshSide becomes vertexGroup for easier material assignment ---------------------
- replace = Blender.Mesh.AssignModes.REPLACE #or .AssignModes.ADD
+ replace = Mesh.AssignModes.REPLACE #or .AssignModes.ADD
vg_left, vg_right, vg_top, vg_bottom = [], [], [], []
for v in f_left: vg_left.extend(v)
for v in f_right: vg_right.extend(v)
@@ -2640,7 +2667,7 @@ class Circle: #----------------------------------------------------------------
# each MeshSide becomes vertexGroup for easier material assignment ---------------------
if settings.var['vGroup_on'] and not M_OBJ:
# each MeshSide becomes vertexGroup for easier material assignment ---------------------
- replace = Blender.Mesh.AssignModes.REPLACE #or .AssignModes.ADD
+ replace = Mesh.AssignModes.REPLACE #or .AssignModes.ADD
vg_band, vg_top, vg_bottom = [], [], []
for v in f_band: vg_band.extend(v)
me.addVertGroup('side.band') ; me.assignVertsToGroup('side.band', vg_band, 1.0, replace)
@@ -2820,7 +2847,7 @@ class Arc: #-----------------------------------------------------------------
# each MeshSide becomes vertexGroup for easier material assignment ---------------------
if settings.var['vGroup_on'] and not M_OBJ:
# each MeshSide becomes vertexGroup for easier material assignment ---------------------
- replace = Blender.Mesh.AssignModes.REPLACE #or .AssignModes.ADD
+ replace = Mesh.AssignModes.REPLACE #or .AssignModes.ADD
vg_left, vg_right, vg_top, vg_bottom = [], [], [], []
for v in f_left: vg_left.extend(v)
for v in f_right: vg_right.extend(v)
@@ -3364,7 +3391,7 @@ class Ellipse: #---------------------------------------------------------------
me.faces[i].smooth = True
if settings.var['vGroup_on'] and not M_OBJ:
# each MeshSide becomes vertexGroup for easier material assignment ---------------------
- replace = Blender.Mesh.AssignModes.REPLACE #or .AssignModes.ADD
+ replace = Mesh.AssignModes.REPLACE #or .AssignModes.ADD
vg_left, vg_right, vg_top, vg_bottom = [], [], [], []
for v in f_left: vg_left.extend(v)
for v in f_right: vg_right.extend(v)
@@ -3517,7 +3544,7 @@ class Face: #-----------------------------------------------------------------
ob.link(me) # link mesh to that object
vG_name = 'color_%s' %self.color_index
if edges: faces = edges
- replace = Blender.Mesh.AssignModes.ADD #or .AssignModes.REPLACE or ADD
+ replace = Mesh.AssignModes.ADD #or .AssignModes.REPLACE or ADD
try:
me.assignVertsToGroup(vG_name, faces[0], 1.0, replace)
#print 'deb: existed vGroup:', vG_name #---------------------
@@ -4022,10 +4049,8 @@ class Settings: #--------------------------------------------------------------
"""Wraps the built-in print command in a optimization check.
"""
if self.var['optimization'] <= self.MID:
- if newline:
- print text
- else:
- print text,
+ if newline: print text
+ else: print text,
def redraw(self):
@@ -4067,9 +4092,9 @@ def analyzeDXF(dxfFile): #---------------------------------------
"""
Window.WaitCursor(True) # Let the user know we are thinking
print 'reading DXF file: %s.' % dxfFile
- time1 = Blender.sys.time() #time marker1
+ time1 = sys.time() #time marker1
drawing = readDXF(dxfFile, objectify)
- print 'finish reading in %.4f sec.' % (Blender.sys.time()-time1)
+ print 'finish reading in %.4f sec.' % (sys.time()-time1)
# First sort out all the section_items
sections = dict([(item.name, item) for item in drawing.data])
@@ -4282,10 +4307,45 @@ def main(dxfFile): #---------------#############################-----------
if dxfFile.lower().endswith('.dxf') and sys.exists(dxfFile):
Window.WaitCursor(True) # Let the user know we are thinking
print 'reading file: %s.' % dxfFile
- time1 = Blender.sys.time() #time marker1
+ time1 = sys.time() #time marker1
drawing = readDXF(dxfFile, objectify)
- print 'reading finished in %.4f sec.' % (Blender.sys.time()-time1)
+ print 'reading finished in %.4f sec.' % (sys.time()-time1)
Window.WaitCursor(False)
+ elif dxfFile.lower().endswith('.dwg') and sys.exists(dxfFile):
+ if not extCONV_OK:
+ Draw.PupMenu(extCONV_TEXT)
+ Window.WaitCursor(False)
+ if editmode: Window.EditMode(1) # and put things back how we fond them
+ return None
+ else:
+ Window.WaitCursor(True) # Let the user know we are thinking
+ #todo: issue: in DConvertCon.exe the output filename is fixed to dwg_name.dxf
+
+ if 0: # works only for Windows
+ dwgTemp = 'temp_01.dwg'
+ dxfTemp = 'temp_01.dxf'
+ os.system('copy %s %s' %(dxfFile,dwgTemp))
+ else:
+ dwgTemp = dxfFile
+ dxfTemp = dxfFile[:-3]+'dxf'
+ #print 'temp. converting: %s\n to: %s' %(dxfFile, dxfTemp)
+ #os.system('%s %s -acad11 -dxf' %(extCONV_PATH, dxfFile))
+ os.system('%s %s -dxf' %(extCONV_PATH, dwgTemp))
+ #os.system('%s %s -dxf' %(extCONV_PATH, dxfFile_temp))
+ if sys.exists(dxfTemp):
+ print 'reading file: %s.' % dxfTemp
+ time1 = sys.time() #time marker1
+ drawing = readDXF(dxfTemp, objectify)
+ #os.remove(dwgTemp)
+ os.remove(dxfTemp) # clean up
+ print 'reading finished in %.4f sec.' % (sys.time()-time1)
+ Window.WaitCursor(False)
+ else:
+ if UI_MODE: Draw.PupMenu('DWG importer: nothing imported!%t|No valid DXF-representation found!')
+ print 'DWG importer: nothing imported. No valid DXF-representation found.'
+ Window.WaitCursor(False)
+ if editmode: Window.EditMode(1) # and put things back how we fond them
+ return None
else:
if UI_MODE: Draw.PupMenu('DXF importer: Alert!%t| no valid DXF-file selected!')
print "DXF importer: Alert! - no valid DXF-file selected."
@@ -4295,7 +4355,7 @@ def main(dxfFile): #---------------#############################-----------
# Draw all the know entity types in the current scene
oblist = [] # a list of all created AND linked objects for final f_globalScale
- time2 = Blender.sys.time() #time marker2
+ time2 = sys.time() #time marker2
Window.WaitCursor(True) # Let the user know we are thinking
settings.write("\n\nDrawing entities...")
@@ -4322,7 +4382,7 @@ def main(dxfFile): #---------------#############################-----------
#SCENE.objects.selected = SCENE.objects #select all objects in current scene
Blender.Redraw()
- time_text = Blender.sys.time() - time2
+ time_text = sys.time() - time2
Window.WaitCursor(False)
if settings.var['paper_space_on']: space = 'from paper space'
else: space = 'from model space'
@@ -4571,7 +4631,7 @@ def drawer(_type, entities, settings, block_def): #----------------------------
activObjectLayer = ''
activObjectName = ''
- message = "Drawing dxf\'%ss\'..." %_type
+ message = "Drawing dxf \'%ss\'..." %_type
cur_COUNTER += len_temp - len(entities)
settings.write(message, False)
settings.progress(cur_COUNTER, message)
@@ -5078,7 +5138,7 @@ def drawCurveArc(self): #---- only for ELLIPSE --------------------------------
# GUI STUFF -----#################################################-----------------
-from Blender.BGL import *
+from Blender.BGL import glColor3f, glRecti, glClear, glRasterPos2d
EVENT_NONE = 1
EVENT_START = 2
@@ -5577,7 +5637,7 @@ def draw_UI(): #---------------------------------------------------------------
y += 30
colorbox(x, y+20, x+menu_w+menu_margin*2, menu_margin)
- Draw.Label("DXF-Importer v" + __version__, but0c, y, menu_w, 20)
+ Draw.Label("DXF/DWG-Importer v" + __version__, but0c, y, menu_w, 20)
if config_UI.val:
b0, b0_ = but0c, but_0c + butt_margin
@@ -5853,9 +5913,9 @@ def draw_UI(): #---------------------------------------------------------------
#y -= 10
Draw.BeginAlign()
- Draw.PushButton('DXFfile >', EVENT_CHOOSE_DXF, but0c, y, but_0c, 20, 'Select DXF-file from project directory')
- dxfFileName = Draw.String(' :', EVENT_NONE, but1c, y, but_1c+but_2c+but_3c-20, 20, dxfFileName.val, FILENAME_MAX, "type the name of DXF-file or type *.dxf for multi-import")
- Draw.PushButton('*.*', EVENT_DXF_DIR, but3c+but_3c-20, y, 20, 20, 'import all dxf files from this directory')
+ Draw.PushButton('DXFfile >', EVENT_CHOOSE_DXF, but0c, y, but_0c, 20, 'Select DXF/DWG-file for import')
+ dxfFileName = Draw.String(' :', EVENT_NONE, but1c, y, but_1c+but_2c+but_3c-20, 20, dxfFileName.val, FILENAME_MAX, "type the name of DXF/DWG-file or type *.dxf/*.dwg for multiple files")
+ Draw.PushButton('*.*', EVENT_DXF_DIR, but3c+but_3c-20, y, 20, 20, 'set filter for import all files from this directory')
Draw.EndAlign()
y -= 30
@@ -5902,8 +5962,9 @@ def colorbox(x,y,xright,bottom):
def dxf_callback(input_filename):
global dxfFileName
- dxfFileName.val=input_filename
-# dirname == Blender.sys.dirname(Blender.Get('filename'))
+ if input_filename.lower()[-3:] in ('dwg','dxf'):
+ dxfFileName.val=input_filename
+# dirname == sys.dirname(Blender.Get('filename'))
# update_RegistryKey('DirName', dirname)
# update_RegistryKey('dxfFileName', input_filename)
@@ -5913,17 +5974,17 @@ def ini_callback(input_filename):
def event(evt, val):
if evt in (Draw.QKEY, Draw.ESCKEY) and not val:
- Blender.Draw.Exit()
+ Draw.Exit()
def bevent(evt):
# global EVENT_NONE,EVENT_LOAD_DXF,EVENT_LOAD_INI,EVENT_SAVE_INI,EVENT_EXIT
global config_UI, user_preset
- global GUI_A
+ global GUI_A, UI_MODE
######### Manages GUI events
if (evt==EVENT_EXIT):
- Blender.Draw.Exit()
- print 'DXF-Importer *** exit ***' #---------------------
+ Draw.Exit()
+ print 'DXF/DWG-Importer *** exit ***' #---------------------
elif (evt==EVENT_CHOOSE_INI):
Window.FileSelector(ini_callback, "INI-file Selection", '*.ini')
elif (evt==EVENT_REDRAW):
@@ -5980,13 +6041,14 @@ http://wiki.blender.org/index.php?title=Scripts/Manual/Import/DXF-3D')
Draw.Redraw()
elif (evt==EVENT_DXF_DIR):
dxfFile = dxfFileName.val
+ dxfFileExt = '*'+dxfFile.lower()[-4:] #can be .dxf or .dwg
dxfPathName = ''
if '/' in dxfFile:
dxfPathName = '/'.join(dxfFile.split('/')[:-1]) + '/'
elif '\\' in dxfFile:
dxfPathName = '\\'.join(dxfFile.split('\\')[:-1]) + '\\'
- dxfFileName.val = dxfPathName + '*.dxf'
-# dirname == Blender.sys.dirname(Blender.Get('filename'))
+ dxfFileName.val = dxfPathName + dxfFileExt
+# dirname == sys.dirname(Blender.Get('filename'))
# update_RegistryKey('DirName', dirname)
# update_RegistryKey('dxfFileName', dxfFileName.val)
GUI_A['newScene_on'].val = 1
@@ -5994,45 +6056,55 @@ http://wiki.blender.org/index.php?title=Scripts/Manual/Import/DXF-3D')
elif (evt==EVENT_CHOOSE_DXF):
filename = '' # '*.dxf'
if dxfFileName.val: filename = dxfFileName.val
- Window.FileSelector(dxf_callback, "DXF-file Selection", filename)
+ Window.FileSelector(dxf_callback, "DXF/DWG-file Selection", filename)
elif (evt==EVENT_START):
dxfFile = dxfFileName.val
#print 'deb: dxfFile file: ', dxfFile #----------------------
if E_M: dxfFileName.val, dxfFile = e_mode(dxfFile) #evaluation mode
update_RegistryKey('dxfFileName', dxfFileName.val)
if dxfFile.lower().endswith('*.dxf'):
- if Draw.PupMenu('DXF importer: OK?|will import all DXF-files from:|%s' % dxfFile) == 1:
- global UI_MODE
+ if Draw.PupMenu('DXF importer will import all DXF-files from:|%s|OK?' % dxfFile) != -1:
UI_MODE = False
- multi_import(dxfFile[:-5]) # cut last 5 characters '*.dxf'
+ multi_import(dxfFile)
+ UI_MODE = True
Draw.Redraw()
- #Draw.Exit()
- else:
+
+ elif dxfFile.lower().endswith('*.dwg'):
+ if not extCONV_OK: Draw.PupMenu(extCONV_TEXT)
+ elif Draw.PupMenu('DWG importer will import all DWG-files from:|%s|OK?' % dxfFile) != -1:
+ #elif Draw.PupMenu('DWG importer will import all DWG-files from:|%s|Caution! overwrites existing DXF-files!| OK?' % dxfFile) != -1:
+ UI_MODE = False
+ multi_import(dxfFile)
+ UI_MODE = True
Draw.Redraw()
- elif dxfFile.lower().endswith('.dxf') and sys.exists(dxfFile):
- print '\nStandard Mode: active'
- if GUI_A['newScene_on'].val:
- _dxf_file = dxfFile.split('/')[-1].split('\\')[-1]
- _dxf_file = _dxf_file[:-4] # cut last char:'.dxf'
- _dxf_file = _dxf_file[:MAX_NAMELENGTH] #? [-MAX_NAMELENGTH:])
- global SCENE
- SCENE = Blender.Scene.New(_dxf_file)
- SCENE.makeCurrent()
- Blender.Redraw()
- #or so? Blender.Scene.makeCurrent(_dxf_file)
- #sce = bpy.data.scenes.new(_dxf_file)
- #bpy.data.scenes.active = sce
+
+ elif sys.exists(dxfFile) and dxfFile.lower()[-4:] in ('.dxf','.dwg'):
+ if dxfFile.lower().endswith('.dwg') and (not extCONV_OK):
+ Draw.PupMenu(extCONV_TEXT)
else:
- SCENE = Blender.Scene.GetCurrent()
- SCENE.objects.selected = [] # deselect all
- main(dxfFile)
- #SCENE.objects.selected = SCENE.objects
- #Window.RedrawAll()
- #Blender.Redraw()
- #Draw.Redraw()
+ #print '\nStandard Mode: active'
+ if GUI_A['newScene_on'].val:
+ _dxf_file = dxfFile.split('/')[-1].split('\\')[-1]
+ _dxf_file = _dxf_file[:-4] # cut last char:'.dxf'
+ _dxf_file = _dxf_file[:MAX_NAMELENGTH] #? [-MAX_NAMELENGTH:])
+ global SCENE
+ SCENE = Blender.Scene.New(_dxf_file)
+ SCENE.makeCurrent()
+ Blender.Redraw()
+ #or so? Blender.Scene.makeCurrent(_dxf_file)
+ #sce = bpy.data.scenes.new(_dxf_file)
+ #bpy.data.scenes.active = sce
+ else:
+ SCENE = Blender.Scene.GetCurrent()
+ SCENE.objects.selected = [] # deselect all
+ main(dxfFile)
+ #SCENE.objects.selected = SCENE.objects
+ #Window.RedrawAll()
+ #Blender.Redraw()
+ #Draw.Redraw()
else:
- Draw.PupMenu('DXF importer: Alert!%t|no valid DXF-file selected!')
- print "DXF importer: error, no valid DXF-file selected! try again"
+ Draw.PupMenu('DXF importer: nothing imported!%t|no valid DXF-file selected!')
+ print "DXF importer: nothing imported, no valid DXF-file selected! try again"
Draw.Redraw()
@@ -6043,20 +6115,25 @@ def multi_import(DIR):
"""
global SCENE
- batchTIME = Blender.sys.time()
+ batchTIME = sys.time()
#if #DIR == "": DIR = os.path.curdir
- if DIR == "": DIR = Blender.sys.dirname(Blender.Get('filename'))
- print 'Multifiles Import from %s' %DIR
+ if DIR == "":
+ DIR = sys.dirname(Blender.Get('filename'))
+ EXT = '.dxf'
+ else:
+ EXT = DIR[-4:] # get last 4 characters '.dxf'
+ DIR = DIR[:-5] # cut last 5 characters '*.dxf'
+ print 'importing multiple %s files from %s' %(EXT,DIR)
files = \
- [sys.join(DIR, f) for f in os.listdir(DIR) if f.lower().endswith('.dxf')]
+ [sys.join(DIR, f) for f in os.listdir(DIR) if f.lower().endswith(EXT)]
if not files:
- print '...None DXF-files found. Abort!'
+ print '...None %s-files found. Abort!' %EXT
return
i = 0
for dxfFile in files:
i += 1
- print '\nDXF-file', i, 'of', len(files) #,'\nImporting', dxfFile
+ print '\n%s-file' %EXT, i, 'of', len(files) #,'\nImporting', dxfFile
if GUI_A['newScene_on'].val:
_dxf_file = dxfFile.split('/')[-1].split('\\')[-1]
_dxf_file = _dxf_file[:-4] # cut last char:'.dxf'
@@ -6072,13 +6149,11 @@ def multi_import(DIR):
main(dxfFile)
#Blender.Redraw()
- print 'TOTAL TIME: %.6f' % (Blender.sys.time() - batchTIME)
+ print 'TOTAL TIME: %.6f' % (sys.time() - batchTIME)
print '\a\r', # beep when done
+ Draw.PupMenu('DXF importer: Done!|finished in %.4f sec.' % (sys.time() - batchTIME))
-
-UI_MODE = True
-
if __name__ == "__main__":
UI_MODE = True
# recall last used DXF-file and INI-file names
@@ -6086,7 +6161,7 @@ if __name__ == "__main__":
#print 'deb:start dxffilename:', dxffilename #----------------
if dxffilename: dxfFileName.val = dxffilename
else:
- dirname = Blender.sys.dirname(Blender.Get('filename'))
+ dirname = sys.dirname(Blender.Get('filename'))
#print 'deb:start dirname:', dirname #----------------
dxfFileName.val = sys.join(dirname, '')
inifilename = check_RegistryKey('iniFileName')
@@ -6099,7 +6174,7 @@ if __name__ == "__main__":
if 1:
# DEBUG ONLY
UI_MODE = False
- TIME= Blender.sys.time()
+ TIME= sys.time()
#DIR = '/dxf_r12_testfiles/'
DIR = '/metavr/'
import os
@@ -6128,5 +6203,5 @@ if 1:
dxfFileName.val = _dxf
main(_dxf)
- print 'TOTAL TIME: %.6f' % (Blender.sys.time() - TIME)
+ print 'TOTAL TIME: %.6f' % (sys.time() - TIME)
""" \ No newline at end of file
diff --git a/release/scripts/import_obj.py b/release/scripts/import_obj.py
index 42cdac4dc35..493354601a6 100644
--- a/release/scripts/import_obj.py
+++ b/release/scripts/import_obj.py
@@ -537,6 +537,7 @@ def get_float_func(filepath):
'''
file= open(filepath, 'rU')
for line in file: #.xreadlines():
+ line = line.lstrip()
if line.startswith('v'): # vn vt v
if ',' in line:
return lambda f: float(f.replace(',', '.'))
@@ -590,6 +591,7 @@ def load_obj(filepath, CLAMP_SIZE= 0.0, CREATE_FGONS= True, CREATE_SMOOTH_GROUPS
time_sub= sys.time()
file= open(filepath, 'rU')
for line in file: #.xreadlines():
+ line = line.lstrip() # rare cases there is white space at the start of the line
if line.startswith('v '):
line_split= line.split()
diff --git a/release/scripts/import_web3d.py b/release/scripts/import_web3d.py
index 87a259cbe56..fc3b5262376 100755..100644
--- a/release/scripts/import_web3d.py
+++ b/release/scripts/import_web3d.py
@@ -1332,7 +1332,9 @@ class x3dNode(vrmlNode):
# Other funcs operate from vrml, but this means we can wrap XML fields, still use nice utility funcs
# getFieldAsArray getFieldAsBool etc
- def getFieldName(self, field):
+ def getFieldName(self, field, ancestry, AS_CHILD=False):
+ # ancestry and AS_CHILD are ignored, only used for VRML now
+
self_real = self.getRealNode() # incase we're an instance
field_xml = self.x3dNode.getAttributeNode(field)
if field_xml:
@@ -1564,7 +1566,8 @@ def importMesh_IndexedFaceSet(geom, bpyima, ancestry):
vcolor_spot = None # spot color when we dont have an array of colors
if vcolor:
# float to char
- ifs_vcol = [[int(c*256) for c in col] for col in vcolor.getFieldAsArray('color', 3, ancestry)]
+ ifs_vcol = [(0,0,0)] # EEKADOODLE - vertex start at 1
+ ifs_vcol.extend([[int(c*256) for c in col] for col in vcolor.getFieldAsArray('color', 3, ancestry)])
ifs_color_index = geom.getFieldAsArray('colorIndex', 0, ancestry)
if not ifs_vcol:
diff --git a/release/scripts/mesh_poly_reduce_grid.py b/release/scripts/mesh_poly_reduce_grid.py
new file mode 100644
index 00000000000..3741a47723a
--- /dev/null
+++ b/release/scripts/mesh_poly_reduce_grid.py
@@ -0,0 +1,351 @@
+#!BPY
+"""
+Name: 'Poly Reduce Selection (Unsubsurf)'
+Blender: 245
+Group: 'Mesh'
+Tooltip: 'pradictable mesh simplifaction maintaining face loops'
+"""
+
+from Blender import Scene, Mesh, Window, sys
+import BPyMessages
+import bpy
+
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# Script copyright (C) Campbell J Barton
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+# --------------------------------------------------------------------------
+
+
+def my_mesh_util(me):
+ me_verts = me.verts
+
+ vert_faces = [ [] for v in me_verts]
+ vert_faces_corner = [ [] for v in me_verts]
+
+
+ # Ignore topology where there are not 2 faces connected to an edge.
+ edge_count = {}
+ for f in me.faces:
+ for edkey in f.edge_keys:
+ try:
+ edge_count[edkey] += 1
+ except:
+ edge_count[edkey] = 1
+
+ for edkey, count in edge_count.iteritems():
+
+ # Ignore verts that connect to edges with more then 2 faces.
+ if count != 2:
+ vert_faces[edkey[0]] = None
+ vert_faces[edkey[1]] = None
+ # Done
+
+
+
+ def faces_set_verts(face_ls):
+ unique_verts = set()
+ for f in face_ls:
+ for v in f:
+ unique_verts.add(v.index)
+ return unique_verts
+
+ for f in me.faces:
+ for corner, v in enumerate(f):
+ i = v.index
+ if vert_faces[i] != None:
+ vert_faces[i].append(f)
+ vert_faces_corner[i].append( corner )
+
+ grid_data_ls = []
+
+ for vi, face_ls in enumerate(vert_faces):
+ if face_ls != None:
+ if len(face_ls) == 4:
+ if face_ls[0].sel and face_ls[1].sel and face_ls[2].sel and face_ls[3].sel:
+ # Support triangles also
+ unique_vert_count = len(faces_set_verts(face_ls))
+ quads = 0
+ for f in face_ls:
+ if len(f) ==4:
+ quads += 1
+ if unique_vert_count==5+quads: # yay we have a grid
+ grid_data_ls.append( (vi, face_ls) )
+
+ elif len(face_ls) == 3:
+ if face_ls[0].sel and face_ls[1].sel and face_ls[2].sel:
+ unique_vert_count = len(faces_set_verts(face_ls))
+ if unique_vert_count==4: # yay we have 3 triangles to make into a bigger triangle
+ grid_data_ls.append( (vi, face_ls) )
+
+
+
+ # Now sort out which grid faces to use
+
+
+ # This list will be used for items we can convert, vertex is key, faces are values
+ grid_data_dict = {}
+
+ if not grid_data_ls:
+ print "doing nothing"
+ return
+
+ # quick lookup for the opposing corner of a qiad
+ quad_diag_mapping = 2,3,0,1
+
+ verts_used = [0] * len(me_verts) # 0 == untouched, 1==should touch, 2==touched
+ verts_used[grid_data_ls[0][0]] = 1 # start touching 1!
+
+ # From the corner vert, get the 2 edges that are not the corner or its opposing vert, this edge will make a new face
+ quad_edge_mapping = (1,3), (2,0), (1,3), (0,2) # hi-low, low-hi order is intended
+ tri_edge_mapping = (1,2), (0,2), (0,1)
+
+ done_somthing = True
+ while done_somthing:
+ done_somthing = False
+ grid_data_ls_index = -1
+
+ for vi, face_ls in grid_data_ls:
+ grid_data_ls_index += 1
+ if len(face_ls) == 3:
+ grid_data_dict[vi] = face_ls
+ grid_data_ls.pop( grid_data_ls_index )
+ break
+ elif len(face_ls) == 4:
+ # print vi
+ if verts_used[vi] == 1:
+ verts_used[vi] = 2 # dont look at this again.
+ done_somthing = True
+
+ grid_data_dict[vi] = face_ls
+
+ # Tag all faces verts as used
+
+ for i, f in enumerate(face_ls):
+ # i == face index on vert, needed to recall which corner were on.
+ v_corner = vert_faces_corner[vi][i]
+ fv =f.v
+
+ if len(f) == 4:
+ v_other = quad_diag_mapping[v_corner]
+ # get the 2 other corners
+ corner1, corner2 = quad_edge_mapping[v_corner]
+ if verts_used[fv[v_other].index] == 0:
+ verts_used[fv[v_other].index] = 1 # TAG for touching!
+ else:
+ corner1, corner2 = tri_edge_mapping[v_corner]
+
+ verts_used[fv[corner1].index] = 2 # Dont use these, they are
+ verts_used[fv[corner2].index] = 2
+
+
+ # remove this since we have used it.
+ grid_data_ls.pop( grid_data_ls_index )
+
+ break
+
+ if done_somthing == False:
+ # See if there are any that have not even been tagged, (probably on a different island), then tag them.
+
+ for vi, face_ls in grid_data_ls:
+ if verts_used[vi] == 0:
+ verts_used[vi] = 1
+ done_somthing = True
+ break
+
+
+ # Now we have all the areas we will fill, calculate corner triangles we need to fill in.
+ new_faces = []
+ quad_del_vt_map = (1,2,3), (0,2,3), (0,1,3), (0,1,2)
+ for vi, face_ls in grid_data_dict.iteritems():
+ for i, f in enumerate(face_ls):
+ if len(f) == 4:
+ # i == face index on vert, needed to recall which corner were on.
+ v_corner = vert_faces_corner[vi][i]
+ v_other = quad_diag_mapping[v_corner]
+ fv =f.v
+
+ #print verts_used[fv[v_other].index]
+ #if verts_used[fv[v_other].index] != 2: # DOSNT WORK ALWAYS
+
+ if 1: # THIS IS LAzY - some of these faces will be removed after adding.
+ # Ok we are removing half of this face, add the other half
+
+ # This is probably slower
+ # new_faces.append( [fv[ii].index for ii in (0,1,2,3) if ii != v_corner ] )
+
+ # do this instead
+ new_faces.append( (fv[quad_del_vt_map[v_corner][0]], fv[quad_del_vt_map[v_corner][1]], fv[quad_del_vt_map[v_corner][2]]) )
+
+ del grid_data_ls
+
+
+ # me.sel = 0
+ def faceCombine4(vi, face_ls):
+ edges = []
+
+ for i, f in enumerate(face_ls):
+ fv = f.v
+ v_corner = vert_faces_corner[vi][i]
+ if len(f)==4: ed = quad_edge_mapping[v_corner]
+ else: ed = tri_edge_mapping[v_corner]
+
+ edges.append( [fv[ed[0]].index, fv[ed[1]].index] )
+
+ # get the face from the edges
+ face = edges.pop()
+ while len(face) != 4:
+ # print len(edges), edges, face
+ for ed_idx, ed in enumerate(edges):
+ if face[-1] == ed[0] and (ed[1] != face[0]):
+ face.append(ed[1])
+ elif face[-1] == ed[1] and (ed[0] != face[0]):
+ face.append(ed[0])
+ else:
+ continue
+
+ edges.pop(ed_idx) # we used the edge alredy
+ break
+
+ return face
+
+ for vi, face_ls in grid_data_dict.iteritems():
+ if len(face_ls) == 4:
+ new_faces.append( faceCombine4(vi, face_ls) )
+ #pass
+ if len(face_ls) == 3: # 3 triangles
+ face = list(faces_set_verts(face_ls))
+ face.remove(vi)
+ new_faces.append( face )
+
+
+ # Now remove verts surounded by 3 triangles
+
+
+
+ # print new_edges
+ # me.faces.extend(new_faces, ignoreDups=True)
+
+ '''
+ faces_remove = []
+ for vi, face_ls in grid_data_dict.iteritems():
+ faces_remove.extend(face_ls)
+ '''
+
+ orig_facelen = len(me.faces)
+
+ orig_faces = list(me.faces)
+ me.faces.extend(new_faces, ignoreDups=True)
+ new_faces = list(me.faces)[len(orig_faces):]
+
+
+
+
+
+ if me.faceUV:
+ uvnames = me.getUVLayerNames()
+ act_uvlay = me.activeUVLayer
+
+ vert_faces_uvs = []
+ vert_faces_images = []
+
+
+ act_uvlay = me.activeUVLayer
+
+ for uvlay in uvnames:
+ me.activeUVLayer = uvlay
+ vert_faces_uvs[:] = [None] * len(me.verts)
+ vert_faces_images[:] = vert_faces_uvs[:]
+
+ for i,f in enumerate(orig_faces):
+ img = f.image
+ fv = f.v
+ uv = f.uv
+ mat = f.mat
+ for i,v in enumerate(fv):
+ vi = v.index
+ vert_faces_uvs[vi] = uv[i] # no nice averaging
+ vert_faces_images[vi] = img
+
+
+ # Now copy UVs across
+ for f in new_faces:
+ fi = [v.index for v in f.v]
+ f.image = vert_faces_images[fi[0]]
+ uv = f.uv
+ for i,vi in enumerate(fi):
+ uv[i][:] = vert_faces_uvs[vi]
+
+ if len(me.materials) > 1:
+ vert_faces_mats = [None] * len(me.verts)
+ for i,f in enumerate(orig_faces):
+ mat = f.mat
+ for i,v in enumerate(f.v):
+ vi = v.index
+ vert_faces_mats[vi] = mat
+
+ # Now copy UVs across
+ for f in new_faces:
+ print vert_faces_mats[f.v[0].index]
+ f.mat = vert_faces_mats[f.v[0].index]
+
+
+ me.verts.delete(grid_data_dict.keys())
+
+ # me.faces.delete(1, faces_remove)
+
+ if me.faceUV:
+ me.activeUVLayer = act_uvlay
+
+ me.calcNormals()
+
+def main():
+
+ # Gets the current scene, there can be many scenes in 1 blend file.
+ sce = bpy.data.scenes.active
+
+ # Get the active object, there can only ever be 1
+ # and the active object is always the editmode object.
+ ob_act = sce.objects.active
+
+ if not ob_act or ob_act.type != 'Mesh':
+ BPyMessages.Error_NoMeshActive()
+ return
+
+ is_editmode = Window.EditMode()
+ if is_editmode: Window.EditMode(0)
+
+ Window.WaitCursor(1)
+ me = ob_act.getData(mesh=1) # old NMesh api is default
+ t = sys.time()
+
+ # Run the mesh editing function
+ my_mesh_util(me)
+
+ # Restore editmode if it was enabled
+ if is_editmode: Window.EditMode(1)
+
+ # Timing the script is a good way to be aware on any speed hits when scripting
+ print 'My Script finished in %.2f seconds' % (sys.time()-t)
+ Window.WaitCursor(0)
+
+
+# This lets you can import the script without running it
+if __name__ == '__main__':
+ main()
+
diff --git a/release/scripts/scripttemplate_camer_object.py b/release/scripts/scripttemplate_camera_object.py
index cacc35ed1a5..cacc35ed1a5 100644
--- a/release/scripts/scripttemplate_camer_object.py
+++ b/release/scripts/scripttemplate_camera_object.py
diff --git a/release/scripts/uvcalc_smart_project.py b/release/scripts/uvcalc_smart_project.py
index d622e1a2af8..55d6ebfaa6f 100644
--- a/release/scripts/uvcalc_smart_project.py
+++ b/release/scripts/uvcalc_smart_project.py
@@ -870,7 +870,7 @@ def main():
'UV Layout',\
('Share Tex Space', USER_SHARE_SPACE, 'Objects Share texture space, map all objects into 1 uvmap.'),\
('Stretch to bounds', USER_STRETCH_ASPECT, 'Stretch the final output to texture bounds.'),\
- ('Island Margin:', USER_ISLAND_MARGIN, 0.0, 0.25, 'Margin to reduce bleed from adjacent islands.'),\
+ ('Island Margin:', USER_ISLAND_MARGIN, 0.0, 0.5, 'Margin to reduce bleed from adjacent islands.'),\
'Fill in empty areas',\
('Fill Holes', USER_FILL_HOLES, 'Fill in empty areas reduced texture waistage (slow).'),\
('Fill Quality:', USER_FILL_HOLES_QUALITY, 1, 100, 'Depends on fill holes, how tightly to fill UV holes, (higher is slower)'),\
diff --git a/release/windows/specific.sh b/release/windows/specific.sh
index e3ecfcb959f..5df90869914 100755
--- a/release/windows/specific.sh
+++ b/release/windows/specific.sh
@@ -60,10 +60,6 @@ chmod +x $DISTDIR/python$PVERS.dll
#Add pthreads dll to package
cp -f $NAN_PTHREADS/lib/pthreadGC2.dll $DISTDIR/pthreadGC2.dll
-# Add fmod DLL to package
-# cp -f $NAN_FMOD/lib/fmod.dll $DISTDIR/fmod.dll
-# chmod +x $DISTDIR/fmod.dll
-
# Add gettext DLL to package
cp -f $NAN_GETTEXT/lib/gnu_gettext.dll $DISTDIR/gnu_gettext.dll
diff --git a/source/Makefile b/source/Makefile
index 8a37b170be2..1173756cbcb 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -360,7 +360,7 @@ ifeq ($(OS),solaris)
SPLIB += $(NAN_ZLIB)/lib/libz.a
endif
-# OpenAL libs are already compiled as shared code! Check FMod if we switch to that. (nzc)
+# OpenAL libs are already compiled as shared code!
# Some vars to keep the rest of this section mostly readable
# in an 80 char term
@@ -543,7 +543,7 @@ ifdef NAN_BUILDINFO
$(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"static"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
endif
mkdir -p $(DIR)/$(DEBUG_DIR)bin
- $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderstatic $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) $(LLIBS) $(SADD) $(LOPTS)
+ $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderstatic $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) $(LLIBS) $(SADD) $(LOPTS)
ifdef NAN_BUILDINFO
/bin/rm $(BUILDINFO_O)
endif
@@ -557,7 +557,7 @@ ifdef NAN_BUILDINFO
$(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
endif
mkdir -p $(DIR)/$(DEBUG_DIR)bin
- $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blender$(EXT) $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) $(LLIBS) $(DADD) $(LOPTS)
+ $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blender$(EXT) $(BUILDINFO_O) $(OBJS) $(GRPLIB) $(PULIB) $(COMLIB) $(LLIBS) $(DADD) $(LOPTS)
ifdef NAN_BUILDINFO
/bin/rm $(BUILDINFO_O)
endif
@@ -571,7 +571,7 @@ ifdef NAN_BUILDINFO
$(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
endif
mkdir -p $(DIR)/$(DEBUG_DIR)bin
- $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(LLIBS) $(DADD) $(LOPTS)
+ $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(LLIBS) $(DADD) $(LOPTS)
ifdef NAN_BUILDINFO
/bin/rm $(BUILDINFO_O)
endif
@@ -585,7 +585,7 @@ ifdef NAN_BUILDINFO
$(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
endif
mkdir -p $(DIR)/$(DEBUG_DIR)bin
- $(CCC) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderdynplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(LLIBS) $(DADD) $(LOPTS)
+ $(CCC) $(CCFLAGS) $(LDFLAGS) -o $(DIR)/$(DEBUG_DIR)bin/blenderdynplayer$(EXT) $(BUILDINFO_O) $(OBJS) $(SPLIB1) $(COMLIB) $(SPLIB) $(LLIBS) $(DADD) $(LOPTS)
ifdef NAN_BUILDINFO
/bin/rm $(BUILDINFO_O)
endif
@@ -599,7 +599,7 @@ ifdef NAN_BUILDINFO
$(CCC) $(REL_CFLAGS) -DBUILD_DATE='"$(BUILD_DATE)"' -DBUILD_TIME='"$(BUILD_TIME)"' -DBUILD_REV='"$(BUILD_REV)"' -DBUILD_PLATFORM='"$(CONFIG_GUESS)"' -DBUILD_TYPE='"dynamic"' $(BUILDINFO_C) -c -o $(BUILDINFO_O) -DNAN_BUILDINFO
endif
mkdir -p $(DIR)/$(DEBUG_DIR)bin
- $(CCC) $(DYNLDFLAGS) -o $@ $(PLUGAPPLIB_XPLINK) $(LOPTS)
+ $(CCC) $(CCFLAGS) $(DYNLDFLAGS) -o $@ $(PLUGAPPLIB_XPLINK) $(LOPTS)
ifdef NAN_BUILDINFO
/bin/rm $(BUILDINFO_O)
endif
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 1c5cc2ff311..8c54c35473c 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -44,6 +44,7 @@
#include "DNA_customdata_types.h"
#include "BKE_customdata.h"
+#include "BKE_bvhutils.h"
struct MVert;
struct MEdge;
@@ -70,6 +71,7 @@ struct DerivedMesh {
int numVertData, numEdgeData, numFaceData;
int needsFree; /* checked on ->release, is set to 0 for cached results */
int deformedOnly; /* set by modifier stack if only deformed from original */
+ BVHCache bvhCache;
/* Misc. Queries */
diff --git a/source/blender/blenkernel/BKE_bmesh.h b/source/blender/blenkernel/BKE_bmesh.h
index b3ce5447e68..957cd8ef9bd 100644
--- a/source/blender/blenkernel/BKE_bmesh.h
+++ b/source/blender/blenkernel/BKE_bmesh.h
@@ -3,7 +3,7 @@
*
* BMesh modeler structure and functions.
*
- * $Id: BKE_bmesh.h,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/BKE_bmeshCustomData.h b/source/blender/blenkernel/BKE_bmeshCustomData.h
index 4f5f2641f54..e910fc13ed4 100644
--- a/source/blender/blenkernel/BKE_bmeshCustomData.h
+++ b/source/blender/blenkernel/BKE_bmeshCustomData.h
@@ -3,7 +3,7 @@
*
* BMesh modeler structure and functions.
*
- * $Id: BKE_bmesh.h,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/BKE_booleanops.h b/source/blender/blenkernel/BKE_booleanops.h
index b51ee2646fc..a32f21af859 100644
--- a/source/blender/blenkernel/BKE_booleanops.h
+++ b/source/blender/blenkernel/BKE_booleanops.h
@@ -43,8 +43,7 @@ int NewBooleanMesh(struct Scene *scene, struct Base *base, struct Base *base_sel
/* Performs a boolean between two mesh objects, it is assumed that both objects
are in fact mesh object. On success returns a DerivedMesh. On failure
returns NULL and reports an error. */
-struct DerivedMesh *NewBooleanDerivedMesh(struct Object *ob,
- struct Object *ob_select,
- int op);
+struct DerivedMesh *NewBooleanDerivedMesh(struct DerivedMesh *dm, struct Object *ob, struct DerivedMesh *dm_select, struct Object *ob_select,
+ int int_op_type);
#endif
diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h
index dd9ea61f24b..66c8d99959a 100644
--- a/source/blender/blenkernel/BKE_bvhutils.h
+++ b/source/blender/blenkernel/BKE_bvhutils.h
@@ -31,6 +31,7 @@
#define BKE_BVHUTILS_H
#include "BLI_kdopbvh.h"
+#include "BLI_linklist.h"
/*
* This header encapsulates necessary code to buld a BVH
@@ -52,7 +53,7 @@ typedef struct BVHTreeFromMesh
BVHTree_RayCastCallback raycast_callback;
/* Mesh represented on this BVHTree */
- struct DerivedMesh *mesh;
+ struct DerivedMesh *mesh;
/* Vertex array, so that callbacks have instante access to data */
struct MVert *vert;
@@ -61,6 +62,9 @@ typedef struct BVHTreeFromMesh
/* radius for raycast */
float sphere_radius;
+ /* Private data */
+ int cached;
+
} BVHTreeFromMesh;
/*
@@ -74,7 +78,7 @@ typedef struct BVHTreeFromMesh
*
* free_bvhtree_from_mesh should be called when the tree is no longer needed.
*/
-void bvhtree_from_mesh_verts(struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis);
+BVHTree* bvhtree_from_mesh_verts(struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis);
/*
* Builds a bvh tree where nodes are the faces of the given mesh.
@@ -84,15 +88,50 @@ void bvhtree_from_mesh_verts(struct BVHTreeFromMesh *data, struct DerivedMesh *m
* so that the coordinates and rays are first translated on the mesh local coordinates.
* Reason for this is that later bvh_from_mesh_* might use a cache system and so it becames possible to reuse
* a BVHTree.
+ *
+ * The returned value is the same as in data->tree, its only returned to make it easier to test
+ * the success
*
* free_bvhtree_from_mesh should be called when the tree is no longer needed.
*/
-void bvhtree_from_mesh_faces(struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis);
+BVHTree* bvhtree_from_mesh_faces(struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis);
/*
* Frees data allocated by a call to bvhtree_from_mesh_*.
*/
void free_bvhtree_from_mesh(struct BVHTreeFromMesh *data);
+
+/*
+ * BVHCache
+ */
+
+//Using local coordinates
+#define BVHTREE_FROM_FACES 0
+#define BVHTREE_FROM_VERTICES 1
+
+typedef LinkNode* BVHCache;
+
+
+/*
+ * Queries a bvhcache for the chache bvhtree of the request type
+ */
+BVHTree *bvhcache_find(BVHCache *cache, int type);
+
+/*
+ * Inserts a BVHTree of the given type under the cache
+ * After that the caller no longer needs to worry when to free the BVHTree
+ * as that will be done when the cache is freed.
+ *
+ * A call to this assumes that there was no previous cached tree of the given type
+ */
+void bvhcache_insert(BVHCache *cache, BVHTree *tree, int type);
+
+/*
+ * inits and frees a bvhcache
+ */
+void bvhcache_init(BVHCache *cache);
+void bvhcache_free(BVHCache *cache);
+
#endif
diff --git a/source/blender/blenkernel/BKE_cloth.h b/source/blender/blenkernel/BKE_cloth.h
index 791cf40f8a0..e09be838f06 100644
--- a/source/blender/blenkernel/BKE_cloth.h
+++ b/source/blender/blenkernel/BKE_cloth.h
@@ -1,7 +1,7 @@
/**
* BKE_cloth.h
*
- * $Id: BKE_cloth.h,v 1.1 2007/08/01 02:07:27 daniel Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/BKE_collision.h b/source/blender/blenkernel/BKE_collision.h
index 2518c1d6939..e4eed084a3d 100644
--- a/source/blender/blenkernel/BKE_collision.h
+++ b/source/blender/blenkernel/BKE_collision.h
@@ -1,7 +1,7 @@
/**
* BKE_cloth.h
*
- * $Id: BKE_cloth.h,v 1.1 2007/08/01 02:07:27 daniel Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h
index b17f4a76198..e5a8df1a932 100644
--- a/source/blender/blenkernel/BKE_curve.h
+++ b/source/blender/blenkernel/BKE_curve.h
@@ -47,6 +47,10 @@ struct BevList;
#define SEGMENTSU(nu) ( ((nu)->flagu & CU_CYCLIC) ? (nu)->pntsu : (nu)->pntsu-1 )
#define SEGMENTSV(nu) ( ((nu)->flagv & CU_CYCLIC) ? (nu)->pntsv : (nu)->pntsv-1 )
+#define CU_DO_TILT(cu, nu) (((nu->type & CU_2D) && (cu->flag & CU_3D)==0) ? 0 : 1)
+#define CU_DO_RADIUS(cu, nu) ((CU_DO_TILT(cu, nu) || cu->bevobj || cu->ext1!=0.0 || cu->ext2!=0.0) ? 1:0)
+
+
void unlink_curve( struct Curve *cu);
void free_curve( struct Curve *cu);
void BKE_free_editfont(struct Curve *cu);
@@ -65,7 +69,7 @@ void duplicateNurblist( struct ListBase *lb1, struct ListBase *lb2);
void test2DNurb( struct Nurb *nu);
void minmaxNurb( struct Nurb *nu, float *min, float *max);
-void makeknots( struct Nurb *nu, short uv, short type);
+void makeknots( struct Nurb *nu, short uv);
void makeNurbfaces(struct Nurb *nu, float *coord_array, int rowstride);
void makeNurbcurve(struct Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, int resolu);
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index 8bf6d91e325..db4d948216e 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -1,7 +1,7 @@
/* BKE_particle.h
*
*
- * $Id: BKE_particle.h $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -180,7 +180,7 @@ typedef struct ParticleThreadContext {
/* path caching */
int editupdate, between, steps;
- int totchild, totparent;
+ int totchild, totparent, parent_pass;
float cfra;
@@ -195,6 +195,19 @@ typedef struct ParticleThread {
int num, tot;
} ParticleThread;
+typedef struct ParticleBillboardData
+{
+ struct Object *ob;
+ float vec[3], vel[3];
+ float offset[2];
+ float size, tilt, random, time;
+ int uv[3];
+ int lock, num;
+ int totnum;
+ short align, uv_split, anim, split_offset;
+}
+ParticleBillboardData;
+
/* ----------- functions needed outside particlesystem ---------------- */
/* particle.c */
int count_particles(struct ParticleSystem *psys);
@@ -268,6 +281,8 @@ void psys_threads_free(ParticleThread *threads);
void psys_thread_distribute_particle(ParticleThread *thread, struct ParticleData *pa, struct ChildParticle *cpa, int p);
void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa, ParticleCacheKey *keys, int i);
+void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3], float zvec[3], float center[3]);
+
/* particle_system.c */
int psys_count_keyed_targets(struct Object *ob, struct ParticleSystem *psys);
void psys_get_reactor_target(struct Object *ob, struct ParticleSystem *psys, struct Object **target_ob, struct ParticleSystem **target_psys);
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 734687adafb..70eba5006d6 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -38,6 +38,7 @@ struct Base;
struct AviCodecData;
struct QuicktimeCodecData;
struct RenderData;
+struct Text;
/* note; doesn't work when scene is empty */
#define SETLOOPER(s, b) sce= s, b= (Base*)sce->base.first; b; b= (Base*)(b->next?b->next:sce->set?(sce=sce->set)->base.first:NULL)
@@ -73,5 +74,7 @@ int get_render_child_particle_number(struct RenderData *r, int num);
int get_render_shadow_samples(struct RenderData *r, int samples);
float get_render_aosss_error(struct RenderData *r, float error);
+void free_dome_warp_text(struct Text *txt);
+
#endif
diff --git a/source/blender/blenkernel/BKE_shrinkwrap.h b/source/blender/blenkernel/BKE_shrinkwrap.h
index 103b78f0d6e..eb0e3c4ef00 100644
--- a/source/blender/blenkernel/BKE_shrinkwrap.h
+++ b/source/blender/blenkernel/BKE_shrinkwrap.h
@@ -35,6 +35,8 @@
#include "BKE_customdata.h"
struct DerivedMesh;
struct Object;
+struct DerivedMesh *object_get_derived_final(struct Scene *scene, struct Object *ob, CustomDataMask dataMask);
+
/* SpaceTransform stuff */
/*
@@ -59,7 +61,7 @@ struct Object;
* space_transform_invert_normal(&data, &no);
*
*/
-
+struct Object;
typedef struct SpaceTransform
{
@@ -92,6 +94,8 @@ void space_transform_invert(const struct SpaceTransform *data, float *co);
struct Object;
struct Scene;
struct DerivedMesh;
+struct MVert;
+struct MDeformVert;
struct ShrinkwrapModifierData;
struct MDeformVert;
struct BVHTree;
@@ -102,8 +106,8 @@ typedef struct ShrinkwrapCalcData
ShrinkwrapModifierData *smd; //shrinkwrap modifier data
struct Object *ob; //object we are applying shrinkwrap to
- struct DerivedMesh *original; //mesh before shrinkwrap
+ MVert *vert; //Array of verts being projected (to fetch normals or other data)
float (*vertexCos)[3]; //vertexs being shrinkwraped
int numVerts;
@@ -120,6 +124,17 @@ typedef struct ShrinkwrapCalcData
void shrinkwrapModifier_deform(struct ShrinkwrapModifierData *smd, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm, float (*vertexCos)[3], int numVerts);
/*
+ * This function casts a ray in the given BVHTree.. but it takes into consideration the space_transform, that is:
+ *
+ * if transf was configured with "space_transform_setup( &transf, ob1, ob2 )"
+ * then the input (vert, dir, BVHTreeRayHit) must be defined in ob1 coordinates space
+ * and the BVHTree must be built in ob2 coordinate space.
+ *
+ * Thus it provides an easy way to cast the same ray across several trees (where each tree was built on its own coords space)
+ */
+int normal_projection_project_vertex(char options, const float *vert, const float *dir, const SpaceTransform *transf, BVHTree *tree, BVHTreeRayHit *hit, BVHTree_RayCastCallback callback, void *userdata);
+
+/*
* NULL initializers to local data
*/
#define NULL_ShrinkwrapCalcData {NULL, }
diff --git a/source/blender/blenkernel/BKE_suggestions.h b/source/blender/blenkernel/BKE_suggestions.h
index d58b8f58bf5..473e3f547f2 100644
--- a/source/blender/blenkernel/BKE_suggestions.h
+++ b/source/blender/blenkernel/BKE_suggestions.h
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript
index 1ea9cfae78e..86ff3a43045 100644
--- a/source/blender/blenkernel/SConscript
+++ b/source/blender/blenkernel/SConscript
@@ -15,49 +15,51 @@ incs += ' ../gpu #/extern/glew/include'
incs += ' ' + env['BF_OPENGL_INC']
incs += ' ' + env['BF_ZLIB_INC']
-defs = ''
+defs = []
if not env['WITH_BF_PYTHON']:
- defs += 'DISABLE_PYTHON'
+ defs.append('DISABLE_PYTHON')
else:
incs += ' ../python'
incs += ' ' + env['BF_PYTHON_INC']
+ if env['BF_DEBUG']:
+ defs.append('_DEBUG')
if env['WITH_BF_QUICKTIME']:
- incs += ' ../quicktime'
+ incs += ' ../quicktime'
if env['WITH_BF_SDL']:
incs += ' ' + env['BF_SDL_INC']
else:
- defs += ' DISABLE_SDL'
+ defs.append('DISABLE_SDL')
if env['WITH_BF_INTERNATIONAL']:
- defs += ' WITH_FREETYPE2'
+ defs.append('WITH_FREETYPE2')
if env['WITH_BF_OPENEXR']:
- defs += ' WITH_OPENEXR'
+ defs.append('WITH_OPENEXR')
if env['WITH_BF_OPENJPEG']:
- defs += ' WITH_OPENJPEG'
+ defs.append('WITH_OPENJPEG')
if env['WITH_BF_DDS']:
- defs += ' WITH_DDS'
+ defs.append('WITH_DDS')
if env['WITH_BF_FFMPEG']:
- defs += ' WITH_FFMPEG'
- incs += ' ' + env['BF_FFMPEG_INC']
+ defs.append('WITH_FFMPEG')
+ incs += ' ' + env['BF_FFMPEG_INC']
if env['WITH_BF_QUICKTIME']:
- defs += ' WITH_QUICKTIME'
- incs += ' ' + env['BF_QUICKTIME_INC']
+ defs.append('WITH_QUICKTIME')
+ incs += ' ' + env['BF_QUICKTIME_INC']
if env['WITH_BF_BULLET']:
- defs += ' WITH_BULLET'
+ defs.append('WITH_BULLET')
if env['BF_NO_ELBEEM']:
- defs += ' DISABLE_ELBEEM'
+ defs.append('DISABLE_ELBEEM')
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
incs += ' ' + env['BF_PTHREADS_INC']
-env.BlenderLib ( libname = 'bf_blenkernel', sources = sources, includes = Split(incs), defines = Split(defs), libtype=['core'], priority = [165] )
+env.BlenderLib ( libname = 'bf_blenkernel', sources = sources, includes = Split(incs), defines = defs, libtype=['core'], priority = [165] )
diff --git a/source/blender/blenkernel/intern/BME_Customdata.c b/source/blender/blenkernel/intern/BME_Customdata.c
index 1fc8a4071dc..ea149e03959 100644
--- a/source/blender/blenkernel/intern/BME_Customdata.c
+++ b/source/blender/blenkernel/intern/BME_Customdata.c
@@ -3,7 +3,7 @@
*
* Custom Data functions for Bmesh
*
- * $Id: BKE_bmesh.h,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/BME_conversions.c b/source/blender/blenkernel/intern/BME_conversions.c
index 1e332bcf393..177bb4a136b 100644
--- a/source/blender/blenkernel/intern/BME_conversions.c
+++ b/source/blender/blenkernel/intern/BME_conversions.c
@@ -3,7 +3,7 @@
*
* BMesh mesh level functions.
*
- * $Id: BME_eulers.c,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/BME_eulers.c b/source/blender/blenkernel/intern/BME_eulers.c
index 801e0b8bdec..d0b4ab6a9ca 100644
--- a/source/blender/blenkernel/intern/BME_eulers.c
+++ b/source/blender/blenkernel/intern/BME_eulers.c
@@ -3,7 +3,7 @@
*
* BMesh Euler construction API.
*
- * $Id: BME_eulers.c,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/BME_mesh.c b/source/blender/blenkernel/intern/BME_mesh.c
index ad46a7c1eb7..f635cfcfcd2 100644
--- a/source/blender/blenkernel/intern/BME_mesh.c
+++ b/source/blender/blenkernel/intern/BME_mesh.c
@@ -3,7 +3,7 @@
*
* BMesh mesh level functions.
*
- * $Id: BME_eulers.c,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/BME_structure.c b/source/blender/blenkernel/intern/BME_structure.c
index ca27f5efd10..22ee48e4f7e 100644
--- a/source/blender/blenkernel/intern/BME_structure.c
+++ b/source/blender/blenkernel/intern/BME_structure.c
@@ -3,7 +3,7 @@
*
* Low level routines for manipulating the BMesh structure.
*
- * $Id: BME_structure.c,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/BME_tools.c b/source/blender/blenkernel/intern/BME_tools.c
index 3ddd790e90b..a41307de183 100644
--- a/source/blender/blenkernel/intern/BME_tools.c
+++ b/source/blender/blenkernel/intern/BME_tools.c
@@ -3,7 +3,7 @@
*
* Functions for changing the topology of a mesh.
*
- * $Id: BME_eulers.c,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index cbdbe19f0b9..fd92360f6c2 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -76,6 +76,7 @@
#include "BKE_texture.h"
#include "BKE_utildefines.h"
#include "BKE_particle.h"
+#include "BKE_bvhutils.h"
#include "BLO_sys_types.h" // for intptr_t support
@@ -177,6 +178,8 @@ void DM_init_funcs(DerivedMesh *dm)
dm->getVertDataArray = DM_get_vert_data_layer;
dm->getEdgeDataArray = DM_get_edge_data_layer;
dm->getFaceDataArray = DM_get_face_data_layer;
+
+ bvhcache_init(&dm->bvhCache);
}
void DM_init(DerivedMesh *dm,
@@ -213,6 +216,8 @@ void DM_from_template(DerivedMesh *dm, DerivedMesh *source,
int DM_release(DerivedMesh *dm)
{
if (dm->needsFree) {
+ bvhcache_free(&dm->bvhCache);
+
CustomData_free(&dm->vertData, dm->numVertData);
CustomData_free(&dm->edgeData, dm->numEdgeData);
CustomData_free(&dm->faceData, dm->numFaceData);
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index cffd97c70b1..1aceca454d2 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -226,14 +226,16 @@ int where_on_path(Object *ob, float ctime, float *vec, float *dir) /* returns OK
cu= ob->data;
if(cu->path==NULL || cu->path->data==NULL) {
printf("no path!\n");
+ return 0;
}
path= cu->path;
fp= path->data;
/* test for cyclic */
bl= cu->bev.first;
+ if (!bl) return 0;
if (!bl->nr) return 0;
- if(bl && bl->poly> -1) cycl= 1;
+ if(bl->poly> -1) cycl= 1;
ctime *= (path->len-1);
@@ -759,7 +761,7 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
float ctime, pa_time, scale = 1.0f;
float tmat[4][4], mat[4][4], pamat[4][4], size=0.0;
float (*obmat)[4], (*oldobmat)[4];
- int lay, a, b, k, step_nbr = 0, counter, hair = 0;
+ int lay, a, b, counter, hair = 0;
int totpart, totchild, totgroup=0, pa_num;
if(psys==0) return;
@@ -787,11 +789,6 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
if((part->draw_as == PART_DRAW_OB && part->dup_ob) ||
(part->draw_as == PART_DRAW_GR && part->dup_group && part->dup_group->gobject.first)) {
- if(psys->flag & (PSYS_HAIR_DONE|PSYS_KEYED) && part->draw & PART_DRAW_KEYS)
- step_nbr = part->keys_step;
- else
- step_nbr = 0;
-
/* if we have a hair particle system, use the path cache */
if(part->type == PART_HAIR) {
if(psys->flag & PSYS_HAIR_DONE)
@@ -871,76 +868,65 @@ static void new_particle_duplilist(ListBase *lb, ID *id, Scene *scene, Object *p
oldobmat= obcopy.obmat;
}
- for(k=0; k<=step_nbr; k++, counter++) {
- if(hair) {
- /* hair we handle separate and compute transform based on hair keys */
- if(a < totpart) {
- cache = psys->pathcache[a];
- psys_get_dupli_path_transform(par, psys, psmd, pa, 0, cache, pamat, &scale);
- }
- else {
- cache = psys->childcache[a-totpart];
- psys_get_dupli_path_transform(par, psys, psmd, 0, cpa, cache, pamat, &scale);
- }
-
- VECCOPY(pamat[3], cache->co);
- pamat[3][3]= 1.0f;
-
- }
- else if(step_nbr) {
- /* other keys */
- state.time = (float)k / (float)step_nbr;
- psys_get_particle_on_path(scene, par, psys, a, &state, 0);
-
- QuatToMat4(state.rot, pamat);
- VECCOPY(pamat[3], state.co);
- pamat[3][3]= 1.0f;
+ if(hair) {
+ /* hair we handle separate and compute transform based on hair keys */
+ if(a < totpart) {
+ cache = psys->pathcache[a];
+ psys_get_dupli_path_transform(par, psys, psmd, pa, 0, cache, pamat, &scale);
}
else {
- /* first key */
- state.time = -1.0;
- if(psys_get_particle_state(scene, par, psys, a, &state, 0) == 0)
- continue;
-
- QuatToMat4(state.rot, pamat);
- VECCOPY(pamat[3], state.co);
- pamat[3][3]= 1.0f;
+ cache = psys->childcache[a-totpart];
+ psys_get_dupli_path_transform(par, psys, psmd, 0, cpa, cache, pamat, &scale);
}
- if(part->draw_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) {
- for(go= part->dup_group->gobject.first, b=0; go; go= go->next, b++) {
- Mat4MulMat4(tmat, oblist[b]->obmat, pamat);
- Mat4MulFloat3((float *)tmat, size*scale);
- if(par_space_mat)
- Mat4MulMat4(mat, tmat, par_space_mat);
- else
- Mat4CpyMat4(mat, tmat);
+ VECCOPY(pamat[3], cache->co);
+ pamat[3][3]= 1.0f;
+
+ }
+ else {
+ /* first key */
+ state.time = ctime;
+ if(psys_get_particle_state(scene, par, psys, a, &state, 0) == 0)
+ continue;
- dob= new_dupli_object(lb, go->ob, mat, par->lay, counter, OB_DUPLIPARTS, animated);
- Mat4CpyMat4(dob->omat, obcopylist[b].obmat);
- if(G.rendering)
- psys_get_dupli_texture(par, part, psmd, pa, cpa, dob->uv, dob->orco);
- }
- }
- else {
- /* to give ipos in object correct offset */
- where_is_object_time(scene, ob, ctime-pa_time);
-
- Mat4CpyMat4(mat, pamat);
+ QuatToMat4(state.rot, pamat);
+ VECCOPY(pamat[3], state.co);
+ pamat[3][3]= 1.0f;
+ }
- Mat4MulMat4(tmat, obmat, mat);
+ if(part->draw_as==PART_DRAW_GR && psys->part->draw & PART_DRAW_WHOLE_GR) {
+ for(go= part->dup_group->gobject.first, b=0; go; go= go->next, b++) {
+ Mat4MulMat4(tmat, oblist[b]->obmat, pamat);
Mat4MulFloat3((float *)tmat, size*scale);
if(par_space_mat)
Mat4MulMat4(mat, tmat, par_space_mat);
else
Mat4CpyMat4(mat, tmat);
- dob= new_dupli_object(lb, ob, mat, par->lay, counter, OB_DUPLIPARTS, animated);
- Mat4CpyMat4(dob->omat, oldobmat);
+ dob= new_dupli_object(lb, go->ob, mat, par->lay, counter, OB_DUPLIPARTS, animated);
+ Mat4CpyMat4(dob->omat, obcopylist[b].obmat);
if(G.rendering)
psys_get_dupli_texture(par, part, psmd, pa, cpa, dob->uv, dob->orco);
}
}
+ else {
+ /* to give ipos in object correct offset */
+ where_is_object_time(scene, ob, ctime-pa_time);
+
+ Mat4CpyMat4(mat, pamat);
+
+ Mat4MulMat4(tmat, obmat, mat);
+ Mat4MulFloat3((float *)tmat, size*scale);
+ if(par_space_mat)
+ Mat4MulMat4(mat, tmat, par_space_mat);
+ else
+ Mat4CpyMat4(mat, tmat);
+
+ dob= new_dupli_object(lb, ob, mat, ob->lay, counter, OB_DUPLIPARTS, animated);
+ Mat4CpyMat4(dob->omat, oldobmat);
+ if(G.rendering)
+ psys_get_dupli_texture(par, part, psmd, pa, cpa, dob->uv, dob->orco);
+ }
}
/* restore objects since they were changed in where_is_object_time */
diff --git a/source/blender/blenkernel/intern/bmesh_private.h b/source/blender/blenkernel/intern/bmesh_private.h
index f34ef0090f3..dd7d20bcf15 100644
--- a/source/blender/blenkernel/intern/bmesh_private.h
+++ b/source/blender/blenkernel/intern/bmesh_private.h
@@ -3,7 +3,7 @@
*
* low level, 'private' function prototypes for bmesh kernel.
*
- * $Id: BKE_bmesh.h,v 1.00 2007/01/17 17:42:01 Briggs Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/booleanops.c b/source/blender/blenkernel/intern/booleanops.c
index e57dfea8eaf..27b78c6644c 100644
--- a/source/blender/blenkernel/intern/booleanops.c
+++ b/source/blender/blenkernel/intern/booleanops.c
@@ -65,7 +65,7 @@
*/
typedef struct {
- Mesh *mesh;
+ DerivedMesh *dm;
Object *ob;
int pos;
} VertexIt;
@@ -93,13 +93,13 @@ static void VertexIt_Destruct(CSG_VertexIteratorDescriptor * iterator)
static int VertexIt_Done(CSG_IteratorPtr it)
{
VertexIt * iterator = (VertexIt *)it;
- return(iterator->pos >= iterator->mesh->totvert);
+ return(iterator->pos >= iterator->dm->getNumVerts(iterator->dm));
}
static void VertexIt_Fill(CSG_IteratorPtr it, CSG_IVertex *vert)
{
VertexIt * iterator = (VertexIt *)it;
- MVert *verts = iterator->mesh->mvert;
+ MVert *verts = iterator->dm->getVertArray(iterator->dm);
float global_pos[3];
@@ -127,7 +127,7 @@ static void VertexIt_Reset(CSG_IteratorPtr it)
iterator->pos = 0;
}
-static void VertexIt_Construct(CSG_VertexIteratorDescriptor *output, Object *ob)
+static void VertexIt_Construct(CSG_VertexIteratorDescriptor *output, DerivedMesh *dm, Object *ob)
{
VertexIt *it;
@@ -139,8 +139,8 @@ static void VertexIt_Construct(CSG_VertexIteratorDescriptor *output, Object *ob)
return;
}
// assign blender specific variables
- it->ob = ob;
- it->mesh = ob->data;
+ it->dm = dm;
+ it->ob = ob; // needed for obmat transformations
it->pos = 0;
@@ -149,7 +149,7 @@ static void VertexIt_Construct(CSG_VertexIteratorDescriptor *output, Object *ob)
output->Fill = VertexIt_Fill;
output->Done = VertexIt_Done;
output->Reset = VertexIt_Reset;
- output->num_elements = it->mesh->totvert;
+ output->num_elements = it->dm->getNumVerts(it->dm);
output->it = it;
}
@@ -158,7 +158,7 @@ static void VertexIt_Construct(CSG_VertexIteratorDescriptor *output, Object *ob)
*/
typedef struct {
- Mesh *mesh;
+ DerivedMesh *dm;
int pos;
int offset;
} FaceIt;
@@ -177,14 +177,14 @@ static int FaceIt_Done(CSG_IteratorPtr it)
{
// assume CSG_IteratorPtr is of the correct type.
FaceIt * iterator = (FaceIt *)it;
- return(iterator->pos >= iterator->mesh->totface);
+ return(iterator->pos >= iterator->dm->getNumFaces(iterator->dm));
}
static void FaceIt_Fill(CSG_IteratorPtr it, CSG_IFace *face)
{
// assume CSG_IteratorPtr is of the correct type.
FaceIt *face_it = (FaceIt *)it;
- MFace *mfaces = face_it->mesh->mface;
+ MFace *mfaces = face_it->dm->getFaceArray(face_it->dm);
MFace *mface = &mfaces[face_it->pos];
face->vertex_index[0] = mface->v1;
@@ -213,7 +213,7 @@ static void FaceIt_Reset(CSG_IteratorPtr it)
}
static void FaceIt_Construct(
- CSG_FaceIteratorDescriptor *output, Object *ob, int offset)
+ CSG_FaceIteratorDescriptor *output, DerivedMesh *dm, int offset)
{
FaceIt *it;
if (output == 0) return;
@@ -224,7 +224,7 @@ static void FaceIt_Construct(
return ;
}
// assign blender specific variables
- it->mesh = ob->data;
+ it->dm = dm;
it->offset = offset;
it->pos = 0;
@@ -233,7 +233,7 @@ static void FaceIt_Construct(
output->Fill = FaceIt_Fill;
output->Done = FaceIt_Done;
output->Reset = FaceIt_Reset;
- output->num_elements = it->mesh->totface;
+ output->num_elements = it->dm->getNumFaces(it->dm);
output->it = it;
}
@@ -276,7 +276,7 @@ static Object *AddNewBlenderMesh(Scene *scene, Base *base)
}
static void InterpCSGFace(
- DerivedMesh *dm, Mesh *orig_me, int index, int orig_index, int nr,
+ DerivedMesh *dm, DerivedMesh *orig_dm, int index, int orig_index, int nr,
float mapmat[][4])
{
float obco[3], *co[4], *orig_co[4], w[4][4];
@@ -284,13 +284,13 @@ static void InterpCSGFace(
int j;
mface = CDDM_get_face(dm, index);
- orig_mface = orig_me->mface + orig_index;
+ orig_mface = orig_dm->getFaceArray(orig_dm) + orig_index;
// get the vertex coordinates from the original mesh
- orig_co[0] = (orig_me->mvert + orig_mface->v1)->co;
- orig_co[1] = (orig_me->mvert + orig_mface->v2)->co;
- orig_co[2] = (orig_me->mvert + orig_mface->v3)->co;
- orig_co[3] = (orig_mface->v4)? (orig_me->mvert + orig_mface->v4)->co: NULL;
+ orig_co[0] = (orig_dm->getVertArray(orig_dm) + orig_mface->v1)->co;
+ orig_co[1] = (orig_dm->getVertArray(orig_dm) + orig_mface->v2)->co;
+ orig_co[2] = (orig_dm->getVertArray(orig_dm) + orig_mface->v3)->co;
+ orig_co[3] = (orig_mface->v4)? (orig_dm->getVertArray(orig_dm) + orig_mface->v4)->co: NULL;
// get the vertex coordinates from the new derivedmesh
co[0] = CDDM_get_vert(dm, mface->v1)->co;
@@ -308,7 +308,7 @@ static void InterpCSGFace(
InterpWeightsQ3Dfl(orig_co[0], orig_co[1], orig_co[2], orig_co[3], obco, w[j]);
}
- CustomData_interp(&orig_me->fdata, &dm->faceData, &orig_index, NULL, (float*)w, 1, index);
+ CustomData_interp(&orig_dm->faceData, &dm->faceData, &orig_index, NULL, (float*)w, 1, index);
}
/* Iterate over the CSG Output Descriptors and create a new DerivedMesh
@@ -320,27 +320,28 @@ static DerivedMesh *ConvertCSGDescriptorsToDerivedMesh(
float mapmat[][4],
Material **mat,
int *totmat,
+ DerivedMesh *dm1,
Object *ob1,
+ DerivedMesh *dm2,
Object *ob2)
{
- DerivedMesh *dm;
+ DerivedMesh *result, *orig_dm;
GHash *material_hash = NULL;
Mesh *me1= (Mesh*)ob1->data;
Mesh *me2= (Mesh*)ob2->data;
int i;
// create a new DerivedMesh
- dm = CDDM_new(vertex_it->num_elements, 0, face_it->num_elements);
-
- CustomData_merge(&me1->fdata, &dm->faceData, CD_MASK_DERIVEDMESH,
- CD_DEFAULT, face_it->num_elements);
- CustomData_merge(&me2->fdata, &dm->faceData, CD_MASK_DERIVEDMESH,
- CD_DEFAULT, face_it->num_elements);
+ result = CDDM_new(vertex_it->num_elements, 0, face_it->num_elements);
+ CustomData_merge(&dm1->faceData, &result->faceData, CD_MASK_DERIVEDMESH,
+ CD_DEFAULT, face_it->num_elements);
+ CustomData_merge(&dm2->faceData, &result->faceData, CD_MASK_DERIVEDMESH,
+ CD_DEFAULT, face_it->num_elements);
// step through the vertex iterators:
for (i = 0; !vertex_it->Done(vertex_it->it); i++) {
CSG_IVertex csgvert;
- MVert *mvert = CDDM_get_vert(dm, i);
+ MVert *mvert = CDDM_get_vert(result, i);
// retrieve a csg vertex from the boolean module
vertex_it->Fill(vertex_it->it, &csgvert);
@@ -371,15 +372,16 @@ static DerivedMesh *ConvertCSGDescriptorsToDerivedMesh(
face_it->Step(face_it->it);
// find the original mesh and data
- orig_ob = (csgface.orig_face < me1->totface)? ob1: ob2;
+ orig_ob = (csgface.orig_face < dm1->getNumFaces(dm1))? ob1: ob2;
+ orig_dm = (csgface.orig_face < dm1->getNumFaces(dm1))? dm1: dm2;
orig_me = (orig_ob == ob1)? me1: me2;
- orig_index = (orig_ob == ob1)? csgface.orig_face: csgface.orig_face - me1->totface;
+ orig_index = (orig_ob == ob1)? csgface.orig_face: csgface.orig_face - dm1->getNumFaces(dm1);
// copy all face layers, including mface
- CustomData_copy_data(&orig_me->fdata, &dm->faceData, orig_index, i, 1);
+ CustomData_copy_data(&orig_dm->faceData, &result->faceData, orig_index, i, 1);
// set mface
- mface = CDDM_get_face(dm, i);
+ mface = CDDM_get_face(result, i);
mface->v1 = csgface.vertex_index[0];
mface->v2 = csgface.vertex_index[1];
mface->v3 = csgface.vertex_index[2];
@@ -400,29 +402,30 @@ static DerivedMesh *ConvertCSGDescriptorsToDerivedMesh(
else
mface->mat_nr = 0;
- InterpCSGFace(dm, orig_me, i, orig_index, csgface.vertex_number,
+ InterpCSGFace(result, orig_dm, i, orig_index, csgface.vertex_number,
(orig_me == me2)? mapmat: NULL);
- test_index_face(mface, &dm->faceData, i, csgface.vertex_number);
+ test_index_face(mface, &result->faceData, i, csgface.vertex_number);
}
if (material_hash)
BLI_ghash_free(material_hash, NULL, NULL);
- CDDM_calc_edges(dm);
- CDDM_calc_normals(dm);
+ CDDM_calc_edges(result);
+ CDDM_calc_normals(result);
- return dm;
+ return result;
}
static void BuildMeshDescriptors(
+ struct DerivedMesh *dm,
struct Object *ob,
int face_offset,
struct CSG_FaceIteratorDescriptor * face_it,
struct CSG_VertexIteratorDescriptor * vertex_it)
{
- VertexIt_Construct(vertex_it,ob);
- FaceIt_Construct(face_it,ob,face_offset);
+ VertexIt_Construct(vertex_it,dm, ob);
+ FaceIt_Construct(face_it,dm,face_offset);
}
static void FreeMeshDescriptors(
@@ -434,19 +437,17 @@ static void FreeMeshDescriptors(
}
DerivedMesh *NewBooleanDerivedMesh_intern(
- struct Object *ob, struct Object *ob_select,
+ DerivedMesh *dm, struct Object *ob, DerivedMesh *dm_select, struct Object *ob_select,
int int_op_type, Material **mat, int *totmat)
{
float inv_mat[4][4];
float map_mat[4][4];
- DerivedMesh *dm = NULL;
- Mesh *me1 = get_mesh(ob_select);
- Mesh *me2 = get_mesh(ob);
+ DerivedMesh *result = NULL;
- if (me1 == NULL || me2 == NULL) return 0;
- if (!me1->totface || !me2->totface) return 0;
+ if (dm == NULL || dm_select == NULL) return 0;
+ if (!dm->getNumFaces(dm) || !dm_select->getNumFaces(dm_select)) return 0;
// we map the final object back into ob's local coordinate space. For this
// we need to compute the inverse transform from global to ob (inv_mat),
@@ -477,8 +478,8 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
default : op_type = e_csg_intersection;
}
- BuildMeshDescriptors(ob_select, 0, &fd_1, &vd_1);
- BuildMeshDescriptors(ob, me1->totface, &fd_2, &vd_2);
+ BuildMeshDescriptors(dm_select, ob_select, 0, &fd_1, &vd_1);
+ BuildMeshDescriptors(dm, ob, dm_select->getNumFaces(dm_select) , &fd_2, &vd_2);
bool_op = CSG_NewBooleanFunction();
@@ -492,8 +493,8 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
// iterate through results of operation and insert
// into new object
- dm = ConvertCSGDescriptorsToDerivedMesh(
- &fd_o, &vd_o, inv_mat, map_mat, mat, totmat, ob_select, ob);
+ result = ConvertCSGDescriptorsToDerivedMesh(
+ &fd_o, &vd_o, inv_mat, map_mat, mat, totmat, dm_select, ob_select, dm, ob);
// free up the memory
CSG_FreeVertexDescriptor(&vd_o);
@@ -508,7 +509,7 @@ DerivedMesh *NewBooleanDerivedMesh_intern(
FreeMeshDescriptors(&fd_2, &vd_2);
}
- return dm;
+ return result;
}
int NewBooleanMesh(Scene *scene, Base *base, Base *base_select, int int_op_type)
@@ -517,24 +518,30 @@ int NewBooleanMesh(Scene *scene, Base *base, Base *base_select, int int_op_type)
int a, maxmat, totmat= 0;
Object *ob_new, *ob, *ob_select;
Material **mat;
+ DerivedMesh *result;
+ DerivedMesh *dm_select;
DerivedMesh *dm;
ob= base->object;
ob_select= base_select->object;
+ dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
+ dm_select = mesh_create_derived_view(scene, ob_select, 0); // no modifiers in editmode ??
+
maxmat= ob->totcol + ob_select->totcol;
mat= (Material**)MEM_mallocN(sizeof(Material*)*maxmat, "NewBooleanMeshMat");
/* put some checks in for nice user feedback */
- if((!(get_mesh(ob)->totface)) || (!(get_mesh(ob_select)->totface)))
+ if (dm == NULL || dm_select == NULL) return 0;
+ if (!dm->getNumFaces(dm) || !dm_select->getNumFaces(dm_select))
{
MEM_freeN(mat);
return -1;
}
- dm= NewBooleanDerivedMesh_intern(ob, ob_select, int_op_type, mat, &totmat);
+ result= NewBooleanDerivedMesh_intern(dm, ob, dm_select, ob_select, int_op_type, mat, &totmat);
- if (dm == NULL) {
+ if (result == NULL) {
MEM_freeN(mat);
return 0;
}
@@ -543,8 +550,11 @@ int NewBooleanMesh(Scene *scene, Base *base, Base *base_select, int int_op_type)
ob_new= AddNewBlenderMesh(scene, base_select);
me_new= ob_new->data;
- DM_to_mesh(dm, me_new);
+ DM_to_mesh(result, me_new);
+ result->release(result);
+
dm->release(dm);
+ dm_select->release(dm_select);
/* add materials to object */
for (a = 0; a < totmat; a++)
@@ -558,9 +568,9 @@ int NewBooleanMesh(Scene *scene, Base *base, Base *base_select, int int_op_type)
return 1;
}
-DerivedMesh *NewBooleanDerivedMesh(struct Object *ob, struct Object *ob_select,
+DerivedMesh *NewBooleanDerivedMesh(DerivedMesh *dm, struct Object *ob, DerivedMesh *dm_select, struct Object *ob_select,
int int_op_type)
{
- return NewBooleanDerivedMesh_intern(ob, ob_select, int_op_type, NULL, NULL);
+ return NewBooleanDerivedMesh_intern(dm, ob, dm_select, ob_select, int_op_type, NULL, NULL);
}
diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c
index ae449843d2a..d9e005811d0 100644
--- a/source/blender/blenkernel/intern/bvhutils.c
+++ b/source/blender/blenkernel/intern/bvhutils.c
@@ -30,6 +30,7 @@
#include <stdio.h>
#include <string.h>
#include <math.h>
+#include <assert.h>
#include "BKE_bvhutils.h"
@@ -45,6 +46,8 @@
#include "BKE_global.h"
#include "BLI_arithb.h"
+#include "BLI_linklist.h"
+#include "MEM_guardedalloc.h"
/* Math stuff for ray casting on mesh faces and for nearest surface */
@@ -480,30 +483,47 @@ static void mesh_faces_spherecast(void *userdata, int index, const BVHTreeRay *r
* BVH builders
*/
// Builds a bvh tree.. where nodes are the vertexs of the given mesh
-void bvhtree_from_mesh_verts(BVHTreeFromMesh *data, DerivedMesh *mesh, float epsilon, int tree_type, int axis)
+BVHTree* bvhtree_from_mesh_verts(BVHTreeFromMesh *data, DerivedMesh *mesh, float epsilon, int tree_type, int axis)
{
- int i;
- int numVerts= mesh->getNumVerts(mesh);
- MVert *vert = mesh->getVertDataArray(mesh, CD_MVERT);
- BVHTree *tree = NULL;
+ BVHTree *tree = bvhcache_find(&mesh->bvhCache, BVHTREE_FROM_VERTICES);
- memset(data, 0, sizeof(*data));
+ //Not in cache
+ if(tree == NULL)
+ {
+ int i;
+ int numVerts= mesh->getNumVerts(mesh);
+ MVert *vert = mesh->getVertDataArray(mesh, CD_MVERT);
- if(vert == NULL)
+ if(vert != NULL)
+ {
+ tree = BLI_bvhtree_new(numVerts, epsilon, tree_type, axis);
+
+ if(tree != NULL)
+ {
+ for(i = 0; i < numVerts; i++)
+ BLI_bvhtree_insert(tree, i, vert[i].co, 1);
+
+ BLI_bvhtree_balance(tree);
+
+ //Save on cache for later use
+// printf("BVHTree built and saved on cache\n");
+ bvhcache_insert(&mesh->bvhCache, tree, BVHTREE_FROM_VERTICES);
+ }
+ }
+ }
+ else
{
- printf("bvhtree cant be build: cant get a vertex array");
- return;
+// printf("BVHTree is already build, using cached tree\n");
}
- tree = BLI_bvhtree_new(numVerts, epsilon, tree_type, axis);
- if(tree != NULL)
- {
- for(i = 0; i < numVerts; i++)
- BLI_bvhtree_insert(tree, i, vert[i].co, 1);
- BLI_bvhtree_balance(tree);
+ //Setup BVHTreeFromMesh
+ memset(data, 0, sizeof(*data));
+ data->tree = tree;
- data->tree = tree;
+ if(data->tree)
+ {
+ data->cached = TRUE;
//a NULL nearest callback works fine
//remeber the min distance to point is the same as the min distance to BV of point
@@ -516,43 +536,62 @@ void bvhtree_from_mesh_verts(BVHTreeFromMesh *data, DerivedMesh *mesh, float eps
data->sphere_radius = epsilon;
}
+
+ return data->tree;
}
// Builds a bvh tree.. where nodes are the faces of the given mesh.
-void bvhtree_from_mesh_faces(BVHTreeFromMesh *data, DerivedMesh *mesh, float epsilon, int tree_type, int axis)
+BVHTree* bvhtree_from_mesh_faces(BVHTreeFromMesh *data, DerivedMesh *mesh, float epsilon, int tree_type, int axis)
{
- int i;
- int numFaces= mesh->getNumFaces(mesh);
- MVert *vert = mesh->getVertDataArray(mesh, CD_MVERT);
- MFace *face = mesh->getFaceDataArray(mesh, CD_MFACE);
- BVHTree *tree = NULL;
-
- memset(data, 0, sizeof(*data));
+ BVHTree *tree = bvhcache_find(&mesh->bvhCache, BVHTREE_FROM_FACES);
- if(vert == NULL && face == NULL)
+ //Not in cache
+ if(tree == NULL)
{
- printf("bvhtree cant be build: cant get a vertex/face array");
- return;
- }
+ int i;
+ int numFaces= mesh->getNumFaces(mesh);
+ MVert *vert = mesh->getVertDataArray(mesh, CD_MVERT);
+ MFace *face = mesh->getFaceDataArray(mesh, CD_MFACE);
- /* Create a bvh-tree of the given target */
- tree = BLI_bvhtree_new(numFaces, epsilon, tree_type, axis);
- if(tree != NULL)
- {
- for(i = 0; i < numFaces; i++)
+ if(vert != NULL && face != NULL)
{
- float co[4][3];
- VECCOPY(co[0], vert[ face[i].v1 ].co);
- VECCOPY(co[1], vert[ face[i].v2 ].co);
- VECCOPY(co[2], vert[ face[i].v3 ].co);
- if(face[i].v4)
- VECCOPY(co[3], vert[ face[i].v4 ].co);
+ /* Create a bvh-tree of the given target */
+ tree = BLI_bvhtree_new(numFaces, epsilon, tree_type, axis);
+ if(tree != NULL)
+ {
+ for(i = 0; i < numFaces; i++)
+ {
+ float co[4][3];
+ VECCOPY(co[0], vert[ face[i].v1 ].co);
+ VECCOPY(co[1], vert[ face[i].v2 ].co);
+ VECCOPY(co[2], vert[ face[i].v3 ].co);
+ if(face[i].v4)
+ VECCOPY(co[3], vert[ face[i].v4 ].co);
- BLI_bvhtree_insert(tree, i, co[0], face[i].v4 ? 4 : 3);
+ BLI_bvhtree_insert(tree, i, co[0], face[i].v4 ? 4 : 3);
+ }
+ BLI_bvhtree_balance(tree);
+
+ //Save on cache for later use
+// printf("BVHTree built and saved on cache\n");
+ bvhcache_insert(&mesh->bvhCache, tree, BVHTREE_FROM_FACES);
+ }
}
- BLI_bvhtree_balance(tree);
+ }
+ else
+ {
+// printf("BVHTree is already build, using cached tree\n");
+ }
+
+
+ //Setup BVHTreeFromMesh
+ memset(data, 0, sizeof(*data));
+ data->tree = tree;
+
+ if(data->tree)
+ {
+ data->cached = TRUE;
- data->tree = tree;
data->nearest_callback = mesh_faces_nearest_point;
data->raycast_callback = mesh_faces_spherecast;
@@ -562,6 +601,8 @@ void bvhtree_from_mesh_faces(BVHTreeFromMesh *data, DerivedMesh *mesh, float eps
data->sphere_radius = epsilon;
}
+ return data->tree;
+
}
// Frees data allocated by a call to bvhtree_from_mesh_*.
@@ -569,9 +610,78 @@ void free_bvhtree_from_mesh(struct BVHTreeFromMesh *data)
{
if(data->tree)
{
- BLI_bvhtree_free(data->tree);
+ if(!data->cached)
+ BLI_bvhtree_free(data->tree);
+
memset( data, 0, sizeof(data) );
}
}
+/* BVHCache */
+typedef struct BVHCacheItem
+{
+ int type;
+ BVHTree *tree;
+
+} BVHCacheItem;
+
+static void bvhcacheitem_set_if_match(void *_cached, void *_search)
+{
+ BVHCacheItem * cached = (BVHCacheItem *)_cached;
+ BVHCacheItem * search = (BVHCacheItem *)_search;
+
+ if(search->type == cached->type)
+ {
+ search->tree = cached->tree;
+ }
+}
+
+BVHTree *bvhcache_find(BVHCache *cache, int type)
+{
+ BVHCacheItem item;
+ item.type = type;
+ item.tree = NULL;
+
+ BLI_linklist_apply(*cache, bvhcacheitem_set_if_match, &item);
+ return item.tree;
+}
+
+void bvhcache_insert(BVHCache *cache, BVHTree *tree, int type)
+{
+ BVHCacheItem *item = NULL;
+
+ assert( tree != NULL );
+ assert( bvhcache_find(cache, type) == NULL );
+
+ item = MEM_mallocN(sizeof(BVHCacheItem), "BVHCacheItem");
+ assert( item != NULL );
+
+ item->type = type;
+ item->tree = tree;
+
+ BLI_linklist_prepend( cache, item );
+}
+
+
+void bvhcache_init(BVHCache *cache)
+{
+ *cache = NULL;
+}
+
+static void bvhcacheitem_free(void *_item)
+{
+ BVHCacheItem *item = (BVHCacheItem *)_item;
+
+ BLI_bvhtree_free(item->tree);
+ MEM_freeN(item);
+}
+
+
+void bvhcache_free(BVHCache *cache)
+{
+ BLI_linklist_free(*cache, (LinkNodeFreeFP)bvhcacheitem_free);
+ *cache = NULL;
+}
+
+
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index dd8fd88f76c..c055a0ca6a7 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -41,6 +41,7 @@
#include "DNA_armature_types.h"
#include "DNA_constraint_types.h"
+#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
@@ -65,6 +66,8 @@
#include "BKE_global.h"
#include "BKE_library.h"
#include "BKE_idprop.h"
+#include "BKE_shrinkwrap.h"
+#include "BKE_mesh.h"
#ifndef DISABLE_PYTHON
#include "BPY_extern.h"
@@ -387,7 +390,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
/* ------------ General Target Matrix Tools ---------- */
/* function that sets the given matrix based on given vertex group in mesh */
-static void contarget_get_mesh_mat (Object *ob, char *substring, float mat[][4])
+static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, float mat[][4])
{
DerivedMesh *dm;
Mesh *me= ob->data;
@@ -396,6 +399,7 @@ static void contarget_get_mesh_mat (Object *ob, char *substring, float mat[][4])
float normal[3] = {0.0f, 0.0f, 0.0f}, plane[3];
float imat[3][3], tmat[3][3];
int dgroup;
+ short freeDM = 0;
/* initialize target matrix using target matrix */
Mat4CpyMat4(mat, ob->obmat);
@@ -408,10 +412,19 @@ static void contarget_get_mesh_mat (Object *ob, char *substring, float mat[][4])
if (em) {
/* target is in editmode, so get a special derived mesh */
dm = CDDM_from_editmesh(em, ob->data);
+ freeDM= 1;
}
else {
- /* when not in EditMode, this should exist */
- dm = (DerivedMesh *)ob->derivedFinal;
+ /* when not in EditMode, use the 'final' derived mesh
+ * - check if the custom data masks for derivedFinal mean that we can just use that
+ * (this is more effficient + sufficient for most cases)
+ */
+ if (ob->lastDataMask != CD_MASK_DERIVEDMESH) {
+ dm = mesh_get_derived_final(scene, ob, CD_MASK_DERIVEDMESH);
+ freeDM= 1;
+ }
+ else
+ dm = (DerivedMesh *)ob->derivedFinal;
}
/* only continue if there's a valid DerivedMesh */
@@ -477,10 +490,10 @@ static void contarget_get_mesh_mat (Object *ob, char *substring, float mat[][4])
}
/* free temporary DerivedMesh created (in EditMode case) */
- if (em) {
- if (dm) dm->release(dm);
+ if (dm && freeDM)
+ dm->release(dm);
+ if (em)
BKE_mesh_end_editmesh(me, em);
- }
}
/* function that sets the given matrix based on given vertex group in lattice */
@@ -542,7 +555,7 @@ static void contarget_get_lattice_mat (Object *ob, char *substring, float mat[][
/* generic function to get the appropriate matrix for most target cases */
/* The cases where the target can be object data have not been implemented */
-static void constraint_target_to_mat4 (Object *ob, char *substring, float mat[][4], short from, short to, float headtail)
+static void constraint_target_to_mat4 (Scene *scene, Object *ob, char *substring, float mat[][4], short from, short to, float headtail)
{
/* Case OBJECT */
if (!strlen(substring)) {
@@ -559,7 +572,7 @@ static void constraint_target_to_mat4 (Object *ob, char *substring, float mat[][
* way as constraints can only really affect things on object/bone level.
*/
else if (ob->type == OB_MESH) {
- contarget_get_mesh_mat(ob, substring, mat);
+ contarget_get_mesh_mat(scene, ob, substring, mat);
constraint_mat_convertspace(ob, NULL, mat, from, to);
}
else if (ob->type == OB_LATTICE) {
@@ -641,7 +654,7 @@ static bConstraintTypeInfo CTI_CONSTRNAME = {
static void default_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float ctime)
{
if (VALID_CONS_TARGET(ct))
- constraint_target_to_mat4(ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
+ constraint_target_to_mat4(cob->scene, ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
else if (ct)
Mat4One(ct->matrix);
}
@@ -1056,7 +1069,7 @@ static void kinematic_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstra
bKinematicConstraint *data= con->data;
if (VALID_CONS_TARGET(ct))
- constraint_target_to_mat4(ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
+ constraint_target_to_mat4(cob->scene, ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
else if (ct) {
if (data->flag & CONSTRAINT_IK_AUTO) {
Object *ob= cob->ob;
@@ -1746,7 +1759,7 @@ static void pycon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintT
/* firstly calculate the matrix the normal way, then let the py-function override
* this matrix if it needs to do so
*/
- constraint_target_to_mat4(ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
+ constraint_target_to_mat4(cob->scene, ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
/* only execute target calculation if allowed */
#ifndef DISABLE_PYTHON
@@ -1853,7 +1866,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
Mat4One(ct->matrix);
/* get the transform matrix of the target */
- constraint_target_to_mat4(ct->tar, ct->subtarget, tempmat, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
+ constraint_target_to_mat4(cob->scene, ct->tar, ct->subtarget, tempmat, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail);
/* determine where in transform range target is */
/* data->type is mapped as follows for backwards compatability:
@@ -3108,6 +3121,165 @@ static bConstraintTypeInfo CTI_TRANSFORM = {
transform_evaluate /* evaluate */
};
+/* ---------- Shrinkwrap Constraint ----------- */
+
+static int shrinkwrap_get_tars (bConstraint *con, ListBase *list)
+{
+ if (con && list) {
+ bShrinkwrapConstraint *data = con->data;
+ bConstraintTarget *ct;
+
+ SINGLETARGETNS_GET_TARS(con, data->target, ct, list)
+
+ return 1;
+ }
+
+ return 0;
+}
+
+
+static void shrinkwrap_flush_tars (bConstraint *con, ListBase *list, short nocopy)
+{
+ if (con && list) {
+ bShrinkwrapConstraint *data = con->data;
+ bConstraintTarget *ct= list->first;
+
+ SINGLETARGETNS_FLUSH_TARS(con, data->target, ct, list, nocopy)
+ }
+}
+
+
+static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float ctime)
+{
+ bShrinkwrapConstraint *scon = (bShrinkwrapConstraint *) con->data;
+
+ if( VALID_CONS_TARGET(ct) && (ct->tar->type == OB_MESH) )
+ {
+ int fail = FALSE;
+ float co[3] = {0.0f, 0.0f, 0.0f};
+ float no[3] = {0.0f, 0.0f, 0.0f};
+ float dist;
+
+ SpaceTransform transform;
+ DerivedMesh *target = object_get_derived_final(cob->scene, ct->tar, CD_MASK_BAREMESH);
+ BVHTreeRayHit hit;
+ BVHTreeNearest nearest;
+
+ BVHTreeFromMesh treeData;
+ memset( &treeData, 0, sizeof(treeData) );
+
+ nearest.index = -1;
+ nearest.dist = FLT_MAX;
+
+ hit.index = -1;
+ hit.dist = 100000.0f; //TODO should use FLT_MAX.. but normal projection doenst yet supports it
+
+ Mat4One(ct->matrix);
+
+ if(target != NULL)
+ {
+ space_transform_from_matrixs(&transform, cob->matrix, ct->tar->obmat);
+
+ switch(scon->shrinkType)
+ {
+ case MOD_SHRINKWRAP_NEAREST_SURFACE:
+ case MOD_SHRINKWRAP_NEAREST_VERTEX:
+
+ if(scon->shrinkType == MOD_SHRINKWRAP_NEAREST_VERTEX)
+ bvhtree_from_mesh_verts(&treeData, target, 0.0, 2, 6);
+ else
+ bvhtree_from_mesh_faces(&treeData, target, 0.0, 2, 6);
+
+ if(treeData.tree == NULL)
+ {
+ fail = TRUE;
+ break;
+ }
+
+ space_transform_apply(&transform, co);
+
+ BLI_bvhtree_find_nearest(treeData.tree, co, &nearest, treeData.nearest_callback, &treeData);
+
+ dist = VecLenf(co, nearest.co);
+ VecLerpf(co, co, nearest.co, (dist - scon->dist)/dist); /* linear interpolation */
+ space_transform_invert(&transform, co);
+ break;
+
+ case MOD_SHRINKWRAP_PROJECT:
+ if(scon->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS) no[0] = 1.0f;
+ if(scon->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS) no[1] = 1.0f;
+ if(scon->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS) no[2] = 1.0f;
+
+ if(INPR(no,no) < FLT_EPSILON)
+ {
+ fail = TRUE;
+ break;
+ }
+
+ Normalize(no);
+
+
+ bvhtree_from_mesh_faces(&treeData, target, scon->dist, 4, 6);
+ if(treeData.tree == NULL)
+ {
+ fail = TRUE;
+ break;
+ }
+
+ if(normal_projection_project_vertex(0, co, no, &transform, treeData.tree, &hit, treeData.raycast_callback, &treeData) == FALSE)
+ {
+ fail = TRUE;
+ break;
+ }
+ VECCOPY(co, hit.co);
+ break;
+ }
+
+ free_bvhtree_from_mesh(&treeData);
+
+ target->release(target);
+
+ if(fail == TRUE)
+ {
+ /* Don't move the point */
+ co[0] = co[1] = co[2] = 0.0f;
+ }
+
+ /* co is in local object coordinates, change it to global and update target position */
+ VecMat4MulVecfl(co, cob->matrix, co);
+ VECCOPY(ct->matrix[3], co);
+ }
+ }
+}
+
+static void shrinkwrap_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targets)
+{
+ bConstraintTarget *ct= targets->first;
+
+ /* only evaluate if there is a target */
+ if (VALID_CONS_TARGET(ct))
+ {
+ VECCOPY(cob->matrix[3], ct->matrix[3]);
+ }
+}
+
+static bConstraintTypeInfo CTI_SHRINKWRAP = {
+ CONSTRAINT_TYPE_SHRINKWRAP, /* type */
+ sizeof(bShrinkwrapConstraint), /* size */
+ "Shrinkwrap", /* name */
+ "bShrinkwrapConstraint", /* struct name */
+ NULL, /* free data */
+ NULL, /* relink data */
+ NULL, /* copy data */
+ NULL, /* new data */
+ shrinkwrap_get_tars, /* get constraint targets */
+ shrinkwrap_flush_tars, /* flush constraint targets */
+ shrinkwrap_get_tarmat, /* get a target matrix */
+ shrinkwrap_evaluate /* evaluate */
+};
+
+
+
/* ************************* Constraints Type-Info *************************** */
/* All of the constraints api functions use bConstraintTypeInfo structs to carry out
* and operations that involve constraint specific code.
@@ -3139,6 +3311,7 @@ static void constraints_init_typeinfo () {
constraintsTypeInfo[17]= &CTI_RIGIDBODYJOINT; /* RigidBody Constraint */
constraintsTypeInfo[18]= &CTI_CLAMPTO; /* ClampTo Constraint */
constraintsTypeInfo[19]= &CTI_TRANSFORM; /* Transformation Constraint */
+ constraintsTypeInfo[20]= &CTI_SHRINKWRAP; /* Shrinkwrap Constraint */
}
/* This function should be used for getting the appropriate type-info when only
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 30cb4016061..fab9669d55f 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -591,8 +591,8 @@ static void makecyclicknots(float *knots, short pnts, short order)
}
-/* type - 0: uniform, 1: endpoints, 2: bezier, note, cyclic nurbs are always uniform */
-void makeknots(Nurb *nu, short uv, short type)
+
+void makeknots(Nurb *nu, short uv)
{
if( (nu->type & 7)==CU_NURBS ) {
if(uv == 1) {
@@ -603,7 +603,7 @@ void makeknots(Nurb *nu, short uv, short type)
calcknots(nu->knotsu, nu->pntsu, nu->orderu, 0); /* cyclic should be uniform */
makecyclicknots(nu->knotsu, nu->pntsu, nu->orderu);
} else {
- calcknots(nu->knotsu, nu->pntsu, nu->orderu, type);
+ calcknots(nu->knotsu, nu->pntsu, nu->orderu, nu->flagu>>1);
}
}
else nu->knotsu= NULL;
@@ -616,7 +616,7 @@ void makeknots(Nurb *nu, short uv, short type)
calcknots(nu->knotsv, nu->pntsv, nu->orderv, 0); /* cyclic should be uniform */
makecyclicknots(nu->knotsv, nu->pntsv, nu->orderv);
} else {
- calcknots(nu->knotsv, nu->pntsv, nu->orderv, type);
+ calcknots(nu->knotsv, nu->pntsv, nu->orderv, nu->flagv>>1);
}
}
else nu->knotsv= NULL;
@@ -1572,8 +1572,8 @@ void makeBevelList(Object *ob)
while(nu) {
/* check if we will calculate tilt data */
- do_tilt = ((nu->type & CU_2D) && (cu->flag & CU_3D)==0) ? 0 : 1;
- do_radius = (do_tilt || cu->bevobj) ? 1 : 0; /* normal display uses the radius, better just to calculate them */
+ do_tilt = CU_DO_TILT(cu, nu);
+ do_radius = CU_DO_RADIUS(cu, nu); /* normal display uses the radius, better just to calculate them */
/* check we are a single point? also check we are not a surface and that the orderu is sane,
* enforced in the UI but can go wrong possibly */
@@ -2370,7 +2370,7 @@ void sethandlesNurb(ListBase *editnurb, short code)
if(code==1 || code==2) {
nu= editnurb->first;
while(nu) {
- if( (nu->type & 7)==1) {
+ if( (nu->type & 7)==CU_BEZIER) {
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
@@ -2400,7 +2400,7 @@ void sethandlesNurb(ListBase *editnurb, short code)
} else {
/* Toggle */
while(nu) {
- if( (nu->type & 7)==1) {
+ if( (nu->type & 7)==CU_BEZIER) {
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
@@ -2417,7 +2417,7 @@ void sethandlesNurb(ListBase *editnurb, short code)
}
nu= editnurb->first;
while(nu) {
- if( (nu->type & 7)==1) {
+ if( (nu->type & 7)==CU_BEZIER) {
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index 5217464c2c9..077a0c437d4 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -299,24 +299,22 @@ static float wind_func(struct RNG *rng, float strength)
return ret;
}
-
+/* maxdist: zero effect from this distance outwards (if usemax) */
+/* mindist: full effect up to this distance (if usemin) */
+/* power: falloff with formula 1/r^power */
static float falloff_func(float fac, int usemin, float mindist, int usemax, float maxdist, float power)
{
- if(!usemin)
- mindist= 0.0f;
+ /* first quick checks */
+ if(usemax && fac > maxdist)
+ return 0.0f;
- if(fac < mindist) {
+ if(usemin && fac < mindist)
return 1.0f;
- }
- else if(usemax) {
- if(fac>maxdist || (maxdist-mindist)<=0.0f)
- return 0.0f;
- fac= (fac-mindist)/(maxdist-mindist);
- return 1.0f - (float)pow((double)fac, (double)power);
- }
- else
- return pow((double)1.0f+fac-mindist, (double)-power);
+ if(!usemin)
+ mindist = 0.0;
+
+ return pow((double)1.0+fac-mindist, (double)-power);
}
static float falloff_func_dist(PartDeflect *pd, float fac)
@@ -443,14 +441,11 @@ void do_physical_effector(Scene *scene, Object *ob, float *opco, short type, flo
else
VecCopyf(mag_vec,vec_to_part);
- Normalize(mag_vec);
-
VecMulf(mag_vec,force_val*falloff);
VecSubf(field,field,mag_vec);
VecCopyf(mag_vec,velocity);
- /* 1.9 is an experimental value to get critical damping at damp=1.0 */
- VecMulf(mag_vec,damp*1.9f*(float)sqrt(force_val));
+ VecMulf(mag_vec,damp*2.0f*(float)sqrt(force_val));
VecSubf(field,field,mag_vec);
break;
case PFIELD_CHARGE:
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 7f062ff5a9b..6578feeeed1 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -6022,6 +6022,80 @@ static void collisionModifier_deformVerts(
}
+
+/* Surface */
+
+static void surfaceModifier_initData(ModifierData *md)
+{
+ SurfaceModifierData *surmd = (SurfaceModifierData*) md;
+
+ surmd->bvhtree = NULL;
+}
+
+static void surfaceModifier_freeData(ModifierData *md)
+{
+ SurfaceModifierData *surmd = (SurfaceModifierData*) md;
+
+ if (surmd)
+ {
+ if(surmd->bvhtree) {
+ free_bvhtree_from_mesh(surmd->bvhtree);
+ MEM_freeN(surmd->bvhtree);
+ }
+
+ surmd->dm->release(surmd->dm);
+
+ surmd->bvhtree = NULL;
+ surmd->dm = NULL;
+ }
+}
+
+static int surfaceModifier_dependsOnTime(ModifierData *md)
+{
+ return 1;
+}
+
+static void surfaceModifier_deformVerts(
+ ModifierData *md, Object *ob, DerivedMesh *derivedData,
+ float (*vertexCos)[3], int numVerts)
+{
+ SurfaceModifierData *surmd = (SurfaceModifierData*) md;
+ unsigned int numverts = 0, i = 0;
+
+ if(surmd->dm)
+ surmd->dm->release(surmd->dm);
+
+ /* if possible use/create DerivedMesh */
+ if(derivedData) surmd->dm = CDDM_copy(derivedData);
+ else if(ob->type==OB_MESH) surmd->dm = CDDM_from_mesh(ob->data, ob);
+
+ if(!ob->pd)
+ {
+ printf("surfaceModifier_deformVerts: Should not happen!\n");
+ return;
+ }
+
+ if(surmd->dm)
+ {
+ CDDM_apply_vert_coords(surmd->dm, vertexCos);
+ CDDM_calc_normals(surmd->dm);
+
+ numverts = surmd->dm->getNumVerts ( surmd->dm );
+
+ /* convert to global coordinates */
+ for(i = 0; i<numverts; i++)
+ Mat4MulVecfl(ob->obmat, CDDM_get_vert(surmd->dm, i)->co);
+
+ if(surmd->bvhtree)
+ free_bvhtree_from_mesh(surmd->bvhtree);
+ else
+ surmd->bvhtree = MEM_callocN(sizeof(BVHTreeFromMesh), "BVHTreeFromMesh");
+
+ bvhtree_from_mesh_faces(surmd->bvhtree, surmd->dm, 0.0, 2, 6);
+ }
+}
+
+
/* Boolean */
static void booleanModifier_copyData(ModifierData *md, ModifierData *target)
@@ -6070,22 +6144,44 @@ static DerivedMesh *booleanModifier_applyModifier(
{
// XXX doesn't handle derived data
BooleanModifierData *bmd = (BooleanModifierData*) md;
+ DerivedMesh *dm = mesh_get_derived_final(md->scene, bmd->object, CD_MASK_BAREMESH);
/* we do a quick sanity check */
- if(((Mesh *)ob->data)->totface > 3
- && bmd->object && ((Mesh *)bmd->object->data)->totface > 3) {
- DerivedMesh *result = NewBooleanDerivedMesh(bmd->object, ob,
+ if(dm && (derivedData->getNumFaces(derivedData) > 3)
+ && bmd->object && dm->getNumFaces(dm) > 3) {
+ DerivedMesh *result = NewBooleanDerivedMesh(dm, bmd->object, derivedData, ob,
1 + bmd->operation);
+ if(dm)
+ dm->release(dm);
+
/* if new mesh returned, return it; otherwise there was
* an error, so delete the modifier object */
if(result)
return result;
else
bmd->object = NULL;
- }
+ }
+
+ if(dm)
+ dm->release(dm);
- return derivedData;
+ return derivedData;
+}
+
+CustomDataMask booleanModifier_requiredDataMask(ModifierData *md)
+{
+ CustomDataMask dataMask = (1 << CD_MTFACE) + (1 << CD_MEDGE);
+
+ dataMask |= (1 << CD_MDEFORMVERT);
+
+ /* particles only need this if they are after a non deform modifier, and
+ * the modifier stack will only create them in that case. */
+// dataMask |= CD_MASK_ORIGSPACE;
+
+// dataMask |= CD_MASK_ORCO;
+
+ return dataMask;
}
/* Particles */
@@ -6379,6 +6475,7 @@ static DerivedMesh * particleInstanceModifier_applyModifier(
if(psys->flag & (PSYS_HAIR_DONE|PSYS_KEYED)){
float min_r[3], max_r[3];
+ INIT_MINMAX(min_r, max_r);
dm->getMinMax(dm, min_r, max_r);
min_co=min_r[track];
max_co=max_r[track];
@@ -7189,7 +7286,7 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd,
pa= pars+i;
/* get particle state */
- psys_particle_on_emitter(psmd,part->from,pa->num,-1,pa->fuv,pa->foffset,loc0,nor,0,0,0,0);
+ psys_particle_on_emitter(psmd,part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc0,nor,0,0,0,0);
Mat4MulVecfl(ob->obmat,loc0);
state.time=cfra;
@@ -7245,7 +7342,7 @@ static DerivedMesh * explodeModifier_explodeMesh(ExplodeModifierData *emd,
*mf = source;
- test_index_face(mf, &explode->faceData, i, (mf->v4 ? 4 : 3));
+ test_index_face(mf, &explode->faceData, i, (orig_v4 ? 4 : 3));
}
MEM_printmemlist_stats();
@@ -8268,16 +8365,24 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
mti->deformVerts = collisionModifier_deformVerts;
// mti->copyData = collisionModifier_copyData;
+ mti = INIT_TYPE(Surface);
+ mti->type = eModifierTypeType_OnlyDeform;
+ mti->initData = surfaceModifier_initData;
+ mti->flags = eModifierTypeFlag_AcceptsMesh;
+ mti->dependsOnTime = surfaceModifier_dependsOnTime;
+ mti->freeData = surfaceModifier_freeData;
+ mti->deformVerts = surfaceModifier_deformVerts;
+
mti = INIT_TYPE(Boolean);
mti->type = eModifierTypeType_Nonconstructive;
mti->flags = eModifierTypeFlag_AcceptsMesh
- | eModifierTypeFlag_RequiresOriginalData
| eModifierTypeFlag_UsesPointCache;
mti->copyData = booleanModifier_copyData;
mti->isDisabled = booleanModifier_isDisabled;
mti->applyModifier = booleanModifier_applyModifier;
mti->foreachObjectLink = booleanModifier_foreachObjectLink;
mti->updateDepgraph = booleanModifier_updateDepgraph;
+ mti->requiredDataMask = booleanModifier_requiredDataMask;
mti = INIT_TYPE(MeshDeform);
mti->type = eModifierTypeType_OnlyDeform;
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 1acad4e9e86..941e73982a5 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -1739,7 +1739,8 @@ void ntreeSolveOrder(bNodeTree *ntree)
might be different for editor or for "real" use... */
}
-/* should be callback! */
+/* Should be callback! */
+/* Do not call execs here */
void NodeTagChanged(bNodeTree *ntree, bNode *node)
{
if(ntree->type==NTREE_COMPOSIT) {
@@ -1753,8 +1754,6 @@ void NodeTagChanged(bNodeTree *ntree, bNode *node)
}
node->need_exec= 1;
}
- else if(ntree->type == NTREE_TEXTURE)
- ntreeTexUpdatePreviews(ntree);
}
void NodeTagIDChanged(bNodeTree *ntree, ID *id)
@@ -2067,6 +2066,11 @@ void ntreeBeginExecTree(bNodeTree *ntree)
/* tag used outputs, so we know when we can skip operations */
for(node= ntree->nodes.first; node; node= node->next) {
bNodeSocket *sock;
+
+ /* composite has own need_exec tag handling */
+ if(ntree->type!=NTREE_COMPOSIT)
+ node->need_exec= 1;
+
for(sock= node->inputs.first; sock; sock= sock->next) {
if(sock->link) {
ns= ntree->stack + sock->link->fromsock->stack_index;
@@ -2075,9 +2079,22 @@ void ntreeBeginExecTree(bNodeTree *ntree)
}
else
sock->ns.sockettype= sock->type;
+
+ if(sock->link) {
+ bNodeLink *link= sock->link;
+ /* this is the test for a cyclic case */
+ if(link->fromnode && link->tonode) {
+ if(link->fromnode->level >= link->tonode->level && link->tonode->level!=0xFFF);
+ else {
+ node->need_exec= 0;
+ }
+ }
+ }
}
+
if(node->type==NODE_GROUP && node->id)
group_tag_used_outputs(node, ntree->stack);
+
}
if(ntree->type==NTREE_COMPOSIT)
@@ -2160,13 +2177,15 @@ void ntreeExecTree(bNodeTree *ntree, void *callerdata, int thread)
}
for(node= ntree->nodes.first; node; node= node->next) {
- if(node->typeinfo->execfunc) {
- node_get_stack(node, stack, nsin, nsout);
- node->typeinfo->execfunc(callerdata, node, nsin, nsout);
- }
- else if(node->type==NODE_GROUP && node->id) {
- node_get_stack(node, stack, nsin, nsout);
- node_group_execute(stack, callerdata, node, nsin, nsout);
+ if(node->need_exec) {
+ if(node->typeinfo->execfunc) {
+ node_get_stack(node, stack, nsin, nsout);
+ node->typeinfo->execfunc(callerdata, node, nsin, nsout);
+ }
+ else if(node->type==NODE_GROUP && node->id) {
+ node_get_stack(node, stack, nsin, nsout);
+ node_group_execute(stack, callerdata, node, nsin, nsout);
+ }
}
}
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 2b1dcc782c6..7d998a481f6 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -1,7 +1,7 @@
/* particle.c
*
*
- * $Id: particle.c $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -1460,7 +1460,7 @@ static void do_prekink(ParticleKey *state, ParticleKey *par, float *par_rot, flo
case PART_KINK_WAVE:
vec[axis]=1.0;
if(obmat)
- Mat4MulVecfl(obmat,vec);
+ Mat4Mul3Vecfl(obmat,vec);
if(par_rot)
QuatMulVecf(par_rot,vec);
@@ -1806,10 +1806,13 @@ void psys_find_parents(Object *ob, ParticleSystemModifierData *psmd, ParticleSys
int from=PART_FROM_FACE;
totparent=(int)(totchild*part->parents*0.3);
+ if(G.rendering && part->child_nbr && part->ren_child_nbr)
+ totparent*=(float)part->child_nbr/(float)part->ren_child_nbr;
+
tree=BLI_kdtree_new(totparent);
for(p=0,cpa=psys->child; p<totparent; p++,cpa++){
- psys_particle_on_emitter(psmd,from,cpa->num,-1,cpa->fuv,cpa->foffset,co,0,0,0,orco,0);
+ psys_particle_on_emitter(psmd,from,cpa->num,DMCACHE_ISCHILD,cpa->fuv,cpa->foffset,co,0,0,0,orco,0);
BLI_kdtree_insert(tree, p, orco, NULL);
}
@@ -1873,6 +1876,10 @@ int psys_threads_init_path(ParticleThread *threads, Scene *scene, float cfra, in
if(totchild && part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES){
totparent=(int)(totchild*part->parents*0.3);
+
+ if(G.rendering && part->child_nbr && part->ren_child_nbr)
+ totparent*=(float)part->child_nbr/(float)part->ren_child_nbr;
+
/* part->parents could still be 0 so we can't test with totparent */
between=1;
}
@@ -1905,6 +1912,7 @@ int psys_threads_init_path(ParticleThread *threads, Scene *scene, float cfra, in
ctx->steps= steps;
ctx->totchild= totchild;
ctx->totparent= totparent;
+ ctx->parent_pass= 0;
ctx->cfra= cfra;
psys->lattice = psys_get_lattice(scene, ob, psys);
@@ -1944,14 +1952,14 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
ParticleCacheKey *state, *par = NULL, *key[4];
ParticleData *pa=NULL;
ParticleTexture ptex;
- float *cpa_fuv=0;
+ float *cpa_fuv=0, *par_rot=0;
float co[3], orco[3], ornor[3], t, rough_t, cpa_1st[3], dvec[3];
float branch_begin, branch_end, branch_prob, branchfac, rough_rand;
float pa_rough1, pa_rough2, pa_roughe;
float length, pa_length, pa_clump, pa_kink, pa_effector;
float max_length = 1.0f, cur_length = 0.0f;
float eff_length, eff_vec[3];
- int k, cpa_num, guided=0;
+ int k, cpa_num, guided = 0;
short cpa_from;
if(part->flag & PART_BRANCHING) {
@@ -2055,9 +2063,10 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
ptex.clump=1.0;
ptex.kink=1.0;
ptex.rough= 1.0;
+ ptex.exist= 1.0;
get_cpa_texture(ctx->dm,ctx->ma,cpa_num,cpa_fuv,orco,&ptex,
- MAP_PA_LENGTH|MAP_PA_CLUMP|MAP_PA_KINK|MAP_PA_ROUGH);
+ MAP_PA_DENS|MAP_PA_LENGTH|MAP_PA_CLUMP|MAP_PA_KINK|MAP_PA_ROUGH);
pa_length=ptex.length;
pa_clump=ptex.clump;
@@ -2067,6 +2076,11 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
pa_roughe=ptex.rough;
pa_effector= 1.0f;
+ if(ptex.exist < cpa->rand[1]) {
+ keys->steps = -1;
+ return;
+ }
+
if(ctx->vg_length)
pa_length*=psys_interpolate_value_from_verts(ctx->dm,cpa_from,cpa_num,cpa_fuv,ctx->vg_length);
if(ctx->vg_clump)
@@ -2137,15 +2151,16 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
t=(float)k/(float)ctx->steps;
if(ctx->totparent){
- if(i>=ctx->totparent)
- /* this is not threadsafe, but should only happen for
- * branching particles particles, which are not threaded */
+ if(i>=ctx->totparent) {
+ /* this is now threadsafe, virtual parents are calculated before rest of children */
par = cache[cpa->parent] + k;
+ }
else
par=0;
}
else if(cpa->parent>=0){
par=pcache[cpa->parent]+k;
+ par_rot = par->rot;
}
/* apply different deformations to the child path */
@@ -2155,7 +2170,7 @@ void psys_thread_create_path(ParticleThread *thread, struct ChildParticle *cpa,
if(guided==0){
if(part->kink)
- do_prekink((ParticleKey*)state, (ParticleKey*)par, par->rot, t,
+ do_prekink((ParticleKey*)state, (ParticleKey*)par, par_rot, t,
part->kink_freq * pa_kink, part->kink_shape, part->kink_amp, part->kink, part->kink_axis, ob->obmat);
do_clump((ParticleKey*)state, (ParticleKey*)par, t, part->clumpfac, part->clumppow, pa_clump);
@@ -2254,10 +2269,15 @@ static void *exec_child_path_cache(void *data)
ParticleSystem *psys= ctx->psys;
ParticleCacheKey **cache= psys->childcache;
ChildParticle *cpa;
- int i, totchild= ctx->totchild;
+ int i, totchild= ctx->totchild, first= 0;
+
+ if(thread->tot > 1){
+ first= ctx->parent_pass? 0 : ctx->totparent;
+ totchild= ctx->parent_pass? ctx->totparent : ctx->totchild;
+ }
- cpa= psys->child + thread->num;
- for(i=thread->num; i<totchild; i+=thread->tot, cpa+=thread->tot)
+ cpa= psys->child + first + thread->num;
+ for(i=first+thread->num; i<totchild; i+=thread->tot, cpa+=thread->tot)
psys_thread_create_path(thread, cpa, cache[i], i);
return 0;
@@ -2296,6 +2316,22 @@ void psys_cache_child_paths(Scene *scene, Object *ob, ParticleSystem *psys, floa
totthread= pthreads[0].tot;
if(totthread > 1) {
+
+ /* make virtual child parents thread safe by calculating them first */
+ if(totparent) {
+ BLI_init_threads(&threads, exec_child_path_cache, totthread);
+
+ for(i=0; i<totthread; i++) {
+ pthreads[i].ctx->parent_pass = 1;
+ BLI_insert_thread(&threads, &pthreads[i]);
+ }
+
+ BLI_end_threads(&threads);
+
+ for(i=0; i<totthread; i++)
+ pthreads[i].ctx->parent_pass = 0;
+ }
+
BLI_init_threads(&threads, exec_child_path_cache, totthread);
for(i=0; i<totthread; i++)
@@ -3171,6 +3207,8 @@ static void get_cpa_texture(DerivedMesh *dm, Material *ma, int face_index, float
ptex->kink= texture_value_blend(def,ptex->kink,value,var,blend,neg & MAP_PA_KINK);
if((event & mtex->pmapto) & MAP_PA_ROUGH)
ptex->rough= texture_value_blend(def,ptex->rough,value,var,blend,neg & MAP_PA_ROUGH);
+ if((event & mtex->pmapto) & MAP_PA_DENS)
+ ptex->exist= texture_value_blend(def,ptex->exist,value,var,blend,neg & MAP_PA_DENS);
}
}
if(event & MAP_PA_TIME) { CLAMP(ptex->time,0.0,1.0); }
@@ -3178,6 +3216,7 @@ static void get_cpa_texture(DerivedMesh *dm, Material *ma, int face_index, float
if(event & MAP_PA_CLUMP) { CLAMP(ptex->clump,0.0,1.0); }
if(event & MAP_PA_KINK) { CLAMP(ptex->kink,0.0,1.0); }
if(event & MAP_PA_ROUGH) { CLAMP(ptex->rough,0.0,1.0); }
+ if(event & MAP_PA_DENS) { CLAMP(ptex->exist,0.0,1.0); }
}
void psys_get_texture(Object *ob, Material *ma, ParticleSystemModifierData *psmd, ParticleSystem *psys, ParticleData *pa, ParticleTexture *ptex, int event)
{
@@ -3496,6 +3535,10 @@ void psys_get_particle_on_path(Scene *scene, Object *ob, ParticleSystem *psys, i
if(totchild && part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES){
totparent=(int)(totchild*part->parents*0.3);
+
+ if(G.rendering && part->child_nbr && part->ren_child_nbr)
+ totparent*=(float)part->child_nbr/(float)part->ren_child_nbr;
+
/* part->parents could still be 0 so we can't test with totparent */
between=1;
}
@@ -3872,3 +3915,76 @@ void psys_get_dupli_path_transform(Object *ob, ParticleSystem *psys, ParticleSys
*scale= len;
}
+void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3], float zvec[3], float center[3])
+{
+ float onevec[3] = {0.0f,0.0f,0.0f}, tvec[3], tvec2[3];
+
+ xvec[0] = 1.0f; xvec[1] = 0.0f; xvec[2] = 0.0f;
+ yvec[0] = 0.0f; yvec[1] = 1.0f; yvec[2] = 0.0f;
+
+ if(bb->align < PART_BB_VIEW)
+ onevec[bb->align]=1.0f;
+
+ if(bb->lock && (bb->align == PART_BB_VIEW)) {
+ VECCOPY(xvec, bb->ob->obmat[0]);
+ Normalize(xvec);
+
+ VECCOPY(yvec, bb->ob->obmat[1]);
+ Normalize(yvec);
+
+ VECCOPY(zvec, bb->ob->obmat[2]);
+ Normalize(zvec);
+ }
+ else if(bb->align == PART_BB_VEL) {
+ float temp[3];
+
+ VECCOPY(temp, bb->vel);
+ Normalize(temp);
+
+ VECSUB(zvec, bb->ob->obmat[3], bb->vec);
+
+ if(bb->lock) {
+ float fac = -Inpf(zvec, temp);
+
+ VECADDFAC(zvec, zvec, temp, fac);
+ }
+ Normalize(zvec);
+
+ Crossf(xvec,temp,zvec);
+ Normalize(xvec);
+
+ Crossf(yvec,zvec,xvec);
+ }
+ else {
+ VECSUB(zvec, bb->ob->obmat[3], bb->vec);
+ if(bb->lock)
+ zvec[bb->align] = 0.0f;
+ Normalize(zvec);
+
+ if(bb->align < PART_BB_VIEW)
+ Crossf(xvec, onevec, zvec);
+ else
+ Crossf(xvec, bb->ob->obmat[1], zvec);
+ Normalize(xvec);
+
+ Crossf(yvec,zvec,xvec);
+ }
+
+ VECCOPY(tvec, xvec);
+ VECCOPY(tvec2, yvec);
+
+ VecMulf(xvec, cos(bb->tilt * (float)M_PI));
+ VecMulf(tvec2, sin(bb->tilt * (float)M_PI));
+ VECADD(xvec, xvec, tvec2);
+
+ VecMulf(yvec, cos(bb->tilt * (float)M_PI));
+ VecMulf(tvec, -sin(bb->tilt * (float)M_PI));
+ VECADD(yvec, yvec, tvec);
+
+ VecMulf(xvec, bb->size);
+ VecMulf(yvec, bb->size);
+
+ VECADDFAC(center, bb->vec, xvec, bb->offset[0]);
+ VECADDFAC(center, center, yvec, bb->offset[1]);
+}
+
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 928730fb1f0..f8b1852b728 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -1,7 +1,7 @@
/* particle_system.c
*
*
- * $Id: particle_system.c $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -75,6 +75,7 @@
#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_scene.h"
+#include "BKE_bvhutils.h"
#include "PIL_time.h"
@@ -1294,7 +1295,8 @@ int psys_threads_init_distribution(ParticleThread *threads, Scene *scene, Derive
MEM_freeN(sum);
/* for hair, sort by origindex, allows optimizations in rendering */
- if(part->type == PART_HAIR) {
+ /* however with virtual parents the children need to be in random order */
+ if(part->type == PART_HAIR && !(part->childtype==PART_CHILD_FACES && part->parents!=0.0)) {
COMPARE_ORIG_INDEX= dm->getFaceDataArray(dm, CD_ORIGINDEX);
if(COMPARE_ORIG_INDEX)
qsort(index, totpart, sizeof(int), compare_orig_index);
@@ -1611,7 +1613,7 @@ void initialize_particle(ParticleData *pa, int p, Object *ob, ParticleSystem *ps
NormalQuat(pa->r_rot);
- if(part->distr!=PART_DISTR_GRID && part->from != PART_FROM_VERT){
+ if(part->type!=PART_HAIR && part->distr!=PART_DISTR_GRID && part->from != PART_FROM_VERT){
/* any unique random number will do (r_ave[0]) */
if(ptex.exist < 0.5*(1.0+pa->r_ave[0]))
pa->flag |= PARS_UNEXIST;
@@ -1733,6 +1735,8 @@ void reset_particle(Scene *scene, ParticleData *pa, ParticleSystem *psys, Partic
VECSUB(p_vel,pa->r_ve,p_vel);
Normalize(p_vel);
VecMulf(p_vel,speed);
+
+ VECCOPY(pa->fuv,loc); /* abusing pa->fuv (not used for "from particle") for storing emit location */
}
else{
/* get precise emitter matrix if particle is born */
@@ -2447,7 +2451,6 @@ void psys_end_effectors(ParticleSystem *psys)
if(ec->rng)
rng_free(ec->rng);
-
}
BLI_freelistN(lb);
@@ -2486,7 +2489,12 @@ static void precalc_effectors(Scene *scene, Object *ob, ParticleSystem *psys, Pa
ec->locations=MEM_callocN(totpart*3*sizeof(float),"particle locations");
for(p=0,pa=psys->particles; p<totpart; p++, pa++){
- psys_particle_on_emitter(psmd,part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,0,0,0,0,0);
+ if(part->from == PART_FROM_PARTICLE) {
+ VECCOPY(loc, pa->fuv);
+ }
+ else
+ psys_particle_on_emitter(psmd,part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,0,0,0,0,0);
+
Mat4MulVecfl(ob->obmat,loc);
ec->distances[p]=VecLenf(loc,vec);
VECSUB(loc,loc,vec);
@@ -2539,6 +2547,7 @@ void do_effectors(int pa_no, ParticleData *pa, ParticleKey *state, Scene *scene,
ParticleData *epa;
ParticleKey estate;
PartDeflect *pd;
+ SurfaceModifierData *surmd = NULL;
ListBase *lb=&psys->effectors;
ParticleEffectorCache *ec;
float distance, vec_to_part[3];
@@ -2566,8 +2575,34 @@ void do_effectors(int pa_no, ParticleData *pa, ParticleKey *state, Scene *scene,
if(psys->part->type!=PART_HAIR && psys->part->integrator)
where_is_object_time(scene, eob,cfra);
- /* use center of object for distance calculus */
- VecSubf(vec_to_part, state->co, eob->obmat[3]);
+ if(pd && pd->flag&PFIELD_SURFACE) {
+ surmd = (SurfaceModifierData *)modifiers_findByType ( eob, eModifierType_Surface );
+ }
+ if(surmd) {
+ /* closest point in the object surface is an effector */
+ BVHTreeNearest nearest;
+ float velocity[3];
+
+ nearest.index = -1;
+ nearest.dist = FLT_MAX;
+
+ /* using velocity corrected location allows for easier sliding over effector surface */
+ VecCopyf(velocity, state->vel);
+ VecMulf(velocity, psys_get_timestep(psys->part));
+ VecAddf(vec_to_part, state->co, velocity);
+
+ BLI_bvhtree_find_nearest(surmd->bvhtree->tree, vec_to_part, &nearest, surmd->bvhtree->nearest_callback, surmd->bvhtree);
+
+ if(nearest.index != -1) {
+ VecSubf(vec_to_part, state->co, nearest.co);
+ }
+ else
+ vec_to_part[0] = vec_to_part[1] = vec_to_part[2] = 0.0f;
+ }
+ else
+ /* use center of object for distance calculus */
+ VecSubf(vec_to_part, state->co, eob->obmat[3]);
+
distance = VecLength(vec_to_part);
falloff=effector_falloff(pd,eob->obmat[2],vec_to_part);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 22f26741c55..5c936c3ab39 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -243,6 +243,11 @@ Scene *add_scene(char *name)
sce->r.threads= 1;
sce->r.stereomode = 1; // no stereo
+ sce->r.domeangle = 180;
+ sce->r.domemode = 1;
+ sce->r.domesize = 1.0f;
+ sce->r.domeres = 4;
+ sce->r.domeresbuf = 1.0f;
sce->r.simplify_subsurf= 6;
sce->r.simplify_particles= 1.0f;
@@ -708,3 +713,14 @@ float get_render_aosss_error(RenderData *r, float error)
return error;
}
+void free_dome_warp_text(struct Text *txt)
+{
+ Scene *scene;
+
+ scene = G.main->scene.first;
+ while(scene) {
+ if (scene->r.dometext == txt)
+ scene->r.dometext = NULL;
+ scene = scene->id.next;
+ }
+} \ No newline at end of file
diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c
index 0d9a6a7bc48..8bf56f136bc 100644
--- a/source/blender/blenkernel/intern/shrinkwrap.c
+++ b/source/blender/blenkernel/intern/shrinkwrap.c
@@ -38,6 +38,7 @@
#include "DNA_modifier_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_mesh_types.h"
+#include "DNA_scene_types.h"
#include "BKE_shrinkwrap.h"
#include "BKE_DerivedMesh.h"
@@ -47,6 +48,7 @@
#include "BKE_cdderivedmesh.h"
#include "BKE_displist.h"
#include "BKE_global.h"
+#include "BKE_mesh.h"
#include "BKE_subsurf.h"
#include "BLI_arithb.h"
@@ -93,7 +95,7 @@ typedef void ( *Shrinkwrap_ForeachVertexCallback) (DerivedMesh *target, float *c
/* get derived mesh */
//TODO is anyfunction that does this? returning the derivedFinal witouth we caring if its in edit mode or not?
-static DerivedMesh *object_get_derived_final(struct Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *object_get_derived_final(struct Scene *scene, Object *ob, CustomDataMask dataMask)
{
Mesh *me= ob->data;
EditMesh *em = BKE_mesh_get_editmesh(me);
@@ -151,7 +153,6 @@ static float squared_dist(const float *a, const float *b)
return INPR(tmp, tmp);
}
-
/*
* Shrinkwrap to the nearest vertex
*
@@ -186,8 +187,17 @@ static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc)
float weight = vertexgroup_get_vertex_weight(calc->dvert, i, calc->vgroup);
if(weight == 0.0f) continue;
- VECCOPY(tmp_co, co);
- space_transform_apply(&calc->local2target, tmp_co); //Convert the coordinates to the tree coordinates
+
+ //Convert the vertex to tree coordinates
+ if(calc->vert)
+ {
+ VECCOPY(tmp_co, calc->vert[i].co);
+ }
+ else
+ {
+ VECCOPY(tmp_co, co);
+ }
+ space_transform_apply(&calc->local2target, tmp_co);
//Use local proximity heuristics (to reduce the nearest search)
//
@@ -290,174 +300,117 @@ static void shrinkwrap_calc_normal_projection(ShrinkwrapCalcData *calc, struct S
int i;
//Options about projection direction
- const char use_normal = calc->smd->shrinkOpts;
- float proj_axis[3] = {0.0f, 0.0f, 0.0f};
- MVert *vert = NULL; //Needed in case of vertex normal
- DerivedMesh* ss_mesh = NULL;
+ const char use_normal = calc->smd->shrinkOpts;
+ float proj_axis[3] = {0.0f, 0.0f, 0.0f};
//Raycast and tree stuff
BVHTreeRayHit hit;
- BVHTreeFromMesh treeData = NULL_BVHTreeFromMesh; //target
+ BVHTreeFromMesh treeData= NULL_BVHTreeFromMesh;
//auxiliar target
- DerivedMesh * aux_mesh = NULL;
- BVHTreeFromMesh auxData= NULL_BVHTreeFromMesh;
+ DerivedMesh *auxMesh = NULL;
+ BVHTreeFromMesh auxData = NULL_BVHTreeFromMesh;
SpaceTransform local2aux;
-do
-{
+ //If the user doesn't allows to project in any direction of projection axis
+ //then theres nothing todo.
+ if((use_normal & (MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR | MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR)) == 0)
+ return;
+
//Prepare data to retrieve the direction in which we should project each vertex
if(calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL)
{
- //No Mvert information: jump to "free memory and return" part
- if(calc->original == NULL) break;
-
- if(calc->smd->subsurfLevels)
- {
- SubsurfModifierData smd;
- memset(&smd, 0, sizeof(smd));
- smd.subdivType = ME_CC_SUBSURF; //catmull clark
- smd.levels = calc->smd->subsurfLevels; //levels
-
- ss_mesh = subsurf_make_derived_from_derived(calc->original, &smd, FALSE, NULL, 0, 0);
-
- if(ss_mesh)
- {
- vert = ss_mesh->getVertDataArray(ss_mesh, CD_MVERT);
- if(vert)
- {
- //TRICKY: this code assumes subsurface will have the transformed original vertices
- //in their original order at the end of the vert array.
- vert = vert
- + ss_mesh->getNumVerts(ss_mesh)
- - calc->original->getNumVerts(calc->original);
- }
- }
-
- //To make sure we are not letting any memory behind
- assert(smd.emCache == NULL);
- assert(smd.mCache == NULL);
- }
- else
- vert = calc->original->getVertDataArray(calc->original, CD_MVERT);
-
- //Not able to get vert information: jump to "free memory and return" part
- if(vert == NULL) break;
+ if(calc->vert == NULL) return;
}
else
{
- //The code supports any axis that is a combination of X,Y,Z.. altought currently UI only allows to set the 3 diferent axis
+ //The code supports any axis that is a combination of X,Y,Z
+ //altought currently UI only allows to set the 3 diferent axis
if(calc->smd->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS) proj_axis[0] = 1.0f;
if(calc->smd->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS) proj_axis[1] = 1.0f;
if(calc->smd->projAxis & MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS) proj_axis[2] = 1.0f;
Normalize(proj_axis);
- //Invalid projection direction: jump to "free memory and return" part
- if(INPR(proj_axis, proj_axis) < FLT_EPSILON) break;
+ //Invalid projection direction
+ if(INPR(proj_axis, proj_axis) < FLT_EPSILON)
+ return;
}
- //If the user doesn't allows to project in any direction of projection axis... then theres nothing todo.
- if((use_normal & (MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR | MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR)) == 0)
- break; //jump to "free memory and return" part
-
-
- //Build target tree
- BENCH(bvhtree_from_mesh_faces(&treeData, calc->target, calc->keepDist, 4, 6));
- if(treeData.tree == NULL)
- break; //jump to "free memory and return" part
-
-
- //Build auxiliar target
if(calc->smd->auxTarget)
{
+ auxMesh = object_get_derived_final(scene, calc->smd->auxTarget, CD_MASK_BAREMESH);
space_transform_setup( &local2aux, calc->ob, calc->smd->auxTarget);
-
- aux_mesh = CDDM_copy( object_get_derived_final(scene, calc->smd->auxTarget, CD_MASK_BAREMESH) ); //TODO currently we need a copy in case object_get_derived_final returns an emDM that does not defines getVertArray or getFace array
- if(aux_mesh)
- BENCH(bvhtree_from_mesh_faces(&auxData, aux_mesh, 0.0, 4, 6));
- else
- printf("Auxiliar target finalDerived mesh is null\n");
}
+ //After sucessufuly build the trees, start projection vertexs
+ if( bvhtree_from_mesh_faces(&treeData, calc->target, calc->keepDist, 4, 6)
+ && (auxMesh == NULL || bvhtree_from_mesh_faces(&auxData, auxMesh, 0.0, 4, 6)))
+ {
- //Now, everything is ready to project the vertexs!
#ifndef __APPLE__
#pragma omp parallel for private(i,hit) schedule(static)
#endif
- for(i = 0; i<calc->numVerts; ++i)
- {
- float *co = calc->vertexCos[i];
- float tmp_co[3], tmp_no[3];
- float lim = 10000.0f; //TODO: we should use FLT_MAX here, but sweepsphere code isnt prepared for that
- float weight = vertexgroup_get_vertex_weight(calc->dvert, i, calc->vgroup);
-
- if(weight == 0.0f) continue;
-
- if(ss_mesh)
- {
- VECCOPY(tmp_co, vert[i].co);
- }
- else
+ for(i = 0; i<calc->numVerts; ++i)
{
- VECCOPY(tmp_co, co);
- }
+ float *co = calc->vertexCos[i];
+ float tmp_co[3], tmp_no[3];
+ float weight = vertexgroup_get_vertex_weight(calc->dvert, i, calc->vgroup);
+ if(weight == 0.0f) continue;
- if(vert)
- NormalShortToFloat(tmp_no, vert[i].no);
- else
- VECCOPY( tmp_no, proj_axis );
-
+ if(calc->vert)
+ {
+ VECCOPY(tmp_co, calc->vert[i].co);
+ if(calc->smd->projAxis == MOD_SHRINKWRAP_PROJECT_OVER_NORMAL)
+ NormalShortToFloat(tmp_no, calc->vert[i].no);
+ else
+ VECCOPY(tmp_no, proj_axis);
+ }
+ else
+ {
+ VECCOPY(tmp_co, co);
+ VECCOPY(tmp_no, proj_axis);
+ }
- hit.index = -1;
- hit.dist = lim;
+ hit.index = -1;
+ hit.dist = 10000.0f; //TODO: we should use FLT_MAX here, but sweepsphere code isnt prepared for that
- //Project over positive direction of axis
- if(use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR)
- {
+ //Project over positive direction of axis
+ if(use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR)
+ {
- if(auxData.tree)
- normal_projection_project_vertex(0, tmp_co, tmp_no, &local2aux, auxData.tree, &hit, auxData.raycast_callback, &auxData);
+ if(auxData.tree)
+ normal_projection_project_vertex(0, tmp_co, tmp_no, &local2aux, auxData.tree, &hit, auxData.raycast_callback, &auxData);
- normal_projection_project_vertex(calc->smd->shrinkOpts, tmp_co, tmp_no, &calc->local2target, treeData.tree, &hit, treeData.raycast_callback, &treeData);
- }
+ normal_projection_project_vertex(calc->smd->shrinkOpts, tmp_co, tmp_no, &calc->local2target, treeData.tree, &hit, treeData.raycast_callback, &treeData);
+ }
- //Project over negative direction of axis
- if(use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR)
- {
- float inv_no[3] = { -tmp_no[0], -tmp_no[1], -tmp_no[2] };
+ //Project over negative direction of axis
+ if(use_normal & MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR)
+ {
+ float inv_no[3] = { -tmp_no[0], -tmp_no[1], -tmp_no[2] };
- if(auxData.tree)
- normal_projection_project_vertex(0, tmp_co, inv_no, &local2aux, auxData.tree, &hit, auxData.raycast_callback, &auxData);
+ if(auxData.tree)
+ normal_projection_project_vertex(0, tmp_co, inv_no, &local2aux, auxData.tree, &hit, auxData.raycast_callback, &auxData);
- normal_projection_project_vertex(calc->smd->shrinkOpts, tmp_co, inv_no, &calc->local2target, treeData.tree, &hit, treeData.raycast_callback, &treeData);
- }
+ normal_projection_project_vertex(calc->smd->shrinkOpts, tmp_co, inv_no, &calc->local2target, treeData.tree, &hit, treeData.raycast_callback, &treeData);
+ }
- if(hit.index != -1)
- {
- VecLerpf(co, co, hit.co, weight);
+ if(hit.index != -1)
+ {
+ VecLerpf(co, co, hit.co, weight);
+ }
}
}
-
-//Simple do{} while(0) structure to allow to easily jump to the "free memory and return" part
-} while(0);
-
//free data structures
-
free_bvhtree_from_mesh(&treeData);
free_bvhtree_from_mesh(&auxData);
-
- if(aux_mesh)
- aux_mesh->release(aux_mesh);
-
- if(ss_mesh)
- ss_mesh->release(ss_mesh);
}
/*
@@ -473,8 +426,6 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc)
BVHTreeFromMesh treeData = NULL_BVHTreeFromMesh;
BVHTreeNearest nearest = NULL_BVHTreeNearest;
-
-
//Create a bvh-tree of the given target
BENCH(bvhtree_from_mesh_faces( &treeData, calc->target, 0.0, 2, 6));
if(treeData.tree == NULL)
@@ -500,7 +451,14 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc)
if(weight == 0.0f) continue;
//Convert the vertex to tree coordinates
- VECCOPY(tmp_co, co);
+ if(calc->vert)
+ {
+ VECCOPY(tmp_co, calc->vert[i].co);
+ }
+ else
+ {
+ VECCOPY(tmp_co, co);
+ }
space_transform_apply(&calc->local2target, tmp_co);
//Use local proximity heuristics (to reduce the nearest search)
@@ -539,53 +497,89 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc)
}
}
-
free_bvhtree_from_mesh(&treeData);
}
/* Main shrinkwrap function */
-void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, struct Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3], int numVerts)
+void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3], int numVerts)
{
-
+
+ DerivedMesh *ss_mesh = NULL;
ShrinkwrapCalcData calc = NULL_ShrinkwrapCalcData;
-
+
//remove loop dependencies on derived meshs (TODO should this be done elsewhere?)
if(smd->target == ob) smd->target = NULL;
if(smd->auxTarget == ob) smd->auxTarget = NULL;
-
-
+
+
//Configure Shrinkwrap calc data
calc.smd = smd;
calc.ob = ob;
- calc.original = dm;
calc.numVerts = numVerts;
calc.vertexCos = vertexCos;
-
+
//DeformVertex
calc.vgroup = get_named_vertexgroup_num(calc.ob, calc.smd->vgroup_name);
- if(calc.original)
+ if(dm)
{
- calc.dvert = calc.original->getVertDataArray(calc.original, CD_MDEFORMVERT);
+ calc.dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
}
else if(calc.ob->type == OB_LATTICE)
{
calc.dvert = lattice_get_deform_verts(calc.ob);
}
-
-
+
+
if(smd->target)
{
- //TODO currently we need a copy in case object_get_derived_final returns an emDM that does not defines getVertArray or getFace array
- calc.target = CDDM_copy( object_get_derived_final(scene, smd->target, CD_MASK_BAREMESH) );
-
- //TODO there might be several "bugs" on non-uniform scales matrixs.. because it will no longer be nearest surface, not sphere projection
+ calc.target = object_get_derived_final(scene, smd->target, CD_MASK_BAREMESH);
+
+ //TODO there might be several "bugs" on non-uniform scales matrixs
+ //because it will no longer be nearest surface, not sphere projection
//because space has been deformed
space_transform_setup(&calc.local2target, ob, smd->target);
-
- calc.keepDist = smd->keepDist; //TODO: smd->keepDist is in global units.. must change to local
+
+ //TODO: smd->keepDist is in global units.. must change to local
+ calc.keepDist = smd->keepDist;
+ }
+
+
+
+ calc.vgroup = get_named_vertexgroup_num(calc.ob, smd->vgroup_name);
+
+ if(dm != NULL)
+ {
+ //Setup arrays to get vertexs positions, normals and deform weights
+ calc.vert = dm->getVertDataArray(dm, CD_MVERT);
+ calc.dvert = dm->getVertDataArray(dm, CD_MDEFORMVERT);
+
+ //Using vertexs positions/normals as if a subsurface was applied
+ if(smd->subsurfLevels)
+ {
+ SubsurfModifierData ssmd;
+ memset(&ssmd, 0, sizeof(ssmd));
+ ssmd.subdivType = ME_CC_SUBSURF; //catmull clark
+ ssmd.levels = smd->subsurfLevels; //levels
+
+ ss_mesh = subsurf_make_derived_from_derived(dm, &ssmd, FALSE, NULL, 0, 0);
+
+ if(ss_mesh)
+ {
+ calc.vert = ss_mesh->getVertDataArray(ss_mesh, CD_MVERT);
+ if(calc.vert)
+ {
+ //TRICKY: this code assumes subsurface will have the transformed original vertices
+ //in their original order at the end of the vert array.
+ calc.vert = calc.vert + ss_mesh->getNumVerts(ss_mesh) - dm->getNumVerts(dm);
+ }
+ }
+
+ //Just to make sure we are not letting any memory behind
+ assert(ssmd.emCache == NULL);
+ assert(ssmd.mCache == NULL);
+ }
}
-
-
+
//Projecting target defined - lets work!
if(calc.target)
{
@@ -593,20 +587,20 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, struct Scene *scene,
{
case MOD_SHRINKWRAP_NEAREST_SURFACE:
BENCH(shrinkwrap_calc_nearest_surface_point(&calc));
- break;
-
+ break;
+
case MOD_SHRINKWRAP_PROJECT:
BENCH(shrinkwrap_calc_normal_projection(&calc, scene));
- break;
-
+ break;
+
case MOD_SHRINKWRAP_NEAREST_VERTEX:
BENCH(shrinkwrap_calc_nearest_vertex(&calc));
- break;
+ break;
}
}
-
+
//free memory
- if(calc.target)
- calc.target->release( calc.target );
+ if(ss_mesh)
+ ss_mesh->release(ss_mesh);
}
diff --git a/source/blender/blenkernel/intern/suggestions.c b/source/blender/blenkernel/intern/suggestions.c
index 6530909336c..dee33656332 100644
--- a/source/blender/blenkernel/intern/suggestions.c
+++ b/source/blender/blenkernel/intern/suggestions.c
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c
index 7278460c61c..8bad269a85e 100644
--- a/source/blender/blenkernel/intern/world.c
+++ b/source/blender/blenkernel/intern/world.c
@@ -107,6 +107,8 @@ World *add_world(char *name)
wrld->ao_approx_error= 0.25f;
wrld->physicsEngine= WOPHY_BULLET;//WOPHY_SUMO; Bullet by default
+ wrld->mode = WO_DBVT_CULLING; // DBVT culling by default
+ wrld->occlusionRes = 128;
wrld->preview = NULL;
return wrld;
diff --git a/source/blender/blenkernel/intern/writeffmpeg.c b/source/blender/blenkernel/intern/writeffmpeg.c
index 8fd2426a1b6..472a6612a50 100644
--- a/source/blender/blenkernel/intern/writeffmpeg.c
+++ b/source/blender/blenkernel/intern/writeffmpeg.c
@@ -29,11 +29,11 @@
#include <stdlib.h>
-#include <ffmpeg/avformat.h>
-#include <ffmpeg/avcodec.h>
-#include <ffmpeg/rational.h>
-#include <ffmpeg/swscale.h>
-#include <ffmpeg/opt.h>
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#include <libavutil/rational.h>
+#include <libswscale/swscale.h>
+#include <libavcodec/opt.h>
#if LIBAVFORMAT_VERSION_INT < (49 << 16)
#define FFMPEG_OLD_FRAME_RATE 1
@@ -284,8 +284,8 @@ static AVFrame* generate_video_frame(uint8_t* pixels)
int height = c->height;
AVFrame* rgb_frame;
- if (c->pix_fmt != PIX_FMT_RGBA32) {
- rgb_frame = alloc_picture(PIX_FMT_RGBA32, width, height);
+ if (c->pix_fmt != PIX_FMT_BGR32) {
+ rgb_frame = alloc_picture(PIX_FMT_BGR32, width, height);
if (!rgb_frame) {
G.afbreek=1;
//XXX error("Couldn't allocate temporary frame");
@@ -309,9 +309,9 @@ static AVFrame* generate_video_frame(uint8_t* pixels)
uint8_t* end = src + width * 4;
while (src != end) {
target[3] = src[3];
- target[2] = src[0];
+ target[2] = src[2];
target[1] = src[1];
- target[0] = src[2];
+ target[0] = src[0];
target += 4;
src += 4;
@@ -325,9 +325,9 @@ static AVFrame* generate_video_frame(uint8_t* pixels)
uint8_t* src = rendered_frame + width * 4 * y;
uint8_t* end = src + width * 4;
while (src != end) {
- target[3] = src[2];
+ target[3] = src[0];
target[2] = src[1];
- target[1] = src[0];
+ target[1] = src[2];
target[0] = src[3];
target += 4;
@@ -336,7 +336,7 @@ static AVFrame* generate_video_frame(uint8_t* pixels)
}
}
- if (c->pix_fmt != PIX_FMT_RGBA32) {
+ if (c->pix_fmt != PIX_FMT_BGR32) {
sws_scale(img_convert_ctx, rgb_frame->data,
rgb_frame->linesize, 0, c->height,
current_frame->data, current_frame->linesize);
@@ -492,9 +492,11 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex
c->pix_fmt = PIX_FMT_YUV420P;
}
- if (!strcmp(of->oformat->name, "mp4") ||
- !strcmp(of->oformat->name, "mov") ||
- !strcmp(of->oformat->name, "3gp")) {
+ if ((of->oformat->flags & AVFMT_GLOBALHEADER)
+// || !strcmp(of->oformat->name, "mp4")
+// || !strcmp(of->oformat->name, "mov")
+// || !strcmp(of->oformat->name, "3gp")
+ ) {
fprintf(stderr, "Using global header\n");
c->flags |= CODEC_FLAG_GLOBAL_HEADER;
}
@@ -508,7 +510,7 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex
/* xasp & yasp got float lately... */
- c->sample_aspect_ratio = av_d2q(
+ st->sample_aspect_ratio = c->sample_aspect_ratio = av_d2q(
((double) rd->xasp / (double) rd->yasp), 255);
set_ffmpeg_properties(rd, c, "video");
@@ -526,7 +528,7 @@ static AVStream* alloc_video_stream(RenderData *rd, int codec_id, AVFormatContex
current_frame = alloc_picture(c->pix_fmt, c->width, c->height);
img_convert_ctx = sws_getContext(c->width, c->height,
- PIX_FMT_RGBA32,
+ PIX_FMT_BGR32,
c->width, c->height,
c->pix_fmt,
SWS_BICUBIC,
diff --git a/source/blender/blenlib/BLI_noise.h b/source/blender/blenlib/BLI_noise.h
index f419746bc13..9f72c5e7b54 100644
--- a/source/blender/blenlib/BLI_noise.h
+++ b/source/blender/blenlib/BLI_noise.h
@@ -26,7 +26,6 @@
*
* ***** END GPL LICENSE BLOCK *****
*
- * $Id: $
*/
#ifndef BLI_NOISE_H
diff --git a/source/blender/blenlib/BLI_rect.h b/source/blender/blenlib/BLI_rect.h
index 1bae821ae55..c7026b21494 100644
--- a/source/blender/blenlib/BLI_rect.h
+++ b/source/blender/blenlib/BLI_rect.h
@@ -26,7 +26,6 @@
*
* ***** END GPL LICENSE BLOCK *****
*
- * $Id: $
*/
#ifndef BLI_RECT_H
diff --git a/source/blender/blenlib/intern/freetypefont.c b/source/blender/blenlib/intern/freetypefont.c
index 2c114ea6971..4b7b5914b60 100644
--- a/source/blender/blenlib/intern/freetypefont.c
+++ b/source/blender/blenlib/intern/freetypefont.c
@@ -179,6 +179,7 @@ void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vfd)
bezt->vec[2][1] = (dy + (2 * ftoutline.points[l+1].y)* scale) / 3.0;
bezt->h1= bezt->h2= HD_ALIGN;
+ bezt->radius= 1.0f;
bezt++;
}
}
@@ -265,6 +266,7 @@ void freetypechar_to_vchar(FT_Face face, FT_ULong charcode, VFontData *vfd)
{
bezt->h1= bezt->h2= HD_ALIGN;
}
+ bezt->radius= 1.0f;
bezt++;
}
}
diff --git a/source/blender/blenlib/intern/psfont.c b/source/blender/blenlib/intern/psfont.c
index 54d7f8ec1af..39d38e4cf3a 100644
--- a/source/blender/blenlib/intern/psfont.c
+++ b/source/blender/blenlib/intern/psfont.c
@@ -2094,6 +2094,7 @@ static VFontData *objfnt_to_vfontdata(objfnt *fnt)
while(a--) {
if(bezt->h1!=HD_ALIGN && bezt->h2==HD_ALIGN) bezt->h2= 0;
else if(bezt->h2!=HD_ALIGN && bezt->h1==HD_ALIGN) bezt->h1= 0;
+ bezt->radius= 1.0f;
bezt++;
}
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 5ea83f0375f..5c176c4a72b 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -2152,6 +2152,13 @@ static void lib_link_constraints(FileData *fd, ID *id, ListBase *conlist)
data->tar = newlibadr(fd, id->lib, data->tar);
}
break;
+ case CONSTRAINT_TYPE_SHRINKWRAP:
+ {
+ bShrinkwrapConstraint *data;
+ data= ((bShrinkwrapConstraint*)con->data);
+ data->target = newlibadr(fd, id->lib, data->target);
+ }
+ break;
case CONSTRAINT_TYPE_NULL:
break;
}
@@ -3484,6 +3491,12 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
collmd->mfaces = NULL;
}
+ else if (md->type==eModifierType_Surface) {
+ SurfaceModifierData *surmd = (SurfaceModifierData*) md;
+
+ surmd->dm = NULL;
+ surmd->bvhtree = NULL;
+ }
else if (md->type==eModifierType_Hook) {
HookModifierData *hmd = (HookModifierData*) md;
@@ -3820,7 +3833,9 @@ static void lib_link_scene(FileData *fd, Main *main)
srl->mat_override= newlibadr_us(fd, sce->id.lib, srl->mat_override);
srl->light_override= newlibadr_us(fd, sce->id.lib, srl->light_override);
}
-
+ /*Game Settings: Dome Warp Text*/
+ sce->r.dometext= newlibadr_us(fd, sce->id.lib, sce->r.dometext);
+
sce->id.flag -= LIB_NEEDLINK;
}
@@ -5702,8 +5717,7 @@ static void do_versions_gpencil_2_50(Main *main, bScreen *screen)
/* add regions */
for(sa= screen->areabase.first; sa; sa= sa->next) {
- sl= sa->spacedata.first;
- for(sl; sl; sl= sl->next) {
+ for(sl= sa->spacedata.first; sl; sl= sl->next) {
if (sl->spacetype==SPACE_VIEW3D) {
View3D *v3d= (View3D*) sl;
if(v3d->gpd) {
@@ -8801,6 +8815,35 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
+ if (main->versionfile < 248 || (main->versionfile == 248 && main->subversionfile < 3)) {
+ Object *ob;
+
+ /* Adjustments needed after Bullets update */
+ for(ob = main->object.first; ob; ob= ob->id.next) {
+ ob->damping *= 0.635f;
+ ob->rdamping = 0.1 + (0.59f * ob->rdamping);
+ }
+ }
+
+ if (main->versionfile < 248 || (main->versionfile == 248 && main->subversionfile < 4)) {
+ Scene *sce;
+ World *wrld;
+
+ /* Dome (Fisheye) default parameters */
+ for (sce= main->scene.first; sce; sce= sce->id.next) {
+ sce->r.domeangle = 180;
+ sce->r.domemode = 1;
+ sce->r.domesize = 1.0f;
+ sce->r.domeres = 4;
+ sce->r.domeresbuf = 1.0f;
+ }
+ /* DBVT culling by default */
+ for(wrld=main->world.first; wrld; wrld= wrld->id.next) {
+ wrld->mode |= WO_DBVT_CULLING;
+ wrld->occlusionRes = 128;
+ }
+ }
+
if (main->versionfile < 250) {
bScreen *screen;
Scene *scene;
@@ -8921,7 +8964,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
}
}
}
-
+
/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
@@ -9568,6 +9611,12 @@ static void expand_constraints(FileData *fd, Main *mainvar, ListBase *lb)
expand_doit(fd, mainvar, data->tar);
}
break;
+ case CONSTRAINT_TYPE_SHRINKWRAP:
+ {
+ bShrinkwrapConstraint *data = (bShrinkwrapConstraint*)curcon->data;
+ expand_doit(fd, mainvar, data->target);
+ }
+ break;
default:
break;
}
@@ -9797,6 +9846,9 @@ static void expand_scene(FileData *fd, Main *mainvar, Scene *sce)
expand_doit(fd, mainvar, srl->mat_override);
expand_doit(fd, mainvar, srl->light_override);
}
+
+ if(sce->r.dometext)
+ expand_doit(fd, mainvar, sce->r.dometext);
}
static void expand_camera(FileData *fd, Main *mainvar, Camera *ca)
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index d7d7ad79239..f93ad5eaf2b 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -1434,9 +1434,9 @@ static void write_textures(WriteData *wd, ListBase *idbase)
if (tex->adt) write_animdata(wd, tex->adt);
/* direct data */
- if(tex->plugin) writestruct(wd, DATA, "PluginTex", 1, tex->plugin);
+ if(tex->type == TEX_PLUGIN && tex->plugin) writestruct(wd, DATA, "PluginTex", 1, tex->plugin);
if(tex->coba) writestruct(wd, DATA, "ColorBand", 1, tex->coba);
- if(tex->env) writestruct(wd, DATA, "EnvMap", 1, tex->env);
+ if(tex->type == TEX_ENVMAP && tex->env) writestruct(wd, DATA, "EnvMap", 1, tex->env);
/* nodetree is integral part of texture, no libdata */
if(tex->nodetree) {
@@ -1832,7 +1832,6 @@ static void write_screens(WriteData *wd, ListBase *scrbase)
writestruct(wd, DATA, "SpaceFile", 1, sl);
}
else if(sl->spacetype==SPACE_SEQ) {
- SpaceSeq *sseq= (SpaceSeq *)sl;
writestruct(wd, DATA, "SpaceSeq", 1, sl);
}
else if(sl->spacetype==SPACE_OUTLINER) {
@@ -1878,7 +1877,6 @@ static void write_screens(WriteData *wd, ListBase *scrbase)
writestruct(wd, DATA, "SpaceTime", 1, sl);
}
else if(sl->spacetype==SPACE_NODE){
- SpaceNode *snode= (SpaceNode *)sl;
writestruct(wd, DATA, "SpaceNode", 1, sl);
}
sl= sl->next;
diff --git a/source/blender/editors/armature/BIF_generate.h b/source/blender/editors/armature/BIF_generate.h
index bc655a4cdff..bde079c45fb 100644
--- a/source/blender/editors/armature/BIF_generate.h
+++ b/source/blender/editors/armature/BIF_generate.h
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/editors/armature/BIF_retarget.h b/source/blender/editors/armature/BIF_retarget.h
index 049ddf5baa5..c39f410424a 100644
--- a/source/blender/editors/armature/BIF_retarget.h
+++ b/source/blender/editors/armature/BIF_retarget.h
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c
index a1990814a02..6d271375c64 100644
--- a/source/blender/editors/armature/editarmature_generate.c
+++ b/source/blender/editors/armature/editarmature_generate.c
@@ -1,5 +1,5 @@
/**
- * $Id: editarmature_generate.c $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -53,14 +53,14 @@ void setBoneRollFromNormal(EditBone *bone, float *no, float invmat[][4], float t
{
if (no != NULL && !VecIsNull(no))
{
- float tangent[3], cotangent[3], normal[3];
+ float tangent[3], vec[3], normal[3];
VECCOPY(normal, no);
Mat3MulVecfl(tmat, normal);
VecSubf(tangent, bone->tail, bone->head);
- Crossf(cotangent, tangent, normal);
- Crossf(normal, cotangent, tangent);
+ Projf(vec, tangent, normal);
+ VecSubf(normal, normal, vec);
Normalize(normal);
diff --git a/source/blender/editors/armature/editarmature_retarget.c b/source/blender/editors/armature/editarmature_retarget.c
index 4da7eaf9440..68e8b45e7d2 100644
--- a/source/blender/editors/armature/editarmature_retarget.c
+++ b/source/blender/editors/armature/editarmature_retarget.c
@@ -206,12 +206,12 @@ float rollBoneByQuatAligned(EditBone *bone, float old_up_axis[3], float qrot[4],
}
}
-float rollBoneByQuatJoint(RigEdge *edge, RigEdge *previous, float qrot[4], float qroll[4])
+float rollBoneByQuatJoint(RigEdge *edge, RigEdge *previous, float qrot[4], float qroll[4], float up_axis[3])
{
if (previous == NULL)
{
- QuatOne(qroll);
- return rollBoneByQuat(edge->bone, edge->up_axis, qrot);
+ /* default to up_axis if no previous */
+ return rollBoneByQuatAligned(edge->bone, edge->up_axis, qrot, qroll, up_axis);
}
else
{
@@ -228,9 +228,8 @@ float rollBoneByQuatJoint(RigEdge *edge, RigEdge *previous, float qrot[4], float
}
else
{
- /* SHOULDN'T BE HERE */
- QuatOne(qroll);
- return rollBoneByQuat(edge->bone, edge->up_axis, qrot);
+ /* default to up_axis if first bone in the chain is an offset */
+ return rollBoneByQuatAligned(edge->bone, edge->up_axis, qrot, qroll, up_axis);
}
VecSubf(vec_second, edge->bone->tail, edge->bone->head);
@@ -1859,7 +1858,7 @@ static void repositionBone(bContext *C, RigGraph *rigg, RigEdge *edge, float vec
}
else if (scene->toolsettings->skgen_retarget_roll == SK_RETARGET_ROLL_JOINT)
{
- bone->roll = rollBoneByQuatJoint(edge, edge->next, qrot, qroll);
+ bone->roll = rollBoneByQuatJoint(edge, edge->prev, qrot, qroll, up_axis);
}
else
{
diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c
index 5d0b954046c..45605ad472d 100644
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -293,7 +293,7 @@ char *BIF_listTemplates(bContext *C)
while (!BLI_ghashIterator_isDone(&ghi))
{
Object *ob = BLI_ghashIterator_getValue(&ghi);
- int key = (int)BLI_ghashIterator_getKey(&ghi);
+ int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi));
p += sprintf(p, "|%s%%x%i", ob->id.name+2, key);
@@ -314,7 +314,7 @@ int BIF_currentTemplate(bContext *C)
while (!BLI_ghashIterator_isDone(&ghi))
{
Object *ob = BLI_ghashIterator_getValue(&ghi);
- int key = (int)BLI_ghashIterator_getKey(&ghi);
+ int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi));
if (ob == scene->toolsettings->skgen_template)
{
@@ -1035,7 +1035,22 @@ void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end)
}
glEnd();
-
+
+#if 0
+ glColor3f(0, 0, 1);
+ glBegin(GL_LINES);
+
+ for (i = 0; i < stk->nb_points; i++)
+ {
+ float *p = stk->points[i].p;
+ float *no = stk->points[i].no;
+ glVertex3fv(p);
+ glVertex3f(p[0] + no[0], p[1] + no[1], p[2] + no[2]);
+ }
+
+ glEnd();
+#endif
+
glColor3f(0, 0, 0);
glBegin(GL_POINTS);
@@ -1998,7 +2013,7 @@ void sk_convertStroke(bContext *C, SK_Stroke *stk)
Mat4MulVecfl(invmat, bone->head);
Mat4MulVecfl(invmat, bone->tail);
- setBoneRollFromNormal(bone, pt->no, invmat, tmat);
+ setBoneRollFromNormal(bone, head->no, invmat, tmat);
}
new_parent = bone;
diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c
index 09edc5549c1..3d8d446c579 100644
--- a/source/blender/editors/armature/poseobject.c
+++ b/source/blender/editors/armature/poseobject.c
@@ -1237,7 +1237,6 @@ static short pose_select_same_layer (Object *ob)
return changed;
}
-
void pose_select_grouped (Scene *scene, short nr)
{
short changed = 0;
@@ -1669,9 +1668,7 @@ void pose_special_editmenu(Scene *scene)
pose_clear_paths(ob);
}
else if(nr==5) {
- rest_pose(ob->pose);
- DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
- BIF_undo_push("Clear User Transform Pose");
+ pose_clear_user_transforms(scene, ob);
}
else if(nr==6) {
pose_relax();
@@ -1682,3 +1679,29 @@ void pose_special_editmenu(Scene *scene)
#endif
}
+/* Restore selected pose-bones to 'action'-defined pose */
+void pose_clear_user_transforms(Scene *scene, Object *ob)
+{
+ bArmature *arm= ob->data;
+ bPoseChannel *pchan;
+
+ if (ob->pose == NULL)
+ return;
+
+ /* find selected bones */
+ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ if (pchan->bone && (pchan->bone->flag & BONE_SELECTED) && (pchan->bone->layer & arm->layer)) {
+ /* just clear the BONE_UNKEYED flag, allowing this bone to get overwritten by actions again */
+ pchan->bone->flag &= ~BONE_UNKEYED;
+ }
+ }
+
+ /* clear pose locking flag
+ * - this will only clear the user-defined pose in the selected bones, where BONE_UNKEYED has been cleared
+ */
+ ob->pose->flag |= POSE_DO_UNLOCK;
+
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ BIF_undo_push("Clear User Transform");
+}
+
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index 8c9a282d4ef..72806a79c50 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -652,7 +652,7 @@ static int deleteflagNurb(bContext *C, wmOperator *op, int flag)
nu->bp= newbp;
clamp_nurb_order_v(nu);
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 2);
}
else {
/* is the nurb in V direction selected */
@@ -698,7 +698,7 @@ static int deleteflagNurb(bContext *C, wmOperator *op, int flag)
nu->pntsu= newu;
clamp_nurb_order_u(nu);
}
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
}
}
}
@@ -746,7 +746,7 @@ static short extrudeflagNurb(ListBase *editnurb, int flag)
nu->pntsv= 2;
nu->orderv= 2;
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 2);
}
}
else {
@@ -789,7 +789,7 @@ static short extrudeflagNurb(ListBase *editnurb, int flag)
MEM_freeN(nu->bp);
nu->bp= newbp;
nu->pntsv++;
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 2);
}
else if(v==0 || v== nu->pntsu-1) { /* collumn in v-direction selected */
ok= 1;
@@ -816,7 +816,7 @@ static short extrudeflagNurb(ListBase *editnurb, int flag)
MEM_freeN(nu->bp);
nu->bp= newbp;
nu->pntsu++;
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
}
}
}
@@ -911,7 +911,7 @@ static void adduplicateflagNurb(Object *obedit, short flag)
/* knots */
newnu->knotsu= NULL;
- makeknots(newnu, 1, newnu->flagu>>1);
+ makeknots(newnu, 1);
}
bp++;
}
@@ -975,14 +975,14 @@ static void adduplicateflagNurb(Object *obedit, short flag)
if(nu->pntsu==newnu->pntsu && nu->knotsu) {
newnu->knotsu= MEM_dupallocN( nu->knotsu );
} else {
- makeknots(newnu, 1, newnu->flagu>>1);
+ makeknots(newnu, 1);
}
}
if (check_valid_nurb_v(newnu)) {
if(nu->pntsv==newnu->pntsv && nu->knotsv) {
newnu->knotsv= MEM_dupallocN( nu->knotsv );
} else {
- makeknots(newnu, 2, newnu->flagv>>1);
+ makeknots(newnu, 2);
}
}
}
@@ -1962,8 +1962,8 @@ static int subdivide_exec(bContext *C, wmOperator *op)
nu->bp= bpnew;
nu->pntsu+= amount;
- if(nu->type & 4) {
- makeknots(nu, 1, nu->flagu>>1);
+ if(nu->type & CU_NURBS) {
+ makeknots(nu, 1);
}
}
} /* End of 'else if(nu->pntsv==1)' */
@@ -2074,8 +2074,8 @@ static int subdivide_exec(bContext *C, wmOperator *op)
nu->bp= bpnew;
nu->pntsu= 2*nu->pntsu-1;
nu->pntsv= 2*nu->pntsv-1;
- makeknots(nu, 1, nu->flagu>>1);
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 1);
+ makeknots(nu, 2);
} /* End of 'if(sel== nu->pntsu*nu->pntsv)' (subdivide entire NURB) */
else {
/* subdivide in v direction? */
@@ -2118,7 +2118,7 @@ static int subdivide_exec(bContext *C, wmOperator *op)
MEM_freeN(nu->bp);
nu->bp= bpnew;
nu->pntsv+= sel;
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 2);
}
else {
/* or in u direction? */
@@ -2158,7 +2158,7 @@ static int subdivide_exec(bContext *C, wmOperator *op)
MEM_freeN(nu->bp);
nu->bp= bpnew;
nu->pntsu+= sel;
- makeknots(nu, 1, nu->flagu>>1); /* shift knots
+ makeknots(nu, 1); /* shift knots
forward */
}
}
@@ -2316,7 +2316,7 @@ static int convertspline(short type, Nurb *nu)
BPoint *bp;
int a, c, nr;
- if((nu->type & 7)==0) { /* Poly */
+ if((nu->type & 7)==CU_POLY) {
if(type==CU_BEZIER) { /* to Bezier with vecthandles */
nr= nu->pntsu;
bezt =
@@ -2337,16 +2337,16 @@ static int convertspline(short type, Nurb *nu)
nu->bp= 0;
nu->pntsu= nr;
nu->type &= ~7;
- nu->type |= 1;
+ nu->type |= CU_BEZIER;
calchandlesNurb(nu);
}
else if(type==CU_NURBS) {
nu->type &= ~7;
- nu->type+= 4;
+ nu->type |= CU_NURBS;
nu->orderu= 4;
nu->flagu &= CU_CYCLIC; /* disable all flags except for cyclic */
nu->flagu += 4;
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
a= nu->pntsu*nu->pntsv;
bp= nu->bp;
while(a--) {
@@ -2400,7 +2400,7 @@ static int convertspline(short type, Nurb *nu)
if(type== 4) {
nu->flagu &= CU_CYCLIC; /* disable all flags except for cyclic */
nu->flagu += 4;
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
}
}
}
@@ -2442,7 +2442,7 @@ static int convertspline(short type, Nurb *nu)
nu->knotsu= NULL;
nu->pntsu= nr;
nu->type &= ~7;
- nu->type+= 1;
+ nu->type |= CU_BEZIER;
}
}
}
@@ -2803,12 +2803,12 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu
}
}
- if((nu1->type & 7)==4) {
+ if((nu1->type & 7)==CU_NURBS) {
/* merge knots */
- makeknots(nu1, 1, nu1->flagu>>1);
+ makeknots(nu1, 1);
/* make knots, for merged curved for example */
- makeknots(nu1, 2, nu1->flagv>>1);
+ makeknots(nu1, 2);
}
MEM_freeN(temp);
@@ -2991,9 +2991,9 @@ static int make_segment_exec(bContext *C, wmOperator *op)
BLI_remlink(editnurb, nu2);
/* now join the knots */
- if((nu1->type & 7)==4) {
+ if((nu1->type & 7)==CU_NURBS) {
if(nu1->knotsu==NULL) {
- makeknots(nu1, 1, nu1->flagu>>1);
+ makeknots(nu1, 1);
}
else {
fp= MEM_mallocN(sizeof(float)*KNOTSU(nu1), "addsegment3");
@@ -3216,7 +3216,7 @@ static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, sho
if(isNurbsel(nu)) {
nu->orderv= 4;
nu->flagv |= CU_CYCLIC;
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 2);
}
}
}
@@ -3352,7 +3352,7 @@ static int addvert_Nurb(bContext *C, short mode, float location[3])
if(bp) {
nu->pntsu++;
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
if(mode=='e') {
VECCOPY(newbp->vec, bp->vec);
@@ -3492,7 +3492,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op)
for(nu= editnurb->first; nu; nu= nu->next) {
if( nu->pntsu>1 || nu->pntsv>1) {
- if( (nu->type & 7)==0 ) {
+ if( (nu->type & 7)==CU_POLY ) {
a= nu->pntsu;
bp= nu->bp;
while(a--) {
@@ -3522,7 +3522,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op)
while(a--) {
if( bp->f1 & SELECT ) {
nu->flagu ^= CU_CYCLIC;
- makeknots(nu, 1, nu->flagu>>1); /* 1==u type is ignored for cyclic curves */
+ makeknots(nu, 1); /* 1==u type is ignored for cyclic curves */
break;
}
bp++;
@@ -3537,11 +3537,11 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op)
if( bp->f1 & SELECT) {
if(direction==0 && nu->pntsu>1) {
nu->flagu ^= CU_CYCLIC;
- makeknots(nu, 1, nu->flagu>>1); /* 1==u type is ignored for cyclic curves */
+ makeknots(nu, 1); /* 1==u type is ignored for cyclic curves */
}
if(direction==1 && nu->pntsv>1) {
nu->flagv ^= CU_CYCLIC;
- makeknots(nu, 2, nu->flagv>>1); /* 2==v type is ignored for cyclic curves */
+ makeknots(nu, 2); /* 2==v type is ignored for cyclic curves */
}
break;
}
@@ -4349,7 +4349,7 @@ static int delete_exec(bContext *C, wmOperator *op)
clamp_nurb_order_u(nu);
}*/
}
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
}
nu= next;
}
@@ -4810,7 +4810,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
if(cutype==CU_NURBS) {
nu->knotsu= 0; /* makeknots allocates */
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
}
}
@@ -4845,7 +4845,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
if(cutype==CU_NURBS) {
nu->knotsu= 0; /* makeknots allocates */
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
}
break;
@@ -4930,7 +4930,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bp++;
}
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
}
break;
case CU_PRIM_PATCH: /* 4x4 patch */
@@ -4967,8 +4967,8 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
}
}
- makeknots(nu, 1, nu->flagu>>1);
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 1);
+ makeknots(nu, 2);
}
break;
case CU_PRIM_TUBE: /* tube */
@@ -5030,7 +5030,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
bp++;
}
nu->flagu= 4;
- makeknots(nu, 1, nu->flagu>>1);
+ makeknots(nu, 1);
BLI_addtail(editnurb, nu); /* temporal for spin */
if(newname && (U.flag & USER_ADD_VIEWALIGNED) == 0)
@@ -5038,7 +5038,7 @@ Nurb *add_nurbs_primitive(bContext *C, int type, int newname)
else
spin_nurb(C, scene, obedit, 0, 0);
- makeknots(nu, 2, nu->flagv>>1);
+ makeknots(nu, 2);
a= nu->pntsu*nu->pntsv;
bp= nu->bp;
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index 2b63c1f2d3b..fd59539bb56 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -133,8 +133,10 @@ void gp_ui_delstroke_cb (void *gpd, void *gpl)
{
bGPDframe *gpf= gpencil_layer_getframe(gpl, CFRA, 0);
+ if (gpf->framenum != CFRA) return;
+
gpencil_layer_setactive(gpd, gpl);
- gpencil_frame_delete_laststroke(gpf);
+ gpencil_frame_delete_laststroke(gpl, gpf);
scrarea_queue_winredraw(curarea);
}
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index fc3c8b1dc77..f3868b1f01c 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -2603,11 +2603,13 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut
}
}
}
- sort[hold]->f &= ~SELECT;
- sort[hold]->f2 |= EDGENEW;
- length[hold] = -1;
- }
- }
+ if (hold > -1) {
+ sort[hold]->f &= ~SELECT;
+ sort[hold]->f2 |= EDGENEW;
+ length[hold] = -1;
+ }
+ }
+ }
// Beauty Long Edges
else {
@@ -2624,13 +2626,15 @@ void esubdivideflag(Object *obedit, EditMesh *em, int flag, float rad, int beaut
}
}
}
- sort[hold]->f &= ~SELECT;
- sort[hold]->f2 |= EDGENEW;
- length[hold] = -1;
- }
- }
+ if (hold > -1) {
+ sort[hold]->f &= ~SELECT;
+ sort[hold]->f2 |= EDGENEW;
+ length[hold] = -1;
+ }
+ }
+ }
}
- }
+ }
}
gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp);
@@ -3255,11 +3259,9 @@ void join_triangles(EditMesh *em)
if(v1 && v2 && v3 && v4){
/*test if simple island first. This mimics 2.42 behaviour and the tests are less restrictive.*/
if(efaa[0]->tmp.l == 1 && efaa[1]->tmp.l == 1){
- if( convex(v1->co, v2->co, v3->co, v4->co) ){
- eed->f1 |= T2QJOIN;
- efaa[0]->f1 = 1; //mark for join
- efaa[1]->f1 = 1; //mark for join
- }
+ eed->f1 |= T2QJOIN;
+ efaa[0]->f1 = 1; //mark for join
+ efaa[1]->f1 = 1; //mark for join
}
else{
@@ -3503,10 +3505,6 @@ static void edge_rotate(EditMesh *em, wmOperator *op, EditEdge *eed,int dir)
if(numshared > 1)
return;
- /* coplaner faces only please */
- if(Inpf(face[0]->n,face[1]->n) <= 0.000001)
- return;
-
/* we want to construct an array of vertex indicis in both faces, starting at
the last vertex of the edge being rotated.
- first we find the two vertices that lie on the rotating edge
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 69d580afea9..5a86180a60f 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -45,6 +45,7 @@
#include "BKE_context.h"
#include "BKE_global.h"
+#include "BKE_mesh.h"
#include "BKE_utildefines.h"
#include "RNA_access.h"
diff --git a/source/blender/editors/object/editconstraint.c b/source/blender/editors/object/editconstraint.c
index c8d8ece30dc..d0e487f98c7 100644
--- a/source/blender/editors/object/editconstraint.c
+++ b/source/blender/editors/object/editconstraint.c
@@ -379,6 +379,8 @@ void add_constraint (Scene *scene, View3D *v3d, short only_IK)
nr= pupmenu("Add Constraint to Active Bone%t|Child Of%x19|Transformation%x20|%l|Copy Location%x1|Copy Rotation%x2|Copy Scale%x8|%l|Limit Location%x13|Limit Rotation%x14|Limit Scale%x15|Limit Distance%x21|%l|Track To%x3|Floor%x4|Locked Track%x5|Stretch To%x7|%l|Action%x16|Script%x18");
else if ((obsel) && (obsel->type==OB_CURVE))
nr= pupmenu("Add Constraint to Active Object%t|Child Of%x19|Transformation%x20|%l|Copy Location%x1|Copy Rotation%x2|Copy Scale%x8|%l|Limit Location%x13|Limit Rotation%x14|Limit Scale%x15|Limit Distance%x21|%l|Track To%x3|Floor%x4|Locked Track%x5|Follow Path%x6|Clamp To%x17|Stretch To%x7|%l|Action%x16|Script%x18");
+ else if ((obsel) && (obsel->type==OB_MESH))
+ nr= pupmenu("Add Constraint to Active Object%t|Child Of%x19|Transformation%x20|%l|Copy Location%x1|Copy Rotation%x2|Copy Scale%x8|%l|Limit Location%x13|Limit Rotation%x14|Limit Scale%x15|Limit Distance%x21|%l|Track To%x3|Floor%x4|Locked Track%x5|Shrinkwrap%x22|Stretch To%x7|%l|Action%x16|Script%x18");
else if (obsel)
nr= pupmenu("Add Constraint to Active Object%t|Child Of%x19|Transformation%x20|%l|Copy Location%x1|Copy Rotation%x2|Copy Scale%x8|%l|Limit Location%x13|Limit Rotation%x14|Limit Scale%x15|Limit Distance%x21|%l|Track To%x3|Floor%x4|Locked Track%x5|Stretch To%x7|%l|Action%x16|Script%x18");
else
@@ -387,6 +389,8 @@ void add_constraint (Scene *scene, View3D *v3d, short only_IK)
else {
if ((obsel) && (obsel->type==OB_CURVE))
nr= pupmenu("Add Constraint to Active Object%t|Child Of%x19|Transformation%x20|%l|Copy Location%x1|Copy Rotation%x2|Copy Scale%x8|%l|Limit Location%x13|Limit Rotation%x14|Limit Scale%x15|Limit Distance%x21|%l|Track To%x3|Floor%x4|Locked Track%x5|Follow Path%x6|Clamp To%x17|%l|Action%x16|Script%x18");
+ else if ((obsel) && (obsel->type==OB_MESH))
+ nr= pupmenu("Add Constraint to Active Object%t|Child Of%x19|Transformation%x20|%l|Copy Location%x1|Copy Rotation%x2|Copy Scale%x8|%l|Limit Location%x13|Limit Rotation%x14|Limit Scale%x15|Limit Distance%x21|%l|Track To%x3|Floor%x4|Locked Track%x5|Shrinkwrap%x22|%l|Action%x16|Script%x18");
else if (obsel)
nr= pupmenu("Add Constraint to Active Object%t|Child Of%x19|Transformation%x20|%l|Copy Location%x1|Copy Rotation%x2|Copy Scale%x8|%l|Limit Location%x13|Limit Rotation%x14|Limit Scale%x15|Limit Distance%x21|%l|Track To%x3|Floor%x4|Locked Track%x5|%l|Action%x16|Script%x18");
else
@@ -489,6 +493,7 @@ void add_constraint (Scene *scene, View3D *v3d, short only_IK)
}
else if (nr==20) con = add_new_constraint(CONSTRAINT_TYPE_TRANSFORM);
else if (nr==21) con = add_new_constraint(CONSTRAINT_TYPE_DISTLIMIT);
+ else if (nr==22) con = add_new_constraint(CONSTRAINT_TYPE_SHRINKWRAP);
if (con==NULL) return; /* paranoia */
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index a5c811be164..eeba0ad22ae 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -3076,7 +3076,7 @@ static int object_center_set_exec(bContext *C, wmOperator *op)
nu= nu1;
while(nu) {
- if( (nu->type & 7)==1) {
+ if( (nu->type & 7)==CU_BEZIER) {
a= nu->pntsu;
while (a--) {
VecSubf(nu->bezt[a].vec[0], nu->bezt[a].vec[0], cent);
@@ -4338,14 +4338,12 @@ static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob)
prop= prop->next;
}
- if(tot==0) {
- error("No properties in the active object to copy");
- return;
- }
-
str= MEM_callocN(50 + 33*tot, "copymenu prop");
- strcpy(str, "Copy Property %t|Replace All|Merge All|%l");
+ if (tot)
+ strcpy(str, "Copy Property %t|Replace All|Merge All|%l");
+ else
+ strcpy(str, "Copy Property %t|Clear All (no properties on active)");
tot= 0;
prop= ob->prop.first;
@@ -4648,7 +4646,8 @@ void copy_attr(Scene *scene, View3D *v3d, short event)
base->object->formfactor = ob->formfactor;
base->object->damping= ob->damping;
base->object->rdamping= ob->rdamping;
- base->object->mass= ob->mass;
+ base->object->min_vel= ob->min_vel;
+ base->object->max_vel= ob->max_vel;
if (ob->gameflag & OB_BOUNDS) {
base->object->boundtype = ob->boundtype;
}
@@ -5192,7 +5191,7 @@ static void apply_objects_internal(Scene *scene, View3D *v3d, int apply_scale, i
nu= cu->nurb.first;
while(nu) {
- if( (nu->type & 7)==1) {
+ if( (nu->type & 7)==CU_BEZIER) {
a= nu->pntsu;
bezt= nu->bezt;
while(a--) {
diff --git a/source/blender/editors/physics/editparticle.c b/source/blender/editors/physics/editparticle.c
index 3212494234b..96f3ad2f8df 100644
--- a/source/blender/editors/physics/editparticle.c
+++ b/source/blender/editors/physics/editparticle.c
@@ -1,5 +1,5 @@
/*
- * $Id: editparticle.c $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h
index 9ca4f864e48..e03649575cb 100644
--- a/source/blender/editors/physics/physics_intern.h
+++ b/source/blender/editors/physics/physics_intern.h
@@ -1,7 +1,5 @@
-/* BIF_editparticle.h
- *
- *
- * $Id: BIF_editparticle.h $
+/*
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 7d0c3e3e3ba..bf57e2e7d52 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -47,6 +47,7 @@
#include "BKE_idprop.h"
#include "BKE_library.h"
#include "BKE_main.h"
+#include "BKE_mesh.h"
#include "BKE_multires.h"
#include "BKE_report.h"
#include "BKE_screen.h"
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index 1ce5f3a348b..22fb8e61789 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -753,8 +753,7 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float
}
ibuf = BKE_image_get_ibuf((Image *)tf->tpage, NULL); /* TODO - this may be slow, the only way around it is to have an ibuf index per face */
-
-
+ if (!ibuf) return 0;
if (interp) {
float x, y;
diff --git a/source/blender/editors/space_image/image_header.c b/source/blender/editors/space_image/image_header.c
index 1ff71bd2225..288fc76d8e4 100644
--- a/source/blender/editors/space_image/image_header.c
+++ b/source/blender/editors/space_image/image_header.c
@@ -45,6 +45,7 @@
#include "BKE_context.h"
#include "BKE_customdata.h"
#include "BKE_image.h"
+#include "BKE_mesh.h"
#include "BKE_screen.h"
#include "BKE_utildefines.h"
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 934d58926e2..fcafcd22a3d 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -1062,6 +1062,7 @@ void IMAGE_OT_new(wmOperatorType *ot)
/* api callbacks */
ot->exec= new_exec;
+ ot->invoke= WM_operator_redo;
ot->poll= ED_operator_image_active;
/* flags */
diff --git a/source/blender/editors/space_image/image_panels.c b/source/blender/editors/space_image/image_panels.c
index 2fe7f3990ff..971f3a70a8a 100644
--- a/source/blender/editors/space_image/image_panels.c
+++ b/source/blender/editors/space_image/image_panels.c
@@ -55,6 +55,7 @@
#include "BKE_global.h"
#include "BKE_library.h"
#include "BKE_main.h"
+#include "BKE_mesh.h"
#include "BKE_node.h"
#include "BKE_packedFile.h"
#include "BKE_screen.h"
diff --git a/source/blender/editors/space_text/text_header.c b/source/blender/editors/space_text/text_header.c
index 81508066199..0ab43cbf455 100644
--- a/source/blender/editors/space_text/text_header.c
+++ b/source/blender/editors/space_text/text_header.c
@@ -56,6 +56,7 @@
#include "BKE_global.h"
#include "BKE_library.h"
#include "BKE_main.h"
+#include "BKE_scene.h"
#include "BKE_screen.h"
#include "BKE_text.h"
@@ -278,6 +279,7 @@ static void text_unlink(Main *bmain, Text *text)
// XXX BPY_clear_bad_scriptlinks(text);
// XXX BPY_free_pyconstraint_links(text);
// XXX free_text_controllers(text);
+ // XXX free_dome_warp_text(text);
/* check if this text was used as script link:
* this check function unsets the pointers and returns how many
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 2bb532288ef..5276ca8f0a5 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -2832,16 +2832,14 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
ParticleSettings *part;
ParticleData *pars, *pa;
ParticleKey state, *states=0;
- ParticleCacheKey *cache=0;
+ ParticleBillboardData bb;
Material *ma;
- Object *bb_ob=0;
- float vel[3], vec[3], vec2[3], imat[4][4], onevec[3]={0.0f,0.0f,0.0f}, bb_center[3];
+ float vel[3], vec[3], vec2[3], imat[4][4], bb_center[3];
float timestep, pixsize=1.0, pa_size, pa_time, r_tilt;
float cfra= bsystem_time(scene, ob,(float)CFRA,0.0);
float *vdata=0, *vedata=0, *cdata=0, *ndata=0, *vd=0, *ved=0, *cd=0, *nd=0, xvec[3], yvec[3], zvec[3];
float ma_r=0.0f, ma_g=0.0f, ma_b=0.0f;
- int a, k, k_max=0, totpart, totpoint=0, draw_as, path_nbr=0;
- int path_possible=0, keys_possible=0, draw_keys=0, totchild=0;
+ int a, totpart, totpoint=0, draw_as, totchild=0;
int select=ob->flag&SELECT, create_cdata=0;
GLint polygonmode[2];
char val[32];
@@ -2928,18 +2926,9 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if(part->flag&PART_GLOB_TIME)
cfra=bsystem_time(scene, 0, (float)CFRA, 0.0f);
- if(psys->pathcache){
- path_possible=1;
- keys_possible=1;
- }
- if(draw_as==PART_DRAW_PATH && path_possible==0)
+ if(draw_as==PART_DRAW_PATH && psys->pathcache==NULL)
draw_as=PART_DRAW_DOT;
- if(draw_as!=PART_DRAW_PATH && keys_possible && part->draw&PART_DRAW_KEYS){
- path_nbr=part->keys_step;
- draw_keys=1;
- }
-
/* 3. */
switch(draw_as){
case PART_DRAW_DOT:
@@ -2988,12 +2977,15 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glPointSize(2.0); /* default dot size */
}
else if(part->bb_ob)
- bb_ob=part->bb_ob;
+ bb.ob=part->bb_ob;
else
- bb_ob=v3d->camera;
+ bb.ob=v3d->camera;
- if(part->bb_align<PART_BB_VIEW)
- onevec[part->bb_align]=1.0f;
+ bb.align = part->bb_align;
+ bb.anim = part->bb_anim;
+ bb.lock = part->draw & PART_DRAW_BB_LOCK;
+ bb.offset[0] = part->bb_offset[0];
+ bb.offset[1] = part->bb_offset[1];
break;
case PART_DRAW_PATH:
break;
@@ -3005,35 +2997,37 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
}
/* 4. */
- if(draw_as && draw_as!=PART_DRAW_PATH){
- if(draw_as!=PART_DRAW_CIRC){
- switch(draw_as){
+ if(draw_as && draw_as!=PART_DRAW_PATH) {
+ int tot_vec_size = (totpart + totchild) * 3 * sizeof(float);
+
+ if(draw_as!=PART_DRAW_CIRC) {
+ switch(draw_as) {
case PART_DRAW_AXIS:
case PART_DRAW_CROSS:
- if(draw_as!=PART_DRAW_CROSS || create_cdata)
- cdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*6*3*sizeof(float), "particle_cdata");
- vdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*6*3*sizeof(float), "particle_vdata");
+ if(draw_as != PART_DRAW_CROSS || create_cdata)
+ cdata = MEM_callocN(tot_vec_size * 6, "particle_cdata");
+ vdata = MEM_callocN(tot_vec_size * 6, "particle_vdata");
break;
case PART_DRAW_LINE:
if(create_cdata)
- cdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*2*3*sizeof(float), "particle_cdata");
- vdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*2*3*sizeof(float), "particle_vdata");
+ cdata = MEM_callocN(tot_vec_size * 2, "particle_cdata");
+ vdata = MEM_callocN(tot_vec_size * 2, "particle_vdata");
break;
case PART_DRAW_BB:
if(create_cdata)
- cdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*4*3*sizeof(float), "particle_cdata");
- vdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*4*3*sizeof(float), "particle_vdata");
- ndata=MEM_callocN((totpart+totchild)*(path_nbr+1)*4*3*sizeof(float), "particle_vdata");
+ cdata = MEM_callocN(tot_vec_size * 4, "particle_cdata");
+ vdata = MEM_callocN(tot_vec_size * 4, "particle_vdata");
+ ndata = MEM_callocN(tot_vec_size * 4, "particle_vdata");
break;
default:
if(create_cdata)
- cdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*3*sizeof(float), "particle_cdata");
- vdata=MEM_callocN((totpart+totchild)*(path_nbr+1)*3*sizeof(float), "particle_vdata");
+ cdata=MEM_callocN(tot_vec_size, "particle_cdata");
+ vdata=MEM_callocN(tot_vec_size, "particle_vdata");
}
}
- if(part->draw&PART_DRAW_VEL && draw_as!=PART_DRAW_LINE)
- vedata=MEM_callocN((totpart+totchild)*2*3*(path_nbr+1)*sizeof(float), "particle_vedata");
+ if(part->draw & PART_DRAW_VEL && draw_as != PART_DRAW_LINE)
+ vedata = MEM_callocN(tot_vec_size * 2, "particle_vedata");
vd=vdata;
ved=vedata;
@@ -3046,6 +3040,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
if(draw_as){
/* 5. */
for(a=0,pa=pars; a<totpart+totchild; a++, pa++){
+ /* setup per particle individual stuff */
if(a<totpart){
if(totchild && (part->draw&PART_DRAW_PARENT)==0) continue;
if(pa->flag & PARS_NO_DISP || pa->flag & PARS_UNEXIST) continue;
@@ -3085,11 +3080,6 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
}
r_tilt=1.0f+pa->r_ave[0];
-
- if(path_nbr){
- cache=psys->pathcache[a];
- k_max=(int)(cache->steps);
- }
}
else{
ChildParticle *cpa= &psys->child[a-totpart];
@@ -3119,47 +3109,23 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
pa_size=psys_get_child_size(psys,cpa,cfra,0);
r_tilt=2.0f*cpa->rand[2];
- if(path_nbr){
- cache=psys->childcache[a-totpart];
- k_max=(int)(cache->steps);
- }
}
if(draw_as!=PART_DRAW_PATH){
- int next_pa=0;
- for(k=0; k<=path_nbr; k++){
- if(draw_keys){
- state.time=(float)k/(float)path_nbr;
- psys_get_particle_on_path(scene, ob, psys, a, &state,1);
- }
- else if(path_nbr){
- if(k<=k_max){
- VECCOPY(state.co,(cache+k)->co);
- VECCOPY(state.vel,(cache+k)->vel);
- QUATCOPY(state.rot,(cache+k)->rot);
- }
- else
- continue;
- }
- else{
- state.time=cfra;
- if(psys_get_particle_state(scene, ob, psys, a, &state,0)==0){
- next_pa=1;
- break;
- }
- }
-
+ state.time=cfra;
+ if(psys_get_particle_state(scene,ob,psys,a,&state,0)){
+ /* create actiual particle data */
switch(draw_as){
case PART_DRAW_DOT:
+ if(vd){
+ VECCOPY(vd,state.co) vd+=3;
+ }
if(cd) {
cd[0]=ma_r;
cd[1]=ma_g;
cd[2]=ma_b;
cd+=3;
}
- if(vd){
- VECCOPY(vd,state.co) vd+=3;
- }
break;
case PART_DRAW_CROSS:
case PART_DRAW_AXIS:
@@ -3242,59 +3208,15 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
cd[2]=cd[5]=cd[8]=cd[11]=ma_b;
cd+=12;
}
- if(part->draw&PART_DRAW_BB_LOCK && part->bb_align==PART_BB_VIEW){
- VECCOPY(xvec,bb_ob->obmat[0]);
- Normalize(xvec);
- VECCOPY(yvec,bb_ob->obmat[1]);
- Normalize(yvec);
- VECCOPY(zvec,bb_ob->obmat[2]);
- Normalize(zvec);
- }
- else if(part->bb_align==PART_BB_VEL){
- float temp[3];
- VECCOPY(temp,state.vel);
- Normalize(temp);
- VECSUB(zvec,bb_ob->obmat[3],state.co);
- if(part->draw&PART_DRAW_BB_LOCK){
- float fac=-Inpf(zvec,temp);
- VECADDFAC(zvec,zvec,temp,fac);
- }
- Normalize(zvec);
- Crossf(xvec,temp,zvec);
- Normalize(xvec);
- Crossf(yvec,zvec,xvec);
- }
- else{
- VECSUB(zvec,bb_ob->obmat[3],state.co);
- if(part->draw&PART_DRAW_BB_LOCK)
- zvec[part->bb_align]=0.0f;
- Normalize(zvec);
-
- if(part->bb_align<PART_BB_VIEW)
- Crossf(xvec,onevec,zvec);
- else
- Crossf(xvec,bb_ob->obmat[1],zvec);
- Normalize(xvec);
- Crossf(yvec,zvec,xvec);
- }
- VECCOPY(vec,xvec);
- VECCOPY(vec2,yvec);
-
- VecMulf(xvec,cos(part->bb_tilt*(1.0f-part->bb_rand_tilt*r_tilt)*(float)M_PI));
- VecMulf(vec2,sin(part->bb_tilt*(1.0f-part->bb_rand_tilt*r_tilt)*(float)M_PI));
- VECADD(xvec,xvec,vec2);
-
- VecMulf(yvec,cos(part->bb_tilt*(1.0f-part->bb_rand_tilt*r_tilt)*(float)M_PI));
- VecMulf(vec,-sin(part->bb_tilt*(1.0f-part->bb_rand_tilt*r_tilt)*(float)M_PI));
- VECADD(yvec,yvec,vec);
-
- VecMulf(xvec,pa_size);
- VecMulf(yvec,pa_size);
-
- VECADDFAC(bb_center,state.co,xvec,part->bb_offset[0]);
- VECADDFAC(bb_center,bb_center,yvec,part->bb_offset[1]);
+ bb.size = pa_size;
+ bb.tilt = part->bb_tilt * (1.0f - part->bb_rand_tilt * r_tilt);
+ bb.time = pa_time;
+ VECCOPY(bb.vec, state.co);
+ VECCOPY(bb.vel, state.vel);
+ psys_make_billboard(&bb, xvec, yvec, zvec, bb_center);
+
VECADD(vd,bb_center,xvec);
VECADD(vd,vd,yvec); vd+=3;
@@ -3314,6 +3236,10 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
break;
}
+ totpoint++;
+
+ /* additional things to draw for each particle */
+ /* (velocity, size and number) */
if(vedata){
VECCOPY(ved,state.co);
ved+=3;
@@ -3329,15 +3255,12 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
setlinestyle(0);
}
- totpoint++;
- }
- if(next_pa)
- continue;
- if(part->draw&PART_DRAW_NUM && !(G.f & G_RENDER_SHADOW)){
- /* in path drawing state.co is the end point */
- glRasterPos3f(state.co[0], state.co[1], state.co[2]);
- sprintf(val," %i",a);
- BMF_DrawString(G.font, val);
+ if(part->draw&PART_DRAW_NUM && !(G.f & G_RENDER_SHADOW)){
+ /* in path drawing state.co is the end point */
+ glRasterPos3f(state.co[0], state.co[1], state.co[2]);
+ sprintf(val," %i",a);
+ BMF_DrawString(G.font, val);
+ }
}
}
}
@@ -3346,51 +3269,39 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glGetIntegerv(GL_POLYGON_MODE, polygonmode);
glDisableClientState(GL_NORMAL_ARRAY);
- if(draw_as != PART_DRAW_CIRC){
- if(draw_as==PART_DRAW_PATH){
- ParticleCacheKey **cache, *path;
- float *cd2=0,*cdata2=0;
-
- glEnableClientState(GL_VERTEX_ARRAY);
-
- if(dt > OB_WIRE) {
- glEnableClientState(GL_NORMAL_ARRAY);
+ if(draw_as==PART_DRAW_PATH){
+ ParticleCacheKey **cache, *path;
+ float *cd2=0,*cdata2=0;
- if(part->draw&PART_DRAW_MAT_COL)
- glEnableClientState(GL_COLOR_ARRAY);
+ glEnableClientState(GL_VERTEX_ARRAY);
- glEnable(GL_LIGHTING);
- glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
- glEnable(GL_COLOR_MATERIAL);
- }
- else {
- glDisableClientState(GL_NORMAL_ARRAY);
+ /* setup gl flags */
+ if(dt > OB_WIRE) {
+ glEnableClientState(GL_NORMAL_ARRAY);
- glDisable(GL_COLOR_MATERIAL);
- glDisable(GL_LIGHTING);
- UI_ThemeColor(TH_WIRE);
- }
+ if(part->draw&PART_DRAW_MAT_COL)
+ glEnableClientState(GL_COLOR_ARRAY);
- if(totchild && (part->draw&PART_DRAW_PARENT)==0)
- totpart=0;
+ glEnable(GL_LIGHTING);
+ glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE);
+ glEnable(GL_COLOR_MATERIAL);
+ }
+ else {
+ glDisableClientState(GL_NORMAL_ARRAY);
- cache=psys->pathcache;
- for(a=0, pa=psys->particles; a<totpart; a++, pa++){
- path=cache[a];
- glVertexPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->co);
+ glDisable(GL_COLOR_MATERIAL);
+ glDisable(GL_LIGHTING);
+ UI_ThemeColor(TH_WIRE);
+ }
- if(dt > OB_WIRE) {
- glNormalPointer(GL_FLOAT, sizeof(ParticleCacheKey), path->vel);
- if(part->draw&PART_DRAW_MAT_COL)
- glColorPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->col);
- }
+ if(totchild && (part->draw&PART_DRAW_PARENT)==0)
+ totpart=0;
- glDrawArrays(GL_LINE_STRIP, 0, path->steps + 1);
- }
-
- cache=psys->childcache;
- for(a=0; a<totchild; a++){
- path=cache[a];
+ /* draw actual/parent particles */
+ cache=psys->pathcache;
+ for(a=0, pa=psys->particles; a<totpart; a++, pa++){
+ path=cache[a];
+ if(path->steps > 0) {
glVertexPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->co);
if(dt > OB_WIRE) {
@@ -3401,68 +3312,85 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv
glDrawArrays(GL_LINE_STRIP, 0, path->steps + 1);
}
+ }
+
+ /* draw child particles */
+ cache=psys->childcache;
+ for(a=0; a<totchild; a++){
+ path=cache[a];
+ glVertexPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->co);
if(dt > OB_WIRE) {
+ glNormalPointer(GL_FLOAT, sizeof(ParticleCacheKey), path->vel);
if(part->draw&PART_DRAW_MAT_COL)
- glDisable(GL_COLOR_ARRAY);
- glDisable(GL_COLOR_MATERIAL);
+ glColorPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->col);
}
- if(cdata2)
- MEM_freeN(cdata2);
- cd2=cdata2=0;
+ glDrawArrays(GL_LINE_STRIP, 0, path->steps + 1);
+ }
- glLineWidth(1.0f);
- /* draw particle edit mode key points*/
+ /* restore & clean up */
+ if(dt > OB_WIRE) {
+ if(part->draw&PART_DRAW_MAT_COL)
+ glDisable(GL_COLOR_ARRAY);
+ glDisable(GL_COLOR_MATERIAL);
}
- if(draw_as!=PART_DRAW_PATH){
- glDisableClientState(GL_COLOR_ARRAY);
+ if(cdata2)
+ MEM_freeN(cdata2);
+ cd2=cdata2=0;
- if(vdata){
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(3, GL_FLOAT, 0, vdata);
- }
- else
- glDisableClientState(GL_VERTEX_ARRAY);
+ glLineWidth(1.0f);
+ }
+ else if(draw_as!=PART_DRAW_CIRC){
+ glDisableClientState(GL_COLOR_ARRAY);
- if(ndata && dt>OB_WIRE){
- glEnableClientState(GL_NORMAL_ARRAY);
- glNormalPointer(GL_FLOAT, 0, ndata);
- glEnable(GL_LIGHTING);
- }
- else{
- glDisableClientState(GL_NORMAL_ARRAY);
- glDisable(GL_LIGHTING);
- }
+ /* setup created data arrays */
+ if(vdata){
+ glEnableClientState(GL_VERTEX_ARRAY);
+ glVertexPointer(3, GL_FLOAT, 0, vdata);
+ }
+ else
+ glDisableClientState(GL_VERTEX_ARRAY);
- if(cdata){
- glEnableClientState(GL_COLOR_ARRAY);
- glColorPointer(3, GL_FLOAT, 0, cdata);
- }
+ if(ndata && dt>OB_WIRE){
+ glEnableClientState(GL_NORMAL_ARRAY);
+ glNormalPointer(GL_FLOAT, 0, ndata);
+ glEnable(GL_LIGHTING);
+ }
+ else{
+ glDisableClientState(GL_NORMAL_ARRAY);
+ glDisable(GL_LIGHTING);
+ }
- switch(draw_as){
- case PART_DRAW_AXIS:
- case PART_DRAW_CROSS:
- glDrawArrays(GL_LINES, 0, 6*totpoint);
- break;
- case PART_DRAW_LINE:
- glDrawArrays(GL_LINES, 0, 2*totpoint);
- break;
- case PART_DRAW_BB:
- if(dt<=OB_WIRE)
- glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
-
- glDrawArrays(GL_QUADS, 0, 4*totpoint);
- break;
- default:
- glDrawArrays(GL_POINTS, 0, totpoint);
- break;
- }
+ if(cdata){
+ glEnableClientState(GL_COLOR_ARRAY);
+ glColorPointer(3, GL_FLOAT, 0, cdata);
}
+
+ /* draw created data arrays */
+ switch(draw_as){
+ case PART_DRAW_AXIS:
+ case PART_DRAW_CROSS:
+ glDrawArrays(GL_LINES, 0, 6*totpoint);
+ break;
+ case PART_DRAW_LINE:
+ glDrawArrays(GL_LINES, 0, 2*totpoint);
+ break;
+ case PART_DRAW_BB:
+ if(dt<=OB_WIRE)
+ glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
+
+ glDrawArrays(GL_QUADS, 0, 4*totpoint);
+ break;
+ default:
+ glDrawArrays(GL_POINTS, 0, totpoint);
+ break;
+ }
}
+
if(vedata){
glDisableClientState(GL_COLOR_ARRAY);
cpack(0xC0C0C0);
@@ -3705,7 +3633,7 @@ static void tekenhandlesN(Nurb *nu, short sel)
glBegin(GL_LINES);
- if( (nu->type & 7)==1) {
+ if( (nu->type & 7)==CU_BEZIER) {
if(sel) col= nurbcol+4;
else col= nurbcol;
@@ -3762,7 +3690,7 @@ static void tekenvertsN(Nurb *nu, short sel)
bglBegin(GL_POINTS);
- if((nu->type & 7)==1) {
+ if((nu->type & 7)==CU_BEZIER) {
bezt= nu->bezt;
a= nu->pntsu;
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index 94d53a64f32..9a9786cebff 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -63,6 +63,7 @@
#include "BKE_customdata.h"
#include "BKE_depsgraph.h"
#include "BKE_idprop.h"
+#include "BKE_mesh.h"
#include "BKE_object.h"
#include "BKE_global.h"
#include "BKE_scene.h"
@@ -404,7 +405,7 @@ static void v3d_editvertex_buts(const bContext *C, uiBlock *block, View3D *v3d,
nu= cu->editnurb->first;
while(nu) {
- if((nu->type & 7)==1) {
+ if((nu->type & 7)==CU_BEZIER) {
bezt= nu->bezt;
a= nu->pntsu;
while(a--) {
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 57d227f33bf..36490650415 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -3865,7 +3865,7 @@ static void do_view3d_pose_armature_transformmenu(bContext *C, void *arg, int ev
{
#if 0
Scene *scene= CTX_data_scene(C);
- Object *ob= OBACT;
+ Object *ob= CTX_data_active_object(C);
switch(event) {
case 0: /* clear origin */
@@ -3881,9 +3881,7 @@ static void do_view3d_pose_armature_transformmenu(bContext *C, void *arg, int ev
clear_object('g');
break;
case 4: /* clear user transform */
- rest_pose(ob->pose);
- DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
- ED_undo_push(C, "Pose, Clear User Transform");
+ clear_user_transform(scene, ob);
break;
}
#endif
@@ -5466,6 +5464,10 @@ void view3d_header_buttons(const bContext *C, ARegion *ar)
xco+= XIC;
uiDefIconButBitS(block, TOG, SCE_SNAP_ROTATE, B_REDR, ICON_SNAP_NORMAL,xco,yco,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Align rotation with the snapping target");
xco+= XIC;
+ if (scene->snap_mode == SCE_SNAP_MODE_VOLUME) {
+ uiDefIconButBitS(block, TOG, SCE_SNAP_PEEL_OBJECT, B_REDR, 0 /* XXX 2.5 ICON_SNAP_PEEL_OBJECT */,xco,0,XIC,YIC, &scene->snap_flag, 0, 0, 0, 0, "Consider objects as whole when finding volume center");
+ xco+= XIC;
+ }
uiDefIconTextButS(block, ICONTEXTROW,B_REDR, ICON_SNAP_VERTEX, snapmode_pup(), xco,yco,XIC+10,YIC, &(scene->snap_mode), 0.0, 0.0, 0, 0, "Snapping mode");
xco+= XIC;
uiDefButS(block, MENU, B_NOP, "Snap Mode%t|Closest%x0|Center%x1|Median%x2|Active%x3",xco,yco,70,YIC, &scene->snap_target, 0, 0, 0, 0, "Snap Target Mode");
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index dfbc22b1e14..4ac82fcd73f 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -83,8 +83,8 @@ typedef struct TransSnap {
short mode;
short align;
short status;
- float snapPoint[3];
- float snapTarget[3];
+ float snapPoint[3]; /* snapping from this point */
+ float snapTarget[3]; /* to this point */
float snapNormal[3];
float snapTangent[3];
float dist; // Distance from snapPoint to snapTarget
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index dc32a46a301..72901110388 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -554,13 +554,13 @@ void CalcSnapGeometry(TransInfo *t, float *vec)
peelObjectsTransForm(t, &depth_peels, t->mval);
-// if (stk->nb_points > 0 && stk->points[stk->nb_points - 1].type == PT_CONTINUOUS)
+// if (LAST_SNAP_POINT_VALID)
// {
-// last_p = stk->points[stk->nb_points - 1].p;
+// last_p = LAST_SNAP_POINT;
// }
-// else if (LAST_SNAP_POINT_VALID)
+// else
// {
-// last_p = LAST_SNAP_POINT;
+ last_p = t->tsnap.snapPoint;
// }
@@ -1617,13 +1617,26 @@ int peelObjects(Scene *scene, View3D *v3d, ARegion *ar, Object *obedit, ListBase
Object *ob = dupli_ob->ob;
if (ob->type == OB_MESH) {
- DerivedMesh *dm;
+ EditMesh *em;
+ DerivedMesh *dm = NULL;
int val;
-
- val = peelDerivedMesh(ob, dm, dupli_ob->mat, ray_start, ray_normal, mval, depth_peels);
-
+
+ if (ob != obedit)
+ {
+ dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
+
+ val = peelDerivedMesh(ob, dm, ob->obmat, ray_start, ray_normal, mval, depth_peels);
+ }
+ else
+ {
+ em = ((Mesh *)ob->data)->edit_mesh;
+ dm = editmesh_get_derived_cage(scene, obedit, em, CD_MASK_BAREMESH);
+
+ val = peelDerivedMesh(ob, dm, ob->obmat, ray_start, ray_normal, mval, depth_peels);
+ }
+
retval = retval || val;
-
+
dm->release(dm);
}
}
diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c
index 7b5a264a440..aded5a4cff9 100644
--- a/source/blender/editors/uvedit/uvedit_draw.c
+++ b/source/blender/editors/uvedit/uvedit_draw.c
@@ -38,6 +38,7 @@
#include "BKE_customdata.h"
#include "BKE_DerivedMesh.h"
+#include "BKE_mesh.h"
#include "BKE_object.h"
#include "BKE_utildefines.h"
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c
index 0fcd0062044..5cc471ebc22 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.c
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.c
@@ -4311,8 +4311,8 @@ void param_smooth_area(ParamHandle *handle)
}
}
-void param_pack(ParamHandle *handle)
-{
+void param_pack(ParamHandle *handle, float margin)
+{
/* box packing variables */
boxPack *boxarray, *box;
float tot_width, tot_height, scale;
@@ -4320,6 +4320,7 @@ void param_pack(ParamHandle *handle)
PChart *chart;
int i, unpacked=0;
float trans[2];
+ double area= 0.0;
PHandle *phandle = (PHandle*)handle;
@@ -4332,6 +4333,7 @@ void param_pack(ParamHandle *handle)
/* we may not use all these boxes */
boxarray = MEM_mallocN( phandle->ncharts*sizeof(boxPack), "boxPack box");
+
for (i = 0; i < phandle->ncharts; i++) {
chart = phandle->charts[i];
@@ -4352,6 +4354,32 @@ void param_pack(ParamHandle *handle)
box->w = chart->u.pack.size[0] + trans[0];
box->h = chart->u.pack.size[1] + trans[1];
box->index = i; /* warning this index skips PCHART_NOPACK boxes */
+
+ if(margin>0.0f)
+ area += sqrt(box->w*box->h);
+ }
+
+ if(margin>0.0f) {
+ /* multiply the margin by the area to give pradictable results not dependant on UV scale,
+ * ...Without using the area running pack multiple times also gives a bad feedback loop.
+ * multiply by 0.1 so the margin value from the UI can be from 0.0 to 1.0 but not give a massive margin */
+ margin = (margin*(float)area) * 0.1;
+ unpacked= 0;
+ for (i = 0; i < phandle->ncharts; i++) {
+ chart = phandle->charts[i];
+
+ if (chart->flag & PCHART_NOPACK) {
+ unpacked++;
+ continue;
+ }
+
+ box = boxarray+(i-unpacked);
+ trans[0] = margin * area;
+ trans[1] = margin * area;
+ p_chart_uv_translate(chart, trans);
+ box->w += (margin * area) *2;
+ box->h += (margin * area) *2;
+ }
}
boxPack2D(boxarray, phandle->ncharts-unpacked, &tot_width, &tot_height);
diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.h b/source/blender/editors/uvedit/uvedit_parametrizer.h
index c468b8d62c5..f1454ee3865 100644
--- a/source/blender/editors/uvedit/uvedit_parametrizer.h
+++ b/source/blender/editors/uvedit/uvedit_parametrizer.h
@@ -73,7 +73,7 @@ void param_smooth_area(ParamHandle *handle);
/* Packing */
-void param_pack(ParamHandle *handle);
+void param_pack(ParamHandle *handle, float margin);
/* Average area for all charts */
diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
index e9dd1969ee2..4d12700d98c 100644
--- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c
+++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c
@@ -409,7 +409,7 @@ static int pack_islands_exec(bContext *C, wmOperator *op)
ParamHandle *handle;
handle = construct_param_handle(scene, em, 1, 0, 1, 1);
- param_pack(handle);
+ param_pack(handle, scene->toolsettings->uvcalc_margin);
param_flush(handle);
param_delete(handle);
@@ -804,7 +804,7 @@ static int unwrap_exec(bContext *C, wmOperator *op)
param_lscm_solve(handle);
param_lscm_end(handle);
- param_pack(handle);
+ param_pack(handle, scene->toolsettings->uvcalc_margin);
param_flush(handle);
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c
index 7f5f85e23a6..0e123d872fe 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -83,7 +83,18 @@ void GPU_render_text(MTFace *tface, int mode,
Image* ima;
int characters, index, character;
float centerx, centery, sizex, sizey, transx, transy, movex, movey, advance;
-
+ float advance_tab;
+
+
+ /* multiline */
+ float line_start= 0.0f, line_height;
+ if (v4)
+ line_height= MAX4(v1[1], v2[1], v3[1], v4[2]) - MIN4(v1[1], v2[1], v3[1], v4[2]);
+ else
+ line_height= MAX3(v1[1], v2[1], v3[1]) - MIN3(v1[1], v2[1], v3[1]);
+ line_height *= 1.2; /* could be an option? */
+ /* end multiline */
+
characters = textlen;
ima = (Image*)tface->tpage;
@@ -97,12 +108,32 @@ void GPU_render_text(MTFace *tface, int mode,
glColor3f(1.0f, 1.0f, 1.0f);
glPushMatrix();
+
+ /* get the tab width */
+ matrixGlyph((ImBuf *)ima->ibufs.first, ' ', & centerx, &centery,
+ &sizex, &sizey, &transx, &transy, &movex, &movey, &advance);
+
+ advance_tab= advance * 4; /* tab width could also be an option */
+
+
for (index = 0; index < characters; index++) {
float uv[4][2];
// lets calculate offset stuff
character = textstr[index];
+ if (character=='\n') {
+ glTranslatef(line_start, -line_height, 0.0);
+ line_start = 0.0f;
+ continue;
+ }
+ else if (character=='\t') {
+ glTranslatef(advance_tab, 0.0, 0.0);
+ line_start -= advance_tab; /* so we can go back to the start of the line */
+ continue;
+
+ }
+
// space starts at offset 1
// character = character - ' ' + 1;
matrixGlyph((ImBuf *)ima->ibufs.first, character, & centerx, &centery,
@@ -143,6 +174,7 @@ void GPU_render_text(MTFace *tface, int mode,
glEnd();
glTranslatef(advance, 0.0, 0.0);
+ line_start -= advance; /* so we can go back to the start of the line */
}
glPopMatrix();
}
diff --git a/source/blender/imbuf/intern/IMB_anim.h b/source/blender/imbuf/intern/IMB_anim.h
index 745248d3218..7e99df8237a 100644
--- a/source/blender/imbuf/intern/IMB_anim.h
+++ b/source/blender/imbuf/intern/IMB_anim.h
@@ -76,9 +76,9 @@
#endif /* WITH_QUICKTIME */
#ifdef WITH_FFMPEG
-#include <ffmpeg/avformat.h>
-#include <ffmpeg/avcodec.h>
-#include <ffmpeg/swscale.h>
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#include <libswscale/swscale.h>
#endif
#ifdef WITH_REDCODE
diff --git a/source/blender/imbuf/intern/IMB_jp2.h b/source/blender/imbuf/intern/IMB_jp2.h
index fcdd4589fca..abc6b78357c 100644
--- a/source/blender/imbuf/intern/IMB_jp2.h
+++ b/source/blender/imbuf/intern/IMB_jp2.h
@@ -1,7 +1,7 @@
/*
* IMB_jp2.h
*
- * $Id: IMB_bmp.h 14444 2008-04-16 22:40:48Z hos $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/imbuf/intern/anim.c b/source/blender/imbuf/intern/anim.c
index 9d70dd3fc60..30f24d9bbf3 100644
--- a/source/blender/imbuf/intern/anim.c
+++ b/source/blender/imbuf/intern/anim.c
@@ -83,10 +83,10 @@
#include "IMB_anim5.h"
#ifdef WITH_FFMPEG
-#include <ffmpeg/avformat.h>
-#include <ffmpeg/avcodec.h>
-#include <ffmpeg/rational.h>
-#include <ffmpeg/swscale.h>
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#include <libavutil/rational.h>
+#include <libswscale/swscale.h>
#if LIBAVFORMAT_VERSION_INT < (49 << 16)
#define FFMPEG_OLD_FRAME_RATE 1
diff --git a/source/blender/imbuf/intern/anim5.c b/source/blender/imbuf/intern/anim5.c
index ab203fe80de..b6f29b6a145 100644
--- a/source/blender/imbuf/intern/anim5.c
+++ b/source/blender/imbuf/intern/anim5.c
@@ -425,7 +425,7 @@ int startanim5(struct anim * anim) {
/* de hele file wordt in het geheugen gemapped */
totlen = BLI_filesize(file);
- if (totlen && file>=0) {
+ if (totlen>0 && file>=0) {
lseek(file, 0L, SEEK_SET);
mem= MEM_mallocN(totlen, "mmap");
diff --git a/source/blender/imbuf/intern/dds/Makefile b/source/blender/imbuf/intern/dds/Makefile
index 28f9e24c947..e14f9320d19 100644
--- a/source/blender/imbuf/intern/dds/Makefile
+++ b/source/blender/imbuf/intern/dds/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile 7037 2006-03-12 14:11:23Z ton $
+# $Id$
#
# ***** BEGIN GPL LICENSE BLOCK *****
#
diff --git a/source/blender/imbuf/intern/scaling.c b/source/blender/imbuf/intern/scaling.c
index 8257eb4643e..807b0c84e90 100644
--- a/source/blender/imbuf/intern/scaling.c
+++ b/source/blender/imbuf/intern/scaling.c
@@ -299,7 +299,6 @@ struct ImBuf *IMB_onehalf(struct ImBuf *ibuf1)
if (ibuf1->rect==NULL && ibuf1->rect_float==NULL) return (0);
do_rect= (ibuf1->rect != NULL);
- do_float= (ibuf1->rect_float != NULL);
if (ibuf1->x <= 1) return(IMB_half_y(ibuf1));
if (ibuf1->y <= 1) return(IMB_half_x(ibuf1));
@@ -312,6 +311,8 @@ struct ImBuf *IMB_onehalf(struct ImBuf *ibuf1)
p1 = (uchar *) ibuf1->rect;
dest=(uchar *) ibuf2->rect;
+ do_float= (ibuf1->rect_float != NULL && ibuf2->rect_float != NULL);
+
for(y=ibuf2->y;y>0;y--){
if (do_rect) p2 = p1 + (ibuf1->x << 2);
if (do_float) p2f = p1f + (ibuf1->x << 2);
diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c
index 15d1d031dbd..ffd5d3431af 100644
--- a/source/blender/imbuf/intern/util.c
+++ b/source/blender/imbuf/intern/util.c
@@ -73,10 +73,10 @@
#endif
#ifdef WITH_FFMPEG
-#include <ffmpeg/avcodec.h>
-#include <ffmpeg/avformat.h>
-#include <ffmpeg/avdevice.h>
-#include <ffmpeg/log.h>
+#include <libavcodec/avcodec.h>
+#include <libavformat/avformat.h>
+#include <libavdevice/avdevice.h>
+#include <libavutil/log.h>
#if LIBAVFORMAT_VERSION_INT < (49 << 16)
#define FFMPEG_OLD_FRAME_RATE 1
diff --git a/source/blender/makesdna/DNA_actuator_types.h b/source/blender/makesdna/DNA_actuator_types.h
index 48432b8c6e2..aeabae42adf 100644
--- a/source/blender/makesdna/DNA_actuator_types.h
+++ b/source/blender/makesdna/DNA_actuator_types.h
@@ -195,7 +195,8 @@ typedef struct bGameActuator {
typedef struct bVisibilityActuator {
/** bit 0: Is this object visible?
- ** bit 1: Apply recursively */
+ ** bit 1: Apply recursively
+ ** bit 2: Is this object an occluder? */
int flag;
} bVisibilityActuator;
@@ -357,6 +358,7 @@ typedef struct FreeCamera {
#define ACT_PROP_ASSIGN 0
#define ACT_PROP_ADD 1
#define ACT_PROP_COPY 2
+#define ACT_PROP_TOGGLE 3
/* constraint flag */
#define ACT_CONST_LOCX 1
@@ -457,6 +459,7 @@ typedef struct FreeCamera {
/* Set means the object will become invisible */
#define ACT_VISIBILITY_INVISIBLE (1 << 0)
#define ACT_VISIBILITY_RECURSIVE (1 << 1)
+#define ACT_VISIBILITY_OCCLUSION (1 << 2)
/* twodfilter->type */
#define ACT_2DFILTER_ENABLED -2
diff --git a/source/blender/makesdna/DNA_cloth_types.h b/source/blender/makesdna/DNA_cloth_types.h
index d091ab3d335..33984582d7f 100644
--- a/source/blender/makesdna/DNA_cloth_types.h
+++ b/source/blender/makesdna/DNA_cloth_types.h
@@ -1,5 +1,5 @@
/**
-* $Id: DNA_cloth_types.h,v 1.1 2007/08/01 02:28:34 daniel Exp $
+* $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h
index fe19cf60f12..79f032d0d21 100644
--- a/source/blender/makesdna/DNA_constraint_types.h
+++ b/source/blender/makesdna/DNA_constraint_types.h
@@ -317,6 +317,15 @@ typedef struct bDistLimitConstraint {
int pad;
} bDistLimitConstraint;
+typedef struct bShrinkwrapConstraint {
+ Object *target;
+ float dist; /* distance to kept from target */
+ short shrinkType; /* shrink type (look on MOD shrinkwrap for values) */
+ char projAxis; /* axis to project over UP_X, UP_Y, UP_Z */
+ char pad[9];
+} bShrinkwrapConstraint;
+
+
/* ------------------------------------------ */
/* bConstraint->type
@@ -344,10 +353,11 @@ typedef enum B_CONSTAINT_TYPES {
CONSTRAINT_TYPE_RIGIDBODYJOINT, /* rigidbody constraint */
CONSTRAINT_TYPE_CLAMPTO, /* clampto constraint */
CONSTRAINT_TYPE_TRANSFORM, /* transformation (loc/rot/size -> loc/rot/size) constraint */
+ CONSTRAINT_TYPE_SHRINKWRAP, /* shrinkwrap (loc/rot) constraint */
/* NOTE: everytime a new constraint is added, update this */
- NUM_CONSTRAINT_TYPES= CONSTRAINT_TYPE_TRANSFORM
+ NUM_CONSTRAINT_TYPES= CONSTRAINT_TYPE_SHRINKWRAP
} B_CONSTRAINT_TYPES;
/* bConstraint->flag */
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 68d68d79db9..76f6b980aa2 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -40,6 +40,7 @@ typedef enum ModifierType {
eModifierType_Mask,
eModifierType_SimpleDeform,
eModifierType_Multires,
+ eModifierType_Surface,
NUM_MODIFIER_TYPES
} ModifierType;
@@ -423,6 +424,14 @@ typedef struct CollisionModifierData {
struct BVHTree *bvhtree; /* bounding volume hierarchy for this cloth object */
} CollisionModifierData;
+typedef struct SurfaceModifierData {
+ ModifierData modifier;
+
+ struct DerivedMesh *dm;
+
+ struct BVHTreeFromMesh *bvhtree; /* bounding volume hierarchy of the mesh faces */
+} SurfaceModifierData;
+
typedef enum {
eBooleanModifierOp_Intersect,
eBooleanModifierOp_Union,
diff --git a/source/blender/makesdna/DNA_object_fluidsim.h b/source/blender/makesdna/DNA_object_fluidsim.h
index 13984120d90..66c5baab84b 100644
--- a/source/blender/makesdna/DNA_object_fluidsim.h
+++ b/source/blender/makesdna/DNA_object_fluidsim.h
@@ -1,6 +1,6 @@
/**
*
- * $Id:
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h
index 21c5242a703..49435000820 100644
--- a/source/blender/makesdna/DNA_object_force.h
+++ b/source/blender/makesdna/DNA_object_force.h
@@ -225,6 +225,7 @@ typedef struct SoftBody {
#define PFIELD_USEMAXR 512
#define PFIELD_USEMINR 1024
#define PFIELD_TEX_ROOTCO 2048
+#define PFIELD_SURFACE 4096
/* pd->falloff */
#define PFIELD_FALL_SPHERE 0
diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h
index 64e335fb3ad..60ca659c19c 100644
--- a/source/blender/makesdna/DNA_object_types.h
+++ b/source/blender/makesdna/DNA_object_types.h
@@ -159,7 +159,9 @@ typedef struct Object {
float formfactor;
float rdamping, sizefac;
float margin;
- int pad3;
+ float max_vel; /* clamp the maximum velocity 0.0 is disabled */
+ float min_vel; /* clamp the maximum velocity 0.0 is disabled */
+ float pad3; /* clamp the maximum velocity 0.0 is disabled */
char dt, dtx;
char totcol; /* copy of mesh or curve or meta */
@@ -424,6 +426,7 @@ extern Object workob;
#define OB_COLLISION 65536
#define OB_SOFT_BODY 0x20000
+#define OB_OCCLUDER 0x40000
/* ob->gameflag2 */
#define OB_NEVER_DO_ACTIVITY_CULLING 1
@@ -442,6 +445,7 @@ extern Object workob;
#define OB_BODY_TYPE_DYNAMIC 2
#define OB_BODY_TYPE_RIGID 3
#define OB_BODY_TYPE_SOFT 4
+#define OB_BODY_TYPE_OCCLUDER 5
/* ob->scavisflag */
#define OB_VIS_SENS 1
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 2e232c2e1d4..575fcfd8ac7 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -1,7 +1,7 @@
/* DNA_particle_types.h
*
*
- * $Id: DNA_particle_types.h $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -305,7 +305,7 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
#define PART_DRAW_ANG 2
#define PART_DRAW_SIZE 4
#define PART_DRAW_EMITTER 8 /* render emitter also */
-#define PART_DRAW_KEYS 16
+//#define PART_DRAW_KEYS 16 /* not used anywhere */
#define PART_DRAW_ADAPT 32
#define PART_DRAW_COS 64
#define PART_DRAW_BB_LOCK 128
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 90b1ec7c9be..6f88a98fee8 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -45,6 +45,7 @@ struct World;
struct Scene;
struct Image;
struct Group;
+struct Text;
struct bNodeTree;
struct AnimData;
@@ -316,6 +317,14 @@ typedef struct RenderData {
/* jpeg2000 */
short jp2_preset, jp2_depth;
int rpad3;
+
+ /* Dome variables */
+ short domeres, domemode;
+ short domeangle, pad9;
+ float domesize;
+ float domeresbuf;
+ struct Text *dometext;
+
} RenderData;
/* control render convert and shading engine */
@@ -453,6 +462,8 @@ typedef struct ToolSettings {
short unwrapper;
float uvcalc_radius;
float uvcalc_cubesize;
+ float uvcalc_margin;
+ float pad;
short uvcalc_mapdir;
short uvcalc_mapalign;
short uvcalc_flag;
diff --git a/source/blender/makesdna/DNA_sensor_types.h b/source/blender/makesdna/DNA_sensor_types.h
index 2cae2cc8ccb..7a358ad0694 100644
--- a/source/blender/makesdna/DNA_sensor_types.h
+++ b/source/blender/makesdna/DNA_sensor_types.h
@@ -166,7 +166,8 @@ typedef struct bJoystickSensor {
char type;
char joyindex;
short flag;
- int axis;
+ short axis;
+ short axis_single;
int axisf;
int button;
int hat;
@@ -255,20 +256,22 @@ typedef struct bJoystickSensor {
#define SENS_JOY_ANY_EVENT 1
-#define SENS_JOY_BUTTON 0
+#define SENS_JOY_BUTTON 0 /* axis type */
#define SENS_JOY_BUTTON_PRESSED 0
#define SENS_JOY_BUTTON_RELEASED 1
-#define SENS_JOY_AXIS 1
+#define SENS_JOY_AXIS 1 /* axis type */
#define SENS_JOY_X_AXIS 0
#define SENS_JOY_Y_AXIS 1
#define SENS_JOY_NEG_X_AXIS 2
#define SENS_JOY_NEG_Y_AXIS 3
#define SENS_JOY_PRECISION 4
-#define SENS_JOY_HAT 2
+#define SENS_JOY_HAT 2 /* axis type */
#define SENS_JOY_HAT_DIR 0
+#define SENS_JOY_AXIS_SINGLE 3 /* axis type */
+
#define SENS_DELAY_REPEAT 1
// should match JOYINDEX_MAX in SCA_JoystickDefines.h */
diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h
index 3fd6642df8a..8216a0fb800 100644
--- a/source/blender/makesdna/DNA_world_types.h
+++ b/source/blender/makesdna/DNA_world_types.h
@@ -86,9 +86,12 @@ typedef struct World {
* bit 1: Do stars
* bit 2: (reserved) depth of field
* bit 3: (gameengine): Activity culling is enabled.
+ * bit 4: ambient occlusion
+ * bit 5: (gameengine) : enable Bullet DBVT tree for view frustrum culling
*/
short mode;
- int physicsEngine; /* here it's aligned */
+ short occlusionRes; /* resolution of occlusion Z buffer in pixel */
+ short physicsEngine; /* here it's aligned */
float misi, miststa, mistdist, misthi;
@@ -139,6 +142,7 @@ typedef struct World {
#define WO_DOF 4
#define WO_ACTIVITY_CULLING 8
#define WO_AMB_OCC 16
+#define WO_DBVT_CULLING 32
/* aomix */
#define WO_AOADD 0
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index 7de0b4e3400..2b65f890bd2 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -599,11 +599,6 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_EMITTER);
RNA_def_property_ui_text(prop, "Emitter", "Render emitter Object also.");
- //could not find this one in the UI - should this be read only?
- prop= RNA_def_property(srna, "keys", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_KEYS);
- RNA_def_property_ui_text(prop, "Keys", "");
-
/* used?
prop= RNA_def_property(srna, "adapt", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_ADAPT);
diff --git a/source/blender/nodes/SConscript b/source/blender/nodes/SConscript
index 4859bbb550f..a9f303c8dd3 100644
--- a/source/blender/nodes/SConscript
+++ b/source/blender/nodes/SConscript
@@ -17,29 +17,31 @@ incs += ' ../gpu #/extern/glew/include '
incs += ' ' + env['BF_OPENGL_INC']
incs += ' ' + env['BF_ZLIB_INC']
-defs = ''
+defs = []
if env['WITH_BF_PYTHON']:
- incs += ' ' + env['BF_PYTHON_INC']
- incs += ' ../python'
+ incs += ' ' + env['BF_PYTHON_INC']
+ incs += ' ../python'
+ if env['BF_DEBUG']:
+ defs.append('_DEBUG')
else:
- defs += 'DISABLE_PYTHON'
+ defs.append('DISABLE_PYTHON')
if env['WITH_BF_INTERNATIONAL']:
- defs += ' WITH_FREETYPE2'
+ defs.append('WITH_FREETYPE2')
if env['WITH_BF_OPENEXR']:
- defs += ' WITH_OPENEXR'
+ defs.append('WITH_OPENEXR')
if env['WITH_BF_FFMPEG']:
- defs += ' WITH_FFMPEG'
- incs += ' ' + env['BF_FFMPEG_INC']
+ defs.append('WITH_FFMPEG')
+ incs += ' ' + env['BF_FFMPEG_INC']
if env['WITH_BF_QUICKTIME']:
- defs += ' WITH_QUICKTIME'
- incs += ' ' + env['BF_QUICKTIME_INC']
+ defs.append('WITH_QUICKTIME')
+ incs += ' ' + env['BF_QUICKTIME_INC']
-env.BlenderLib ( libname = 'bf_nodes', sources = sources, includes = Split(incs), defines = Split(defs), libtype=['core'], priority = [190] )
-env.BlenderLib ( libname = 'bf_cmpnodes', sources = cmpsources, includes = Split(incs), defines = Split(defs), libtype=['core'], priority = [175] )
-env.BlenderLib ( libname = 'bf_shdnodes', sources = shdsources, includes = Split(incs), defines = Split(defs), libtype=['core'], priority = [175] )
-env.BlenderLib ( libname = 'bf_texnodes', sources = texsources, includes = Split(incs), defines = Split(defs), libtype=['core'], priority = [175] )
+env.BlenderLib ( libname = 'bf_nodes', sources = sources, includes = Split(incs), defines = defs, libtype=['core'], priority = [190] )
+env.BlenderLib ( libname = 'bf_cmpnodes', sources = cmpsources, includes = Split(incs), defines = defs, libtype=['core'], priority = [175] )
+env.BlenderLib ( libname = 'bf_shdnodes', sources = shdsources, includes = Split(incs), defines = defs, libtype=['core'], priority = [175] )
+env.BlenderLib ( libname = 'bf_texnodes', sources = texsources, includes = Split(incs), defines = defs, libtype=['core'], priority = [175] )
diff --git a/source/blender/nodes/TEX_node.h b/source/blender/nodes/TEX_node.h
index c52fc757507..d298f062143 100644
--- a/source/blender/nodes/TEX_node.h
+++ b/source/blender/nodes/TEX_node.h
@@ -1,5 +1,5 @@
/**
- * $Id: CMP_node.h 12429 2007-10-29 14:37:19Z bebraw $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c b/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
index a62e4be4015..846aec490c2 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_normalize.c
@@ -1,5 +1,5 @@
/**
- * $Id: CMP_normalize.c,v 1.0 2007/03/24 06:57:29 scourage Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
index 4fcfe3a789a..fedca8f9086 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c
@@ -345,7 +345,11 @@ static void node_dynamic_pyerror_print(bNode *node)
PyGILState_STATE gilstate = PyGILState_Ensure();
fprintf(stderr, "\nError in dynamic node script \"%s\":\n", node->name);
- if (PyErr_Occurred()) { PyErr_Print(); }
+ if (PyErr_Occurred()) {
+ PyErr_Print();
+ PyErr_Clear();
+ PySys_SetObject("last_traceback", NULL);
+ }
else { fprintf(stderr, "Not a valid dynamic node Python script.\n"); }
PyGILState_Release(gilstate);
diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_invert.c b/source/blender/nodes/intern/SHD_nodes/SHD_invert.c
index 72ee1483ecf..fbab7f64cb3 100644
--- a/source/blender/nodes/intern/SHD_nodes/SHD_invert.c
+++ b/source/blender/nodes/intern/SHD_nodes/SHD_invert.c
@@ -1,5 +1,5 @@
/**
- * $Id: SHD_math.c,v 1.4 2007/04/04 13:58:12 jesterking Exp $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/nodes/intern/TEX_nodes/Makefile b/source/blender/nodes/intern/TEX_nodes/Makefile
index 7fad19a772c..ac741280478 100644
--- a/source/blender/nodes/intern/TEX_nodes/Makefile
+++ b/source/blender/nodes/intern/TEX_nodes/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile 12796 2007-12-05 16:58:52Z sirdude $
+# $Id$
#
# ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
#
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_image.c b/source/blender/nodes/intern/TEX_nodes/TEX_image.c
index f9477fef12b..b84088da154 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_image.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_image.c
@@ -1,5 +1,5 @@
/**
- * $Id: TEX_image.c 10456 2007-04-04 13:58:12Z jesterking $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_texture.c b/source/blender/nodes/intern/TEX_nodes/TEX_texture.c
index 884d2cd0eb6..30492b84764 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_texture.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_texture.c
@@ -47,7 +47,7 @@ static void colorfn(float *out, float *coord, bNode *node, bNodeStack **in, shor
Tex *nodetex = (Tex *)node->id;
- if(node->custom2) {
+ if(node->custom2 || node->need_exec==0) {
/* this node refers to its own texture tree! */
QUATCOPY(
out,
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_valToNor.c b/source/blender/nodes/intern/TEX_nodes/TEX_valToNor.c
index f63f5682030..0d24652a8f6 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_valToNor.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_valToNor.c
@@ -45,7 +45,7 @@ static void normalfn(float *out, float *coord, bNode *node, bNodeStack **in, sho
float nabla = tex_input_value(in[1], coord, thread);
float val;
- float nor[2];
+ float nor[3];
val = tex_input_value(in[0], coord, thread);
diff --git a/source/blender/nodes/intern/TEX_nodes/TEX_valToRgb.c b/source/blender/nodes/intern/TEX_nodes/TEX_valToRgb.c
index ec59769fdfd..71d9cb07e18 100644
--- a/source/blender/nodes/intern/TEX_nodes/TEX_valToRgb.c
+++ b/source/blender/nodes/intern/TEX_nodes/TEX_valToRgb.c
@@ -1,5 +1,5 @@
/**
- * $Id: SHD_valToRgb.c 10456 2007-04-04 13:58:12Z jesterking $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/nodes/intern/TEX_util.c b/source/blender/nodes/intern/TEX_util.c
index 2ff9717afa6..867e754f960 100644
--- a/source/blender/nodes/intern/TEX_util.c
+++ b/source/blender/nodes/intern/TEX_util.c
@@ -34,6 +34,12 @@
obtain a colour value from this, a node further up the chain reads
the TexDelegate* from its input stack, and uses tex_call_delegate to
retrieve the colour from the delegate.
+
+ comments: (ton)
+
+ This system needs recode, a node system should rely on the stack, and
+ callbacks for nodes only should evaluate own node, not recursively go
+ over other previous ones.
*/
#include <assert.h>
@@ -43,7 +49,8 @@
void tex_call_delegate(TexDelegate *dg, float *out, float *coord, short thread)
{
- dg->fn(out, coord, dg->node, dg->in, thread);
+ if(dg->node->need_exec)
+ dg->fn(out, coord, dg->node, dg->in, thread);
}
void tex_input(float *out, int sz, bNodeStack *in, float *coord, short thread)
diff --git a/source/blender/python/SConscript b/source/blender/python/SConscript
index 5fcf4a4eb34..9d7fcf6a9cf 100644
--- a/source/blender/python/SConscript
+++ b/source/blender/python/SConscript
@@ -14,3 +14,4 @@ if env['OURPLATFORM'] in ('win32-mingw', 'win32-vc') and env['BF_DEBUG']:
defs.append('Py_TRACE_REFS')
env.BlenderLib( libname = 'bf_python', sources = Split(sources), includes = Split(incs), defines = defs, libtype = ['core'], priority = [140])
+
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index a77570ec1a5..ce324239492 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -945,11 +945,17 @@ static Material *give_render_material(Render *re, Object *ob, int nr)
/* ------------------------------------------------------------------------- */
/* Particles */
/* ------------------------------------------------------------------------- */
-
+typedef struct ParticleStrandData
+{
+ struct MCol *mcol;
+ float *orco, *uvco, *surfnor;
+ float time, adapt_angle, adapt_pix, size;
+ int totuv, totcol;
+ int first, line, adapt, override_uv;
+}
+ParticleStrandData;
/* future thread problem... */
-static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, float *orco, float *surfnor,
- float *uvco, int totuv, MCol *mcol, int totcol, float *vec, float *vec1, float ctime,
- int first, int line, int adapt, float adapt_angle, float adapt_pix, int override_uv)
+static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, ParticleStrandData *sd, float *vec, float *vec1)
{
static VertRen *v1= NULL, *v2= NULL;
VlakRen *vlr= NULL;
@@ -972,11 +978,11 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
float fac;
if(ma->strand_ease!=0.0f) {
if(ma->strand_ease<0.0f)
- fac= pow(ctime, 1.0+ma->strand_ease);
+ fac= pow(sd->time, 1.0+ma->strand_ease);
else
- fac= pow(ctime, 1.0/(1.0f-ma->strand_ease));
+ fac= pow(sd->time, 1.0/(1.0f-ma->strand_ease));
}
- else fac= ctime;
+ else fac= sd->time;
width= ((1.0f-fac)*ma->strand_sta + (fac)*ma->strand_end);
@@ -1008,7 +1014,7 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
flag |= R_STRAND;
/* single face line */
- if(line) {
+ if(sd->line) {
vlr= RE_findOrAddVlak(obr, obr->totvlak++);
vlr->flag= flag;
vlr->v1= RE_findOrAddVert(obr, obr->totvert++);
@@ -1019,25 +1025,25 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
VECCOPY(vlr->v1->co, vec);
VecAddf(vlr->v1->co, vlr->v1->co, cross);
VECCOPY(vlr->v1->n, nor);
- vlr->v1->orco= orco;
+ vlr->v1->orco= sd->orco;
vlr->v1->accum= -1.0f; // accum abuse for strand texco
VECCOPY(vlr->v2->co, vec);
VecSubf(vlr->v2->co, vlr->v2->co, cross);
VECCOPY(vlr->v2->n, nor);
- vlr->v2->orco= orco;
+ vlr->v2->orco= sd->orco;
vlr->v2->accum= vlr->v1->accum;
VECCOPY(vlr->v4->co, vec1);
VecAddf(vlr->v4->co, vlr->v4->co, cross);
VECCOPY(vlr->v4->n, nor);
- vlr->v4->orco= orco;
+ vlr->v4->orco= sd->orco;
vlr->v4->accum= 1.0f; // accum abuse for strand texco
VECCOPY(vlr->v3->co, vec1);
VecSubf(vlr->v3->co, vlr->v3->co, cross);
VECCOPY(vlr->v3->n, nor);
- vlr->v3->orco= orco;
+ vlr->v3->orco= sd->orco;
vlr->v3->accum= vlr->v4->accum;
CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
@@ -1045,23 +1051,23 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
vlr->mat= ma;
vlr->ec= ME_V2V3;
- if(surfnor) {
+ if(sd->surfnor) {
float *snor= RE_vlakren_get_surfnor(obr, vlr, 1);
- VECCOPY(snor, surfnor);
+ VECCOPY(snor, sd->surfnor);
}
- if(uvco){
- for(i=0; i<totuv; i++){
+ if(sd->uvco){
+ for(i=0; i<sd->totuv; i++){
MTFace *mtf;
mtf=RE_vlakren_get_tface(obr,vlr,i,NULL,1);
mtf->uv[0][0]=mtf->uv[1][0]=
- mtf->uv[2][0]=mtf->uv[3][0]=(uvco+2*i)[0];
+ mtf->uv[2][0]=mtf->uv[3][0]=(sd->uvco+2*i)[0];
mtf->uv[0][1]=mtf->uv[1][1]=
- mtf->uv[2][1]=mtf->uv[3][1]=(uvco+2*i)[1];
+ mtf->uv[2][1]=mtf->uv[3][1]=(sd->uvco+2*i)[1];
}
- if(override_uv>=0){
+ if(sd->override_uv>=0){
MTFace *mtf;
- mtf=RE_vlakren_get_tface(obr,vlr,override_uv,NULL,0);
+ mtf=RE_vlakren_get_tface(obr,vlr,sd->override_uv,NULL,0);
mtf->uv[0][0]=mtf->uv[3][0]=0.0f;
mtf->uv[1][0]=mtf->uv[2][0]=1.0f;
@@ -1070,18 +1076,18 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
mtf->uv[2][1]=mtf->uv[3][1]=1.0f;
}
}
- if(mcol){
- for(i=0; i<totcol; i++){
+ if(sd->mcol){
+ for(i=0; i<sd->totcol; i++){
MCol *mc;
mc=RE_vlakren_get_mcol(obr,vlr,i,NULL,1);
- mc[0]=mc[1]=mc[2]=mc[3]=mcol[i];
- mc[0]=mc[1]=mc[2]=mc[3]=mcol[i];
+ mc[0]=mc[1]=mc[2]=mc[3]=sd->mcol[i];
+ mc[0]=mc[1]=mc[2]=mc[3]=sd->mcol[i];
}
}
}
/* first two vertices of a strand */
- else if(first) {
- if(adapt){
+ else if(sd->first) {
+ if(sd->adapt){
VECCOPY(anor, nor);
VECCOPY(avec, vec);
second=1;
@@ -1093,18 +1099,18 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
VECCOPY(v1->co, vec);
VecAddf(v1->co, v1->co, cross);
VECCOPY(v1->n, nor);
- v1->orco= orco;
+ v1->orco= sd->orco;
v1->accum= -1.0f; // accum abuse for strand texco
VECCOPY(v2->co, vec);
VecSubf(v2->co, v2->co, cross);
VECCOPY(v2->n, nor);
- v2->orco= orco;
+ v2->orco= sd->orco;
v2->accum= v1->accum;
}
/* more vertices & faces to strand */
else {
- if(adapt==0 || second){
+ if(sd->adapt==0 || second){
vlr= RE_findOrAddVlak(obr, obr->totvlak++);
vlr->flag= flag;
vlr->v1= v1;
@@ -1116,14 +1122,14 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
v2= vlr->v3; // cycle
- if(adapt){
+ if(sd->adapt){
second=0;
VECCOPY(anor,nor);
VECCOPY(avec,vec);
}
}
- else if(adapt){
+ else if(sd->adapt){
float dvec[3],pvec[3];
VecSubf(dvec,avec,vec);
Projf(pvec,dvec,vec);
@@ -1133,7 +1139,7 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
dx= re->winx*dvec[0]*re->winmat[0][0]/w;
dy= re->winy*dvec[1]*re->winmat[1][1]/w;
w= sqrt(dx*dx + dy*dy);
- if(Inpf(anor,nor)<adapt_angle && w>adapt_pix){
+ if(Inpf(anor,nor)<sd->adapt_angle && w>sd->adapt_pix){
vlr= RE_findOrAddVlak(obr, obr->totvlak++);
vlr->flag= flag;
vlr->v1= v1;
@@ -1155,13 +1161,13 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
VECCOPY(vlr->v4->co, vec);
VecAddf(vlr->v4->co, vlr->v4->co, cross);
VECCOPY(vlr->v4->n, nor);
- vlr->v4->orco= orco;
- vlr->v4->accum= -1.0f + 2.0f*ctime; // accum abuse for strand texco
+ vlr->v4->orco= sd->orco;
+ vlr->v4->accum= -1.0f + 2.0f*sd->time; // accum abuse for strand texco
VECCOPY(vlr->v3->co, vec);
VecSubf(vlr->v3->co, vlr->v3->co, cross);
VECCOPY(vlr->v3->n, nor);
- vlr->v3->orco= orco;
+ vlr->v3->orco= sd->orco;
vlr->v3->accum= vlr->v4->accum;
CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
@@ -1169,23 +1175,23 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
vlr->mat= ma;
vlr->ec= ME_V2V3;
- if(surfnor) {
+ if(sd->surfnor) {
float *snor= RE_vlakren_get_surfnor(obr, vlr, 1);
- VECCOPY(snor, surfnor);
+ VECCOPY(snor, sd->surfnor);
}
- if(uvco){
- for(i=0; i<totuv; i++){
+ if(sd->uvco){
+ for(i=0; i<sd->totuv; i++){
MTFace *mtf;
mtf=RE_vlakren_get_tface(obr,vlr,i,NULL,1);
mtf->uv[0][0]=mtf->uv[1][0]=
- mtf->uv[2][0]=mtf->uv[3][0]=(uvco+2*i)[0];
+ mtf->uv[2][0]=mtf->uv[3][0]=(sd->uvco+2*i)[0];
mtf->uv[0][1]=mtf->uv[1][1]=
- mtf->uv[2][1]=mtf->uv[3][1]=(uvco+2*i)[1];
+ mtf->uv[2][1]=mtf->uv[3][1]=(sd->uvco+2*i)[1];
}
- if(override_uv>=0){
+ if(sd->override_uv>=0){
MTFace *mtf;
- mtf=RE_vlakren_get_tface(obr,vlr,override_uv,NULL,0);
+ mtf=RE_vlakren_get_tface(obr,vlr,sd->override_uv,NULL,0);
mtf->uv[0][0]=mtf->uv[3][0]=0.0f;
mtf->uv[1][0]=mtf->uv[2][0]=1.0f;
@@ -1194,12 +1200,12 @@ static void static_particle_strand(Render *re, ObjectRen *obr, Material *ma, flo
mtf->uv[2][1]=mtf->uv[3][1]=(vlr->v3->accum+1.0f)/2.0f;
}
}
- if(mcol){
- for(i=0; i<totcol; i++){
+ if(sd->mcol){
+ for(i=0; i<sd->totcol; i++){
MCol *mc;
mc=RE_vlakren_get_mcol(obr,vlr,i,NULL,1);
- mc[0]=mc[1]=mc[2]=mc[3]=mcol[i];
- mc[0]=mc[1]=mc[2]=mc[3]=mcol[i];
+ mc[0]=mc[1]=mc[2]=mc[3]=sd->mcol[i];
+ mc[0]=mc[1]=mc[2]=mc[3]=sd->mcol[i];
}
}
}
@@ -1252,17 +1258,13 @@ static void static_particle_wire(ObjectRen *obr, Material *ma, float *vec, float
}
}
-static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, Object *bb_ob, float *vec, float *vel, float size, float tilt, short align,
- int lock, int p, int totpart, short uv_split, short anim, short split_offset, float random, float pa_time, float offset[2], int uv[3])
+
+static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, ParticleBillboardData *bb)
{
VlakRen *vlr;
MTFace *mtf;
- float xvec[3]={1.0f,0.0f,0.0f}, yvec[3]={0.0f,1.0f,0.0f}, zvec[3];
- float onevec[3]={0.0f,0.0f,0.0f}, tvec[3],tvec2[3], bb_center[3];
- float uvx=0.0f, uvy=0.0f, uvdx=1.0f, uvdy=1.0f, time=0.0f;
-
- if(align<PART_BB_VIEW)
- onevec[align]=1.0f;
+ float xvec[3], yvec[3], zvec[3], bb_center[3];
+ float uvx = 0.0f, uvy = 0.0f, uvdx = 1.0f, uvdy = 1.0f, time = 0.0f;
vlr= RE_findOrAddVlak(obr, obr->totvlak++);
vlr->v1= RE_findOrAddVert(obr, obr->totvert++);
@@ -1270,74 +1272,23 @@ static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, Object
vlr->v3= RE_findOrAddVert(obr, obr->totvert++);
vlr->v4= RE_findOrAddVert(obr, obr->totvert++);
- if(lock && align==PART_BB_VIEW){
- VECCOPY(xvec,bb_ob->obmat[0]);
- Normalize(xvec);
- VECCOPY(yvec,bb_ob->obmat[1]);
- Normalize(yvec);
- VECCOPY(zvec,bb_ob->obmat[2]);
- Normalize(zvec);
- }
- else if(align==PART_BB_VEL){
- float temp[3];
- VECCOPY(temp,vel);
- Normalize(temp);
- VECSUB(zvec,bb_ob->obmat[3],vec);
- if(lock){
- float fac=-Inpf(zvec,temp);
- VECADDFAC(zvec,zvec,temp,fac);
- }
- Normalize(zvec);
- Crossf(xvec,temp,zvec);
- Normalize(xvec);
- Crossf(yvec,zvec,xvec);
- }
- else{
- VECSUB(zvec,bb_ob->obmat[3],vec);
- if(lock)
- zvec[align]=0.0f;
- Normalize(zvec);
-
- if(align<PART_BB_VIEW)
- Crossf(xvec,onevec,zvec);
- else
- Crossf(xvec,bb_ob->obmat[1],zvec);
- Normalize(xvec);
- Crossf(yvec,zvec,xvec);
- }
+ psys_make_billboard(bb, xvec, yvec, zvec, bb_center);
- VECCOPY(tvec,xvec);
- VECCOPY(tvec2,yvec);
+ VECADD(vlr->v1->co, bb_center, xvec);
+ VECADD(vlr->v1->co, vlr->v1->co, yvec);
+ MTC_Mat4MulVecfl(re->viewmat, vlr->v1->co);
- VecMulf(xvec,cos(tilt*(float)M_PI));
- VecMulf(tvec2,sin(tilt*(float)M_PI));
- VECADD(xvec,xvec,tvec2);
+ VECSUB(vlr->v2->co, bb_center, xvec);
+ VECADD(vlr->v2->co, vlr->v2->co, yvec);
+ MTC_Mat4MulVecfl(re->viewmat, vlr->v2->co);
- VecMulf(yvec,cos(tilt*(float)M_PI));
- VecMulf(tvec,-sin(tilt*(float)M_PI));
- VECADD(yvec,yvec,tvec);
+ VECSUB(vlr->v3->co, bb_center, xvec);
+ VECSUB(vlr->v3->co, vlr->v3->co, yvec);
+ MTC_Mat4MulVecfl(re->viewmat, vlr->v3->co);
- VecMulf(xvec,size);
- VecMulf(yvec,size);
-
- VECADDFAC(bb_center,vec,xvec,offset[0]);
- VECADDFAC(bb_center,bb_center,yvec,offset[1]);
-
- VECADD(vlr->v1->co,bb_center,xvec);
- VECADD(vlr->v1->co,vlr->v1->co,yvec);
- MTC_Mat4MulVecfl(re->viewmat,vlr->v1->co);
-
- VECSUB(vlr->v2->co,bb_center,xvec);
- VECADD(vlr->v2->co,vlr->v2->co,yvec);
- MTC_Mat4MulVecfl(re->viewmat,vlr->v2->co);
-
- VECSUB(vlr->v3->co,bb_center,xvec);
- VECSUB(vlr->v3->co,vlr->v3->co,yvec);
- MTC_Mat4MulVecfl(re->viewmat,vlr->v3->co);
-
- VECADD(vlr->v4->co,bb_center,xvec);
- VECSUB(vlr->v4->co,vlr->v4->co,yvec);
- MTC_Mat4MulVecfl(re->viewmat,vlr->v4->co);
+ VECADD(vlr->v4->co, bb_center, xvec);
+ VECSUB(vlr->v4->co, vlr->v4->co, yvec);
+ MTC_Mat4MulVecfl(re->viewmat, vlr->v4->co);
CalcNormFloat4(vlr->v4->co, vlr->v3->co, vlr->v2->co, vlr->v1->co, vlr->n);
VECCOPY(vlr->v1->n,vlr->n);
@@ -1348,115 +1299,142 @@ static void particle_billboard(Render *re, ObjectRen *obr, Material *ma, Object
vlr->mat= ma;
vlr->ec= ME_V2V3;
- if(uv_split>1){
- uvdx=uvdy=1.0f/(float)uv_split;
- if(anim==PART_BB_ANIM_TIME){
- if(split_offset==PART_BB_OFF_NONE)
- time=pa_time;
- else if(split_offset==PART_BB_OFF_LINEAR)
- time=(float)fmod(pa_time+(float)p/(float)(uv_split*uv_split),1.0f);
+ if(bb->uv_split > 1){
+ uvdx = uvdy = 1.0f / (float)bb->uv_split;
+ if(bb->anim == PART_BB_ANIM_TIME) {
+ if(bb->split_offset == PART_BB_OFF_NONE)
+ time = bb->time;
+ else if(bb->split_offset == PART_BB_OFF_LINEAR)
+ time = (float)fmod(bb->time + (float)bb->num / (float)(bb->uv_split * bb->uv_split), 1.0f);
else /* split_offset==PART_BB_OFF_RANDOM */
- time=(float)fmod(pa_time+random,1.0f);
+ time = (float)fmod(bb->time + bb->random, 1.0f);
}
- else if(anim==PART_BB_ANIM_ANGLE){
- if(align==PART_BB_VIEW){
- time=(float)fmod((tilt+1.0f)/2.0f,1.0);
+ else if(bb->anim == PART_BB_ANIM_ANGLE) {
+ if(bb->align == PART_BB_VIEW) {
+ time = (float)fmod((bb->tilt + 1.0f) / 2.0f, 1.0);
}
else{
- float axis1[3]={0.0f,0.0f,0.0f};
- float axis2[3]={0.0f,0.0f,0.0f};
- axis1[(align+1)%3]=1.0f;
- axis2[(align+2)%3]=1.0f;
- if(lock==0){
- zvec[align]=0.0f;
+ float axis1[3] = {0.0f,0.0f,0.0f};
+ float axis2[3] = {0.0f,0.0f,0.0f};
+ axis1[(bb->align + 1) % 3] = 1.0f;
+ axis2[(bb->align + 2) % 3] = 1.0f;
+ if(bb->lock == 0) {
+ zvec[bb->align] = 0.0f;
Normalize(zvec);
}
- time=saacos(Inpf(zvec,axis1))/(float)M_PI;
- if(Inpf(zvec,axis2)<0.0f)
- time=1.0f-time/2.0f;
+ time = saacos(Inpf(zvec, axis1)) / (float)M_PI;
+ if(Inpf(zvec, axis2) < 0.0f)
+ time = 1.0f - time / 2.0f;
else
- time=time/2.0f;
+ time = time / 2.0f;
}
- if(split_offset==PART_BB_OFF_LINEAR)
- time=(float)fmod(pa_time+(float)p/(float)(uv_split*uv_split),1.0f);
- else if(split_offset==PART_BB_OFF_RANDOM)
- time=(float)fmod(pa_time+random,1.0f);
+ if(bb->split_offset == PART_BB_OFF_LINEAR)
+ time = (float)fmod(bb->time + (float)bb->num / (float)(bb->uv_split * bb->uv_split), 1.0f);
+ else if(bb->split_offset == PART_BB_OFF_RANDOM)
+ time = (float)fmod(bb->time + bb->random, 1.0f);
}
else{
- if(split_offset==PART_BB_OFF_NONE)
- time=0.0f;
- else if(split_offset==PART_BB_OFF_LINEAR)
- time=(float)fmod((float)p/(float)(uv_split*uv_split),1.0f);
+ if(bb->split_offset == PART_BB_OFF_NONE)
+ time = 0.0f;
+ else if(bb->split_offset == PART_BB_OFF_LINEAR)
+ time = (float)fmod((float)bb->num /(float)(bb->uv_split * bb->uv_split) , 1.0f);
else /* split_offset==PART_BB_OFF_RANDOM */
- time=random;
+ time = bb->random;
}
- uvx=uvdx*floor((float)(uv_split*uv_split)*(float)fmod((double)time,(double)uvdx));
- uvy=uvdy*floor((1.0f-time)*(float)uv_split);
- if(fmod(time,1.0f/uv_split)==0.0f)
- uvy-=uvdy;
+ uvx = uvdx * floor((float)(bb->uv_split * bb->uv_split) * (float)fmod((double)time, (double)uvdx));
+ uvy = uvdy * floor((1.0f - time) * (float)bb->uv_split);
+ if(fmod(time, 1.0f / bb->uv_split) == 0.0f)
+ uvy -= uvdy;
}
/* normal UVs */
- if(uv[0]>=0){
- mtf=RE_vlakren_get_tface(obr,vlr,uv[0],NULL,1);
- mtf->uv[0][0]=1.0f;
- mtf->uv[0][1]=1.0f;
- mtf->uv[1][0]=0.0f;
- mtf->uv[1][1]=1.0f;
- mtf->uv[2][0]=0.0f;
- mtf->uv[2][1]=0.0f;
- mtf->uv[3][0]=1.0f;
- mtf->uv[3][1]=0.0f;
+ if(bb->uv[0] >= 0){
+ mtf = RE_vlakren_get_tface(obr, vlr, bb->uv[0], NULL, 1);
+ mtf->uv[0][0] = 1.0f;
+ mtf->uv[0][1] = 1.0f;
+ mtf->uv[1][0] = 0.0f;
+ mtf->uv[1][1] = 1.0f;
+ mtf->uv[2][0] = 0.0f;
+ mtf->uv[2][1] = 0.0f;
+ mtf->uv[3][0] = 1.0f;
+ mtf->uv[3][1] = 0.0f;
}
/* time-index UVs */
- if(uv[1]>=0){
- mtf=RE_vlakren_get_tface(obr,vlr,uv[1],NULL,1);
- mtf->uv[0][0]=mtf->uv[1][0]=mtf->uv[2][0]=mtf->uv[3][0]=pa_time;
- mtf->uv[0][1]=mtf->uv[1][1]=mtf->uv[2][1]=mtf->uv[3][1]=(float)p/(float)totpart;
+ if(bb->uv[1] >= 0){
+ mtf = RE_vlakren_get_tface(obr, vlr, bb->uv[1], NULL, 1);
+ mtf->uv[0][0] = mtf->uv[1][0] = mtf->uv[2][0] = mtf->uv[3][0] = bb->time;
+ mtf->uv[0][1] = mtf->uv[1][1] = mtf->uv[2][1] = mtf->uv[3][1] = (float)bb->num/(float)bb->totnum;
}
/* split UVs */
- if(uv_split>1 && uv[2]>=0){
- mtf=RE_vlakren_get_tface(obr,vlr,uv[2],NULL,1);
- mtf->uv[0][0]=uvx+uvdx;
- mtf->uv[0][1]=uvy+uvdy;
- mtf->uv[1][0]=uvx;
- mtf->uv[1][1]=uvy+uvdy;
- mtf->uv[2][0]=uvx;
- mtf->uv[2][1]=uvy;
- mtf->uv[3][0]=uvx+uvdx;
- mtf->uv[3][1]=uvy;
+ if(bb->uv_split > 1 && bb->uv[2] >= 0){
+ mtf = RE_vlakren_get_tface(obr, vlr, bb->uv[2], NULL, 1);
+ mtf->uv[0][0] = uvx + uvdx;
+ mtf->uv[0][1] = uvy + uvdy;
+ mtf->uv[1][0] = uvx;
+ mtf->uv[1][1] = uvy + uvdy;
+ mtf->uv[2][0] = uvx;
+ mtf->uv[2][1] = uvy;
+ mtf->uv[3][0] = uvx + uvdx;
+ mtf->uv[3][1] = uvy;
}
}
-static void render_new_particle(Render *re, ObjectRen *obr, DerivedMesh *dm, Material *ma, int path, int first, int line,
- float time, float *loc, float *loc1, float *orco, float *surfnor, int totuv, float *uvco,
- int totcol, MCol *mcol, float size, int seed, int override_uv,
- int adapt, float adapt_angle, float adapt_pix)
+static void render_new_particle(Render *re, ObjectRen *obr, DerivedMesh *dm, Material *ma, ParticleStrandData *sd, float *loc, float *loc1, int seed)
{
HaloRen *har=0;
- if(path){
- if(ma->mode&MA_WIRE)
- static_particle_wire(obr, ma, loc, loc1, first, line);
- else if(ma->mode & MA_HALO){
- har= RE_inithalo_particle(re, obr, dm, ma, loc, loc1, orco, uvco, size, 1.0, seed);
- if(har) har->lay= obr->ob->lay;
+
+ if(ma->mode&MA_WIRE)
+ static_particle_wire(obr, ma, loc, loc1, sd->first, sd->line);
+ else if(ma->mode & MA_HALO){
+ har= RE_inithalo_particle(re, obr, dm, ma, loc, loc1, sd->orco, sd->uvco, sd->size, 1.0, seed);
+ if(har) har->lay= obr->ob->lay;
+ }
+ else
+ static_particle_strand(re, obr, ma, sd, loc, loc1);
+}
+static void get_particle_uvco_mcol(short from, DerivedMesh *dm, float *fuv, int num, ParticleStrandData *sd)
+{
+ int i;
+
+ /* get uvco */
+ if(sd->uvco && ELEM(from,PART_FROM_FACE,PART_FROM_VOLUME)) {
+ for(i=0; i<sd->totuv; i++) {
+ if(num != DMCACHE_NOTFOUND) {
+ MFace *mface = dm->getFaceData(dm, num, CD_MFACE);
+ MTFace *mtface = (MTFace*)CustomData_get_layer_n(&dm->faceData, CD_MTFACE, i);
+ mtface += num;
+
+ psys_interpolate_uvs(mtface, mface->v4, fuv, sd->uvco + 2 * i);
+ }
+ else {
+ sd->uvco[2*i] = 0.0f;
+ sd->uvco[2*i + 1] = 0.0f;
+ }
}
- else
- static_particle_strand(re, obr, ma, orco, surfnor, uvco, totuv, mcol, totcol, loc, loc1, time, first, line, adapt, adapt_angle, adapt_pix, override_uv);
}
- else{
- har= RE_inithalo_particle(re, obr, dm, ma, loc, NULL, orco, uvco, size, 0.0, seed);
- if(har) har->lay= obr->ob->lay;
+
+ /* get mcol */
+ if(sd->mcol && ELEM(from,PART_FROM_FACE,PART_FROM_VOLUME)) {
+ for(i=0; i<sd->totcol; i++) {
+ if(num != DMCACHE_NOTFOUND) {
+ MFace *mface = dm->getFaceData(dm, num, CD_MFACE);
+ MCol *mc = (MCol*)CustomData_get_layer_n(&dm->faceData, CD_MCOL, i);
+ mc += num * 4;
+
+ psys_interpolate_mcol(mc, mface->v4, fuv, sd->mcol + i);
+ }
+ else
+ memset(&sd->mcol[i], 0, sizeof(MCol));
+ }
}
}
static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem *psys, int timeoffset)
{
Object *ob= obr->ob;
- Object *tob=0, *bb_ob=re->scene->camera;
+ Object *tob=0;
Material *ma=0;
- MTFace *mtface;
ParticleSystemModifierData *psmd;
ParticleSystem *tpsys=0;
ParticleSettings *part, *tpart=0;
@@ -1464,19 +1442,20 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
ParticleKey *states=0;
ParticleKey state;
ParticleCacheKey *cache=0;
+ ParticleBillboardData bb;
+ ParticleStrandData sd;
StrandBuffer *strandbuf=0;
StrandVert *svert=0;
StrandBound *sbound= 0;
StrandRen *strand=0;
RNG *rng= 0;
- MCol *mcol= 0;
float loc[3],loc1[3],loc0[3],vel[3],mat[4][4],nmat[3][3],co[3],nor[3],time;
- float *orco=0,*surfnor=0,*uvco=0, strandlen=0.0f, curlen=0.0f;
+ float strandlen=0.0f, curlen=0.0f;
float hasize, pa_size, pa_time, r_tilt, cfra=bsystem_time(re->scene, ob, (float)re->scene->r.cfra, 0.0);
- float adapt_angle=0.0, adapt_pix=0.0, random, simplify[2];
- int i, a, k, max_k=0, totpart, totuv=0, totcol=0, override_uv=-1, dosimplify = 0, dosurfacecache = 0;
- int path_possible=0, keys_possible=0, baked_keys=0, totchild=0;
- int seed, path_nbr=0, path=0, orco1=0, adapt=0, uv[3]={0,0,0}, num;
+ float random, simplify[2];
+ int i, a, k, max_k=0, totpart, dosimplify = 0, dosurfacecache = 0;
+ int totchild=0;
+ int seed, path_nbr=0, orco1=0, num;
int totface, *origindex = 0;
char **uv_name=0;
@@ -1503,6 +1482,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
return 1;
}
+ /* last possibility to bail out! */
psmd= psys_get_modifier(ob,psys);
if(!(psmd->modifier.mode & eModifierMode_Render))
return 0;
@@ -1511,14 +1491,17 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
totchild = (int)((float)totchild * (float)part->disp / 100.0f);
}
- psys->flag|=PSYS_DRAWING;
+ psys->flag |= PSYS_DRAWING;
rng= rng_new(psys->seed);
-
- ma= give_render_material(re, ob, part->omat);
- if(part->bb_ob)
- bb_ob=part->bb_ob;
+ totpart=psys->totpart;
+
+ memset(&sd, 0, sizeof(ParticleStrandData));
+ sd.override_uv = -1;
+
+/* 2.1 setup material stff */
+ ma= give_render_material(re, ob, part->omat);
#if 0 // XXX old animation system
if(ma->ipo){
@@ -1527,171 +1510,168 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
}
#endif // XXX old animation system
+ hasize = ma->hasize;
+ seed = ma->seed1;
+
+ re->flag |= R_HALO;
+
RE_set_customdata_names(obr, &psmd->dm->faceData);
- totuv=CustomData_number_of_layers(&psmd->dm->faceData,CD_MTFACE);
- totcol=CustomData_number_of_layers(&psmd->dm->faceData,CD_MCOL);
+ sd.totuv = CustomData_number_of_layers(&psmd->dm->faceData, CD_MTFACE);
+ sd.totcol = CustomData_number_of_layers(&psmd->dm->faceData, CD_MCOL);
- if(ma->texco & TEXCO_UV && totuv) {
- uvco = MEM_callocN(totuv*2*sizeof(float),"particle_uvs");
+ if(ma->texco & TEXCO_UV && sd.totuv) {
+ sd.uvco = MEM_callocN(sd.totuv * 2 * sizeof(float), "particle_uvs");
if(ma->strand_uvname[0]) {
- override_uv= CustomData_get_named_layer_index(&psmd->dm->faceData,CD_MTFACE,ma->strand_uvname);
- override_uv-= CustomData_get_layer_index(&psmd->dm->faceData,CD_MTFACE);
+ sd.override_uv = CustomData_get_named_layer_index(&psmd->dm->faceData, CD_MTFACE, ma->strand_uvname);
+ sd.override_uv -= CustomData_get_layer_index(&psmd->dm->faceData, CD_MTFACE);
}
}
+ else
+ sd.uvco = NULL;
- if(totcol)
- mcol = MEM_callocN(totcol*sizeof(MCol),"particle_mcols");
+ if(sd.totcol)
+ sd.mcol = MEM_callocN(sd.totcol * sizeof(MCol), "particle_mcols");
- if(part->draw_as==PART_DRAW_BB){
- int first_uv=CustomData_get_layer_index(&psmd->dm->faceData,CD_MTFACE);
+/* 2.2 setup billboards */
+ if(part->draw_as == PART_DRAW_BB) {
+ int first_uv = CustomData_get_layer_index(&psmd->dm->faceData, CD_MTFACE);
- uv[0]=CustomData_get_named_layer_index(&psmd->dm->faceData,CD_MTFACE,psys->bb_uvname[0]);
- if(uv[0]<0)
- uv[0]=CustomData_get_active_layer_index(&psmd->dm->faceData,CD_MTFACE);
+ bb.uv[0] = CustomData_get_named_layer_index(&psmd->dm->faceData, CD_MTFACE, psys->bb_uvname[0]);
+ if(bb.uv[0] < 0)
+ bb.uv[0] = CustomData_get_active_layer_index(&psmd->dm->faceData, CD_MTFACE);
- uv[1]=CustomData_get_named_layer_index(&psmd->dm->faceData,CD_MTFACE,psys->bb_uvname[1]);
- //if(uv[1]<0)
- // uv[1]=CustomData_get_active_layer_index(&psmd->dm->faceData,CD_MTFACE);
+ bb.uv[1] = CustomData_get_named_layer_index(&psmd->dm->faceData, CD_MTFACE, psys->bb_uvname[1]);
- uv[2]=CustomData_get_named_layer_index(&psmd->dm->faceData,CD_MTFACE,psys->bb_uvname[2]);
- //if(uv[2]<0)
- // uv[2]=CustomData_get_active_layer_index(&psmd->dm->faceData,CD_MTFACE);
+ bb.uv[2] = CustomData_get_named_layer_index(&psmd->dm->faceData, CD_MTFACE, psys->bb_uvname[2]);
- if(first_uv>=0){
- uv[0]-=first_uv;
- uv[1]-=first_uv;
- uv[2]-=first_uv;
+ if(first_uv >= 0) {
+ bb.uv[0] -= first_uv;
+ bb.uv[1] -= first_uv;
+ bb.uv[2] -= first_uv;
}
+
+ bb.align = part->bb_align;
+ bb.anim = part->bb_anim;
+ bb.lock = part->draw & PART_DRAW_BB_LOCK;
+ bb.ob = (part->bb_ob ? part->bb_ob : re->scene->camera);
+ bb.offset[0] = part->bb_offset[0];
+ bb.offset[1] = part->bb_offset[1];
+ bb.split_offset = part->bb_split_offset;
+ bb.totnum = totpart+totchild;
+ bb.uv_split = part->bb_uv_split;
}
#if 0 // XXX old animation system
- if(part->flag&PART_ABS_TIME && part->ipo){
+/* 2.3 setup time */
+ if(part->flag&PART_ABS_TIME && part->ipo) {
calc_ipo(part->ipo, cfra);
execute_ipo((ID *)part, part->ipo);
}
#endif // XXX old animation system
- if(part->flag&PART_GLOB_TIME)
- cfra=bsystem_time(re->scene, 0, (float)re->scene->r.cfra, 0.0);
+ if(part->flag & PART_GLOB_TIME)
+ cfra = bsystem_time(re->scene, 0, (float)re->scene->r.cfra, 0.0);
- if(part->type==PART_REACTOR){
+/* 2.4 setup reactors */
+ if(part->type == PART_REACTOR){
psys_get_reactor_target(ob, psys, &tob, &tpsys);
if(tpsys && (part->from==PART_FROM_PARTICLE || part->phystype==PART_PHYS_NO)){
- psmd=psys_get_modifier(tob,tpsys);
- tpart=tpsys->part;
+ psmd = psys_get_modifier(tob,tpsys);
+ tpart = tpsys->part;
}
}
-
- hasize = ma->hasize;
- seed = ma->seed1;
-
- re->flag |= R_HALO;
+/* 2.5 setup matrices */
MTC_Mat4MulMat4(mat, ob->obmat, re->viewmat);
MTC_Mat4Invert(ob->imat, mat); /* need to be that way, for imat texture */
Mat3CpyMat4(nmat, ob->imat);
Mat3Transp(nmat);
- totpart=psys->totpart;
+/* 2.6 setup strand rendering */
+ if(part->draw_as == PART_DRAW_PATH && psys->pathcache){
+ path_nbr=(int)pow(2.0,(double) part->ren_step);
- if(psys->pathcache){
- path_possible=1;
- keys_possible=1;
- }
- if(part->draw_as==PART_DRAW_PATH){
- if(path_possible){
- path_nbr=(int)pow(2.0,(double) part->ren_step);
- //if(part->phystype==PART_PHYS_KEYED && (psys->flag&PSYS_BAKED)==0)
- // path_nbr*=psys->totkeyed;
-
- if(path_nbr) {
- if((ma->mode & (MA_HALO|MA_WIRE))==0) {
- orco= MEM_mallocN(3*sizeof(float)*(totpart+totchild), "particle orcos");
- set_object_orco(re, psys, orco);
- }
- path=1;
+ if(path_nbr) {
+ if((ma->mode & (MA_HALO|MA_WIRE))==0) {
+ sd.orco = MEM_mallocN(3*sizeof(float)*(totpart+totchild), "particle orcos");
+ set_object_orco(re, psys, sd.orco);
}
+ }
- if(part->draw&PART_DRAW_REN_ADAPT) {
- adapt=1;
- adapt_pix=(float)part->adapt_pix;
- adapt_angle=cos((float)part->adapt_angle*(float)(M_PI/180.0));
- }
+ if(part->draw & PART_DRAW_REN_ADAPT) {
+ sd.adapt = 1;
+ sd.adapt_pix = (float)part->adapt_pix;
+ sd.adapt_angle = cos((float)part->adapt_angle * (float)(M_PI / 180.0));
+ }
- if(re->r.renderer==R_INTERN && part->draw&PART_DRAW_REN_STRAND) {
- strandbuf= RE_addStrandBuffer(obr, (totpart+totchild)*(path_nbr+1));
- strandbuf->ma= ma;
- strandbuf->lay= ob->lay;
- Mat4CpyMat4(strandbuf->winmat, re->winmat);
- strandbuf->winx= re->winx;
- strandbuf->winy= re->winy;
- strandbuf->maxdepth= 2;
- strandbuf->adaptcos= cos((float)part->adapt_angle*(float)(M_PI/180.0));
- strandbuf->overrideuv= override_uv;
- strandbuf->minwidth= ma->strand_min;
-
- if(ma->strand_widthfade == 0.0f)
- strandbuf->widthfade= 0.0f;
- else if(ma->strand_widthfade >= 1.0f)
- strandbuf->widthfade= 2.0f - ma->strand_widthfade;
- else
- strandbuf->widthfade= 1.0f/MAX2(ma->strand_widthfade, 1e-5f);
+ if(re->r.renderer==R_INTERN && part->draw&PART_DRAW_REN_STRAND) {
+ strandbuf= RE_addStrandBuffer(obr, (totpart+totchild)*(path_nbr+1));
+ strandbuf->ma= ma;
+ strandbuf->lay= ob->lay;
+ Mat4CpyMat4(strandbuf->winmat, re->winmat);
+ strandbuf->winx= re->winx;
+ strandbuf->winy= re->winy;
+ strandbuf->maxdepth= 2;
+ strandbuf->adaptcos= cos((float)part->adapt_angle*(float)(M_PI/180.0));
+ strandbuf->overrideuv= sd.override_uv;
+ strandbuf->minwidth= ma->strand_min;
+
+ if(ma->strand_widthfade == 0.0f)
+ strandbuf->widthfade= 0.0f;
+ else if(ma->strand_widthfade >= 1.0f)
+ strandbuf->widthfade= 2.0f - ma->strand_widthfade;
+ else
+ strandbuf->widthfade= 1.0f/MAX2(ma->strand_widthfade, 1e-5f);
- if(part->flag & PART_HAIR_BSPLINE)
- strandbuf->flag |= R_STRAND_BSPLINE;
- if(ma->mode & MA_STR_B_UNITS)
- strandbuf->flag |= R_STRAND_B_UNITS;
+ if(part->flag & PART_HAIR_BSPLINE)
+ strandbuf->flag |= R_STRAND_BSPLINE;
+ if(ma->mode & MA_STR_B_UNITS)
+ strandbuf->flag |= R_STRAND_B_UNITS;
- svert= strandbuf->vert;
+ svert= strandbuf->vert;
- if(re->r.mode & R_SPEED)
+ if(re->r.mode & R_SPEED)
+ dosurfacecache= 1;
+ else if((re->wrld.mode & WO_AMB_OCC) && (re->wrld.ao_gather_method == WO_AOGATHER_APPROX))
+ if(ma->amb != 0.0f)
dosurfacecache= 1;
- else if((re->wrld.mode & WO_AMB_OCC) && (re->wrld.ao_gather_method == WO_AOGATHER_APPROX))
- if(ma->amb != 0.0f)
- dosurfacecache= 1;
-
- totface= psmd->dm->getNumFaces(psmd->dm);
- origindex= psmd->dm->getFaceDataArray(psmd->dm, CD_ORIGINDEX);
- if(origindex) {
- for(a=0; a<totface; a++)
- strandbuf->totbound= MAX2(strandbuf->totbound, origindex[a]);
- strandbuf->totbound++;
- }
+
+ totface= psmd->dm->getNumFaces(psmd->dm);
+ origindex= psmd->dm->getFaceDataArray(psmd->dm, CD_ORIGINDEX);
+ if(origindex) {
+ for(a=0; a<totface; a++)
+ strandbuf->totbound= MAX2(strandbuf->totbound, origindex[a]);
strandbuf->totbound++;
- strandbuf->bound= MEM_callocN(sizeof(StrandBound)*strandbuf->totbound, "StrandBound");
- sbound= strandbuf->bound;
- sbound->start= sbound->end= 0;
}
+ strandbuf->totbound++;
+ strandbuf->bound= MEM_callocN(sizeof(StrandBound)*strandbuf->totbound, "StrandBound");
+ sbound= strandbuf->bound;
+ sbound->start= sbound->end= 0;
}
}
- else if(keys_possible && part->draw&PART_DRAW_KEYS){
- path_nbr=part->keys_step;
- if(path_nbr==0)
- baked_keys=1;
- }
- if(orco==0){
- orco=MEM_mallocN(3*sizeof(float),"particle orco");
- orco1=1;
+ if(sd.orco == 0) {
+ sd.orco = MEM_mallocN(3 * sizeof(float), "particle orco");
+ orco1 = 1;
}
- if(path_nbr==0)
- psys->lattice= psys_get_lattice(re->scene, ob, psys);
+ if(path_nbr == 0)
+ psys->lattice = psys_get_lattice(re->scene, ob, psys);
/* 3. start creating renderable things */
for(a=0,pa=pars; a<totpart+totchild; a++, pa++, seed++) {
random = rng_getFloat(rng);
-
+ /* setup per particle individual stuff */
if(a<totpart){
if(pa->flag & PARS_UNEXIST) continue;
pa_time=(cfra-pa->time)/pa->lifetime;
- if((part->flag&PART_ABS_TIME)==0){
+ if((part->flag&PART_ABS_TIME) == 0){
#if 0 // XXX old animation system
- if(ma->ipo){
+ if(ma->ipo) {
/* correction for lifetime */
- calc_ipo(ma->ipo, 100.0f*pa_time);
+ calc_ipo(ma->ipo, 100.0f * pa_time);
execute_ipo((ID *)ma, ma->ipo);
}
if(part->ipo){
@@ -1707,51 +1687,25 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
/* get orco */
if(tpsys && (part->from==PART_FROM_PARTICLE || part->phystype==PART_PHYS_NO)){
tpa=tpsys->particles+pa->num;
- psys_particle_on_emitter(psmd,tpart->from,tpa->num,pa->num_dmcache,tpa->fuv,tpa->foffset,co,nor,0,0,orco,0);
+ psys_particle_on_emitter(psmd,tpart->from,tpa->num,pa->num_dmcache,tpa->fuv,tpa->foffset,co,nor,0,0,sd.orco,0);
}
else
- psys_particle_on_emitter(psmd,part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,co,nor,0,0,orco,0);
+ psys_particle_on_emitter(psmd,part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,co,nor,0,0,sd.orco,0);
+ /* get uvco & mcol */
num= pa->num_dmcache;
if(num == DMCACHE_NOTFOUND)
if(pa->num < psmd->dm->getNumFaces(psmd->dm))
num= pa->num;
- if(uvco && ELEM(part->from,PART_FROM_FACE,PART_FROM_VOLUME)){
- for(i=0; i<totuv; i++){
- if(num != DMCACHE_NOTFOUND) {
- MFace *mface=psmd->dm->getFaceData(psmd->dm,num,CD_MFACE);
- mtface=(MTFace*)CustomData_get_layer_n(&psmd->dm->faceData,CD_MTFACE,i);
- mtface+=num;
-
- psys_interpolate_uvs(mtface,mface->v4,pa->fuv,uvco+2*i);
- }
- else {
- uvco[2*i]= 0.0f;
- uvco[2*i + 1]= 0.0f;
- }
- }
- }
- if(mcol && ELEM(part->from,PART_FROM_FACE,PART_FROM_VOLUME)){
- for(i=0; i<totcol; i++){
- if(num != DMCACHE_NOTFOUND) {
- MFace *mface=psmd->dm->getFaceData(psmd->dm,num,CD_MFACE);
- MCol *mc=(MCol*)CustomData_get_layer_n(&psmd->dm->faceData,CD_MCOL,i);
- mc+=num*4;
-
- psys_interpolate_mcol(mc,mface->v4,pa->fuv,mcol+i);
- }
- else
- memset(&mcol[i], 0, sizeof(MCol));
- }
- }
+ get_particle_uvco_mcol(part->from, psmd->dm, pa->fuv, num, &sd);
- pa_size=pa->size;
+ pa_size = pa->size;
- r_tilt=1.0f+pa->r_ave[0];
+ r_tilt = 1.0f + pa->r_ave[0];
- if(path_nbr){
+ if(path_nbr) {
cache = psys->pathcache[a];
max_k = (int)cache->steps;
}
@@ -1760,125 +1714,69 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
}
else {
ChildParticle *cpa= psys->child+a-totpart;
+
+ if(path_nbr) {
+ cache = psys->childcache[a-totpart];
+
+ if(cache->steps < 0)
+ continue;
+
+ max_k = (int)cache->steps;
+ }
- pa_time=psys_get_child_time(psys, cpa, cfra);
+ pa_time = psys_get_child_time(psys, cpa, cfra);
- if((part->flag&PART_ABS_TIME)==0){
+ if((part->flag & PART_ABS_TIME) == 0) {
#if 0 // XXX old animation system
if(ma->ipo){
/* correction for lifetime */
- calc_ipo(ma->ipo, 100.0f*pa_time);
+ calc_ipo(ma->ipo, 100.0f * pa_time);
execute_ipo((ID *)ma, ma->ipo);
}
- if(part->ipo){
+ if(part->ipo) {
/* correction for lifetime */
- calc_ipo(part->ipo, 100.0f*pa_time);
+ calc_ipo(part->ipo, 100.0f * pa_time);
execute_ipo((ID *)part, part->ipo);
}
#endif // XXX old animation system
}
- pa_size=psys_get_child_size(psys, cpa, cfra, &pa_time);
+ pa_size = psys_get_child_size(psys, cpa, cfra, &pa_time);
- r_tilt=2.0f*cpa->rand[2];
+ r_tilt = 2.0f * cpa->rand[2];
- num= cpa->num;
+ num = cpa->num;
/* get orco */
if(part->childtype == PART_CHILD_FACES) {
psys_particle_on_emitter(psmd,
PART_FROM_FACE, cpa->num,DMCACHE_ISCHILD,
- cpa->fuv,cpa->foffset,co,nor,0,0,orco,0);
+ cpa->fuv,cpa->foffset,co,nor,0,0,sd.orco,0);
}
else {
ParticleData *par = psys->particles + cpa->parent;
psys_particle_on_emitter(psmd, part->from,
par->num,DMCACHE_ISCHILD,par->fuv,
- par->foffset,co,nor,0,0,orco,0);
- }
-
- if(uvco){
- if(part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES){
- for(i=0; i<totuv; i++){
- if(part->childtype==PART_CHILD_FACES){
- MFace *mface=psmd->dm->getFaceData(psmd->dm,cpa->num,CD_MFACE);
-
- mtface=(MTFace*)CustomData_get_layer_n(&psmd->dm->faceData,CD_MTFACE,i);
- mtface+=cpa->num;
-
- psys_interpolate_uvs(mtface,mface->v4,cpa->fuv,uvco+2*i);
- }
- else{
- uvco[2*i]=uvco[2*i+1]=0.0f;
- }
- }
- }
- else if(ELEM(part->from,PART_FROM_FACE,PART_FROM_VOLUME)){
- ParticleData *parent = psys->particles + cpa->parent;
- num= parent->num_dmcache;
-
- if(num == DMCACHE_NOTFOUND)
- if(parent->num < psmd->dm->getNumFaces(psmd->dm))
- num= parent->num;
-
- for(i=0; i<totuv; i++) {
- if(num != DMCACHE_NOTFOUND) {
- MFace *mface=psmd->dm->getFaceData(psmd->dm,num,CD_MFACE);
- mtface=(MTFace*)CustomData_get_layer_n(&psmd->dm->faceData,CD_MTFACE,i);
- mtface+=num;
- psys_interpolate_uvs(mtface,mface->v4,parent->fuv,uvco+2*i);
- }
- else {
- uvco[2*i]= 0.0f;
- uvco[2*i + 1]= 0.0f;
- }
- }
- }
+ par->foffset,co,nor,0,0,sd.orco,0);
}
- if(mcol){
- if(part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES){
- for(i=0; i<totcol; i++){
- if(part->childtype==PART_CHILD_FACES){
- MFace *mface=psmd->dm->getFaceData(psmd->dm,cpa->num,CD_MFACE);
- MCol *mc=(MCol*)CustomData_get_layer_n(&psmd->dm->faceData,CD_MCOL,i);
- mc+=cpa->num*4;
-
- psys_interpolate_mcol(mc,mface->v4,cpa->fuv,mcol+i);
- }
- else
- memset(&mcol[i], 0, sizeof(MCol));
- }
- }
- else if(ELEM(part->from,PART_FROM_FACE,PART_FROM_VOLUME)){
- ParticleData *parent = psys->particles + cpa->parent;
- num= parent->num_dmcache;
-
- if(num == DMCACHE_NOTFOUND)
- if(parent->num < psmd->dm->getNumFaces(psmd->dm))
- num= parent->num;
-
- for(i=0; i<totcol; i++){
- if(num != DMCACHE_NOTFOUND) {
- MFace *mface=psmd->dm->getFaceData(psmd->dm,num,CD_MFACE);
- MCol *mc=(MCol*)CustomData_get_layer_n(&psmd->dm->faceData,CD_MCOL,i);
- mc+=num*4;
-
- psys_interpolate_mcol(mc,mface->v4,parent->fuv,mcol+i);
- }
- else
- memset(&mcol[i], 0, sizeof(MCol));
- }
- }
+ /* get uvco & mcol */
+ if(part->from!=PART_FROM_PARTICLE && part->childtype==PART_CHILD_FACES) {
+ get_particle_uvco_mcol(PART_FROM_FACE, psmd->dm, cpa->fuv, cpa->num, &sd);
}
+ else {
+ ParticleData *parent = psys->particles + cpa->parent;
+ num = parent->num_dmcache;
- dosimplify= psys_render_simplify_params(psys, cpa, simplify);
+ if(num == DMCACHE_NOTFOUND)
+ if(parent->num < psmd->dm->getNumFaces(psmd->dm))
+ num = parent->num;
- if(path_nbr && psys->childcache) {
- cache = psys->childcache[a-totpart];
- max_k = (int)cache->steps;
+ get_particle_uvco_mcol(part->from, psmd->dm, pa->fuv, num, &sd);
}
+ dosimplify = psys_render_simplify_params(psys, cpa, simplify);
+
if(strandbuf) {
if(origindex[cpa->num]+1 > sbound - strandbuf->bound) {
sbound= strandbuf->bound + origindex[cpa->num]+1;
@@ -1890,17 +1788,17 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
/* surface normal shading setup */
if(ma->mode_l & MA_STR_SURFDIFF) {
Mat3MulVecfl(nmat, nor);
- surfnor= nor;
+ sd.surfnor= nor;
}
else
- surfnor= NULL;
+ sd.surfnor= NULL;
/* strand render setup */
if(strandbuf) {
strand= RE_findOrAddStrand(obr, obr->totstrand++);
strand->buffer= strandbuf;
strand->vert= svert;
- VECCOPY(strand->orco, orco);
+ VECCOPY(strand->orco, sd.orco);
if(dosimplify) {
float *ssimplify= RE_strandren_get_simplify(obr, strand, 1);
@@ -1908,9 +1806,9 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
ssimplify[1]= simplify[1];
}
- if(surfnor) {
+ if(sd.surfnor) {
float *snor= RE_strandren_get_surfnor(obr, strand, 1);
- VECCOPY(snor, surfnor);
+ VECCOPY(snor, sd.surfnor);
}
if(dosurfacecache && num >= 0) {
@@ -1918,20 +1816,20 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
*facenum= num;
}
- if(uvco) {
- for(i=0; i<totuv; i++) {
- if(i != override_uv) {
+ if(sd.uvco) {
+ for(i=0; i<sd.totuv; i++) {
+ if(i != sd.override_uv) {
float *uv= RE_strandren_get_uv(obr, strand, i, NULL, 1);
- uv[0]= uvco[2*i];
- uv[1]= uvco[2*i+1];
+ uv[0]= sd.uvco[2*i];
+ uv[1]= sd.uvco[2*i+1];
}
}
}
- if(mcol) {
- for(i=0; i<totcol; i++) {
+ if(sd.mcol) {
+ for(i=0; i<sd.totcol; i++) {
MCol *mc= RE_strandren_get_mcol(obr, strand, i, NULL, 1);
- *mc = mcol[i];
+ *mc = sd.mcol[i];
}
}
@@ -1947,11 +1845,10 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
strandlen += VecLenf((cache+k-1)->co, (cache+k)->co);
}
- for(k=0; k<=path_nbr; k++){
- if(path_nbr){
+ if(path_nbr) {
+ /* render strands */
+ for(k=0; k<=path_nbr; k++){
if(k<=max_k){
- //bti->convert_bake_key(bsys,cache+k,0,(void*)&state);
- //copy_particle_key(&state,cache+k,0);
VECCOPY(state.co,(cache+k)->co);
VECCOPY(state.vel,(cache+k)->vel);
}
@@ -1961,65 +1858,95 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
if(k > 0)
curlen += VecLenf((cache+k-1)->co, (cache+k)->co);
time= curlen/strandlen;
- }
- else{
- time=0.0f;
- state.time=cfra;
- if(psys_get_particle_state(re->scene, ob, psys, a, &state, 0)==0)
- continue;
+
+ VECCOPY(loc,state.co);
+ MTC_Mat4MulVecfl(re->viewmat,loc);
+
+ if(strandbuf) {
+ VECCOPY(svert->co, loc);
+ svert->strandco= -1.0f + 2.0f*time;
+ svert++;
+ strand->totvert++;
+ }
+ else{
+ sd.first = 0;
+ sd.time = time;
+ sd.size = hasize;
+
+ if(k==1){
+ sd.first = 1;
+ sd.time = 0.0f;
+ VECSUB(loc0,loc1,loc);
+ VECADD(loc0,loc1,loc0);
+ }
+
+ if(k)
+ render_new_particle(re, obr, psmd->dm, ma, &sd, loc, loc1, seed);
+
+ VECCOPY(loc1,loc);
+ }
}
+ }
+ else {
+ /* render normal particles */
+ time=0.0f;
+ state.time=cfra;
+ if(psys_get_particle_state(re->scene,ob,psys,a,&state,0)==0)
+ continue;
+
VECCOPY(loc,state.co);
if(part->draw_as!=PART_DRAW_BB)
MTC_Mat4MulVecfl(re->viewmat,loc);
- if(part->draw_as==PART_DRAW_LINE) {
- VECCOPY(vel,state.vel);
- //VECADD(vel,vel,state.co);
- MTC_Mat4Mul3Vecfl(re->viewmat,vel);
- //VECSUB(vel,vel,loc);
- Normalize(vel);
- if(part->draw & PART_DRAW_VEL_LENGTH)
- VecMulf(vel,VecLength(state.vel));
- VECADDFAC(loc0,loc,vel,-part->draw_line[0]);
- VECADDFAC(loc1,loc,vel,part->draw_line[1]);
-
- render_new_particle(re,obr,psmd->dm,ma,1,0,1,0.0f,loc0,loc1,
- orco,surfnor,totuv,uvco,totcol,mcol,hasize,seed,override_uv,0,0,0);
- }
- else if(part->draw_as==PART_DRAW_BB) {
- VECCOPY(vel,state.vel);
- //MTC_Mat4Mul3Vecfl(re->viewmat,vel);
- particle_billboard(re,obr,ma,bb_ob,loc,vel,pa_size,part->bb_tilt*(1.0f-part->bb_rand_tilt*r_tilt),
- part->bb_align,part->draw&PART_DRAW_BB_LOCK,
- a,totpart+totchild,part->bb_uv_split,part->bb_anim,part->bb_split_offset,random,pa_time,part->bb_offset,uv);
- }
- else if(strandbuf) {
- VECCOPY(svert->co, loc);
- svert->strandco= -1.0f + 2.0f*time;
- svert++;
- strand->totvert++;
- }
- else{
- if(k==1){
- VECSUB(loc0,loc1,loc);
- VECADD(loc0,loc1,loc0);
- render_new_particle(re,obr,psmd->dm,ma,path,1,0,0.0f,loc1,loc0,
- orco,surfnor,totuv,uvco,totcol,mcol,hasize,seed,override_uv,
- adapt,adapt_angle,adapt_pix);
- }
+ switch(part->draw_as) {
+ case PART_DRAW_LINE:
+ sd.line = 1;
+ sd.time = 0.0f;
+ sd.size = hasize;
+
+ VECCOPY(vel,state.vel);
+ MTC_Mat4Mul3Vecfl(re->viewmat,vel);
+ Normalize(vel);
- if(path_nbr==0 || k)
- render_new_particle(re,obr,psmd->dm,ma,path,0,0,time,loc,loc1,
- orco,surfnor,totuv,uvco,totcol,mcol,hasize,seed,override_uv,
- adapt,adapt_angle,adapt_pix);
+ if(part->draw & PART_DRAW_VEL_LENGTH)
+ VecMulf(vel,VecLength(state.vel));
- VECCOPY(loc1,loc);
+ VECADDFAC(loc0,loc,vel,-part->draw_line[0]);
+ VECADDFAC(loc1,loc,vel,part->draw_line[1]);
+
+ render_new_particle(re,obr,psmd->dm,ma,&sd,loc0,loc1,seed);
+
+ break;
+
+ case PART_DRAW_BB:
+ bb.random = random;
+ bb.size = pa_size;
+ bb.tilt = part->bb_tilt * (1.0f - part->bb_rand_tilt * r_tilt);
+ bb.time = pa_time;
+ bb.num = a;
+ VECCOPY(bb.vec, loc);
+ VECCOPY(bb.vel, state.vel);
+
+ particle_billboard(re, obr, ma, &bb);
+
+ break;
+
+ default:
+ {
+ HaloRen *har=0;
+
+ har = RE_inithalo_particle(re, obr, psmd->dm, ma, loc, NULL, sd.orco, sd.uvco, hasize, 0.0, seed);
+
+ if(har) har->lay= obr->ob->lay;
+
+ break;
+ }
}
}
if(orco1==0)
- orco+=3;
+ sd.orco+=3;
if(re->test_break(re->tbh))
break;
@@ -2034,13 +1961,13 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
#endif // XXX old animation system
if(orco1)
- MEM_freeN(orco);
+ MEM_freeN(sd.orco);
- if(uvco)
- MEM_freeN(uvco);
+ if(sd.uvco)
+ MEM_freeN(sd.uvco);
- if(mcol)
- MEM_freeN(mcol);
+ if(sd.mcol)
+ MEM_freeN(sd.mcol);
if(uv_name)
MEM_freeN(uv_name);
@@ -2057,7 +1984,7 @@ static int render_new_particle_system(Render *re, ObjectRen *obr, ParticleSystem
psys->lattice= NULL;
}
- if(path && (ma->mode_l & MA_TANGENT_STR)==0)
+ if(path_nbr && (ma->mode_l & MA_TANGENT_STR)==0)
calc_vertexnormals(re, obr, 0, 0);
return 1;
@@ -4447,24 +4374,8 @@ void RE_Database_Free(Render *re)
static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object *actob)
{
/* override not showing object when duplis are used with particles */
- if(ob->transflag & OB_DUPLIPARTS){
- int allow= 0;
-
- if(ob->particlesystem.first) {
- ParticleSystem *psys;
- ParticleSettings *part;
-
- for(psys=ob->particlesystem.first; psys; psys=psys->next){
- part=psys->part;
-
- if(part->draw & PART_DRAW_EMITTER)
- allow= 1;
- }
- }
-
- if(!allow)
- return 0;
- }
+ if(ob->transflag & OB_DUPLIPARTS)
+ ; /* let particle system(s) handle showing vs. not showing */
else if((ob->transflag & OB_DUPLI) && !(ob->transflag & OB_DUPLIFRAMES))
return 0;
diff --git a/source/blender/render/intern/source/raytrace.c b/source/blender/render/intern/source/raytrace.c
index ec47df74d04..09d3711885a 100644
--- a/source/blender/render/intern/source/raytrace.c
+++ b/source/blender/render/intern/source/raytrace.c
@@ -1,5 +1,5 @@
/**
- * $Id: $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
diff --git a/source/blender/render/intern/source/renderdatabase.c b/source/blender/render/intern/source/renderdatabase.c
index d44b49cc706..621831fb341 100644
--- a/source/blender/render/intern/source/renderdatabase.c
+++ b/source/blender/render/intern/source/renderdatabase.c
@@ -1032,9 +1032,11 @@ HaloRen *RE_inithalo(Render *re, ObjectRen *obr, Material *ma, float *vec, f
har->g= (yn*tg+ zn*ma->g);
har->b= (yn*tb+ zn*ma->b);
}
- if(mtex->texco & 16) {
+ if(mtex->texco & TEXCO_UV) {
har->alfa= tin;
}
+ if(mtex->mapto & MAP_ALPHA)
+ har->alfa= tin;
}
}
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt
index 884a6b47c14..14263580c4a 100644
--- a/source/creator/CMakeLists.txt
+++ b/source/creator/CMakeLists.txt
@@ -129,6 +129,7 @@ IF(APPLE)
COMMAND find ${TARGETDIR}/blender.app -name CVS -prune -exec rm -rf {} "\;"
COMMAND find ${TARGETDIR}/blender.app -name CVS.sandboxinfo -prune -exec rm -rf {} "\;"
COMMAND find ${TARGETDIR}/blender.app -name .DS_Store -prune -exec rm -rf {} "\;"
+ COMMAND find ${TARGETDIR}/blender.app -name .svn -prune -exec rm -rf {} "\;"
)
ENDIF(APPLE)
diff --git a/source/creator/Makefile b/source/creator/Makefile
index 3de46a68276..fbe5d252a77 100644
--- a/source/creator/Makefile
+++ b/source/creator/Makefile
@@ -1,3 +1,5 @@
+# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*-
+# vim: tabstop=8
#
# $Id$
#
@@ -22,7 +24,7 @@
#
# The Original Code is: all of this file.
#
-# Contributor(s): none yet.
+# Contributor(s): GSR
#
# ***** END GPL LICENSE BLOCK *****
#
@@ -58,14 +60,14 @@ CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
CPPFLAGS += -I$(NAN_GLEW)/include
ifeq ($(WITH_QUICKTIME), true)
- CPPFLAGS += -I$(NAN_QUICKTIME)/include -DWITH_QUICKTIME
+ CPPFLAGS += -I$(NAN_QUICKTIME)/include -DWITH_QUICKTIME
endif
ifeq ($(WITH_OPENJPEG), true)
- CPPFLAGS += -DWITH_OPENJPEG
+ CPPFLAGS += -DWITH_OPENJPEG
endif
ifeq ($(WITH_BINRELOC), true)
- CPPFLAGS += -I$(NANBLENDERHOME)/extern/binreloc/include -DWITH_BINRELOC
+ CPPFLAGS += -I$(NANBLENDERHOME)/extern/binreloc/include -DWITH_BINRELOC
endif
CPPFLAGS += -I$(OPENGL_HEADERS)
diff --git a/source/creator/SConscript b/source/creator/SConscript
index 27cfc161c42..75e7494ebb5 100644
--- a/source/creator/SConscript
+++ b/source/creator/SConscript
@@ -12,22 +12,24 @@ incs += ' ' + env['BF_OPENGL_INC']
defs = []
if env['WITH_BF_QUICKTIME']:
- incs += ' ' + env['BF_QUICKTIME_INC']
- defs.append('WITH_QUICKTIME')
+ incs += ' ' + env['BF_QUICKTIME_INC']
+ defs.append('WITH_QUICKTIME')
if env['WITH_BF_BINRELOC']:
- incs += ' ../../extern/binreloc/include'
- defs.append('WITH_BINRELOC')
+ incs += ' ../../extern/binreloc/include'
+ defs.append('WITH_BINRELOC')
if env['WITH_BF_OPENEXR']:
- defs.append('WITH_OPENEXR')
+ defs.append('WITH_OPENEXR')
if not env['WITH_BF_SDL']:
defs.append('DISABLE_SDL')
if env['WITH_BF_PYTHON']:
- incs += ' ../blender/python'
+ incs += ' ../blender/python'
+ if env['BF_DEBUG']:
+ defs.append('_DEBUG')
else:
- defs.append('DISABLE_PYTHON')
+ defs.append('DISABLE_PYTHON')
env.BlenderLib ( libname = 'bf_creator', sources = Split(sources), includes = Split(incs), defines = defs, libtype='core', priority = 0 )
diff --git a/source/darwin/Makefile b/source/darwin/Makefile
index e50036dc051..2df891d5887 100644
--- a/source/darwin/Makefile
+++ b/source/darwin/Makefile
@@ -1,5 +1,5 @@
#
-# $Id: Makefile,v 1.7 2003/05/12 18:12:25 sgefant Exp $
+# $Id$
#
# ***** BEGIN GPL LICENSE BLOCK *****
#
@@ -55,3 +55,4 @@ endif
@echo "---> removing CVS directories and Mac hidden files from distribution"
@find $(DIR)/bin/$(APPLICATION).app -name CVS -prune -exec rm -rf {} \;
@find $(DIR)/bin/$(APPLICATION).app -name .DS_Store -exec rm -f {} \;
+ @find $(DIR)/bin/$(APPLICATION).app -name .svn -exec rm -rf {} \;
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index 90d5a1860aa..d8de24c610c 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -369,7 +369,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
blscene);
// some python things
- PyObject* dictionaryobject = initGamePythonScripting("Ketsji", psl_Lowest);
+ PyObject* dictionaryobject = initGamePythonScripting("Ketsji", psl_Lowest, blenderdata);
ketsjiengine->SetPythonDictionary(dictionaryobject);
initRasterizer(rasterizer, canvas);
PyObject *gameLogic = initGameLogic(ketsjiengine, startscene);
@@ -380,10 +380,15 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
initGameKeys();
initPythonConstraintBinding();
initMathutils();
+ initBGL();
#ifdef WITH_FFMPEG
initVideoTexture();
#endif
+ //initialize Dome Settings
+ if(blscene->r.stereomode == RAS_IRasterizer::RAS_STEREO_DOME)
+ ketsjiengine->InitDome(blscene->r.domesize, blscene->r.domeres, blscene->r.domemode, blscene->r.domeangle, blscene->r.domeresbuf, blscene->r.dometext);
+
if (sceneconverter)
{
// convert and add scene
@@ -539,7 +544,9 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
SND_DeviceManager::Unsubscribe();
} while (exitrequested == KX_EXIT_REQUEST_RESTART_GAME || exitrequested == KX_EXIT_REQUEST_START_OTHER_GAME);
-
+
+ Py_DECREF(pyGlobalDict);
+
if (bfd) BLO_blendfiledata_free(bfd);
BLI_strncpy(G.sce, oldsce, sizeof(G.sce));
@@ -669,7 +676,7 @@ extern "C" void StartKetsjiShellSimulation(struct ScrArea *area,
blscene);
// some python things
- PyObject* dictionaryobject = initGamePythonScripting("Ketsji", psl_Lowest);
+ PyObject* dictionaryobject = initGamePythonScripting("Ketsji", psl_Lowest, blenderdata);
ketsjiengine->SetPythonDictionary(dictionaryobject);
initRasterizer(rasterizer, canvas);
PyObject *gameLogic = initGameLogic(ketsjiengine, startscene);
@@ -677,6 +684,7 @@ extern "C" void StartKetsjiShellSimulation(struct ScrArea *area,
initGameKeys();
initPythonConstraintBinding();
initMathutils();
+ initBGL();
#ifdef WITH_FFMPEG
initVideoTexture();
#endif
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
index b3b10e8bf07..648ad79210e 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
@@ -44,7 +44,7 @@
#include "BMF_Api.h"
-#include "BIF_gl.h"
+#include "GL/glew.h"
#include "BL_Material.h" // MAXTEX
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp b/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp
index 4b794380610..877a0d39acf 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderKeyboardDevice.cpp
@@ -74,7 +74,7 @@ void KX_BlenderKeyboardDevice::NextFrame()
// now convert justpressed keyevents into regular (active) keyevents
int previousTable = 1-m_currentTable;
- for (int keyevent= KX_BEGINKEY; keyevent< KX_ENDKEY;keyevent++)
+ for (int keyevent= KX_BEGINKEY; keyevent<= KX_ENDKEY;keyevent++)
{
SCA_InputEvent& oldevent = m_eventStatusTables[previousTable][keyevent];
if (oldevent.m_status == SCA_InputEvent::KX_JUSTACTIVATED ||
@@ -100,7 +100,7 @@ bool KX_BlenderKeyboardDevice::ConvertBlenderEvent(unsigned short incode,short v
KX_EnumInputs kxevent = this->ToNative(incode);
// only process it, if it's a key
- if (kxevent >= KX_BEGINKEY && kxevent < KX_ENDKEY)
+ if (kxevent >= KX_BEGINKEY && kxevent <= KX_ENDKEY)
{
int previousTable = 1-m_currentTable;
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
index 42ad7769cbd..9dbda3f195b 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
@@ -28,6 +28,8 @@
#include "GL/glew.h"
+#include "DNA_scene_types.h"
+
#include "RAS_IRenderTools.h"
#include "RAS_IRasterizer.h"
#include "RAS_LightObject.h"
@@ -67,6 +69,7 @@ void KX_BlenderRenderTools::BeginFrame(RAS_IRasterizer* rasty)
m_clientobject = NULL;
m_lastlightlayer = -1;
m_lastlighting = false;
+ m_lastauxinfo = NULL;
DisableOpenGLLights();
}
@@ -80,25 +83,27 @@ void KX_BlenderRenderTools::EndFrame(RAS_IRasterizer* rasty)
* has a maximum of 8 lights (simultaneous), so 20 * 8 lights are possible in
* a scene. */
-void KX_BlenderRenderTools::ProcessLighting(RAS_IRasterizer *rasty, int layer, const MT_Transform& viewmat)
+void KX_BlenderRenderTools::ProcessLighting(RAS_IRasterizer *rasty, bool uselights, const MT_Transform& viewmat)
{
- if(m_lastlightlayer == layer)
- return;
+ bool enable = false;
+ int layer= -1;
- m_lastlightlayer = layer;
+ /* find the layer */
+ if(uselights) {
+ if(m_clientobject)
+ layer = static_cast<KX_GameObject*>(m_clientobject)->GetLayer();
+ }
- bool enable = false;
+ /* avoid state switching */
+ if(m_lastlightlayer == layer && m_lastauxinfo == m_auxilaryClientInfo)
+ return;
- if (layer >= 0)
- {
- if (m_clientobject)
- {
- if (layer == RAS_LIGHT_OBJECT_LAYER)
- layer = static_cast<KX_GameObject*>(m_clientobject)->GetLayer();
+ m_lastlightlayer = layer;
+ m_lastauxinfo = m_auxilaryClientInfo;
- enable = applyLights(layer, viewmat);
- }
- }
+ /* enable/disable lights as needed */
+ if(layer >= 0)
+ enable = applyLights(layer, viewmat);
if(enable)
EnableOpenGLLights(rasty);
@@ -324,11 +329,16 @@ void KX_BlenderRenderTools::PopMatrix()
int KX_BlenderRenderTools::applyLights(int objectlayer, const MT_Transform& viewmat)
{
// taken from blender source, incompatibility between Blender Object / GameObject
+ KX_Scene* kxscene = (KX_Scene*)m_auxilaryClientInfo;
+ int scenelayer = ~0;
float glviewmat[16];
unsigned int count;
float vec[4];
vec[3]= 1.0;
+
+ if(kxscene && kxscene->GetBlenderScene())
+ scenelayer = kxscene->GetBlenderScene()->lay;
for(count=0; count<m_numgllights; count++)
glDisable((GLenum)(GL_LIGHT0+count));
@@ -343,71 +353,77 @@ int KX_BlenderRenderTools::applyLights(int objectlayer, const MT_Transform& view
for (lit = m_lights.begin(), count = 0; !(lit==m_lights.end()) && count < m_numgllights; ++lit)
{
RAS_LightObject* lightdata = (*lit);
- if (lightdata->m_layer & objectlayer)
- {
- vec[0] = (*(lightdata->m_worldmatrix))(0,3);
- vec[1] = (*(lightdata->m_worldmatrix))(1,3);
- vec[2] = (*(lightdata->m_worldmatrix))(2,3);
- vec[3] = 1;
+ KX_Scene* lightscene = (KX_Scene*)lightdata->m_scene;
- if(lightdata->m_type==RAS_LightObject::LIGHT_SUN) {
-
- vec[0] = (*(lightdata->m_worldmatrix))(0,2);
- vec[1] = (*(lightdata->m_worldmatrix))(1,2);
- vec[2] = (*(lightdata->m_worldmatrix))(2,2);
- //vec[0]= base->object->obmat[2][0];
- //vec[1]= base->object->obmat[2][1];
- //vec[2]= base->object->obmat[2][2];
- vec[3]= 0.0;
- glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
- }
- else {
- //vec[3]= 1.0;
- glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
- glLightf((GLenum)(GL_LIGHT0+count), GL_CONSTANT_ATTENUATION, 1.0);
- glLightf((GLenum)(GL_LIGHT0+count), GL_LINEAR_ATTENUATION, lightdata->m_att1/lightdata->m_distance);
- // without this next line it looks backward compatible.
- //attennuation still is acceptable
- glLightf((GLenum)(GL_LIGHT0+count), GL_QUADRATIC_ATTENUATION, lightdata->m_att2/(lightdata->m_distance*lightdata->m_distance));
-
- if(lightdata->m_type==RAS_LightObject::LIGHT_SPOT) {
- vec[0] = -(*(lightdata->m_worldmatrix))(0,2);
- vec[1] = -(*(lightdata->m_worldmatrix))(1,2);
- vec[2] = -(*(lightdata->m_worldmatrix))(2,2);
- //vec[0]= -base->object->obmat[2][0];
- //vec[1]= -base->object->obmat[2][1];
- //vec[2]= -base->object->obmat[2][2];
- glLightfv((GLenum)(GL_LIGHT0+count), GL_SPOT_DIRECTION, vec);
- glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, lightdata->m_spotsize/2.0);
- glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_EXPONENT, 128.0*lightdata->m_spotblend);
- }
- else glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, 180.0);
- }
+ /* only use lights in the same layer as the object */
+ if(!(lightdata->m_layer & objectlayer))
+ continue;
+ /* only use lights in the same scene, and in a visible layer */
+ if(kxscene != lightscene || !(lightdata->m_layer & scenelayer))
+ continue;
+
+ vec[0] = (*(lightdata->m_worldmatrix))(0,3);
+ vec[1] = (*(lightdata->m_worldmatrix))(1,3);
+ vec[2] = (*(lightdata->m_worldmatrix))(2,3);
+ vec[3] = 1;
+
+ if(lightdata->m_type==RAS_LightObject::LIGHT_SUN) {
- if (lightdata->m_nodiffuse)
- {
- vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
- } else {
- vec[0]= lightdata->m_energy*lightdata->m_red;
- vec[1]= lightdata->m_energy*lightdata->m_green;
- vec[2]= lightdata->m_energy*lightdata->m_blue;
- vec[3]= 1.0;
- }
- glLightfv((GLenum)(GL_LIGHT0+count), GL_DIFFUSE, vec);
- if (lightdata->m_nospecular)
- {
- vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
- } else if (lightdata->m_nodiffuse) {
- vec[0]= lightdata->m_energy*lightdata->m_red;
- vec[1]= lightdata->m_energy*lightdata->m_green;
- vec[2]= lightdata->m_energy*lightdata->m_blue;
- vec[3]= 1.0;
+ vec[0] = (*(lightdata->m_worldmatrix))(0,2);
+ vec[1] = (*(lightdata->m_worldmatrix))(1,2);
+ vec[2] = (*(lightdata->m_worldmatrix))(2,2);
+ //vec[0]= base->object->obmat[2][0];
+ //vec[1]= base->object->obmat[2][1];
+ //vec[2]= base->object->obmat[2][2];
+ vec[3]= 0.0;
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
+ }
+ else {
+ //vec[3]= 1.0;
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_CONSTANT_ATTENUATION, 1.0);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_LINEAR_ATTENUATION, lightdata->m_att1/lightdata->m_distance);
+ // without this next line it looks backward compatible.
+ //attennuation still is acceptable
+ glLightf((GLenum)(GL_LIGHT0+count), GL_QUADRATIC_ATTENUATION, lightdata->m_att2/(lightdata->m_distance*lightdata->m_distance));
+
+ if(lightdata->m_type==RAS_LightObject::LIGHT_SPOT) {
+ vec[0] = -(*(lightdata->m_worldmatrix))(0,2);
+ vec[1] = -(*(lightdata->m_worldmatrix))(1,2);
+ vec[2] = -(*(lightdata->m_worldmatrix))(2,2);
+ //vec[0]= -base->object->obmat[2][0];
+ //vec[1]= -base->object->obmat[2][1];
+ //vec[2]= -base->object->obmat[2][2];
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_SPOT_DIRECTION, vec);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, lightdata->m_spotsize/2.0);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_EXPONENT, 128.0*lightdata->m_spotblend);
}
- glLightfv((GLenum)(GL_LIGHT0+count), GL_SPECULAR, vec);
- glEnable((GLenum)(GL_LIGHT0+count));
-
- count++;
+ else glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, 180.0);
+ }
+
+ if (lightdata->m_nodiffuse)
+ {
+ vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
+ } else {
+ vec[0]= lightdata->m_energy*lightdata->m_red;
+ vec[1]= lightdata->m_energy*lightdata->m_green;
+ vec[2]= lightdata->m_energy*lightdata->m_blue;
+ vec[3]= 1.0;
+ }
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_DIFFUSE, vec);
+ if (lightdata->m_nospecular)
+ {
+ vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
+ } else if (lightdata->m_nodiffuse) {
+ vec[0]= lightdata->m_energy*lightdata->m_red;
+ vec[1]= lightdata->m_energy*lightdata->m_green;
+ vec[2]= lightdata->m_energy*lightdata->m_blue;
+ vec[3]= 1.0;
}
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_SPECULAR, vec);
+ glEnable((GLenum)(GL_LIGHT0+count));
+
+ count++;
}
glPopMatrix();
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
index ebf7562503f..60130e6bfc9 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
@@ -51,6 +51,7 @@ class KX_BlenderRenderTools : public RAS_IRenderTools
{
int m_lastlightlayer;
bool m_lastlighting;
+ void *m_lastauxinfo;
static unsigned int m_numgllights;
public:
@@ -62,7 +63,7 @@ public:
void EnableOpenGLLights(RAS_IRasterizer *rasty);
void DisableOpenGLLights();
- void ProcessLighting(RAS_IRasterizer *rasty, int layer, const MT_Transform& viewmat);
+ void ProcessLighting(RAS_IRasterizer *rasty, bool uselights, const MT_Transform& viewmat);
void RenderText2D(RAS_TEXT_RENDER_MODE mode,
const char* text,
diff --git a/source/gameengine/Converter/BL_ActionActuator.cpp b/source/gameengine/Converter/BL_ActionActuator.cpp
index ce555fc1aeb..662d6b7a63e 100644
--- a/source/gameengine/Converter/BL_ActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ActionActuator.cpp
@@ -423,8 +423,7 @@ const char BL_ActionActuator::GetAction_doc[] =
"getAction()\n"
"\tReturns a string containing the name of the current action.\n";
-PyObject* BL_ActionActuator::PyGetAction(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetAction(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getAction()", "the action property");
@@ -439,8 +438,7 @@ const char BL_ActionActuator::GetProperty_doc[] =
"getProperty()\n"
"\tReturns the name of the property to be used in FromProp mode.\n";
-PyObject* BL_ActionActuator::PyGetProperty(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetProperty(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getProperty()", "the property property");
@@ -456,8 +454,7 @@ const char BL_ActionActuator::GetFrameProperty_doc[] =
"getFrameProperty()\n"
"\tReturns the name of the property, that is set to the current frame number.\n";
-PyObject* BL_ActionActuator::PyGetFrameProperty(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetFrameProperty(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getFrameProperty()", "the frameProperty property");
@@ -473,8 +470,7 @@ const char BL_ActionActuator::GetFrame_doc[] =
"getFrame()\n"
"\tReturns the current frame number.\n";
-PyObject* BL_ActionActuator::PyGetFrame(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetFrame(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getFrame()", "the frame property");
@@ -490,8 +486,7 @@ const char BL_ActionActuator::GetEnd_doc[] =
"getEnd()\n"
"\tReturns the last frame of the action.\n";
-PyObject* BL_ActionActuator::PyGetEnd(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetEnd(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getEnd()", "the end property");
@@ -507,8 +502,7 @@ const char BL_ActionActuator::GetStart_doc[] =
"getStart()\n"
"\tReturns the starting frame of the action.\n";
-PyObject* BL_ActionActuator::PyGetStart(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetStart(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getStart()", "the start property");
@@ -525,8 +519,7 @@ const char BL_ActionActuator::GetBlendin_doc[] =
"\tReturns the number of interpolation animation frames to be\n"
"\tgenerated when this actuator is triggered.\n";
-PyObject* BL_ActionActuator::PyGetBlendin(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetBlendin(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getBlendin()", "the blendin property");
@@ -543,8 +536,7 @@ const char BL_ActionActuator::GetPriority_doc[] =
"\tReturns the priority for this actuator. Actuators with lower\n"
"\tPriority numbers will override actuators with higher numbers.\n";
-PyObject* BL_ActionActuator::PyGetPriority(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetPriority(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getPriority()", "the priority property");
@@ -565,15 +557,14 @@ const char BL_ActionActuator::SetAction_doc[] =
"\t unchanged. If reset is not specified, the timer will"
"\t be reset.\n";
-PyObject* BL_ActionActuator::PySetAction(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetAction(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setAction()", "the action property");
char *string;
int reset = 1;
- if (PyArg_ParseTuple(args,"s|i",&string, &reset))
+ if (PyArg_ParseTuple(args,"s|i:setAction",&string, &reset))
{
bAction *action;
@@ -601,14 +592,13 @@ const char BL_ActionActuator::SetStart_doc[] =
"setStart(start)\n"
"\t - start : Specifies the starting frame of the animation.\n";
-PyObject* BL_ActionActuator::PySetStart(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetStart(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setStart()", "the start property");
float start;
- if (PyArg_ParseTuple(args,"f",&start))
+ if (PyArg_ParseTuple(args,"f:setStart",&start))
{
m_startframe = start;
}
@@ -624,14 +614,13 @@ const char BL_ActionActuator::SetEnd_doc[] =
"setEnd(end)\n"
"\t - end : Specifies the ending frame of the animation.\n";
-PyObject* BL_ActionActuator::PySetEnd(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetEnd(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setEnd()", "the end property");
float end;
- if (PyArg_ParseTuple(args,"f",&end))
+ if (PyArg_ParseTuple(args,"f:setEnd",&end))
{
m_endframe = end;
}
@@ -648,14 +637,13 @@ const char BL_ActionActuator::SetBlendin_doc[] =
"\t - blendin : Specifies the number of frames of animation to generate\n"
"\t when making transitions between actions.\n";
-PyObject* BL_ActionActuator::PySetBlendin(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetBlendin(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setBlendin()", "the blendin property");
float blendin;
- if (PyArg_ParseTuple(args,"f",&blendin))
+ if (PyArg_ParseTuple(args,"f:setBlendin",&blendin))
{
m_blendin = blendin;
}
@@ -673,14 +661,13 @@ const char BL_ActionActuator::SetBlendtime_doc[] =
"\t used when generating transitions between actions. This\n"
"\t parameter must be in the range from 0.0 to 1.0.\n";
-PyObject* BL_ActionActuator::PySetBlendtime(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetBlendtime(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setBlendtime()", "the blendtime property");
float blendframe;
- if (PyArg_ParseTuple(args,"f",&blendframe))
+ if (PyArg_ParseTuple(args,"f:setBlendtime",&blendframe))
{
m_blendframe = blendframe * m_blendin;
if (m_blendframe<0)
@@ -702,14 +689,13 @@ const char BL_ActionActuator::SetPriority_doc[] =
"\t priority numbers will override actuators with higher\n"
"\t numbers.\n";
-PyObject* BL_ActionActuator::PySetPriority(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetPriority(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setPriority()", "the priority property");
int priority;
- if (PyArg_ParseTuple(args,"i",&priority))
+ if (PyArg_ParseTuple(args,"i:setPriority",&priority))
{
m_priority = priority;
}
@@ -725,14 +711,13 @@ const char BL_ActionActuator::SetFrame_doc[] =
"setFrame(frame)\n"
"\t - frame : Specifies the new current frame for the animation\n";
-PyObject* BL_ActionActuator::PySetFrame(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetFrame(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setFrame()", "the frame property");
float frame;
- if (PyArg_ParseTuple(args,"f",&frame))
+ if (PyArg_ParseTuple(args,"f:setFrame",&frame))
{
m_localtime = frame;
if (m_localtime<m_startframe)
@@ -753,14 +738,13 @@ const char BL_ActionActuator::SetProperty_doc[] =
"\t - prop : A string specifying the property name to be used in\n"
"\t FromProp playback mode.\n";
-PyObject* BL_ActionActuator::PySetProperty(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetProperty(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setProperty()", "the property property");
char *string;
- if (PyArg_ParseTuple(args,"s",&string))
+ if (PyArg_ParseTuple(args,"s:setProperty",&string))
{
m_propname = string;
}
@@ -776,14 +760,13 @@ const char BL_ActionActuator::SetFrameProperty_doc[] =
"setFrameProperty(prop)\n"
"\t - prop : A string specifying the property of the frame set up update.\n";
-PyObject* BL_ActionActuator::PySetFrameProperty(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetFrameProperty(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setFrameProperty()", "the frameProperty property");
char *string;
- if (PyArg_ParseTuple(args,"s",&string))
+ if (PyArg_ParseTuple(args,"s:setFrameProperty",&string))
{
m_framepropname = string;
}
@@ -795,12 +778,11 @@ PyObject* BL_ActionActuator::PySetFrameProperty(PyObject* self,
}
/*
-PyObject* BL_ActionActuator::PyGetChannel(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetChannel(PyObject* args,
PyObject* kwds) {
char *string;
- if (PyArg_ParseTuple(args,"s",&string))
+ if (PyArg_ParseTuple(args,"s:getChannel",&string))
{
m_propname = string;
}
@@ -816,8 +798,7 @@ PyObject* BL_ActionActuator::PyGetChannel(PyObject* self,
const char BL_ActionActuator::GetType_doc[] =
"getType()\n"
"\tReturns the operation mode of the actuator.\n";
-PyObject* BL_ActionActuator::PyGetType(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PyGetType(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("getType()", "the type property");
@@ -829,14 +810,13 @@ const char BL_ActionActuator::SetType_doc[] =
"setType(mode)\n"
"\t - mode: Play (0), Flipper (2), LoopStop (3), LoopEnd (4) or Property (6)\n"
"\tSet the operation mode of the actuator.\n";
-PyObject* BL_ActionActuator::PySetType(PyObject* self,
- PyObject* args,
+PyObject* BL_ActionActuator::PySetType(PyObject* args,
PyObject* kwds) {
ShowDeprecationWarning("setType()", "the type property");
short typeArg;
- if (!PyArg_ParseTuple(args, "h", &typeArg)) {
+ if (!PyArg_ParseTuple(args, "h:setType", &typeArg)) {
return NULL;
}
@@ -854,13 +834,13 @@ PyObject* BL_ActionActuator::PySetType(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* BL_ActionActuator::PyGetContinue(PyObject* self) {
+PyObject* BL_ActionActuator::PyGetContinue() {
ShowDeprecationWarning("getContinue()", "the continue property");
return PyInt_FromLong((long)(m_end_reset==0));
}
-PyObject* BL_ActionActuator::PySetContinue(PyObject* self, PyObject* value) {
+PyObject* BL_ActionActuator::PySetContinue(PyObject* value) {
ShowDeprecationWarning("setContinue()", "the continue property");
int param = PyObject_IsTrue( value );
@@ -894,7 +874,7 @@ KX_PYMETHODDEF_DOC(BL_ActionActuator, setChannel,
int row,col;
int mode = 0; /* 0 for bone space, 1 for armature/world space */
- if (!PyArg_ParseTuple(args,"sO|i", &string, &pylist, &mode))
+ if (!PyArg_ParseTuple(args,"sO|i:setChannel", &string, &pylist, &mode))
return NULL;
if (pylist->ob_type == &CListValue::Type)
@@ -965,22 +945,22 @@ KX_PYMETHODDEF_DOC(BL_ActionActuator, setChannel,
/* ------------------------------------------------------------------------- */
PyTypeObject BL_ActionActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"BL_ActionActuator",
- sizeof(BL_ActionActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject BL_ActionActuator::Parents[] = {
@@ -1025,6 +1005,7 @@ PyAttributeDef BL_ActionActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ActionActuator, m_startframe),
KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ActionActuator, m_endframe),
KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, BL_ActionActuator, m_blendin),
+ KX_PYATTRIBUTE_RW_FUNCTION("action", BL_ActionActuator, pyattr_get_action, pyattr_set_action),
KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, BL_ActionActuator, m_priority),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, BL_ActionActuator, m_localtime, CheckFrame),
KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, BL_ActionActuator, m_propname),
@@ -1035,48 +1016,45 @@ PyAttributeDef BL_ActionActuator::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* BL_ActionActuator::_getattr(const char *attr) {
- if (!strcmp(attr, "action"))
- return PyString_FromString(m_action->id.name+2);
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_IActuator);
+PyObject* BL_ActionActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
}
-int BL_ActionActuator::_setattr(const char *attr, PyObject* value) {
- if (!strcmp(attr, "action"))
- {
- if (!PyString_Check(value))
- {
- PyErr_SetString(PyExc_ValueError, "expected a string");
- return 1;
- }
+int BL_ActionActuator::py_setattro(PyObject *attr, PyObject* value) {
+ py_setattro_up(SCA_IActuator);
+}
- STR_String val = PyString_AsString(value);
-
- if (val == "")
- {
- m_action = NULL;
- return 0;
- }
- bAction *action;
-
- action = (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
-
+PyObject* BL_ActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);
+ return PyString_FromString(self->GetAction() ? self->GetAction()->id.name+2 : "");
+}
+
+int BL_ActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ BL_ActionActuator* self= static_cast<BL_ActionActuator*>(self_v);
+
+ if (!PyString_Check(value))
+ {
+ PyErr_SetString(PyExc_ValueError, "actuator.action = val: Action Actuator, expected the string name of the action");
+ return -1;
+ }
+ bAction *action= NULL;
+ STR_String val = PyString_AsString(value);
+
+ if (val != "")
+ {
+ action= (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
if (!action)
{
- PyErr_SetString(PyExc_ValueError, "action not found!");
+ PyErr_SetString(PyExc_ValueError, "actuator.action = val: Action Actuator, action not found!");
return 1;
}
-
- m_action = action;
- return 0;
}
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_IActuator::_setattr(attr, value);
+
+ self->SetAction(action);
+ return 0;
+
}
diff --git a/source/gameengine/Converter/BL_ActionActuator.h b/source/gameengine/Converter/BL_ActionActuator.h
index 6161048afb8..6ae7f716b4b 100644
--- a/source/gameengine/Converter/BL_ActionActuator.h
+++ b/source/gameengine/Converter/BL_ActionActuator.h
@@ -81,6 +81,9 @@ public:
virtual void ProcessReplica();
void SetBlendTime (float newtime);
+
+ bAction* GetAction() { return m_action; }
+ void SetAction(bAction* act) { m_action= act; }
//Deprecated ----->
KX_PYMETHOD_DOC(BL_ActionActuator,SetAction);
@@ -110,8 +113,11 @@ public:
KX_PYMETHOD_DOC(BL_ActionActuator,setChannel);
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ virtual PyObject* py_getattro(PyObject* attr);
+ virtual int py_setattro(PyObject* attr, PyObject* value);
+
+ static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
/* attribute check */
static int CheckFrame(void *self, const PyAttributeDef*)
@@ -148,11 +154,11 @@ public:
case ACT_ACTION_FROM_PROP:
return 0;
default:
- PyErr_SetString(PyExc_ValueError, "invalid type supplied");
+ PyErr_SetString(PyExc_ValueError, "Action Actuator, invalid play type supplied");
return 1;
}
-
}
+
protected:
void SetStartTime(float curtime);
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index da74fa49cba..5220361d10d 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -164,7 +164,11 @@ extern "C" {
// defines USE_ODE to choose physics engine
#include "KX_ConvertPhysicsObject.h"
-
+#ifdef USE_BULLET
+#include "CcdPhysicsEnvironment.h"
+#include "CcdGraphicController.h"
+#endif
+#include "KX_MotionState.h"
// This file defines relationships between parents and children
// in the game engine.
@@ -598,10 +602,7 @@ BL_Material* ConvertMaterial(
if( validface ) {
- material->ras_mode |= !(
- (mface->flag & ME_HIDE) ||
- (tface->mode & TF_INVISIBLE)
- )?POLY_VIS:0;
+ material->ras_mode |= (tface->mode & TF_INVISIBLE)?0:POLY_VIS;
material->transp = tface->transp;
material->tile = tface->tile;
@@ -839,6 +840,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
{
bool visible = true;
+ bool twoside = false;
RAS_IPolyMaterial* polymat = NULL;
BL_Material *bl_mat = NULL;
@@ -855,6 +857,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
visible = ((bl_mat->ras_mode & POLY_VIS)!=0);
collider = ((bl_mat->ras_mode & COLLIDER)!=0);
+ twoside = ((bl_mat->mode & TF_TWOSIDE)!=0);
/* vertex colors and uv's were stored in bl_mat temporarily */
bl_mat->GetConversionRGB(rgb);
@@ -894,7 +897,8 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
tile = tface->tile;
mode = tface->mode;
- visible = !((mface->flag & ME_HIDE)||(tface->mode & TF_INVISIBLE));
+ visible = !(tface->mode & TF_INVISIBLE);
+ twoside = ((tface->mode & TF_TWOSIDE)!=0);
uv0.setValue(tface->uv[0]);
uv1.setValue(tface->uv[1]);
@@ -995,6 +999,7 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
poly->SetVisible(visible);
poly->SetCollider(collider);
+ poly->SetTwoside(twoside);
//poly->SetEdgeCode(mface->edcode);
meshobj->AddVertex(poly,0,pt0,uv0,uv20,tan0,rgb0,no0,flat,mface->v1);
@@ -1099,6 +1104,10 @@ static PHY_ShapeProps *CreateShapePropsFromBlenderObject(struct Object* blendero
shapeProps->m_do_fh = (blenderobject->gameflag & OB_DO_FH) != 0;
shapeProps->m_do_rot_fh = (blenderobject->gameflag & OB_ROT_FH) != 0;
+// velocity clamping XXX
+ shapeProps->m_clamp_vel_min = blenderobject->min_vel;
+ shapeProps->m_clamp_vel_max = blenderobject->max_vel;
+
return shapeProps;
}
@@ -1116,6 +1125,7 @@ static float my_boundbox_mesh(Mesh *me, float *loc, float *size)
BoundBox *bb;
MT_Point3 min, max;
float mloc[3], msize[3];
+ float radius=0.0f, vert_radius, *co;
int a;
if(me->bb==0) me->bb= (struct BoundBox *)MEM_callocN(sizeof(BoundBox), "boundbox");
@@ -1128,7 +1138,15 @@ static float my_boundbox_mesh(Mesh *me, float *loc, float *size)
mvert= me->mvert;
for(a=0; a<me->totvert; a++, mvert++) {
- DO_MINMAX(mvert->co, min, max);
+ co= mvert->co;
+
+ /* bounds */
+ DO_MINMAX(co, min, max);
+
+ /* radius */
+ vert_radius= co[0]*co[0] + co[1]*co[1] + co[2]*co[2];
+ if (vert_radius > radius)
+ radius= vert_radius;
}
if(me->totvert) {
@@ -1154,13 +1172,6 @@ static float my_boundbox_mesh(Mesh *me, float *loc, float *size)
bb->vec[0][2]=bb->vec[3][2]=bb->vec[4][2]=bb->vec[7][2]= loc[2]-size[2];
bb->vec[1][2]=bb->vec[2][2]=bb->vec[5][2]=bb->vec[6][2]= loc[2]+size[2];
- float radius = 0;
- for (a=0, mvert = me->mvert; a < me->totvert; a++, mvert++)
- {
- float vert_radius = MT_Vector3(mvert->co).length2();
- if (vert_radius > radius)
- radius = vert_radius;
- }
return sqrt(radius);
}
@@ -1265,8 +1276,37 @@ static void my_get_local_bounds(Object *ob, float *center, float *size)
//////////////////////////////////////////////////////
-
-
+void BL_CreateGraphicObjectNew(KX_GameObject* gameobj,
+ const MT_Point3& localAabbMin,
+ const MT_Point3& localAabbMax,
+ KX_Scene* kxscene,
+ bool isActive,
+ e_PhysicsEngine physics_engine)
+{
+ if (gameobj->GetMeshCount() > 0)
+ {
+ switch (physics_engine)
+ {
+#ifdef USE_BULLET
+ case UseBullet:
+ {
+ CcdPhysicsEnvironment* env = (CcdPhysicsEnvironment*)kxscene->GetPhysicsEnvironment();
+ assert(env);
+ PHY_IMotionState* motionstate = new KX_MotionState(gameobj->GetSGNode());
+ CcdGraphicController* ctrl = new CcdGraphicController(env, motionstate);
+ gameobj->SetGraphicController(ctrl);
+ ctrl->setNewClientInfo(gameobj->getClientInfo());
+ ctrl->setLocalAabb(localAabbMin, localAabbMax);
+ if (isActive)
+ env->addCcdGraphicController(ctrl);
+ }
+ break;
+#endif
+ default:
+ break;
+ }
+ }
+}
void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
struct Object* blenderobject,
@@ -1642,6 +1682,7 @@ static KX_GameObject *gameobject_from_blenderobject(
bool ignoreActivityCulling =
((ob->gameflag2 & OB_NEVER_DO_ACTIVITY_CULLING)!=0);
gameobj->SetIgnoreActivityCulling(ignoreActivityCulling);
+ gameobj->SetOccluder((ob->gameflag & OB_OCCLUDER) != 0, false);
// two options exists for deform: shape keys and armature
// only support relative shape key
@@ -1859,10 +1900,14 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
if (blenderscene->world) {
kxscene->SetActivityCulling( (blenderscene->world->mode & WO_ACTIVITY_CULLING) != 0);
kxscene->SetActivityCullingRadius(blenderscene->world->activityBoxRadius);
+ kxscene->SetDbvtCulling((blenderscene->world->mode & WO_DBVT_CULLING) != 0);
} else {
kxscene->SetActivityCulling(false);
+ kxscene->SetDbvtCulling(false);
}
-
+ // no occlusion culling by default
+ kxscene->SetDbvtOcclusionRes(0);
+
int activeLayerBitInfo = blenderscene->lay;
// templist to find Root Parents (object with no parents)
@@ -1954,7 +1999,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
gameobj->NodeSetLocalPosition(pos);
gameobj->NodeSetLocalOrientation(MT_Matrix3x3(eulxyz));
gameobj->NodeSetLocalScale(scale);
- gameobj->NodeUpdateGS(0,true);
+ gameobj->NodeUpdateGS(0);
BL_ConvertIpos(blenderobject,gameobj,converter);
BL_ConvertMaterialIpos(blenderobject, gameobj, converter);
@@ -2037,7 +2082,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
objectlist->Add(gameobj->AddRef());
//tf.Add(gameobj->GetSGNode());
- gameobj->NodeUpdateGS(0,true);
+ gameobj->NodeUpdateGS(0);
gameobj->AddMeshUser();
}
@@ -2148,7 +2193,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
gameobj->NodeSetLocalPosition(pos);
gameobj->NodeSetLocalOrientation(MT_Matrix3x3(eulxyz));
gameobj->NodeSetLocalScale(scale);
- gameobj->NodeUpdateGS(0,true);
+ gameobj->NodeUpdateGS(0);
BL_ConvertIpos(blenderobject,gameobj,converter);
BL_ConvertMaterialIpos(blenderobject,gameobj, converter);
@@ -2226,7 +2271,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
objectlist->Add(gameobj->AddRef());
//tf.Add(gameobj->GetSGNode());
- gameobj->NodeUpdateGS(0,true);
+ gameobj->NodeUpdateGS(0);
gameobj->AddMeshUser();
}
else
@@ -2309,7 +2354,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
// Remove the child reference in the local list!
// Note: there may be descendents already if the children of the child were processed
// by this loop before the child. In that case, we must remove the children also
- CListValue* childrenlist = (CListValue*)childobj->PyGetChildrenRecursive(childobj);
+ CListValue* childrenlist = childobj->GetChildrenRecursive();
childrenlist->Add(childobj->AddRef());
for ( i=0;i<childrenlist->GetCount();i++)
{
@@ -2377,7 +2422,7 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
if (gameobj->GetSGNode()->GetSGParent() == 0)
{
parentlist->Add(gameobj->AddRef());
- gameobj->NodeUpdateGS(0,true);
+ gameobj->NodeUpdateGS(0);
}
}
@@ -2414,6 +2459,27 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
BL_CreatePhysicsObjectNew(gameobj,blenderobject,meshobj,kxscene,layerMask,physics_engine,converter,processCompoundChildren);
}
+ // create graphic controller for culling
+ if (kxscene->GetDbvtCulling())
+ {
+ bool occlusion = false;
+ for (i=0; i<sumolist->GetCount();i++)
+ {
+ KX_GameObject* gameobj = (KX_GameObject*) sumolist->GetValue(i);
+ if (gameobj->GetMeshCount() > 0)
+ {
+ MT_Point3 box[2];
+ gameobj->GetSGNode()->BBox().getmm(box, MT_Transform::Identity());
+ // box[0] is the min, box[1] is the max
+ bool isactive = objectlist->SearchValue(gameobj);
+ BL_CreateGraphicObjectNew(gameobj,box[0],box[1],kxscene,isactive,physics_engine);
+ if (gameobj->GetOccluder())
+ occlusion = true;
+ }
+ }
+ if (occlusion)
+ kxscene->SetDbvtOcclusionRes(blenderscene->world->occlusionRes);
+ }
//set ini linearVel and int angularVel //rcruiz
if (converter->addInitFromFrame)
diff --git a/source/gameengine/Converter/BL_ShapeActionActuator.cpp b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
index f4e3e7e0ae8..b0c9e0f5694 100644
--- a/source/gameengine/Converter/BL_ShapeActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ShapeActionActuator.cpp
@@ -420,22 +420,22 @@ bool BL_ShapeActionActuator::Update(double curtime, bool frame)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject BL_ShapeActionActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"BL_ShapeActionActuator",
- sizeof(BL_ShapeActionActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject BL_ShapeActionActuator::Parents[] = {
@@ -474,6 +474,7 @@ PyAttributeDef BL_ShapeActionActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RW("start", 0, MAXFRAMEF, BL_ShapeActionActuator, m_startframe),
KX_PYATTRIBUTE_FLOAT_RW("end", 0, MAXFRAMEF, BL_ShapeActionActuator, m_endframe),
KX_PYATTRIBUTE_FLOAT_RW("blendin", 0, MAXFRAMEF, BL_ShapeActionActuator, m_blendin),
+ KX_PYATTRIBUTE_RW_FUNCTION("action", BL_ShapeActionActuator, pyattr_get_action, pyattr_set_action),
KX_PYATTRIBUTE_SHORT_RW("priority", 0, 100, false, BL_ShapeActionActuator, m_priority),
KX_PYATTRIBUTE_FLOAT_RW_CHECK("frame", 0, MAXFRAMEF, BL_ShapeActionActuator, m_localtime, CheckFrame),
KX_PYATTRIBUTE_STRING_RW("property", 0, 31, false, BL_ShapeActionActuator, m_propname),
@@ -484,50 +485,12 @@ PyAttributeDef BL_ShapeActionActuator::Attributes[] = {
};
-PyObject* BL_ShapeActionActuator::_getattr(const char *attr) {
- if (!strcmp(attr, "action"))
- return PyString_FromString(m_action->id.name+2);
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_IActuator);
+PyObject* BL_ShapeActionActuator::py_getattro(PyObject* attr) {
+ py_getattro_up(SCA_IActuator);
}
-int BL_ShapeActionActuator::_setattr(const char *attr, PyObject* value) {
- if (!strcmp(attr, "action"))
- {
- if (!PyString_Check(value))
- {
- PyErr_SetString(PyExc_ValueError, "expected a string");
- return 1;
- }
-
- STR_String val = PyString_AsString(value);
-
- if (val == "")
- {
- m_action = NULL;
- return 0;
- }
-
- bAction *action;
-
- action = (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
-
-
- if (!action)
- {
- PyErr_SetString(PyExc_ValueError, "action not found!");
- return 1;
- }
-
- m_action = action;
- return 0;
- }
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_IActuator::_setattr(attr, value);
+int BL_ShapeActionActuator::py_setattro(PyObject *attr, PyObject* value) {
+ py_setattro_up(SCA_IActuator);
}
/* setStart */
@@ -535,7 +498,7 @@ const char BL_ShapeActionActuator::GetAction_doc[] =
"getAction()\n"
"\tReturns a string containing the name of the current action.\n";
-PyObject* BL_ShapeActionActuator::PyGetAction(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetAction() {
ShowDeprecationWarning("getAction()", "the action property");
if (m_action){
return PyString_FromString(m_action->id.name+2);
@@ -548,7 +511,7 @@ const char BL_ShapeActionActuator::GetProperty_doc[] =
"getProperty()\n"
"\tReturns the name of the property to be used in FromProp mode.\n";
-PyObject* BL_ShapeActionActuator::PyGetProperty(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetProperty() {
ShowDeprecationWarning("getProperty()", "the property property");
PyObject *result;
@@ -562,7 +525,7 @@ const char BL_ShapeActionActuator::GetFrame_doc[] =
"getFrame()\n"
"\tReturns the current frame number.\n";
-PyObject* BL_ShapeActionActuator::PyGetFrame(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetFrame() {
ShowDeprecationWarning("getFrame()", "the frame property");
PyObject *result;
@@ -576,7 +539,7 @@ const char BL_ShapeActionActuator::GetEnd_doc[] =
"getEnd()\n"
"\tReturns the last frame of the action.\n";
-PyObject* BL_ShapeActionActuator::PyGetEnd(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetEnd() {
ShowDeprecationWarning("getEnd()", "the end property");
PyObject *result;
@@ -590,7 +553,7 @@ const char BL_ShapeActionActuator::GetStart_doc[] =
"getStart()\n"
"\tReturns the starting frame of the action.\n";
-PyObject* BL_ShapeActionActuator::PyGetStart(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetStart() {
ShowDeprecationWarning("getStart()", "the start property");
PyObject *result;
@@ -605,7 +568,7 @@ const char BL_ShapeActionActuator::GetBlendin_doc[] =
"\tReturns the number of interpolation animation frames to be\n"
"\tgenerated when this actuator is triggered.\n";
-PyObject* BL_ShapeActionActuator::PyGetBlendin(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetBlendin() {
ShowDeprecationWarning("getBlendin()", "the blendin property");
PyObject *result;
@@ -620,7 +583,7 @@ const char BL_ShapeActionActuator::GetPriority_doc[] =
"\tReturns the priority for this actuator. Actuators with lower\n"
"\tPriority numbers will override actuators with higher numbers.\n";
-PyObject* BL_ShapeActionActuator::PyGetPriority(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetPriority() {
ShowDeprecationWarning("getPriority()", "the priority property");
PyObject *result;
@@ -640,14 +603,12 @@ const char BL_ShapeActionActuator::SetAction_doc[] =
"\t unchanged. If reset is not specified, the timer will"
"\t be reset.\n";
-PyObject* BL_ShapeActionActuator::PySetAction(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetAction(PyObject* args) {
ShowDeprecationWarning("setAction()", "the action property");
char *string;
int reset = 1;
- if (PyArg_ParseTuple(args,"s|i",&string, &reset))
+ if (PyArg_ParseTuple(args,"s|i:setAction",&string, &reset))
{
bAction *action;
@@ -675,13 +636,11 @@ const char BL_ShapeActionActuator::SetStart_doc[] =
"setStart(start)\n"
"\t - start : Specifies the starting frame of the animation.\n";
-PyObject* BL_ShapeActionActuator::PySetStart(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetStart(PyObject* args) {
ShowDeprecationWarning("setStart()", "the start property");
float start;
- if (PyArg_ParseTuple(args,"f",&start))
+ if (PyArg_ParseTuple(args,"f:setStart",&start))
{
m_startframe = start;
}
@@ -697,13 +656,11 @@ const char BL_ShapeActionActuator::SetEnd_doc[] =
"setEnd(end)\n"
"\t - end : Specifies the ending frame of the animation.\n";
-PyObject* BL_ShapeActionActuator::PySetEnd(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetEnd(PyObject* args) {
ShowDeprecationWarning("setEnd()", "the end property");
float end;
- if (PyArg_ParseTuple(args,"f",&end))
+ if (PyArg_ParseTuple(args,"f:setEnd",&end))
{
m_endframe = end;
}
@@ -720,13 +677,11 @@ const char BL_ShapeActionActuator::SetBlendin_doc[] =
"\t - blendin : Specifies the number of frames of animation to generate\n"
"\t when making transitions between actions.\n";
-PyObject* BL_ShapeActionActuator::PySetBlendin(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetBlendin(PyObject* args) {
ShowDeprecationWarning("setBlendin()", "the blendin property");
float blendin;
- if (PyArg_ParseTuple(args,"f",&blendin))
+ if (PyArg_ParseTuple(args,"f:setBlendin",&blendin))
{
m_blendin = blendin;
}
@@ -744,13 +699,11 @@ const char BL_ShapeActionActuator::SetBlendtime_doc[] =
"\t used when generating transitions between actions. This\n"
"\t parameter must be in the range from 0.0 to 1.0.\n";
-PyObject* BL_ShapeActionActuator::PySetBlendtime(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetBlendtime(PyObject* args) {
ShowDeprecationWarning("setBlendtime()", "the blendTime property");
float blendframe;
- if (PyArg_ParseTuple(args,"f",&blendframe))
+ if (PyArg_ParseTuple(args,"f:setBlendtime",&blendframe))
{
m_blendframe = blendframe * m_blendin;
if (m_blendframe<0.f)
@@ -772,13 +725,11 @@ const char BL_ShapeActionActuator::SetPriority_doc[] =
"\t priority numbers will override actuators with higher\n"
"\t numbers.\n";
-PyObject* BL_ShapeActionActuator::PySetPriority(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetPriority(PyObject* args) {
ShowDeprecationWarning("setPriority()", "the priority property");
int priority;
- if (PyArg_ParseTuple(args,"i",&priority))
+ if (PyArg_ParseTuple(args,"i:setPriority",&priority))
{
m_priority = priority;
}
@@ -794,7 +745,7 @@ const char BL_ShapeActionActuator::GetFrameProperty_doc[] =
"getFrameProperty()\n"
"\tReturns the name of the property, that is set to the current frame number.\n";
-PyObject* BL_ShapeActionActuator::PyGetFrameProperty(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetFrameProperty() {
ShowDeprecationWarning("getFrameProperty()", "the frameProperty property");
PyObject *result;
@@ -809,13 +760,11 @@ const char BL_ShapeActionActuator::SetFrame_doc[] =
"setFrame(frame)\n"
"\t - frame : Specifies the new current frame for the animation\n";
-PyObject* BL_ShapeActionActuator::PySetFrame(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetFrame(PyObject* args) {
ShowDeprecationWarning("setFrame()", "the frame property");
float frame;
- if (PyArg_ParseTuple(args,"f",&frame))
+ if (PyArg_ParseTuple(args,"f:setFrame",&frame))
{
m_localtime = frame;
if (m_localtime<m_startframe)
@@ -836,13 +785,11 @@ const char BL_ShapeActionActuator::SetProperty_doc[] =
"\t - prop : A string specifying the property name to be used in\n"
"\t FromProp playback mode.\n";
-PyObject* BL_ShapeActionActuator::PySetProperty(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetProperty(PyObject* args) {
ShowDeprecationWarning("setProperty()", "the property property");
char *string;
- if (PyArg_ParseTuple(args,"s",&string))
+ if (PyArg_ParseTuple(args,"s:setProperty",&string))
{
m_propname = string;
}
@@ -858,13 +805,11 @@ const char BL_ShapeActionActuator::SetFrameProperty_doc[] =
"setFrameProperty(prop)\n"
"\t - prop : A string specifying the property of the frame set up update.\n";
-PyObject* BL_ShapeActionActuator::PySetFrameProperty(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetFrameProperty(PyObject* args) {
ShowDeprecationWarning("setFrameProperty()", "the frameProperty property");
char *string;
- if (PyArg_ParseTuple(args,"s",&string))
+ if (PyArg_ParseTuple(args,"s:setFrameProperty",&string))
{
m_framepropname = string;
}
@@ -879,7 +824,7 @@ PyObject* BL_ShapeActionActuator::PySetFrameProperty(PyObject* self,
const char BL_ShapeActionActuator::GetType_doc[] =
"getType()\n"
"\tReturns the operation mode of the actuator.\n";
-PyObject* BL_ShapeActionActuator::PyGetType(PyObject* self) {
+PyObject* BL_ShapeActionActuator::PyGetType() {
ShowDeprecationWarning("getType()", "the type property");
return Py_BuildValue("h", m_playtype);
}
@@ -889,13 +834,11 @@ const char BL_ShapeActionActuator::SetType_doc[] =
"setType(mode)\n"
"\t - mode: Play (0), Flipper (2), LoopStop (3), LoopEnd (4) or Property (6)\n"
"\tSet the operation mode of the actuator.\n";
-PyObject* BL_ShapeActionActuator::PySetType(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* BL_ShapeActionActuator::PySetType(PyObject* args) {
ShowDeprecationWarning("setType()", "the type property");
short typeArg;
- if (!PyArg_ParseTuple(args, "h", &typeArg)) {
+ if (!PyArg_ParseTuple(args, "h:setType", &typeArg)) {
return NULL;
}
@@ -914,3 +857,36 @@ PyObject* BL_ShapeActionActuator::PySetType(PyObject* self,
Py_RETURN_NONE;
}
+PyObject* BL_ShapeActionActuator::pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ BL_ShapeActionActuator* self= static_cast<BL_ShapeActionActuator*>(self_v);
+ return PyString_FromString(self->GetAction() ? self->GetAction()->id.name+2 : "");
+}
+
+int BL_ShapeActionActuator::pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ BL_ShapeActionActuator* self= static_cast<BL_ShapeActionActuator*>(self_v);
+ /* exact copy of BL_ActionActuator's function from here down */
+ if (!PyString_Check(value))
+ {
+ PyErr_SetString(PyExc_ValueError, "actuator.action = val: Shape Action Actuator, expected the string name of the action");
+ return -1;
+ }
+
+ bAction *action= NULL;
+ STR_String val = PyString_AsString(value);
+
+ if (val != "")
+ {
+ action= (bAction*)SCA_ILogicBrick::m_sCurrentLogicManager->GetActionByName(val);
+ if (action==NULL)
+ {
+ PyErr_SetString(PyExc_ValueError, "actuator.action = val: Shape Action Actuator, action not found!");
+ return 1;
+ }
+ }
+
+ self->SetAction(action);
+ return 0;
+
+}
diff --git a/source/gameengine/Converter/BL_ShapeActionActuator.h b/source/gameengine/Converter/BL_ShapeActionActuator.h
index 7f2431bcfa5..3bc35ac9495 100644
--- a/source/gameengine/Converter/BL_ShapeActionActuator.h
+++ b/source/gameengine/Converter/BL_ShapeActionActuator.h
@@ -79,17 +79,20 @@ public:
void SetBlendTime (float newtime);
void BlendShape(struct Key* key, float weigth);
-
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetAction);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetBlendin);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetPriority);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetStart);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetEnd);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetFrame);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetProperty);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetFrameProperty);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetBlendtime);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetChannel);
+
+ bAction* GetAction() { return m_action; }
+ void SetAction(bAction* act) { m_action= act; }
+
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetAction);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetBlendin);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetPriority);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetStart);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetEnd);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetFrame);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetProperty);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetFrameProperty);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetBlendtime);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetChannel);
KX_PYMETHOD_DOC_NOARGS(BL_ShapeActionActuator,GetAction);
KX_PYMETHOD_DOC_NOARGS(BL_ShapeActionActuator,GetBlendin);
@@ -101,10 +104,13 @@ public:
KX_PYMETHOD_DOC_NOARGS(BL_ShapeActionActuator,GetFrameProperty);
// KX_PYMETHOD(BL_ActionActuator,GetChannel);
KX_PYMETHOD_DOC_NOARGS(BL_ShapeActionActuator,GetType);
- KX_PYMETHOD_DOC(BL_ShapeActionActuator,SetType);
+ KX_PYMETHOD_DOC_VARARGS(BL_ShapeActionActuator,SetType);
+
+ virtual PyObject* py_getattro(PyObject* attr);
+ virtual int py_setattro(PyObject* attr, PyObject* value);
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ static PyObject* pyattr_get_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_action(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static int CheckBlendTime(void *self, const PyAttributeDef*)
{
@@ -138,7 +144,7 @@ public:
case ACT_ACTION_FROM_PROP:
return 0;
default:
- PyErr_SetString(PyExc_ValueError, "invalid type supplied");
+ PyErr_SetString(PyExc_ValueError, "Shape Action Actuator, invalid play type supplied");
return 1;
}
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
index 7daca6c32fe..60cf6a4a8ee 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
@@ -267,9 +267,11 @@ void KX_BlenderSceneConverter::ConvertScene(const STR_String& scenename,
Scene *blenderscene = GetBlenderSceneForName(scenename);
e_PhysicsEngine physics_engine = UseBullet;
+ bool useDbvtCulling = false;
// hook for registration function during conversion.
m_currentScene = destinationscene;
destinationscene->SetSceneConverter(this);
+ SG_SetActiveStage(SG_STAGE_CONVERTER);
if (blenderscene)
{
@@ -281,6 +283,7 @@ void KX_BlenderSceneConverter::ConvertScene(const STR_String& scenename,
case WOPHY_BULLET:
{
physics_engine = UseBullet;
+ useDbvtCulling = (blenderscene->world->mode & WO_DBVT_CULLING) != 0;
break;
}
@@ -313,7 +316,7 @@ void KX_BlenderSceneConverter::ConvertScene(const STR_String& scenename,
#ifdef USE_BULLET
case UseBullet:
{
- CcdPhysicsEnvironment* ccdPhysEnv = new CcdPhysicsEnvironment();
+ CcdPhysicsEnvironment* ccdPhysEnv = new CcdPhysicsEnvironment(useDbvtCulling);
ccdPhysEnv->setDebugDrawer(new BlenderDebugDraw());
ccdPhysEnv->setDeactivationLinearTreshold(0.8f); // default, can be overridden by Python
ccdPhysEnv->setDeactivationAngularTreshold(1.0f); // default, can be overridden by Python
@@ -808,7 +811,7 @@ void KX_BlenderSceneConverter::resetNoneDynamicObjectToIpo(){
gameobj->NodeSetLocalPosition(pos);
gameobj->NodeSetLocalOrientation(MT_Matrix3x3(eulxyz));
gameobj->NodeSetLocalScale(scale);
- gameobj->NodeUpdateGS(0,true);
+ gameobj->NodeUpdateGS(0);
}
}
}
diff --git a/source/gameengine/Converter/KX_ConvertActuators.cpp b/source/gameengine/Converter/KX_ConvertActuators.cpp
index 3a6122e6608..eb2d0a1c4b1 100644
--- a/source/gameengine/Converter/KX_ConvertActuators.cpp
+++ b/source/gameengine/Converter/KX_ConvertActuators.cpp
@@ -585,15 +585,6 @@ void BL_ConvertActuators(char* maggiename,
originalval = converter->FindGameObject(editobact->ob);
}
}
- MT_Vector3 linvelvec (
- KX_BLENDERTRUNC(editobact->linVelocity[0]),
- KX_BLENDERTRUNC(editobact->linVelocity[1]),
- KX_BLENDERTRUNC(editobact->linVelocity[2]));
-
- MT_Vector3 angvelvec (
- KX_BLENDERTRUNC(editobact->angVelocity[0]),
- KX_BLENDERTRUNC(editobact->angVelocity[1]),
- KX_BLENDERTRUNC(editobact->angVelocity[2]));
KX_SCA_AddObjectActuator* tmpaddact =
new KX_SCA_AddObjectActuator(
@@ -601,9 +592,9 @@ void BL_ConvertActuators(char* maggiename,
originalval,
editobact->time,
scene,
- linvelvec.getValue(),
+ editobact->linVelocity,
(editobact->localflag & ACT_EDOB_LOCAL_LINV)!=0,
- angvelvec.getValue(),
+ editobact->angVelocity,
(editobact->localflag & ACT_EDOB_LOCAL_ANGV)!=0
);
@@ -1017,9 +1008,10 @@ void BL_ConvertActuators(char* maggiename,
bVisibilityActuator *vis_act = (bVisibilityActuator *) bact->data;
KX_VisibilityActuator * tmp_vis_act = NULL;
bool v = ((vis_act->flag & ACT_VISIBILITY_INVISIBLE) != 0);
+ bool o = ((vis_act->flag & ACT_VISIBILITY_OCCLUSION) != 0);
bool recursive = ((vis_act->flag & ACT_VISIBILITY_RECURSIVE) != 0);
- tmp_vis_act = new KX_VisibilityActuator(gameobj, !v, recursive);
+ tmp_vis_act = new KX_VisibilityActuator(gameobj, !v, o, recursive);
baseact = tmp_vis_act;
}
diff --git a/source/gameengine/Converter/KX_ConvertSensors.cpp b/source/gameengine/Converter/KX_ConvertSensors.cpp
index c91197b72a6..7d43b358502 100644
--- a/source/gameengine/Converter/KX_ConvertSensors.cpp
+++ b/source/gameengine/Converter/KX_ConvertSensors.cpp
@@ -520,7 +520,6 @@ void BL_ConvertSensors(struct Object* blenderobject,
starty,
keytype,
trackfocus,
- canvas,
kxscene,
kxengine,
gameobj);
@@ -719,6 +718,11 @@ void BL_ConvertSensors(struct Object* blenderobject,
hatf = bjoy->hatf;
joysticktype = SCA_JoystickSensor::KX_JOYSENSORMODE_HAT;
break;
+ case SENS_JOY_AXIS_SINGLE:
+ axis = bjoy->axis_single;
+ prec = bjoy->precision;
+ joysticktype = SCA_JoystickSensor::KX_JOYSENSORMODE_AXIS_SINGLE;
+ break;
default:
printf("Error: bad case statement\n");
break;
diff --git a/source/gameengine/Expressions/BoolValue.cpp b/source/gameengine/Expressions/BoolValue.cpp
index cadb34d7e8f..13c870b68e5 100644
--- a/source/gameengine/Expressions/BoolValue.cpp
+++ b/source/gameengine/Expressions/BoolValue.cpp
@@ -181,9 +181,9 @@ ret: the bool stored in the object
-float CBoolValue::GetNumber()
+double CBoolValue::GetNumber()
{
- return (float)m_bool;
+ return (double)m_bool;
}
diff --git a/source/gameengine/Expressions/BoolValue.h b/source/gameengine/Expressions/BoolValue.h
index 6c4d964249f..9352b9d4b92 100644
--- a/source/gameengine/Expressions/BoolValue.h
+++ b/source/gameengine/Expressions/BoolValue.h
@@ -33,7 +33,7 @@ public:
CBoolValue(bool innie, STR_String name, AllocationTYPE alloctype = CValue::HEAPVALUE);
virtual const STR_String& GetText();
- virtual float GetNumber();
+ virtual double GetNumber();
bool GetBool();
virtual void SetValue(CValue* newval);
diff --git a/source/gameengine/Expressions/ConstExpr.cpp b/source/gameengine/Expressions/ConstExpr.cpp
index e33ba091ac4..6b64be9c9a9 100644
--- a/source/gameengine/Expressions/ConstExpr.cpp
+++ b/source/gameengine/Expressions/ConstExpr.cpp
@@ -84,7 +84,7 @@ void CConstExpr::ClearModified()
-float CConstExpr::GetNumber()
+double CConstExpr::GetNumber()
{
return -1;
}
diff --git a/source/gameengine/Expressions/ConstExpr.h b/source/gameengine/Expressions/ConstExpr.h
index e27ece52a83..b117140fe70 100644
--- a/source/gameengine/Expressions/ConstExpr.h
+++ b/source/gameengine/Expressions/ConstExpr.h
@@ -32,7 +32,7 @@ public:
//bool IsInside(float x,float y,float z,bool bBorderInclude=true);
bool NeedsRecalculated();
void ClearModified();
- virtual float GetNumber();
+ virtual double GetNumber();
virtual CValue* Calculate();
CConstExpr(CValue* constval);
CConstExpr();
diff --git a/source/gameengine/Expressions/EmptyValue.cpp b/source/gameengine/Expressions/EmptyValue.cpp
index c2b60e590a4..f72ddc47096 100644
--- a/source/gameengine/Expressions/EmptyValue.cpp
+++ b/source/gameengine/Expressions/EmptyValue.cpp
@@ -76,7 +76,7 @@ this object
-float CEmptyValue::GetNumber()
+double CEmptyValue::GetNumber()
{
return 0;
}
diff --git a/source/gameengine/Expressions/EmptyValue.h b/source/gameengine/Expressions/EmptyValue.h
index b9cca0e57e5..fb6b4a477a6 100644
--- a/source/gameengine/Expressions/EmptyValue.h
+++ b/source/gameengine/Expressions/EmptyValue.h
@@ -27,7 +27,7 @@ public:
virtual ~CEmptyValue();
virtual const STR_String & GetText();
- virtual float GetNumber();
+ virtual double GetNumber();
CListValue* GetPolySoup();
virtual double* GetVector3(bool bGetTransformedVec=false);
bool IsInside(CValue* testpoint,bool bBorderInclude=true);
diff --git a/source/gameengine/Expressions/ErrorValue.cpp b/source/gameengine/Expressions/ErrorValue.cpp
index e52be4c8021..651a772db19 100644
--- a/source/gameengine/Expressions/ErrorValue.cpp
+++ b/source/gameengine/Expressions/ErrorValue.cpp
@@ -99,7 +99,7 @@ ret: a new object containing the result of applying operator op to val and
-float CErrorValue::GetNumber()
+double CErrorValue::GetNumber()
{
return -1;
}
diff --git a/source/gameengine/Expressions/ErrorValue.h b/source/gameengine/Expressions/ErrorValue.h
index 16e608ca01a..5b5795196ba 100644
--- a/source/gameengine/Expressions/ErrorValue.h
+++ b/source/gameengine/Expressions/ErrorValue.h
@@ -23,7 +23,7 @@ class CErrorValue : public CPropValue
public:
virtual const STR_String & GetText();
- virtual float GetNumber();
+ virtual double GetNumber();
CErrorValue();
CErrorValue(STR_String errmsg);
virtual ~CErrorValue();
diff --git a/source/gameengine/Expressions/FloatValue.cpp b/source/gameengine/Expressions/FloatValue.cpp
index 460eaa73f35..212a55fe457 100644
--- a/source/gameengine/Expressions/FloatValue.cpp
+++ b/source/gameengine/Expressions/FloatValue.cpp
@@ -278,7 +278,7 @@ ret: the float stored in the object
-float CFloatValue::GetNumber()
+double CFloatValue::GetNumber()
{
return m_float;
}
@@ -287,7 +287,7 @@ float CFloatValue::GetNumber()
void CFloatValue::SetValue(CValue* newval)
{
- m_float = newval->GetNumber();
+ m_float = (float)newval->GetNumber();
SetModified(true);
}
diff --git a/source/gameengine/Expressions/FloatValue.h b/source/gameengine/Expressions/FloatValue.h
index 33f05f1d7f2..41f70b5c54c 100644
--- a/source/gameengine/Expressions/FloatValue.h
+++ b/source/gameengine/Expressions/FloatValue.h
@@ -28,7 +28,7 @@ public:
virtual const STR_String & GetText();
void Configure(CValue* menuvalue);
- virtual float GetNumber();
+ virtual double GetNumber();
virtual void SetValue(CValue* newval);
float GetFloat();
void SetFloat(float fl);
diff --git a/source/gameengine/Expressions/InputParser.cpp b/source/gameengine/Expressions/InputParser.cpp
index 94663c4a365..66075dd8d42 100644
--- a/source/gameengine/Expressions/InputParser.cpp
+++ b/source/gameengine/Expressions/InputParser.cpp
@@ -39,7 +39,12 @@
#include "IfExpr.h"
#if defined(WIN32) || defined(WIN64)
-#define strcasecmp _stricmp
+#define strcasecmp _stricmp
+
+#ifndef strtoll
+#define strtoll _strtoi64
+#endif
+
#endif /* Def WIN32 or Def WIN64 */
#define NUM_PRIORITY 6
@@ -319,12 +324,14 @@ void CParser::NextSym()
}
}
+#if 0
int CParser::MakeInt() {
// returns the integer representation of the value in the global
// variable const_as_string
// pre: const_as_string contains only numercal chars
return atoi(const_as_string);
}
+#endif
STR_String CParser::Symbol2Str(int s) {
// returns a string representation of of symbol s,
@@ -436,8 +443,8 @@ CExpression *CParser::Ex(int i) {
break;
case inttype:
{
- int temp;
- temp = atoi(const_as_string);
+ cInt temp;
+ temp = strtoll(const_as_string, NULL, 10); /* atoi is for int only */
e1 = new CConstExpr(new CIntValue(temp));
break;
}
@@ -580,7 +587,7 @@ float CParser::GetFloat(STR_String txt)
CExpression* expr = ProcessText(txt);
if (expr) {
val = expr->Calculate();
- result=val->GetNumber();
+ result=(float)val->GetNumber();
@@ -642,7 +649,7 @@ PyObject* CParserPyMake(PyObject* ignored,PyObject* args)
CExpression* expr = parser.ProcessText(txt);
CValue* val = expr->Calculate();
expr->Release();
- return val;
+ return val->GetProxy();
}
static PyMethodDef CParserMethods[] =
diff --git a/source/gameengine/Expressions/InputParser.h b/source/gameengine/Expressions/InputParser.h
index f51c473ba18..3d517222639 100644
--- a/source/gameengine/Expressions/InputParser.h
+++ b/source/gameengine/Expressions/InputParser.h
@@ -94,7 +94,9 @@ private:
void CharRep();
void GrabString(int start);
void NextSym();
+#if 0 /* not used yet */
int MakeInt();
+#endif
STR_String Symbol2Str(int s);
void Term(int s);
int Priority(int optor);
diff --git a/source/gameengine/Expressions/IntValue.cpp b/source/gameengine/Expressions/IntValue.cpp
index fb586cb4979..4e86f7bf789 100644
--- a/source/gameengine/Expressions/IntValue.cpp
+++ b/source/gameengine/Expressions/IntValue.cpp
@@ -42,10 +42,10 @@ effect: constructs a new CIntValue
-CIntValue::CIntValue(int innie)
+CIntValue::CIntValue(cInt innie)
/*
pre:
-effect: constructs a new CIntValue containing int innie
+effect: constructs a new CIntValue containing cInt innie
*/
{
m_int = innie;
@@ -54,7 +54,7 @@ effect: constructs a new CIntValue containing int innie
-CIntValue::CIntValue(int innie,STR_String name,AllocationTYPE alloctype)
+CIntValue::CIntValue(cInt innie,STR_String name,AllocationTYPE alloctype)
{
m_int = innie;
SetName(name);
@@ -280,10 +280,10 @@ this object
-int CIntValue::GetInt()
+cInt CIntValue::GetInt()
/*
pre:
-ret: the int stored in the object
+ret: the cInt stored in the object
*/
{
return m_int;
@@ -291,7 +291,7 @@ ret: the int stored in the object
-float CIntValue::GetNumber()
+double CIntValue::GetNumber()
{
return (float) m_int;
}
@@ -302,7 +302,7 @@ const STR_String & CIntValue::GetText()
{
if (!m_pstrRep)
m_pstrRep=new STR_String();
- m_pstrRep->Format("%d",m_int);
+ m_pstrRep->Format("%lld",m_int);
return *m_pstrRep;
}
@@ -321,7 +321,7 @@ CValue* CIntValue::GetReplica() {
void CIntValue::SetValue(CValue* newval)
{
- m_int = (int)newval->GetNumber();
+ m_int = (cInt)newval->GetNumber();
SetModified(true);
}
@@ -329,5 +329,8 @@ void CIntValue::SetValue(CValue* newval)
PyObject* CIntValue::ConvertValueToPython()
{
- return PyInt_FromLong(m_int);
+ if((m_int > INT_MIN) && (m_int < INT_MAX))
+ return PyInt_FromLong(m_int);
+ else
+ return PyLong_FromLongLong(m_int);
}
diff --git a/source/gameengine/Expressions/IntValue.h b/source/gameengine/Expressions/IntValue.h
index 4fdc1089857..0f3a38b274b 100644
--- a/source/gameengine/Expressions/IntValue.h
+++ b/source/gameengine/Expressions/IntValue.h
@@ -18,18 +18,20 @@
#include "Value.h"
+typedef long long cInt;
+
class CIntValue : public CPropValue
{
//PLUGIN_DECLARE_SERIAL (CIntValue,CValue)
public:
virtual const STR_String& GetText();
- virtual float GetNumber();
+ virtual double GetNumber();
- int GetInt();
+ cInt GetInt();
CIntValue();
- CIntValue(int innie);
- CIntValue(int innie,
+ CIntValue(cInt innie);
+ CIntValue(cInt innie,
STR_String name,
AllocationTYPE alloctype=CValue::HEAPVALUE);
@@ -51,7 +53,7 @@ protected:
virtual ~CIntValue();
private:
- int m_int;
+ cInt m_int;
STR_String* m_pstrRep;
};
diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp
index 90a939af236..dd9b296dce1 100644
--- a/source/gameengine/Expressions/ListValue.cpp
+++ b/source/gameengine/Expressions/ListValue.cpp
@@ -27,59 +27,81 @@
#define Py_ssize_t int
#endif
-Py_ssize_t listvalue_bufferlen(PyObject* list)
+Py_ssize_t listvalue_bufferlen(PyObject* self)
{
- return (Py_ssize_t)( ((CListValue*)list)->GetCount());
+ CListValue *list= static_cast<CListValue *>(BGE_PROXY_REF(self));
+ if (list==NULL)
+ return 0;
+
+ return (Py_ssize_t)list->GetCount();
}
-PyObject* listvalue_buffer_item(PyObject* list,Py_ssize_t index)
+PyObject* listvalue_buffer_item(PyObject* self, Py_ssize_t index)
{
- int count = ((CListValue*) list)->GetCount();
+ CListValue *list= static_cast<CListValue *>(BGE_PROXY_REF(self));
+ if (list==NULL) {
+ PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
+ int count = list->GetCount();
if (index < 0)
index = count+index;
if (index >= 0 && index < count)
{
- PyObject* pyobj = ((CListValue*) list)->GetValue(index)->ConvertValueToPython();
+ PyObject* pyobj = list->GetValue(index)->ConvertValueToPython();
if (pyobj)
return pyobj;
else
- return ((CListValue*) list)->GetValue(index)->AddRef();
+ return list->GetValue(index)->GetProxy();
}
- PyErr_SetString(PyExc_IndexError, "Python ListIndex out of range");
+ PyErr_SetString(PyExc_IndexError, "list[i]: Python ListIndex out of range in CValueList");
return NULL;
}
-PyObject* listvalue_mapping_subscript(PyObject* list,PyObject* pyindex)
+PyObject* listvalue_mapping_subscript(PyObject* self, PyObject* pyindex)
{
+ CListValue *list= static_cast<CListValue *>(BGE_PROXY_REF(self));
+ if (list==NULL) {
+ PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
if (PyString_Check(pyindex))
{
STR_String index(PyString_AsString(pyindex));
CValue *item = ((CListValue*) list)->FindValue(index);
if (item)
- return (PyObject*) item;
+ return item->GetProxy();
}
if (PyInt_Check(pyindex))
{
int index = PyInt_AsLong(pyindex);
- return listvalue_buffer_item(list, index);
+ return listvalue_buffer_item(self, index);
}
PyObject *pyindex_str = PyObject_Repr(pyindex); /* new ref */
- PyErr_Format(PyExc_KeyError, "'%s' not in list", PyString_AsString(pyindex_str));
+ PyErr_Format(PyExc_KeyError, "list[key]: '%s' key not in list", PyString_AsString(pyindex_str));
Py_DECREF(pyindex_str);
return NULL;
}
/* just slice it into a python list... */
-PyObject* listvalue_buffer_slice(PyObject* list,Py_ssize_t ilow, Py_ssize_t ihigh)
+PyObject* listvalue_buffer_slice(PyObject* self,Py_ssize_t ilow, Py_ssize_t ihigh)
{
+ CListValue *list= static_cast<CListValue *>(BGE_PROXY_REF(self));
+ if (list==NULL) {
+ PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
int i, j;
- PyListObject *newlist;
+ PyObject *newlist;
if (ilow < 0) ilow = 0;
@@ -90,18 +112,18 @@ PyObject* listvalue_buffer_slice(PyObject* list,Py_ssize_t ilow, Py_ssize_t ihig
if (ihigh < ilow)
ihigh = ilow;
- newlist = (PyListObject *) PyList_New(ihigh - ilow);
+ newlist = PyList_New(ihigh - ilow);
if (!newlist)
return NULL;
for (i = ilow, j = 0; i < ihigh; i++, j++)
{
- PyObject* pyobj = ((CListValue*) list)->GetValue(i)->ConvertValueToPython();
+ PyObject* pyobj = list->GetValue(i)->ConvertValueToPython();
if (!pyobj)
- pyobj = ((CListValue*) list)->GetValue(i)->AddRef();
- newlist->ob_item[j] = pyobj;
+ pyobj = list->GetValue(i)->GetProxy();
+ PyList_SET_ITEM(newlist, i, pyobj);
}
- return (PyObject *) newlist;
+ return newlist;
}
@@ -109,11 +131,16 @@ PyObject* listvalue_buffer_slice(PyObject* list,Py_ssize_t ilow, Py_ssize_t ihig
static PyObject *
listvalue_buffer_concat(PyObject * self, PyObject * other)
{
+ CListValue *listval= static_cast<CListValue *>(BGE_PROXY_REF(self));
+ if (listval==NULL) {
+ PyErr_SetString(PyExc_IndexError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
// for now, we support CListValue concatenated with items
// and CListValue concatenated to Python Lists
// and CListValue concatenated with another CListValue
-
- CListValue* listval = (CListValue*) self;
+
listval->AddRef();
if (other->ob_type == &PyList_Type)
{
@@ -135,7 +162,7 @@ listvalue_buffer_concat(PyObject * self, PyObject * other)
}
if (error) {
- PyErr_SetString(PyExc_SystemError, "Python Error: couldn't add one or more items to a list");
+ PyErr_SetString(PyExc_SystemError, "list.append(val): couldn't add one or more items to this CValueList");
return NULL;
}
@@ -160,7 +187,7 @@ listvalue_buffer_concat(PyObject * self, PyObject * other)
listval->Add(objval);
} else
{
- PyErr_SetString(PyExc_SystemError, "Python Error: couldn't add item to a list");
+ PyErr_SetString(PyExc_SystemError, "list.append(i): couldn't add item to this CValueList");
return NULL;
}
}
@@ -193,23 +220,28 @@ static PyMappingMethods instance_as_mapping = {
PyTypeObject CListValue::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"CListValue", /*tp_name*/
- sizeof(CListValue), /*tp_basicsize*/
+ sizeof(PyObjectPlus_Proxy), /*tp_basicsize*/
0, /*tp_itemsize*/
/* methods */
- PyDestructor, /*tp_dealloc*/
+ py_base_dealloc, /*tp_dealloc*/
0, /*tp_print*/
- __getattr, /*tp_getattr*/
- __setattr, /*tp_setattr*/
+ 0, /*tp_getattr*/
+ 0, /*tp_setattr*/
0, /*tp_compare*/
- __repr, /*tp_repr*/
+ py_base_repr, /*tp_repr*/
0, /*tp_as_number*/
&listvalue_as_sequence, /*tp_as_sequence*/
&instance_as_mapping, /*tp_as_mapping*/
0, /*tp_hash*/
0, /*tp_call */
+ 0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -228,6 +260,7 @@ PyMethodDef CListValue::Methods[] = {
{"reverse", (PyCFunction)CListValue::sPyreverse,METH_NOARGS},
{"index", (PyCFunction)CListValue::sPyindex,METH_O},
{"count", (PyCFunction)CListValue::sPycount,METH_O},
+ {"from_id", (PyCFunction)CListValue::sPyfrom_id,METH_O},
{NULL,NULL} //Sentinel
};
@@ -236,8 +269,8 @@ PyAttributeDef CListValue::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* CListValue::_getattr(const char *attr) {
- _getattr_up(CValue);
+PyObject* CListValue::py_getattro(PyObject* attr) {
+ py_getattro_up(CValue);
}
@@ -405,14 +438,14 @@ void CListValue::MergeList(CListValue *otherlist)
-PyObject* CListValue::Pyappend(PyObject* self, PyObject* value)
+PyObject* CListValue::Pyappend(PyObject* value)
{
- return listvalue_buffer_concat(self, value);
+ return listvalue_buffer_concat(m_proxy, value); /* m_proxy is the same as self */
}
-PyObject* CListValue::Pyreverse(PyObject* self)
+PyObject* CListValue::Pyreverse()
{
std::reverse(m_pValueArray.begin(),m_pValueArray.end());
Py_RETURN_NONE;
@@ -425,6 +458,10 @@ bool CListValue::CheckEqual(CValue* first,CValue* second)
bool result = false;
CValue* eqval = ((CValue*)first)->Calc(VALUE_EQL_OPERATOR,(CValue*)second);
+
+ if (eqval==NULL)
+ return false;
+
STR_String txt = eqval->GetText();
eqval->Release();
if (txt=="TRUE")
@@ -437,7 +474,7 @@ bool CListValue::CheckEqual(CValue* first,CValue* second)
-PyObject* CListValue::Pyindex(PyObject* self, PyObject *value)
+PyObject* CListValue::Pyindex(PyObject *value)
{
PyObject* result = NULL;
@@ -458,7 +495,7 @@ PyObject* CListValue::Pyindex(PyObject* self, PyObject *value)
checkobj->Release();
if (result==NULL) {
- PyErr_SetString(PyExc_ValueError, "ValueError: list.index(x): x not in CListValue");
+ PyErr_SetString(PyExc_ValueError, "list.index(x): x not in CListValue");
}
return result;
@@ -466,7 +503,7 @@ PyObject* CListValue::Pyindex(PyObject* self, PyObject *value)
-PyObject* CListValue::Pycount(PyObject* self, PyObject* value)
+PyObject* CListValue::Pycount(PyObject* value)
{
int numfound = 0;
@@ -474,7 +511,7 @@ PyObject* CListValue::Pycount(PyObject* self, PyObject* value)
if (checkobj==NULL) { /* in this case just return that there are no items in the list */
PyErr_Clear();
- PyInt_FromLong(0);
+ return PyInt_FromLong(0);
}
int numelem = GetCount();
@@ -493,12 +530,32 @@ PyObject* CListValue::Pycount(PyObject* self, PyObject* value)
+PyObject* CListValue::Pyfrom_id(PyObject* value)
+{
+ uintptr_t id= (uintptr_t)PyLong_AsVoidPtr(value);
+
+ if (PyErr_Occurred())
+ return NULL;
+
+ int numelem = GetCount();
+ for (int i=0;i<numelem;i++)
+ {
+ if (reinterpret_cast<uintptr_t>(m_pValueArray[i]->m_proxy) == id)
+ return GetValue(i)->GetProxy();
+ }
+ PyErr_SetString(PyExc_IndexError, "from_id(#): id not found in CValueList");
+ return NULL;
+
+}
+
+
/* ---------------------------------------------------------------------
* Some stuff taken from the header
* --------------------------------------------------------------------- */
CValue* CListValue::Calc(VALUE_OPERATOR op,CValue *val)
{
- assert(false); // todo: implement me!
+ //assert(false); // todo: implement me!
+ fprintf(stderr, "CValueList::Calc not yet implimented\n");
return NULL;
}
@@ -508,7 +565,8 @@ CValue* CListValue::CalcFinal(VALUE_DATA_TYPE dtype,
VALUE_OPERATOR op,
CValue* val)
{
- assert(false); // todo: implement me!
+ //assert(false); // todo: implement me!
+ fprintf(stderr, "CValueList::CalcFinal not yet implimented\n");
return NULL;
}
@@ -521,7 +579,7 @@ void CListValue::Add(CValue* value)
-float CListValue::GetNumber()
+double CListValue::GetNumber()
{
return -1;
}
diff --git a/source/gameengine/Expressions/ListValue.h b/source/gameengine/Expressions/ListValue.h
index 104e3e63283..2af5a330c43 100644
--- a/source/gameengine/Expressions/ListValue.h
+++ b/source/gameengine/Expressions/ListValue.h
@@ -36,7 +36,7 @@ public:
virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype,
VALUE_OPERATOR op,
CValue* val);
- virtual float GetNumber();
+ virtual double GetNumber();
virtual CValue* GetReplica();
public:
@@ -59,12 +59,21 @@ public:
bool CheckEqual(CValue* first,CValue* second);
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject* attr);
+ virtual PyObject* py_repr(void) {
+ PyObject *py_proxy= this->GetProxy();
+ PyObject *py_list= PySequence_List(py_proxy);
+ PyObject *py_string= PyObject_Repr(py_list);
+ Py_DECREF(py_list);
+ Py_DECREF(py_proxy);
+ return py_string;
+ }
KX_PYMETHOD_O(CListValue,append);
KX_PYMETHOD_NOARGS(CListValue,reverse);
KX_PYMETHOD_O(CListValue,index);
KX_PYMETHOD_O(CListValue,count);
+ KX_PYMETHOD_O(CListValue,from_id);
private:
diff --git a/source/gameengine/Expressions/PyObjectPlus.cpp b/source/gameengine/Expressions/PyObjectPlus.cpp
index 1bead0a7664..6cfa14ddc80 100644
--- a/source/gameengine/Expressions/PyObjectPlus.cpp
+++ b/source/gameengine/Expressions/PyObjectPlus.cpp
@@ -54,50 +54,74 @@
* PyObjectPlus Type -- Every class, even the abstract one should have a Type
------------------------------*/
+
PyTypeObject PyObjectPlus::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0, /*ob_size*/
"PyObjectPlus", /*tp_name*/
- sizeof(PyObjectPlus), /*tp_basicsize*/
+ sizeof(PyObjectPlus_Proxy), /*tp_basicsize*/
0, /*tp_itemsize*/
/* methods */
- PyDestructor, /*tp_dealloc*/
- 0, /*tp_print*/
- __getattr, /*tp_getattr*/
- __setattr, /*tp_setattr*/
- 0, /*tp_compare*/
- __repr, /*tp_repr*/
- 0, /*tp_as_number*/
- 0, /*tp_as_sequence*/
- 0, /*tp_as_mapping*/
- 0, /*tp_hash*/
- 0, /*tp_call */
+ py_base_dealloc,
+ 0,
+ 0,
+ 0,
+ 0,
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
+
PyObjectPlus::~PyObjectPlus()
{
- if (ob_refcnt)
- {
- _Py_ForgetReference(this);
+ if(m_proxy) {
+ Py_DECREF(m_proxy); /* Remove own reference, python may still have 1 */
+ BGE_PROXY_REF(m_proxy)= NULL;
}
// assert(ob_refcnt==0);
}
+void PyObjectPlus::py_base_dealloc(PyObject *self) // python wrapper
+{
+ PyObjectPlus *self_plus= BGE_PROXY_REF(self);
+ if(self_plus) {
+ if(BGE_PROXY_PYOWNS(self)) { /* Does python own this?, then delete it */
+ delete self_plus;
+ }
+
+ BGE_PROXY_REF(self)= NULL; // not really needed
+ }
+ PyObject_DEL( self );
+};
+
PyObjectPlus::PyObjectPlus(PyTypeObject *T) // constructor
{
MT_assert(T != NULL);
- this->ob_type = T;
- _Py_NewReference(this);
+ m_proxy= NULL;
};
/*------------------------------
* PyObjectPlus Methods -- Every class, even the abstract one should have a Methods
------------------------------*/
PyMethodDef PyObjectPlus::Methods[] = {
- {"isA", (PyCFunction) sPy_isA, METH_O},
+ {"isA", (PyCFunction) sPyisA, METH_O},
{NULL, NULL} /* Sentinel */
};
+PyAttributeDef PyObjectPlus::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("isValid", PyObjectPlus, pyattr_get_is_valid),
+ {NULL} //Sentinel
+};
+
+PyObject* PyObjectPlus::pyattr_get_is_valid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ Py_RETURN_TRUE;
+}
+
/*------------------------------
* PyObjectPlus Parents -- Every class, even the abstract one should have parents
------------------------------*/
@@ -106,566 +130,621 @@ PyParentObject PyObjectPlus::Parents[] = {&PyObjectPlus::Type, NULL};
/*------------------------------
* PyObjectPlus attributes -- attributes
------------------------------*/
-PyObject *PyObjectPlus::_getattr(const char *attr)
+
+
+/* This should be the entry in Type since it takes the C++ class from PyObjectPlus_Proxy */
+PyObject *PyObjectPlus::py_base_getattro(PyObject * self, PyObject *attr)
+{
+ PyObjectPlus *self_plus= BGE_PROXY_REF(self);
+ if(self_plus==NULL) {
+ if(!strcmp("isValid", PyString_AsString(attr))) {
+ Py_RETURN_TRUE;
+ }
+ PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+ return self_plus->py_getattro(attr);
+}
+
+/* This should be the entry in Type since it takes the C++ class from PyObjectPlus_Proxy */
+int PyObjectPlus::py_base_setattro(PyObject *self, PyObject *attr, PyObject *value)
{
- if (!strcmp(attr, "__doc__") && GetType()->tp_doc)
- return PyString_FromString(GetType()->tp_doc);
+ PyObjectPlus *self_plus= BGE_PROXY_REF(self);
+ if(self_plus==NULL) {
+ PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ return -1;
+ }
+
+ if (value==NULL)
+ return self_plus->py_delattro(attr);
+
+ return self_plus->py_setattro(attr, value);
+}
- //if (streq(attr, "type"))
- // return Py_BuildValue("s", (*(GetParents()))->tp_name);
+PyObject *PyObjectPlus::py_base_repr(PyObject *self) // This should be the entry in Type.
+{
+
+ PyObjectPlus *self_plus= BGE_PROXY_REF(self);
+ if(self_plus==NULL) {
+ PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
+ return self_plus->py_repr();
+}
- return Py_FindMethod(Methods, this, attr);
+PyObject *PyObjectPlus::py_getattro(PyObject* attr)
+{
+ PyObject *descr = PyDict_GetItem(Type.tp_dict, attr); \
+ if (descr == NULL) {
+ if (strcmp(PyString_AsString(attr), "__dict__")==0) {
+ return py_getattr_dict(NULL, Type.tp_dict); /* no Attributes yet */
+ }
+ PyErr_Format(PyExc_AttributeError, "attribute \"%s\" not found", PyString_AsString(attr));
+ return NULL;
+ } else {
+ /* Copied from py_getattro_up */
+ if (PyCObject_Check(descr)) {
+ return py_get_attrdef((void *)this, (const PyAttributeDef*)PyCObject_AsVoidPtr(descr));
+ } else if (descr->ob_type->tp_descr_get) {
+ return PyCFunction_New(((PyMethodDescrObject *)descr)->d_method, this->m_proxy);
+ } else {
+ fprintf(stderr, "Unknown attribute type (PyObjectPlus::py_getattro)");
+ return descr;
+ }
+ /* end py_getattro_up copy */
+ }
}
-int PyObjectPlus::_delattr(const char *attr)
+int PyObjectPlus::py_delattro(PyObject* attr)
{
PyErr_SetString(PyExc_AttributeError, "attribute cant be deleted");
return 1;
}
-int PyObjectPlus::_setattr(const char *attr, PyObject *value)
+int PyObjectPlus::py_setattro(PyObject *attr, PyObject* value)
{
- //return PyObject::_setattr(attr,value);
- //cerr << "Unknown attribute" << endl;
PyErr_SetString(PyExc_AttributeError, "attribute cant be set");
- return 1;
+ return PY_SET_ATTR_MISSING;
}
-PyObject *PyObjectPlus::_getattr_self(const PyAttributeDef attrlist[], void *self, const char *attr)
+PyObject *PyObjectPlus::py_get_attrdef(void *self, const PyAttributeDef *attrdef)
{
- const PyAttributeDef *attrdef;
- for (attrdef=attrlist; attrdef->m_name != NULL; attrdef++)
+ if (attrdef->m_type == KX_PYATTRIBUTE_TYPE_DUMMY)
+ {
+ // fake attribute, ignore
+ return NULL;
+ }
+ if (attrdef->m_type == KX_PYATTRIBUTE_TYPE_FUNCTION)
+ {
+ // the attribute has no field correspondance, handover processing to function.
+ if (attrdef->m_getFunction == NULL)
+ return NULL;
+ return (*attrdef->m_getFunction)(self, attrdef);
+ }
+ char *ptr = reinterpret_cast<char*>(self)+attrdef->m_offset;
+ if (attrdef->m_length > 1)
{
- if (!strcmp(attr, attrdef->m_name))
+ PyObject* resultlist = PyList_New(attrdef->m_length);
+ for (unsigned int i=0; i<attrdef->m_length; i++)
{
- if (attrdef->m_type == KX_PYATTRIBUTE_TYPE_DUMMY)
+ switch (attrdef->m_type) {
+ case KX_PYATTRIBUTE_TYPE_BOOL:
+ {
+ bool *val = reinterpret_cast<bool*>(ptr);
+ ptr += sizeof(bool);
+ PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_SHORT:
+ {
+ short int *val = reinterpret_cast<short int*>(ptr);
+ ptr += sizeof(short int);
+ PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_ENUM:
+ // enum are like int, just make sure the field size is the same
+ if (sizeof(int) != attrdef->m_size)
+ {
+ Py_DECREF(resultlist);
+ return NULL;
+ }
+ // walkthrough
+ case KX_PYATTRIBUTE_TYPE_INT:
+ {
+ int *val = reinterpret_cast<int*>(ptr);
+ ptr += sizeof(int);
+ PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_FLOAT:
+ {
+ float *val = reinterpret_cast<float*>(ptr);
+ ptr += sizeof(float);
+ PyList_SetItem(resultlist,i,PyFloat_FromDouble(*val));
+ break;
+ }
+ default:
+ // no support for array of complex data
+ Py_DECREF(resultlist);
+ return NULL;
+ }
+ }
+ return resultlist;
+ }
+ else
+ {
+ switch (attrdef->m_type) {
+ case KX_PYATTRIBUTE_TYPE_BOOL:
+ {
+ bool *val = reinterpret_cast<bool*>(ptr);
+ return PyInt_FromLong(*val);
+ }
+ case KX_PYATTRIBUTE_TYPE_SHORT:
+ {
+ short int *val = reinterpret_cast<short int*>(ptr);
+ return PyInt_FromLong(*val);
+ }
+ case KX_PYATTRIBUTE_TYPE_ENUM:
+ // enum are like int, just make sure the field size is the same
+ if (sizeof(int) != attrdef->m_size)
{
- // fake attribute, ignore
return NULL;
}
- char *ptr = reinterpret_cast<char*>(self)+attrdef->m_offset;
- if (attrdef->m_length > 1)
+ // walkthrough
+ case KX_PYATTRIBUTE_TYPE_INT:
{
- PyObject* resultlist = PyList_New(attrdef->m_length);
- for (unsigned int i=0; i<attrdef->m_length; i++)
- {
- switch (attrdef->m_type) {
- case KX_PYATTRIBUTE_TYPE_BOOL:
- {
- bool *val = reinterpret_cast<bool*>(ptr);
- ptr += sizeof(bool);
- PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
- break;
- }
- case KX_PYATTRIBUTE_TYPE_SHORT:
- {
- short int *val = reinterpret_cast<short int*>(ptr);
- ptr += sizeof(short int);
- PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
- break;
- }
- case KX_PYATTRIBUTE_TYPE_ENUM:
- // enum are like int, just make sure the field size is the same
- if (sizeof(int) != attrdef->m_size)
- {
- Py_DECREF(resultlist);
- return NULL;
- }
- // walkthrough
- case KX_PYATTRIBUTE_TYPE_INT:
- {
- int *val = reinterpret_cast<int*>(ptr);
- ptr += sizeof(int);
- PyList_SetItem(resultlist,i,PyInt_FromLong(*val));
- break;
- }
- case KX_PYATTRIBUTE_TYPE_FLOAT:
- {
- float *val = reinterpret_cast<float*>(ptr);
- ptr += sizeof(float);
- PyList_SetItem(resultlist,i,PyFloat_FromDouble(*val));
- break;
- }
- default:
- // no support for array of complex data
- Py_DECREF(resultlist);
- return NULL;
- }
- }
- return resultlist;
+ int *val = reinterpret_cast<int*>(ptr);
+ return PyInt_FromLong(*val);
}
- else
+ case KX_PYATTRIBUTE_TYPE_FLOAT:
{
- switch (attrdef->m_type) {
- case KX_PYATTRIBUTE_TYPE_BOOL:
- {
- bool *val = reinterpret_cast<bool*>(ptr);
- return PyInt_FromLong(*val);
- }
- case KX_PYATTRIBUTE_TYPE_SHORT:
- {
- short int *val = reinterpret_cast<short int*>(ptr);
- return PyInt_FromLong(*val);
- }
- case KX_PYATTRIBUTE_TYPE_ENUM:
- // enum are like int, just make sure the field size is the same
- if (sizeof(int) != attrdef->m_size)
- {
- return NULL;
- }
- // walkthrough
- case KX_PYATTRIBUTE_TYPE_INT:
- {
- int *val = reinterpret_cast<int*>(ptr);
- return PyInt_FromLong(*val);
- }
- case KX_PYATTRIBUTE_TYPE_FLOAT:
- {
- float *val = reinterpret_cast<float*>(ptr);
- return PyFloat_FromDouble(*val);
- }
- case KX_PYATTRIBUTE_TYPE_STRING:
- {
- STR_String *val = reinterpret_cast<STR_String*>(ptr);
- return PyString_FromString(*val);
- }
- default:
- return NULL;
- }
+ float *val = reinterpret_cast<float*>(ptr);
+ return PyFloat_FromDouble(*val);
}
+ case KX_PYATTRIBUTE_TYPE_STRING:
+ {
+ STR_String *val = reinterpret_cast<STR_String*>(ptr);
+ return PyString_FromString(*val);
+ }
+ default:
+ return NULL;
}
}
- return NULL;
}
-int PyObjectPlus::_setattr_self(const PyAttributeDef attrlist[], void *self, const char *attr, PyObject *value)
+int PyObjectPlus::py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyObject *value)
{
- const PyAttributeDef *attrdef;
void *undoBuffer = NULL;
void *sourceBuffer = NULL;
size_t bufferSize = 0;
-
- for (attrdef=attrlist; attrdef->m_name != NULL; attrdef++)
+
+ char *ptr = reinterpret_cast<char*>(self)+attrdef->m_offset;
+ if (attrdef->m_length > 1)
{
- if (!strcmp(attr, attrdef->m_name))
+ if (!PySequence_Check(value))
+ {
+ PyErr_Format(PyExc_TypeError, "expected a sequence for attribute \"%s\"", attrdef->m_name);
+ return 1;
+ }
+ if (PySequence_Size(value) != attrdef->m_length)
{
- if (attrdef->m_access == KX_PYATTRIBUTE_RO ||
- attrdef->m_type == KX_PYATTRIBUTE_TYPE_DUMMY)
+ PyErr_Format(PyExc_TypeError, "incorrect number of elements in sequence for attribute \"%s\"", attrdef->m_name);
+ return 1;
+ }
+ switch (attrdef->m_type)
+ {
+ case KX_PYATTRIBUTE_TYPE_FUNCTION:
+ if (attrdef->m_setFunction == NULL)
{
- PyErr_SetString(PyExc_AttributeError, "property is read-only");
+ PyErr_Format(PyExc_AttributeError, "function attribute without function for attribute \"%s\", report to blender.org", attrdef->m_name);
return 1;
}
- char *ptr = reinterpret_cast<char*>(self)+attrdef->m_offset;
- if (attrdef->m_length > 1)
+ return (*attrdef->m_setFunction)(self, attrdef, value);
+ case KX_PYATTRIBUTE_TYPE_BOOL:
+ bufferSize = sizeof(bool);
+ break;
+ case KX_PYATTRIBUTE_TYPE_SHORT:
+ bufferSize = sizeof(short int);
+ break;
+ case KX_PYATTRIBUTE_TYPE_ENUM:
+ case KX_PYATTRIBUTE_TYPE_INT:
+ bufferSize = sizeof(int);
+ break;
+ case KX_PYATTRIBUTE_TYPE_FLOAT:
+ bufferSize = sizeof(float);
+ break;
+ default:
+ // should not happen
+ PyErr_Format(PyExc_AttributeError, "Unsupported attribute type for attribute \"%s\", report to blender.org", attrdef->m_name);
+ return 1;
+ }
+ // let's implement a smart undo method
+ bufferSize *= attrdef->m_length;
+ undoBuffer = malloc(bufferSize);
+ sourceBuffer = ptr;
+ if (undoBuffer)
+ {
+ memcpy(undoBuffer, sourceBuffer, bufferSize);
+ }
+ for (int i=0; i<attrdef->m_length; i++)
+ {
+ PyObject *item = PySequence_GetItem(value, i); /* new ref */
+ // we can decrement the reference immediately, the reference count
+ // is at least 1 because the item is part of an array
+ Py_DECREF(item);
+ switch (attrdef->m_type)
{
- if (!PySequence_Check(value))
- {
- PyErr_SetString(PyExc_TypeError, "expected a sequence");
- return 1;
- }
- if (PySequence_Size(value) != attrdef->m_length)
- {
- PyErr_SetString(PyExc_TypeError, "incorrect number of elements in sequence");
- return 1;
- }
- switch (attrdef->m_type)
+ case KX_PYATTRIBUTE_TYPE_BOOL:
{
- case KX_PYATTRIBUTE_TYPE_BOOL:
- bufferSize = sizeof(bool);
- break;
- case KX_PYATTRIBUTE_TYPE_SHORT:
- bufferSize = sizeof(short int);
- break;
- case KX_PYATTRIBUTE_TYPE_ENUM:
- case KX_PYATTRIBUTE_TYPE_INT:
- bufferSize = sizeof(int);
- break;
- case KX_PYATTRIBUTE_TYPE_FLOAT:
- bufferSize = sizeof(float);
+ bool *var = reinterpret_cast<bool*>(ptr);
+ ptr += sizeof(bool);
+ if (PyInt_Check(item))
+ {
+ *var = (PyInt_AsLong(item) != 0);
+ }
+ else if (PyBool_Check(item))
+ {
+ *var = (item == Py_True);
+ }
+ else
+ {
+ PyErr_Format(PyExc_TypeError, "expected an integer or a bool for attribute \"%s\"", attrdef->m_name);
+ goto UNDO_AND_ERROR;
+ }
break;
- default:
- // should not happen
- PyErr_SetString(PyExc_AttributeError, "Unsupported attribute type, report to blender.org");
- return 1;
}
- // let's implement a smart undo method
- bufferSize *= attrdef->m_length;
- undoBuffer = malloc(bufferSize);
- sourceBuffer = ptr;
- if (undoBuffer)
+ case KX_PYATTRIBUTE_TYPE_SHORT:
{
- memcpy(undoBuffer, sourceBuffer, bufferSize);
- }
- for (int i=0; i<attrdef->m_length; i++)
- {
- PyObject *item = PySequence_GetItem(value, i); /* new ref */
- // we can decrement the reference immediately, the reference count
- // is at least 1 because the item is part of an array
- Py_DECREF(item);
- switch (attrdef->m_type)
+ short int *var = reinterpret_cast<short int*>(ptr);
+ ptr += sizeof(short int);
+ if (PyInt_Check(item))
{
- case KX_PYATTRIBUTE_TYPE_BOOL:
- {
- bool *var = reinterpret_cast<bool*>(ptr);
- ptr += sizeof(bool);
- if (PyInt_Check(item))
- {
- *var = (PyInt_AsLong(item) != 0);
- }
- else if (PyBool_Check(item))
- {
- *var = (item == Py_True);
- }
- else
- {
- PyErr_SetString(PyExc_TypeError, "expected an integer or a bool");
- goto UNDO_AND_ERROR;
- }
- break;
- }
- case KX_PYATTRIBUTE_TYPE_SHORT:
+ long val = PyInt_AsLong(item);
+ if (attrdef->m_clamp)
{
- short int *var = reinterpret_cast<short int*>(ptr);
- ptr += sizeof(short int);
- if (PyInt_Check(item))
- {
- long val = PyInt_AsLong(item);
- if (attrdef->m_clamp)
- {
- if (val < attrdef->m_imin)
- val = attrdef->m_imin;
- else if (val > attrdef->m_imax)
- val = attrdef->m_imax;
- }
- else if (val < attrdef->m_imin || val > attrdef->m_imax)
- {
- PyErr_SetString(PyExc_ValueError, "item value out of range");
- goto UNDO_AND_ERROR;
- }
- *var = (short int)val;
- }
- else
- {
- PyErr_SetString(PyExc_TypeError, "expected an integer");
- goto UNDO_AND_ERROR;
- }
- break;
+ if (val < attrdef->m_imin)
+ val = attrdef->m_imin;
+ else if (val > attrdef->m_imax)
+ val = attrdef->m_imax;
}
- case KX_PYATTRIBUTE_TYPE_ENUM:
- // enum are equivalent to int, just make sure that the field size matches:
- if (sizeof(int) != attrdef->m_size)
+ else if (val < attrdef->m_imin || val > attrdef->m_imax)
{
- PyErr_SetString(PyExc_AttributeError, "attribute size check error, report to blender.org");
+ PyErr_Format(PyExc_ValueError, "item value out of range for attribute \"%s\"", attrdef->m_name);
goto UNDO_AND_ERROR;
}
- // walkthrough
- case KX_PYATTRIBUTE_TYPE_INT:
+ *var = (short int)val;
+ }
+ else
+ {
+ PyErr_Format(PyExc_TypeError, "expected an integer for attribute \"%s\"", attrdef->m_name);
+ goto UNDO_AND_ERROR;
+ }
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_ENUM:
+ // enum are equivalent to int, just make sure that the field size matches:
+ if (sizeof(int) != attrdef->m_size)
+ {
+ PyErr_Format(PyExc_AttributeError, "Size check error for attribute, \"%s\", report to blender.org", attrdef->m_name);
+ goto UNDO_AND_ERROR;
+ }
+ // walkthrough
+ case KX_PYATTRIBUTE_TYPE_INT:
+ {
+ int *var = reinterpret_cast<int*>(ptr);
+ ptr += sizeof(int);
+ if (PyInt_Check(item))
+ {
+ long val = PyInt_AsLong(item);
+ if (attrdef->m_clamp)
{
- int *var = reinterpret_cast<int*>(ptr);
- ptr += sizeof(int);
- if (PyInt_Check(item))
- {
- long val = PyInt_AsLong(item);
- if (attrdef->m_clamp)
- {
- if (val < attrdef->m_imin)
- val = attrdef->m_imin;
- else if (val > attrdef->m_imax)
- val = attrdef->m_imax;
- }
- else if (val < attrdef->m_imin || val > attrdef->m_imax)
- {
- PyErr_SetString(PyExc_ValueError, "item value out of range");
- goto UNDO_AND_ERROR;
- }
- *var = (int)val;
- }
- else
- {
- PyErr_SetString(PyExc_TypeError, "expected an integer");
- goto UNDO_AND_ERROR;
- }
- break;
+ if (val < attrdef->m_imin)
+ val = attrdef->m_imin;
+ else if (val > attrdef->m_imax)
+ val = attrdef->m_imax;
}
- case KX_PYATTRIBUTE_TYPE_FLOAT:
+ else if (val < attrdef->m_imin || val > attrdef->m_imax)
{
- float *var = reinterpret_cast<float*>(ptr);
- ptr += sizeof(float);
- double val = PyFloat_AsDouble(item);
- if (val == -1.0 && PyErr_Occurred())
- {
- PyErr_SetString(PyExc_TypeError, "expected a float");
- goto UNDO_AND_ERROR;
- }
- else if (attrdef->m_clamp)
- {
- if (val < attrdef->m_fmin)
- val = attrdef->m_fmin;
- else if (val > attrdef->m_fmax)
- val = attrdef->m_fmax;
- }
- else if (val < attrdef->m_fmin || val > attrdef->m_fmax)
- {
- PyErr_SetString(PyExc_ValueError, "item value out of range");
- goto UNDO_AND_ERROR;
- }
- *var = (float)val;
- break;
+ PyErr_Format(PyExc_ValueError, "item value out of range for attribute \"%s\"", attrdef->m_name);
+ goto UNDO_AND_ERROR;
}
- default:
- // should not happen
- PyErr_SetString(PyExc_AttributeError, "attribute type check error, report to blender.org");
+ *var = (int)val;
+ }
+ else
+ {
+ PyErr_Format(PyExc_TypeError, "expected an integer for attribute \"%s\"", attrdef->m_name);
goto UNDO_AND_ERROR;
}
+ break;
}
- // no error, call check function if any
- if (attrdef->m_function != NULL)
+ case KX_PYATTRIBUTE_TYPE_FLOAT:
{
- if ((*attrdef->m_function)(self, attrdef) != 0)
+ float *var = reinterpret_cast<float*>(ptr);
+ ptr += sizeof(float);
+ double val = PyFloat_AsDouble(item);
+ if (val == -1.0 && PyErr_Occurred())
{
- // post check returned an error, restore values
- UNDO_AND_ERROR:
- if (undoBuffer)
- {
- memcpy(sourceBuffer, undoBuffer, bufferSize);
- free(undoBuffer);
- }
- return 1;
+ PyErr_Format(PyExc_TypeError, "expected a float for attribute \"%s\"", attrdef->m_name);
+ goto UNDO_AND_ERROR;
}
+ else if (attrdef->m_clamp)
+ {
+ if (val < attrdef->m_fmin)
+ val = attrdef->m_fmin;
+ else if (val > attrdef->m_fmax)
+ val = attrdef->m_fmax;
+ }
+ else if (val < attrdef->m_fmin || val > attrdef->m_fmax)
+ {
+ PyErr_Format(PyExc_ValueError, "item value out of range for attribute \"%s\"", attrdef->m_name);
+ goto UNDO_AND_ERROR;
+ }
+ *var = (float)val;
+ break;
}
+ default:
+ // should not happen
+ PyErr_Format(PyExc_AttributeError, "type check error for attribute \"%s\", report to blender.org", attrdef->m_name);
+ goto UNDO_AND_ERROR;
+ }
+ }
+ // no error, call check function if any
+ if (attrdef->m_checkFunction != NULL)
+ {
+ if ((*attrdef->m_checkFunction)(self, attrdef) != 0)
+ {
+ // post check returned an error, restore values
+ UNDO_AND_ERROR:
if (undoBuffer)
+ {
+ memcpy(sourceBuffer, undoBuffer, bufferSize);
free(undoBuffer);
- return 0;
+ }
+ return 1;
+ }
+ }
+ if (undoBuffer)
+ free(undoBuffer);
+ return 0;
+ }
+ else // simple attribute value
+ {
+ if (attrdef->m_type == KX_PYATTRIBUTE_TYPE_FUNCTION)
+ {
+ if (attrdef->m_setFunction == NULL)
+ {
+ PyErr_Format(PyExc_AttributeError, "function attribute without function \"%s\", report to blender.org", attrdef->m_name);
+ return 1;
}
- else // simple attribute value
+ return (*attrdef->m_setFunction)(self, attrdef, value);
+ }
+ if (attrdef->m_checkFunction != NULL)
+ {
+ // post check function is provided, prepare undo buffer
+ sourceBuffer = ptr;
+ switch (attrdef->m_type)
{
-
- if (attrdef->m_function != NULL)
+ case KX_PYATTRIBUTE_TYPE_BOOL:
+ bufferSize = sizeof(bool);
+ break;
+ case KX_PYATTRIBUTE_TYPE_SHORT:
+ bufferSize = sizeof(short);
+ break;
+ case KX_PYATTRIBUTE_TYPE_ENUM:
+ case KX_PYATTRIBUTE_TYPE_INT:
+ bufferSize = sizeof(int);
+ break;
+ case KX_PYATTRIBUTE_TYPE_FLOAT:
+ bufferSize = sizeof(float);
+ break;
+ case KX_PYATTRIBUTE_TYPE_STRING:
+ sourceBuffer = reinterpret_cast<STR_String*>(ptr)->Ptr();
+ if (sourceBuffer)
+ bufferSize = strlen(reinterpret_cast<char*>(sourceBuffer))+1;
+ break;
+ default:
+ PyErr_Format(PyExc_AttributeError, "unknown type for attribute \"%s\", report to blender.org", attrdef->m_name);
+ return 1;
+ }
+ if (bufferSize)
+ {
+ undoBuffer = malloc(bufferSize);
+ if (undoBuffer)
+ {
+ memcpy(undoBuffer, sourceBuffer, bufferSize);
+ }
+ }
+ }
+
+ switch (attrdef->m_type)
+ {
+ case KX_PYATTRIBUTE_TYPE_BOOL:
+ {
+ bool *var = reinterpret_cast<bool*>(ptr);
+ if (PyInt_Check(value))
+ {
+ *var = (PyInt_AsLong(value) != 0);
+ }
+ else if (PyBool_Check(value))
+ {
+ *var = (value == Py_True);
+ }
+ else
+ {
+ PyErr_Format(PyExc_TypeError, "expected an integer or a bool for attribute \"%s\"", attrdef->m_name);
+ goto FREE_AND_ERROR;
+ }
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_SHORT:
+ {
+ short int *var = reinterpret_cast<short int*>(ptr);
+ if (PyInt_Check(value))
{
- // post check function is provided, prepare undo buffer
- sourceBuffer = ptr;
- switch (attrdef->m_type)
+ long val = PyInt_AsLong(value);
+ if (attrdef->m_clamp)
{
- case KX_PYATTRIBUTE_TYPE_BOOL:
- bufferSize = sizeof(bool);
- break;
- case KX_PYATTRIBUTE_TYPE_SHORT:
- bufferSize = sizeof(short);
- break;
- case KX_PYATTRIBUTE_TYPE_ENUM:
- case KX_PYATTRIBUTE_TYPE_INT:
- bufferSize = sizeof(int);
- break;
- case KX_PYATTRIBUTE_TYPE_FLOAT:
- bufferSize = sizeof(float);
- break;
- case KX_PYATTRIBUTE_TYPE_STRING:
- sourceBuffer = reinterpret_cast<STR_String*>(ptr)->Ptr();
- if (sourceBuffer)
- bufferSize = strlen(reinterpret_cast<char*>(sourceBuffer))+1;
- break;
- default:
- PyErr_SetString(PyExc_AttributeError, "unknown attribute type, report to blender.org");
- return 1;
+ if (val < attrdef->m_imin)
+ val = attrdef->m_imin;
+ else if (val > attrdef->m_imax)
+ val = attrdef->m_imax;
}
- if (bufferSize)
+ else if (val < attrdef->m_imin || val > attrdef->m_imax)
{
- undoBuffer = malloc(bufferSize);
- if (undoBuffer)
- {
- memcpy(undoBuffer, sourceBuffer, bufferSize);
- }
+ PyErr_Format(PyExc_ValueError, "value out of range for attribute \"%s\"", attrdef->m_name);
+ goto FREE_AND_ERROR;
}
+ *var = (short int)val;
}
-
- switch (attrdef->m_type)
+ else
{
- case KX_PYATTRIBUTE_TYPE_BOOL:
- {
- bool *var = reinterpret_cast<bool*>(ptr);
- if (PyInt_Check(value))
- {
- *var = (PyInt_AsLong(value) != 0);
- }
- else if (PyBool_Check(value))
- {
- *var = (value == Py_True);
- }
- else
- {
- PyErr_SetString(PyExc_TypeError, "expected an integer or a bool");
- goto FREE_AND_ERROR;
- }
- break;
- }
- case KX_PYATTRIBUTE_TYPE_SHORT:
+ PyErr_Format(PyExc_TypeError, "expected an integer for attribute \"%s\"", attrdef->m_name);
+ goto FREE_AND_ERROR;
+ }
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_ENUM:
+ // enum are equivalent to int, just make sure that the field size matches:
+ if (sizeof(int) != attrdef->m_size)
+ {
+ PyErr_Format(PyExc_AttributeError, "attribute size check error for attribute \"%s\", report to blender.org", attrdef->m_name);
+ goto FREE_AND_ERROR;
+ }
+ // walkthrough
+ case KX_PYATTRIBUTE_TYPE_INT:
+ {
+ int *var = reinterpret_cast<int*>(ptr);
+ if (PyInt_Check(value))
+ {
+ long val = PyInt_AsLong(value);
+ if (attrdef->m_clamp)
{
- short int *var = reinterpret_cast<short int*>(ptr);
- if (PyInt_Check(value))
- {
- long val = PyInt_AsLong(value);
- if (attrdef->m_clamp)
- {
- if (val < attrdef->m_imin)
- val = attrdef->m_imin;
- else if (val > attrdef->m_imax)
- val = attrdef->m_imax;
- }
- else if (val < attrdef->m_imin || val > attrdef->m_imax)
- {
- PyErr_SetString(PyExc_ValueError, "value out of range");
- goto FREE_AND_ERROR;
- }
- *var = (short int)val;
- }
- else
- {
- PyErr_SetString(PyExc_TypeError, "expected an integer");
- goto FREE_AND_ERROR;
- }
- break;
+ if (val < attrdef->m_imin)
+ val = attrdef->m_imin;
+ else if (val > attrdef->m_imax)
+ val = attrdef->m_imax;
}
- case KX_PYATTRIBUTE_TYPE_ENUM:
- // enum are equivalent to int, just make sure that the field size matches:
- if (sizeof(int) != attrdef->m_size)
+ else if (val < attrdef->m_imin || val > attrdef->m_imax)
{
- PyErr_SetString(PyExc_AttributeError, "attribute size check error, report to blender.org");
+ PyErr_Format(PyExc_ValueError, "value out of range for attribute \"%s\"", attrdef->m_name);
goto FREE_AND_ERROR;
}
- // walkthrough
- case KX_PYATTRIBUTE_TYPE_INT:
- {
- int *var = reinterpret_cast<int*>(ptr);
- if (PyInt_Check(value))
- {
- long val = PyInt_AsLong(value);
- if (attrdef->m_clamp)
- {
- if (val < attrdef->m_imin)
- val = attrdef->m_imin;
- else if (val > attrdef->m_imax)
- val = attrdef->m_imax;
- }
- else if (val < attrdef->m_imin || val > attrdef->m_imax)
- {
- PyErr_SetString(PyExc_ValueError, "value out of range");
- goto FREE_AND_ERROR;
- }
- *var = (int)val;
- }
- else
- {
- PyErr_SetString(PyExc_TypeError, "expected an integer");
- goto FREE_AND_ERROR;
- }
- break;
- }
- case KX_PYATTRIBUTE_TYPE_FLOAT:
+ *var = (int)val;
+ }
+ else
+ {
+ PyErr_Format(PyExc_TypeError, "expected an integer for attribute \"%s\"", attrdef->m_name);
+ goto FREE_AND_ERROR;
+ }
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_FLOAT:
+ {
+ float *var = reinterpret_cast<float*>(ptr);
+ double val = PyFloat_AsDouble(value);
+ if (val == -1.0 && PyErr_Occurred())
+ {
+ PyErr_Format(PyExc_TypeError, "expected a float for attribute \"%s\"", attrdef->m_name);
+ goto FREE_AND_ERROR;
+ }
+ else if (attrdef->m_clamp)
+ {
+ if (val < attrdef->m_fmin)
+ val = attrdef->m_fmin;
+ else if (val > attrdef->m_fmax)
+ val = attrdef->m_fmax;
+ }
+ else if (val < attrdef->m_fmin || val > attrdef->m_fmax)
+ {
+ PyErr_Format(PyExc_ValueError, "value out of range for attribute \"%s\"", attrdef->m_name);
+ goto FREE_AND_ERROR;
+ }
+ *var = (float)val;
+ break;
+ }
+ case KX_PYATTRIBUTE_TYPE_STRING:
+ {
+ STR_String *var = reinterpret_cast<STR_String*>(ptr);
+ if (PyString_Check(value))
+ {
+ char *val = PyString_AsString(value);
+ if (attrdef->m_clamp)
{
- float *var = reinterpret_cast<float*>(ptr);
- double val = PyFloat_AsDouble(value);
- if (val == -1.0 && PyErr_Occurred())
+ if (strlen(val) < attrdef->m_imin)
{
- PyErr_SetString(PyExc_TypeError, "expected a float");
+ // can't increase the length of the string
+ PyErr_Format(PyExc_ValueError, "string length too short for attribute \"%s\"", attrdef->m_name);
goto FREE_AND_ERROR;
}
- else if (attrdef->m_clamp)
- {
- if (val < attrdef->m_fmin)
- val = attrdef->m_fmin;
- else if (val > attrdef->m_fmax)
- val = attrdef->m_fmax;
- }
- else if (val < attrdef->m_fmin || val > attrdef->m_fmax)
- {
- PyErr_SetString(PyExc_ValueError, "value out of range");
- goto FREE_AND_ERROR;
- }
- *var = (float)val;
- break;
- }
- case KX_PYATTRIBUTE_TYPE_STRING:
- {
- STR_String *var = reinterpret_cast<STR_String*>(ptr);
- if (PyString_Check(value))
+ else if (strlen(val) > attrdef->m_imax)
{
- char *val = PyString_AsString(value);
- if (attrdef->m_clamp)
- {
- if (strlen(val) < attrdef->m_imin)
- {
- // can't increase the length of the string
- PyErr_SetString(PyExc_ValueError, "string length too short");
- goto FREE_AND_ERROR;
- }
- else if (strlen(val) > attrdef->m_imax)
- {
- // trim the string
- char c = val[attrdef->m_imax];
- val[attrdef->m_imax] = 0;
- *var = val;
- val[attrdef->m_imax] = c;
- break;
- }
- } else if (strlen(val) < attrdef->m_imin || strlen(val) > attrdef->m_imax)
- {
- PyErr_SetString(PyExc_ValueError, "string length out of range");
- goto FREE_AND_ERROR;
- }
+ // trim the string
+ char c = val[attrdef->m_imax];
+ val[attrdef->m_imax] = 0;
*var = val;
+ val[attrdef->m_imax] = c;
+ break;
}
- else
- {
- PyErr_SetString(PyExc_TypeError, "expected a string");
- goto FREE_AND_ERROR;
- }
- break;
+ } else if (strlen(val) < attrdef->m_imin || strlen(val) > attrdef->m_imax)
+ {
+ PyErr_Format(PyExc_ValueError, "string length out of range for attribute \"%s\"", attrdef->m_name);
+ goto FREE_AND_ERROR;
}
- default:
- // should not happen
- PyErr_SetString(PyExc_AttributeError, "unknown attribute type, report to blender.org");
+ *var = val;
+ }
+ else
+ {
+ PyErr_Format(PyExc_TypeError, "expected a string for attribute \"%s\"", attrdef->m_name);
goto FREE_AND_ERROR;
}
+ break;
}
- // check if post processing is needed
- if (attrdef->m_function != NULL)
+ default:
+ // should not happen
+ PyErr_Format(PyExc_AttributeError, "unknown type for attribute \"%s\", report to blender.org", attrdef->m_name);
+ goto FREE_AND_ERROR;
+ }
+ }
+ // check if post processing is needed
+ if (attrdef->m_checkFunction != NULL)
+ {
+ if ((*attrdef->m_checkFunction)(self, attrdef) != 0)
+ {
+ // restore value
+ RESTORE_AND_ERROR:
+ if (undoBuffer)
{
- if ((*attrdef->m_function)(self, attrdef) != 0)
+ if (attrdef->m_type == KX_PYATTRIBUTE_TYPE_STRING)
{
- // restore value
- RESTORE_AND_ERROR:
- if (undoBuffer)
- {
- if (attrdef->m_type == KX_PYATTRIBUTE_TYPE_STRING)
- {
- // special case for STR_String: restore the string
- STR_String *var = reinterpret_cast<STR_String*>(ptr);
- *var = reinterpret_cast<char*>(undoBuffer);
- }
- else
- {
- // other field type have direct values
- memcpy(ptr, undoBuffer, bufferSize);
- }
- }
- FREE_AND_ERROR:
- if (undoBuffer)
- free(undoBuffer);
- return 1;
+ // special case for STR_String: restore the string
+ STR_String *var = reinterpret_cast<STR_String*>(ptr);
+ *var = reinterpret_cast<char*>(undoBuffer);
+ }
+ else
+ {
+ // other field type have direct values
+ memcpy(ptr, undoBuffer, bufferSize);
}
}
+ FREE_AND_ERROR:
if (undoBuffer)
free(undoBuffer);
- return 0;
+ return 1;
}
}
- return -1;
+ if (undoBuffer)
+ free(undoBuffer);
+ return 0;
}
+
+
/*------------------------------
* PyObjectPlus repr -- representations
------------------------------*/
-PyObject *PyObjectPlus::_repr(void)
+PyObject *PyObjectPlus::py_repr(void)
{
PyErr_SetString(PyExc_SystemError, "Representation not overridden by object.");
return NULL;
@@ -676,38 +755,43 @@ PyObject *PyObjectPlus::_repr(void)
------------------------------*/
bool PyObjectPlus::isA(PyTypeObject *T) // if called with a Type, use "typename"
{
- return isA(T->tp_name);
+ int i;
+ PyParentObject P;
+ PyParentObject *Ps = GetParents();
+
+ for (P = Ps[i=0]; P != NULL; P = Ps[i++])
+ if (P==T)
+ return true;
+
+ return false;
}
bool PyObjectPlus::isA(const char *mytypename) // check typename of each parent
{
- int i;
- PyParentObject P;
- PyParentObject *Ps = GetParents();
+ int i;
+ PyParentObject P;
+ PyParentObject *Ps = GetParents();
- for (P = Ps[i=0]; P != NULL; P = Ps[i++])
- {
- if (strcmp(P->tp_name, mytypename)==0)
- return true;
- }
-
- return false;
+ for (P = Ps[i=0]; P != NULL; P = Ps[i++])
+ if (strcmp(P->tp_name, mytypename)==0)
+ return true;
+
+ return false;
}
-PyObject *PyObjectPlus::Py_isA(PyObject *value) // Python wrapper for isA
+PyObject *PyObjectPlus::PyisA(PyObject *value) // Python wrapper for isA
{
- if (!PyString_Check(value)) {
- PyErr_SetString(PyExc_TypeError, "expected a string");
- return NULL;
- }
- if(isA(PyString_AsString(value)))
- Py_RETURN_TRUE;
- else
- Py_RETURN_FALSE;
+ if (PyType_Check(value)) {
+ return PyBool_FromLong(isA((PyTypeObject *)value));
+ } else if (PyString_Check(value)) {
+ return PyBool_FromLong(isA(PyString_AsString(value)));
+ }
+ PyErr_SetString(PyExc_TypeError, "object.isA(value): expected a type or a string");
+ return NULL;
}
-/* Utility function called by the macro _getattr_up()
+/* Utility function called by the macro py_getattro_up()
* for getting ob.__dict__() values from our PyObject
* this is used by python for doing dir() on an object, so its good
* if we return a list of attributes and methods.
@@ -715,26 +799,57 @@ PyObject *PyObjectPlus::Py_isA(PyObject *value) // Python wrapper for isA
* Other then making dir() useful the value returned from __dict__() is not useful
* since every value is a Py_None
* */
-PyObject *_getattr_dict(PyObject *pydict, PyMethodDef *meth, PyAttributeDef *attrdef)
+PyObject *py_getattr_dict(PyObject *pydict, PyObject *tp_dict)
{
if(pydict==NULL) { /* incase calling __dict__ on the parent of this object raised an error */
PyErr_Clear();
pydict = PyDict_New();
}
- if(meth) {
- for (; meth->ml_name != NULL; meth++) {
- PyDict_SetItemString(pydict, meth->ml_name, Py_None);
- }
+ PyDict_Update(pydict, tp_dict);
+ return pydict;
+}
+
+
+
+PyObject *PyObjectPlus::GetProxy_Ext(PyObjectPlus *self, PyTypeObject *tp)
+{
+ if (self->m_proxy==NULL)
+ {
+ self->m_proxy = reinterpret_cast<PyObject *>PyObject_NEW( PyObjectPlus_Proxy, tp);
+ BGE_PROXY_PYOWNS(self->m_proxy) = false;
}
+ //PyObject_Print(self->m_proxy, stdout, 0);
+ //printf("ref %d\n", self->m_proxy->ob_refcnt);
- if(attrdef) {
- for (; attrdef->m_name != NULL; attrdef++) {
- PyDict_SetItemString(pydict, attrdef->m_name, Py_None);
+ BGE_PROXY_REF(self->m_proxy) = self; /* Its possible this was set to NULL, so set it back here */
+ Py_INCREF(self->m_proxy); /* we own one, thos ones fore the return */
+ return self->m_proxy;
+}
+
+PyObject *PyObjectPlus::NewProxy_Ext(PyObjectPlus *self, PyTypeObject *tp, bool py_owns)
+{
+ if (self->m_proxy)
+ {
+ if(py_owns)
+ { /* Free */
+ BGE_PROXY_REF(self->m_proxy) = NULL;
+ Py_DECREF(self->m_proxy);
+ self->m_proxy= NULL;
+ }
+ else {
+ Py_INCREF(self->m_proxy);
+ return self->m_proxy;
}
+
}
-
- return pydict;
+
+ GetProxy_Ext(self, tp);
+ if(py_owns) {
+ BGE_PROXY_PYOWNS(self->m_proxy) = py_owns;
+ Py_DECREF(self->m_proxy); /* could avoid thrashing here but for now its ok */
+ }
+ return self->m_proxy;
}
#endif //NO_EXP_PYTHON_EMBEDDING
diff --git a/source/gameengine/Expressions/PyObjectPlus.h b/source/gameengine/Expressions/PyObjectPlus.h
index 1a5f50a3d23..370717a919b 100644
--- a/source/gameengine/Expressions/PyObjectPlus.h
+++ b/source/gameengine/Expressions/PyObjectPlus.h
@@ -50,18 +50,19 @@
also in api2_2x/gen_utils.h
*/
#ifndef Py_RETURN_NONE
-#define Py_RETURN_NONE return Py_BuildValue("O", Py_None)
+#define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None
#endif
#ifndef Py_RETURN_FALSE
-#define Py_RETURN_FALSE return PyBool_FromLong(0)
+#define Py_RETURN_FALSE return Py_INCREF(Py_False), Py_False
#endif
#ifndef Py_RETURN_TRUE
-#define Py_RETURN_TRUE return PyBool_FromLong(1)
+#define Py_RETURN_TRUE return Py_INCREF(Py_True), Py_True
#endif
/* for pre Py 2.5 */
#if PY_VERSION_HEX < 0x02050000
typedef int Py_ssize_t;
+typedef Py_ssize_t (*lenfunc)(PyObject *);
#define PY_SSIZE_T_MAX INT_MAX
#define PY_SSIZE_T_MIN INT_MIN
#define PY_METHODCHAR char *
@@ -72,11 +73,28 @@ typedef int Py_ssize_t;
#define PY_METHODCHAR const char *
#endif
+#include "descrobject.h"
+
+
static inline void Py_Fatal(const char *M) {
fprintf(stderr, "%s\n", M);
exit(-1);
};
+typedef struct {
+ PyObject_HEAD /* required python macro */
+ class PyObjectPlus *ref;
+ bool py_owns;
+} PyObjectPlus_Proxy;
+
+#define BGE_PROXY_ERROR_MSG "Blender Game Engine data has been freed, cannot use this python variable"
+#define BGE_PROXY_REF(_self) (((PyObjectPlus_Proxy *)_self)->ref)
+#define BGE_PROXY_PYOWNS(_self) (((PyObjectPlus_Proxy *)_self)->py_owns)
+
+/* Note, sometimes we dont care what BGE type this is as long as its a proxy */
+#define BGE_PROXY_CHECK_TYPE(_self) ((_self)->ob_type->tp_dealloc == py_base_dealloc)
+
+
// This must be the first line of each
// PyC++ class
#define Py_Header \
@@ -86,79 +104,130 @@ static inline void Py_Fatal(const char *M) {
static PyAttributeDef Attributes[]; \
static PyParentObject Parents[]; \
virtual PyTypeObject *GetType(void) {return &Type;}; \
- virtual PyParentObject *GetParents(void) {return Parents;}
+ virtual PyParentObject *GetParents(void) {return Parents;} \
+ virtual PyObject *GetProxy() {return GetProxy_Ext(this, &Type);}; \
+ virtual PyObject *NewProxy(bool py_owns) {return NewProxy_Ext(this, &Type, py_owns);}; \
- // This defines the _getattr_up macro
+
+ // This defines the py_getattro_up macro
// which allows attribute and method calls
// to be properly passed up the hierarchy.
-#define _getattr_up(Parent) \
- PyObject *rvalue = Py_FindMethod(Methods, this, attr); \
+
+#define py_getattro_up(Parent) \
+ \
+ PyObject *descr = PyDict_GetItem(Type.tp_dict, attr); \
\
- if (rvalue == NULL) { \
+ if(descr) { \
+ if (PyCObject_Check(descr)) { \
+ return py_get_attrdef((void *)this, (const PyAttributeDef*)PyCObject_AsVoidPtr(descr)); \
+ } else if (descr->ob_type->tp_descr_get) { \
+ return PyCFunction_New(((PyMethodDescrObject *)descr)->d_method, this->m_proxy); \
+ } else { \
+ fprintf(stderr, "unknown attribute type"); \
+ return descr; \
+ } \
+ } else { \
PyErr_Clear(); \
- rvalue = Parent::_getattr(attr); \
+ PyObject *rvalue= Parent::py_getattro(attr); \
+ \
+ if (strcmp(PyString_AsString(attr), "__dict__")==0) { \
+ return py_getattr_dict(rvalue, Type.tp_dict); \
+ } \
+ \
+ return rvalue; \
} \
- if ((rvalue == NULL) && !strcmp(attr, "__dict__")) {\
+ return NULL;
+
+
+/*
+ * nonzero values are an error for setattr
+ * however because of the nested lookups we need to know if the errors
+ * was because the attribute didnt exits of if there was some problem setting the value
+ */
+
+#define PY_SET_ATTR_COERCE_FAIL 2
+#define PY_SET_ATTR_FAIL 1
+#define PY_SET_ATTR_MISSING -1
+#define PY_SET_ATTR_SUCCESS 0
+
+#define py_setattro_up(Parent) \
+ PyObject *descr = PyDict_GetItem(Type.tp_dict, attr); \
+ \
+ if(descr) { \
+ if (PyCObject_Check(descr)) { \
+ const PyAttributeDef* attrdef= reinterpret_cast<const PyAttributeDef *>(PyCObject_AsVoidPtr(descr)); \
+ if (attrdef->m_access == KX_PYATTRIBUTE_RO) { \
+ PyErr_Format(PyExc_AttributeError, "\"%s\" is read only", PyString_AsString(attr)); \
+ return PY_SET_ATTR_FAIL; \
+ } \
+ else { \
+ return py_set_attrdef((void *)this, attrdef, value); \
+ } \
+ } else { \
+ PyErr_Format(PyExc_AttributeError, "\"%s\" cannot be set", PyString_AsString(attr)); \
+ return PY_SET_ATTR_FAIL; \
+ } \
+ } else { \
PyErr_Clear(); \
- rvalue = _getattr_dict(Parent::_getattr(attr), Methods, Attributes); \
- } \
- return rvalue; \
+ return Parent::py_setattro(attr, value); \
+ }
+
/**
* These macros are helpfull when embedding Python routines. The second
* macro is one that also requires a documentation string
*/
#define KX_PYMETHOD(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self, PyObject* args, PyObject* kwds); \
+ PyObject* Py##method_name(PyObject* args, PyObject* kwds); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args, PyObject* kwds) { \
- return ((class_name*) self)->Py##method_name(self, args, kwds); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
}; \
#define KX_PYMETHOD_VARARGS(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self, PyObject* args); \
+ PyObject* Py##method_name(PyObject* args); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args) { \
- return ((class_name*) self)->Py##method_name(self, args); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
}; \
#define KX_PYMETHOD_NOARGS(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self); \
+ PyObject* Py##method_name(); \
static PyObject* sPy##method_name( PyObject* self) { \
- return ((class_name*) self)->Py##method_name(self); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(); \
}; \
#define KX_PYMETHOD_O(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self, PyObject* value); \
+ PyObject* Py##method_name(PyObject* value); \
static PyObject* sPy##method_name( PyObject* self, PyObject* value) { \
- return ((class_name*) self)->Py##method_name(self, value); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(value); \
}; \
#define KX_PYMETHOD_DOC(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self, PyObject* args, PyObject* kwds); \
+ PyObject* Py##method_name(PyObject* args, PyObject* kwds); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args, PyObject* kwds) { \
- return ((class_name*) self)->Py##method_name(self, args, kwds); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args, kwds); \
}; \
static const char method_name##_doc[]; \
#define KX_PYMETHOD_DOC_VARARGS(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self, PyObject* args); \
+ PyObject* Py##method_name(PyObject* args); \
static PyObject* sPy##method_name( PyObject* self, PyObject* args) { \
- return ((class_name*) self)->Py##method_name(self, args); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(args); \
}; \
static const char method_name##_doc[]; \
#define KX_PYMETHOD_DOC_O(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self, PyObject* value); \
+ PyObject* Py##method_name(PyObject* value); \
static PyObject* sPy##method_name( PyObject* self, PyObject* value) { \
- return ((class_name*) self)->Py##method_name(self, value); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(value); \
}; \
static const char method_name##_doc[]; \
#define KX_PYMETHOD_DOC_NOARGS(class_name, method_name) \
- PyObject* Py##method_name(PyObject* self); \
+ PyObject* Py##method_name(); \
static PyObject* sPy##method_name( PyObject* self) { \
- return ((class_name*) self)->Py##method_name(self); \
+ return ((class_name*)BGE_PROXY_REF(self))->Py##method_name(); \
}; \
static const char method_name##_doc[]; \
@@ -181,19 +250,19 @@ static inline void Py_Fatal(const char *M) {
*/
#define KX_PYMETHODDEF_DOC(class_name, method_name, doc_string) \
const char class_name::method_name##_doc[] = doc_string; \
-PyObject* class_name::Py##method_name(PyObject*, PyObject* args, PyObject*)
+PyObject* class_name::Py##method_name(PyObject* args, PyObject*)
#define KX_PYMETHODDEF_DOC_VARARGS(class_name, method_name, doc_string) \
const char class_name::method_name##_doc[] = doc_string; \
-PyObject* class_name::Py##method_name(PyObject*, PyObject* args)
+PyObject* class_name::Py##method_name(PyObject* args)
#define KX_PYMETHODDEF_DOC_O(class_name, method_name, doc_string) \
const char class_name::method_name##_doc[] = doc_string; \
-PyObject* class_name::Py##method_name(PyObject*, PyObject* value)
+PyObject* class_name::Py##method_name(PyObject* value)
#define KX_PYMETHODDEF_DOC_NOARGS(class_name, method_name, doc_string) \
const char class_name::method_name##_doc[] = doc_string; \
-PyObject* class_name::Py##method_name(PyObject*)
+PyObject* class_name::Py##method_name()
/**
* Attribute management
@@ -206,6 +275,7 @@ enum KX_PYATTRIBUTE_TYPE {
KX_PYATTRIBUTE_TYPE_FLOAT,
KX_PYATTRIBUTE_TYPE_STRING,
KX_PYATTRIBUTE_TYPE_DUMMY,
+ KX_PYATTRIBUTE_TYPE_FUNCTION,
};
enum KX_PYATTRIBUTE_ACCESS {
@@ -214,7 +284,9 @@ enum KX_PYATTRIBUTE_ACCESS {
};
struct KX_PYATTRIBUTE_DEF;
-typedef int (*KX_PYATTRIBUTE_FUNCTION)(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+typedef int (*KX_PYATTRIBUTE_CHECK_FUNCTION)(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+typedef int (*KX_PYATTRIBUTE_SET_FUNCTION)(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+typedef PyObject* (*KX_PYATTRIBUTE_GET_FUNCTION)(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
typedef struct KX_PYATTRIBUTE_DEF {
const char *m_name; // name of the python attribute
@@ -228,7 +300,10 @@ typedef struct KX_PYATTRIBUTE_DEF {
size_t m_offset; // position of field in structure
size_t m_size; // size of field for runtime verification (enum only)
size_t m_length; // length of array, 1=simple attribute
- KX_PYATTRIBUTE_FUNCTION m_function; // static function to check the assignment, returns 0 if no error
+ KX_PYATTRIBUTE_CHECK_FUNCTION m_checkFunction; // static function to check the assignment, returns 0 if no error
+ KX_PYATTRIBUTE_SET_FUNCTION m_setFunction; // static function to check the assignment, returns 0 if no error
+ KX_PYATTRIBUTE_GET_FUNCTION m_getFunction; // static function to check the assignment, returns 0 if no error
+
// The following pointers are just used to have compile time check for attribute type.
// It would have been good to use a union but that would require C99 compatibility
// to initialize specific union fields through designated initializers.
@@ -242,150 +317,145 @@ typedef struct KX_PYATTRIBUTE_DEF {
} PyAttributeDef;
#define KX_PYATTRIBUTE_DUMMY(name) \
- { name, KX_PYATTRIBUTE_TYPE_DUMMY, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_DUMMY, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_BOOL_RW(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_BOOL_RW_CHECK(name,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, &object::function, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_BOOL_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RO, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RO, 0, 1, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL} }
// enum field cannot be mapped to pointer (because we would need a pointer for each enum)
// use field size to verify mapping at runtime only, assuming enum size is equal to int size.
#define KX_PYATTRIBUTE_ENUM_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_ENUM_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, &object::function, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), sizeof(((object *)0)->field), 1, &object::function, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_ENUM_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, {NULL, NULL, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_ENUM, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), sizeof(((object *)0)->field), 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_ARRAY_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_ARRAY_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_ARRAY_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, ((object *)0)->field, NULL, NULL, NULL} }
// SHORT_LIST
#define KX_PYATTRIBUTE_SHORT_LIST_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_LIST_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_SHORT_LIST_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_SHORT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, &((object *)0)->field, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_ARRAY_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_ARRAY_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_ARRAY_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, ((object *)0)->field, NULL, NULL} }
// INT_LIST
#define KX_PYATTRIBUTE_INT_LIST_RW(name,min,max,clamp,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_LIST_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
#define KX_PYATTRIBUTE_INT_LIST_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
// always clamp for float
#define KX_PYATTRIBUTE_FLOAT_RW(name,min,max,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_FLOAT_RW_CHECK(name,min,max,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, &object::function, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_FLOAT_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, &((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_FLOAT_ARRAY_RW(name,min,max,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_FLOAT_ARRAY_RW_CHECK(name,min,max,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, &object::function, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RW, 0, 0, min, max, true, offsetof(object,field), 0, length, &object::function, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_FLOAT_ARRAY_RO(name,object,field,length) \
- { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
+ { name, KX_PYATTRIBUTE_TYPE_FLOAT, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, length, NULL, NULL, NULL, {NULL, NULL, NULL, ((object *)0)->field, NULL} }
#define KX_PYATTRIBUTE_STRING_RW(name,min,max,clamp,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
+ { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
#define KX_PYATTRIBUTE_STRING_RW_CHECK(name,min,max,clamp,object,field,function) \
- { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
+ { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, 1, &object::function, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
#define KX_PYATTRIBUTE_STRING_RO(name,object,field) \
- { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1 , NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
+ { name, KX_PYATTRIBUTE_TYPE_STRING, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, offsetof(object,field), 0, 1 , NULL, NULL, NULL, {NULL, NULL, NULL, NULL, &((object *)0)->field} }
+
+#define KX_PYATTRIBUTE_RW_FUNCTION(name,object,getfunction,setfunction) \
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RW, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, &object::setfunction, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
+#define KX_PYATTRIBUTE_RO_FUNCTION(name,object,getfunction) \
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, 0, 0, 1, NULL, NULL, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
+#define KX_PYATTRIBUTE_ARRAY_RW_FUNCTION(name,object,length,getfunction,setfunction) \
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RW, 0, 0, 0.f, 0,f, false, 0, 0, length, NULL, &object::setfunction, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
+#define KX_PYATTRIBUTE_ARRAY_RO_FUNCTION(name,object,length,getfunction) \
+ { name, KX_PYATTRIBUTE_TYPE_FUNCTION, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0,f, false, 0, 0, length, NULL, NULL, &object::getfunction, {NULL, NULL, NULL, NULL, NULL} }
-//Multiple integer
-#define KX_PYATTRIBUTE_MINT_RW_CHECK(name,min,max,clamp,object,field,length,function) \
- { name, KX_PYATTRIBUTE_TYPE_INT, KX_PYATTRIBUTE_RW, min, max, 0.f, 0.f, clamp, offsetof(object,field), 0, length, &object::function, {NULL, NULL, &((object *)0)->field, NULL, NULL} }
/*------------------------------
* PyObjectPlus
------------------------------*/
typedef PyTypeObject * PyParentObject; // Define the PyParent Object
-class PyObjectPlus : public PyObject
+class PyObjectPlus
{ // The PyObjectPlus abstract class
Py_Header; // Always start with Py_Header
public:
PyObjectPlus(PyTypeObject *T);
+
+ PyObject *m_proxy; /* actually a PyObjectPlus_Proxy */
virtual ~PyObjectPlus(); // destructor
- static void PyDestructor(PyObject *P) // python wrapper
- {
- delete ((PyObjectPlus *) P);
- };
-// void INCREF(void) {
-// Py_INCREF(this);
-// }; // incref method
-// void DECREF(void) {
-// Py_DECREF(this);
-// }; // decref method
+ /* These static functions are referenced by ALL PyObjectPlus_Proxy types
+ * they take the C++ reference from the PyObjectPlus_Proxy and call
+ * its own virtual py_getattro, py_setattro etc. functions.
+ */
+ static void py_base_dealloc(PyObject *self);
+ static PyObject* py_base_getattro(PyObject * self, PyObject *attr);
+ static int py_base_setattro(PyObject *self, PyObject *attr, PyObject *value);
+ static PyObject* py_base_repr(PyObject *self);
+
+ /* These are all virtual python methods that are defined in each class
+ * Our own fake subclassing calls these on each class, then calls the parent */
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_delattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+ virtual PyObject* py_repr(void);
+
+ static PyObject* py_get_attrdef(void *self, const PyAttributeDef *attrdef);
+ static int py_set_attrdef(void *self, const PyAttributeDef *attrdef, PyObject *value);
- virtual PyObject *_getattr(const char *attr); // _getattr method
- static PyObject *__getattr(PyObject * PyObj, char *attr) // This should be the entry in Type.
- {
- return ((PyObjectPlus*) PyObj)->_getattr(attr);
- }
- static PyObject *_getattr_self(const PyAttributeDef attrlist[], void *self, const char *attr);
- static int _setattr_self(const PyAttributeDef attrlist[], void *self, const char *attr, PyObject *value);
+ /* isA() methods, shonky replacement for pythons issubclass()
+ * which we cant use because we have our own subclass system */
+ bool isA(PyTypeObject *T);
+ bool isA(const char *mytypename);
- virtual int _delattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value); // _setattr method
- static int __setattr(PyObject *PyObj, // This should be the entry in Type.
- char *attr,
- PyObject *value)
- {
- if (!value)
- return ((PyObjectPlus*) PyObj)->_delattr(attr);
- return ((PyObjectPlus*) PyObj)->_setattr(attr, value);
- }
+ KX_PYMETHOD_O(PyObjectPlus,isA);
- virtual PyObject *_repr(void); // _repr method
- static PyObject *__repr(PyObject *PyObj) // This should be the entry in Type.
- {
- return ((PyObjectPlus*) PyObj)->_repr();
- }
+ /* Kindof dumb, always returns True, the false case is checked for, before this function gets accessed */
+ static PyObject* pyattr_get_is_valid(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
- // isA methods
- bool isA(PyTypeObject *T);
- bool isA(const char *mytypename);
- PyObject *Py_isA(PyObject *value);
- static PyObject *sPy_isA(PyObject *self, PyObject *value)
- {
- return ((PyObjectPlus*)self)->Py_isA(value);
- }
+ static PyObject *GetProxy_Ext(PyObjectPlus *self, PyTypeObject *tp);
+ static PyObject *NewProxy_Ext(PyObjectPlus *self, PyTypeObject *tp, bool py_owns);
};
-PyObject *_getattr_dict(PyObject *pydict, PyMethodDef *meth, PyAttributeDef *attrdef);
+PyObject *py_getattr_dict(PyObject *pydict, PyObject *tp_dict);
#endif // _adr_py_lib_h_
diff --git a/source/gameengine/Expressions/StringValue.cpp b/source/gameengine/Expressions/StringValue.cpp
index 1ef8c5629a0..2b3c62c411e 100644
--- a/source/gameengine/Expressions/StringValue.cpp
+++ b/source/gameengine/Expressions/StringValue.cpp
@@ -113,7 +113,7 @@ this object
-float CStringValue::GetNumber()
+double CStringValue::GetNumber()
{
return -1;
}
diff --git a/source/gameengine/Expressions/StringValue.h b/source/gameengine/Expressions/StringValue.h
index b824d4ef86d..16575ed7ffa 100644
--- a/source/gameengine/Expressions/StringValue.h
+++ b/source/gameengine/Expressions/StringValue.h
@@ -33,7 +33,7 @@ public:
/// CValue implementation
virtual bool IsEqual(const STR_String & other);
virtual const STR_String & GetText();
- virtual float GetNumber();
+ virtual double GetNumber();
virtual CValue* Calc(VALUE_OPERATOR op, CValue *val);
virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
diff --git a/source/gameengine/Expressions/Value.cpp b/source/gameengine/Expressions/Value.cpp
index ebb12636ac2..7cb97909119 100644
--- a/source/gameengine/Expressions/Value.cpp
+++ b/source/gameengine/Expressions/Value.cpp
@@ -36,125 +36,24 @@ bool CValue::m_ignore_deprecation_warnings(false);
#ifndef NO_EXP_PYTHON_EMBEDDING
-PyObject* cvalue_add(PyObject*v, PyObject*w)
-{
- return ((CValue*)v)->Calc(VALUE_ADD_OPERATOR,(CValue*)w);
-}
-PyObject* cvalue_sub(PyObject*v, PyObject*w)
-{
- return ((CValue*)v)->Calc(VALUE_SUB_OPERATOR,(CValue*)w);
-}
-PyObject* cvalue_mul(PyObject*v, PyObject*w)
-{
- return ((CValue*)v)->Calc(VALUE_MUL_OPERATOR,(CValue*)w);
-}
-PyObject* cvalue_div(PyObject*v, PyObject*w)
-{
- return ((CValue*)v)->Calc(VALUE_DIV_OPERATOR,(CValue*)w);
-}
-PyObject* cvalue_mod(PyObject*v, PyObject*w)
-{
- return ((CValue*)v)->Calc(VALUE_MOD_OPERATOR,(CValue*)w);
-}
-PyObject* cvalue_neg(PyObject*v)
-{
- return ((CValue*)v)->Calc(VALUE_NEG_OPERATOR,(CValue*)v);
-}
-PyObject* cvalue_pos(PyObject*v)
-{
- return ((CValue*)v)->Calc(VALUE_POS_OPERATOR,(CValue*)v);
-}
-
-
-int MyPyCompare (PyObject* v,PyObject* w)
-{
- CValue* eqval = ((CValue*)v)->Calc(VALUE_EQL_OPERATOR,(CValue*)w);
- STR_String txt = eqval->GetText();
- eqval->Release();
- if (txt=="TRUE")
- return 0;
- CValue* lessval = ((CValue*)v)->Calc(VALUE_LES_OPERATOR,(CValue*)w);
- txt = lessval->GetText();
- lessval->Release();
- if (txt=="TRUE")
- return -1;
-
- return 1;
-}
-
-
-int cvalue_coerce(PyObject** pv,PyObject** pw)
-{
- if (PyInt_Check(*pw)) {
- double db = (double)PyInt_AsLong(*pw);
- *pw = new CIntValue((int) db);
- Py_INCREF(*pv);
- return 0;
- }
- else if (PyLong_Check(*pw)) {
- double db = PyLong_AsDouble(*pw);
- *pw = new CFloatValue(db);
- Py_INCREF(*pv);
- return 0;
- }
- else if (PyFloat_Check(*pw)) {
- double db = PyFloat_AsDouble(*pw);
- *pw = new CFloatValue(db);
- Py_INCREF(*pv);
- return 0;
- } else if (PyString_Check(*pw)) {
- const STR_String str = PyString_AsString(*pw);
- *pw = new CStringValue(str,"");
- Py_INCREF(*pv);
- return 0;
- }
- return 1; /* Can't do it */
-
-}
-static PyNumberMethods cvalue_as_number = {
- (binaryfunc)cvalue_add, /*nb_add*/
- (binaryfunc)cvalue_sub, /*nb_subtract*/
- (binaryfunc)cvalue_mul, /*nb_multiply*/
- (binaryfunc)cvalue_div, /*nb_divide*/
- (binaryfunc)cvalue_mod, /*nb_remainder*/
- 0,//(binaryfunc)cvalue_divmod, /*nb_divmod*/
- 0,//0,//0,//0,//(ternaryfunc)cvalue_pow, /*nb_power*/
- (unaryfunc)cvalue_neg, /*nb_negative*/
- 0,//(unaryfunc)cvalue_pos, /*nb_positive*/
- 0,//(unaryfunc)cvalue_abs, /*nb_absolute*/
- 0,//(inquiry)cvalue_nonzero, /*nb_nonzero*/
- 0, /*nb_invert*/
- 0, /*nb_lshift*/
- 0, /*nb_rshift*/
- 0, /*nb_and*/
- 0, /*nb_xor*/
- 0, /*nb_or*/
- (coercion)cvalue_coerce, /*nb_coerce*/
- 0,//(unaryfunc)cvalue_int, /*nb_int*/
- 0,//(unaryfunc)cvalue_long, /*nb_long*/
- 0,//(unaryfunc)cvalue_float, /*nb_float*/
- 0, /*nb_oct*/
- 0, /*nb_hex*/
-};
-
-
PyTypeObject CValue::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"CValue",
- sizeof(CValue),
+ sizeof(PyObjectPlus_Proxy),
+ 0,
+ py_base_dealloc,
0,
- PyDestructor,
0,
- __getattr,
- __setattr,
- &MyPyCompare,
- __repr,
- &cvalue_as_number,
0,
0,
+ py_base_repr,
0,
- 0
+ 0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject CValue::Parents[] = {
@@ -168,7 +67,7 @@ PyMethodDef CValue::Methods[] = {
{NULL,NULL} //Sentinel
};
-PyObject* CValue::PyGetName(PyObject* self)
+PyObject* CValue::PyGetName()
{
return PyString_FromString(this->GetName());
}
@@ -320,55 +219,70 @@ STR_String CValue::op2str (VALUE_OPERATOR op)
//
void CValue::SetProperty(const STR_String & name,CValue* ioProperty)
{
- // Check if somebody is setting an empty property
if (ioProperty==NULL)
- {
+ { // Check if somebody is setting an empty property
trace("Warning:trying to set empty property!");
return;
}
- // Make sure we have a property array
- if (m_pNamedPropertyArray == NULL)
+ if (m_pNamedPropertyArray)
+ { // Try to replace property (if so -> exit as soon as we replaced it)
+ CValue* oldval = (*m_pNamedPropertyArray)[name];
+ if (oldval)
+ oldval->Release();
+ }
+ else { // Make sure we have a property array
m_pNamedPropertyArray = new std::map<STR_String,CValue *>;
-
- // Try to replace property (if so -> exit as soon as we replaced it)
- CValue* oldval = (*m_pNamedPropertyArray)[name];
- if (oldval)
- {
- oldval->Release();
}
// Add property at end of array
(*m_pNamedPropertyArray)[name] = ioProperty->AddRef();//->Add(ioProperty);
}
+void CValue::SetProperty(const char* name,CValue* ioProperty)
+{
+ if (ioProperty==NULL)
+ { // Check if somebody is setting an empty property
+ trace("Warning:trying to set empty property!");
+ return;
+ }
+ if (m_pNamedPropertyArray)
+ { // Try to replace property (if so -> exit as soon as we replaced it)
+ CValue* oldval = (*m_pNamedPropertyArray)[name];
+ if (oldval)
+ oldval->Release();
+ }
+ else { // Make sure we have a property array
+ m_pNamedPropertyArray = new std::map<STR_String,CValue *>;
+ }
+
+ // Add property at end of array
+ (*m_pNamedPropertyArray)[name] = ioProperty->AddRef();//->Add(ioProperty);
+}
//
// Get pointer to a property with name <inName>, returns NULL if there is no property named <inName>
//
CValue* CValue::GetProperty(const STR_String & inName)
{
- // Check properties, as soon as we found it -> Return a pointer to the property
- CValue* result = NULL;
- if (m_pNamedPropertyArray)
- {
- std::map<STR_String,CValue*>::iterator it = (*m_pNamedPropertyArray).find(inName);
- if (!( it==m_pNamedPropertyArray->end()))
- {
- result = (*it).second;
- }
-
+ if (m_pNamedPropertyArray) {
+ std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->find(inName);
+ if (it != m_pNamedPropertyArray->end())
+ return (*it).second;
}
- //for (int i=0; i<m_pValuePropertyArray->size(); i++)
- // if ((*m_pValuePropertyArray)[i]->GetName() == inName)
- // return (*m_pValuePropertyArray)[i];
-
- // Did not find property with name <inName>, return NULL property pointer
- return result;
+ return NULL;
}
-
+CValue* CValue::GetProperty(const char *inName)
+{
+ if (m_pNamedPropertyArray) {
+ std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->find(inName);
+ if (it != m_pNamedPropertyArray->end())
+ return (*it).second;
+ }
+ return NULL;
+}
//
// Get text description of property with name <inName>, returns an empty string if there is no property named <inName>
@@ -386,7 +300,7 @@ float CValue::GetPropertyNumber(const STR_String& inName,float defnumber)
{
CValue *property = GetProperty(inName);
if (property)
- return property->GetNumber();
+ return property->GetNumber();
else
return defnumber;
}
@@ -396,26 +310,20 @@ float CValue::GetPropertyNumber(const STR_String& inName,float defnumber)
//
// Remove the property named <inName>, returns true if the property was succesfully removed, false if property was not found or could not be removed
//
-bool CValue::RemoveProperty(const STR_String & inName)
+bool CValue::RemoveProperty(const char *inName)
{
// Check if there are properties at all which can be removed
- if (m_pNamedPropertyArray) {
- CValue* val = GetProperty(inName);
- if (NULL != val)
+ if (m_pNamedPropertyArray)
+ {
+ std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->find(inName);
+ if (it != m_pNamedPropertyArray->end())
{
- val->Release();
- m_pNamedPropertyArray->erase(inName);
+ ((*it).second)->Release();
+ m_pNamedPropertyArray->erase(it);
return true;
}
- }
-
- char err[128];
- if (m_pNamedPropertyArray)
- sprintf(err, "attribute \"%s\" dosnt exist", inName.ReadPtr());
- else
- sprintf(err, "attribute \"%s\" dosnt exist (no property array)", inName.ReadPtr());
+ }
- PyErr_SetString(PyExc_AttributeError, err);
return false;
}
@@ -426,8 +334,10 @@ vector<STR_String> CValue::GetPropertyNames()
{
vector<STR_String> result;
if(!m_pNamedPropertyArray) return result;
- for ( std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->begin();
- !(it == m_pNamedPropertyArray->end());it++)
+ result.reserve(m_pNamedPropertyArray->size());
+
+ std::map<STR_String,CValue*>::iterator it;
+ for (it= m_pNamedPropertyArray->begin(); (it != m_pNamedPropertyArray->end()); it++)
{
result.push_back((*it).first);
}
@@ -444,8 +354,8 @@ void CValue::ClearProperties()
return;
// Remove all properties
- for ( std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->begin();
- !(it == m_pNamedPropertyArray->end());it++)
+ std::map<STR_String,CValue*>::iterator it;
+ for (it= m_pNamedPropertyArray->begin();(it != m_pNamedPropertyArray->end()); it++)
{
CValue* tmpval = (*it).second;
//STR_String name = (*it).first;
@@ -464,9 +374,11 @@ void CValue::ClearProperties()
//
void CValue::SetPropertiesModified(bool inModified)
{
- int numprops = GetPropertyCount();
- for (int i=0; i<numprops; i++)
- GetProperty(i)->SetModified(inModified);
+ if(!m_pNamedPropertyArray) return;
+ std::map<STR_String,CValue*>::iterator it;
+
+ for (it= m_pNamedPropertyArray->begin();(it != m_pNamedPropertyArray->end()); it++)
+ ((*it).second)->SetModified(inModified);
}
@@ -476,11 +388,13 @@ void CValue::SetPropertiesModified(bool inModified)
//
bool CValue::IsAnyPropertyModified()
{
- int numprops = GetPropertyCount();
- for (int i=0;i<numprops;i++)
- if (GetProperty(i)->IsModified())
+ if(!m_pNamedPropertyArray) return false;
+ std::map<STR_String,CValue*>::iterator it;
+
+ for (it= m_pNamedPropertyArray->begin();(it != m_pNamedPropertyArray->end()); it++)
+ if (((*it).second)->IsModified())
return true;
-
+
return false;
}
@@ -489,7 +403,6 @@ bool CValue::IsAnyPropertyModified()
//
// Get property number <inIndex>
//
-
CValue* CValue::GetProperty(int inIndex)
{
@@ -498,8 +411,8 @@ CValue* CValue::GetProperty(int inIndex)
if (m_pNamedPropertyArray)
{
- for ( std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->begin();
- !(it == m_pNamedPropertyArray->end());it++)
+ std::map<STR_String,CValue*>::iterator it;
+ for (it= m_pNamedPropertyArray->begin(); (it != m_pNamedPropertyArray->end()); it++)
{
if (count++==inIndex)
{
@@ -535,8 +448,8 @@ void CValue::CloneProperties(CValue *replica)
if (m_pNamedPropertyArray)
{
replica->m_pNamedPropertyArray=NULL;
- for ( std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->begin();
- !(it == m_pNamedPropertyArray->end());it++)
+ std::map<STR_String,CValue*>::iterator it;
+ for (it= m_pNamedPropertyArray->begin(); (it != m_pNamedPropertyArray->end()); it++)
{
CValue *val = (*it).second->GetReplica();
replica->SetProperty((*it).first,val);
@@ -595,6 +508,7 @@ int CValue::Release()
{
// Reference count reached 0, delete ourselves and return 0
// MT_assert(m_refcount==0, "Reference count reached sub-zero, object released too much");
+
delete this;
return 0;
}
@@ -624,9 +538,6 @@ void CValue::AddDataToReplica(CValue *replica)
{
replica->m_refcount = 1;
- //register with Python
- _Py_NewReference(replica);
-
#ifdef _DEBUG
//gRefCountValue++;
#endif
@@ -685,39 +596,28 @@ PyAttributeDef CValue::Attributes[] = {
};
-PyObject* CValue::_getattr(const char *attr)
+PyObject* CValue::py_getattro(PyObject *attr)
{
- CValue* resultattr = FindIdentifier(STR_String(attr));
- STR_String text;
+ char *attr_str= PyString_AsString(attr);
+ CValue* resultattr = GetProperty(attr_str);
if (resultattr)
{
- if (resultattr->IsError())
- {
- resultattr->Release();
- } else
- {
- // to avoid some compare problems, return a real pythonthing
- PyObject* pyconvert = resultattr->ConvertValueToPython();
- if (pyconvert)
- {
- resultattr->Release();
- return pyconvert;
- } else
- {
- // also check if it's already in pythoninterpreter!
- return resultattr;
- }
-
- }
+ PyObject* pyconvert = resultattr->ConvertValueToPython();
+
+ if (pyconvert)
+ return pyconvert;
+ else
+ return resultattr->GetProxy();
}
- _getattr_up(PyObjectPlus);
+ py_getattro_up(PyObjectPlus);
}
CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
{
CValue* vallie = NULL;
-
+ /* refcounting is broking here! - this crashes anyway, just store a python list for KX_GameObject */
+#if 0
if (PyList_Check(pyobj))
{
CListValue* listval = new CListValue();
@@ -748,13 +648,18 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
}
} else
+#endif
if (PyFloat_Check(pyobj))
{
vallie = new CFloatValue( (float)PyFloat_AsDouble(pyobj) );
} else
if (PyInt_Check(pyobj))
{
- vallie = new CIntValue( (int)PyInt_AS_LONG(pyobj) );
+ vallie = new CIntValue( (cInt)PyInt_AS_LONG(pyobj) );
+ } else
+ if (PyLong_Check(pyobj))
+ {
+ vallie = new CIntValue( (cInt)PyLong_AsLongLong(pyobj) );
} else
if (PyString_Check(pyobj))
{
@@ -766,42 +671,56 @@ CValue* CValue::ConvertPythonToValue(PyObject* pyobj)
} else
{
/* return an error value from the caller */
- PyErr_SetString(PyExc_TypeError, "This python value could not be assigned to a game engine property");
+ PyErr_SetString(PyExc_TypeError, "This python type could not be converted to a to a game engine property");
}
return vallie;
}
-int CValue::_delattr(const char *attr)
+int CValue::py_delattro(PyObject *attr)
{
- if (!RemoveProperty(STR_String(attr))) /* sets error */
- return 1;
- return 0;
+ char *attr_str= PyString_AsString(attr);
+ if (RemoveProperty(STR_String(attr_str)))
+ return 0;
+
+ PyErr_Format(PyExc_AttributeError, "attribute \"%s\" dosnt exist", attr_str);
+ return 1;
}
-int CValue::_setattr(const char *attr,PyObject* pyobj)
+int CValue::py_setattro(PyObject *attr, PyObject* pyobj)
{
+ char *attr_str= PyString_AsString(attr);
+ CValue* oldprop = GetProperty(attr_str);
+
CValue* vallie = ConvertPythonToValue(pyobj);
if (vallie)
{
- STR_String attr_str = attr;
- CValue* oldprop = GetProperty(attr_str);
-
if (oldprop)
- {
oldprop->SetValue(vallie);
- } else
- {
+ else
SetProperty(attr_str, vallie);
- }
+
vallie->Release();
- } else
- {
- return 1; /* ConvertPythonToValue sets the error message */
+ }
+ else {
+ // ConvertPythonToValue sets the error message
+ // must return missing so KX_GameObect knows this
+ // attribute was not a function or bult in attribute,
+ //
+ // CValue attributes override internal attributes
+ // so if it exists as a CValue attribute already,
+ // assume your trying to set it to a differnt CValue attribute
+ // otherwise return PY_SET_ATTR_MISSING so children
+ // classes know they can set it without conflict
+
+ if (GetProperty(attr_str))
+ return PY_SET_ATTR_COERCE_FAIL; /* failed to set an existing attribute */
+ else
+ return PY_SET_ATTR_MISSING; /* allow the KX_GameObject dict to set */
}
- //PyObjectPlus::_setattr(attr,value);
- return 0;
+ //PyObjectPlus::py_setattro(attr,value);
+ return PY_SET_ATTR_SUCCESS;
};
PyObject* CValue::ConvertKeysToPython( void )
@@ -811,8 +730,8 @@ PyObject* CValue::ConvertKeysToPython( void )
if (m_pNamedPropertyArray)
{
- for ( std::map<STR_String,CValue*>::iterator it = m_pNamedPropertyArray->begin();
- !(it == m_pNamedPropertyArray->end());it++)
+ std::map<STR_String,CValue*>::iterator it;
+ for (it= m_pNamedPropertyArray->begin(); (it != m_pNamedPropertyArray->end()); it++)
{
pystr = PyString_FromString( (*it).first );
PyList_Append(pylist, pystr);
@@ -826,7 +745,7 @@ PyObject* CValue::ConvertKeysToPython( void )
PyObject* CValue::PyMake(PyObject* ignored,PyObject* args)
{
- //if (!PyArg_ParseTuple(args,"s",&name)) return NULL;
+ //if (!PyArg_ParseTuple(args,"s:make",&name)) return NULL;
Py_RETURN_NONE;//new CValue();
}
*/
@@ -878,7 +797,7 @@ void CValue::ShowDeprecationWarning(const char* old_way,const char* new_way)
PyObject *getframe, *frame;
PyObject *f_lineno, *f_code, *co_filename;
- getframe = PySys_GetObject("_getframe"); // borrowed
+ getframe = PySys_GetObject((char *)"_getframe"); // borrowed
if (getframe) {
frame = PyObject_CallObject(getframe, NULL);
if (frame) {
diff --git a/source/gameengine/Expressions/Value.h b/source/gameengine/Expressions/Value.h
index caf1064dc32..a687e1a493c 100644
--- a/source/gameengine/Expressions/Value.h
+++ b/source/gameengine/Expressions/Value.h
@@ -217,33 +217,14 @@ public:
CValue(PyTypeObject *T = &Type);
//static PyObject* PyMake(PyObject*,PyObject*);
- virtual PyObject *_repr(void)
+ virtual PyObject *py_repr(void)
{
- return Py_BuildValue("s",(const char*)GetText());
+ return PyString_FromString((const char*)GetText());
}
- virtual PyObject* _getattr(const char *attr);
-
- void SpecialRelease()
- {
- int i=0;
- if (ob_refcnt == 0)
- {
- _Py_NewReference(this);
-
- } else
- {
- i++;
- }
- Release();
- }
- static void PyDestructor(PyObject *P) // python wrapper
- {
- ((CValue*)P)->SpecialRelease();
- };
-
+ virtual PyObject* py_getattro(PyObject *attr);
virtual PyObject* ConvertValueToPython() {
return NULL;
}
@@ -251,8 +232,8 @@ public:
virtual CValue* ConvertPythonToValue(PyObject* pyobj);
- virtual int _delattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ virtual int py_delattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
virtual PyObject* ConvertKeysToPython( void );
@@ -280,13 +261,16 @@ public:
int GetRefCount() { return m_refcount; }
virtual CValue* AddRef(); // Add a reference to this value
virtual int Release(); // Release a reference to this value (when reference count reaches 0, the value is removed from the heap)
+
/// Property Management
virtual void SetProperty(const STR_String& name,CValue* ioProperty); // Set property <ioProperty>, overwrites and releases a previous property with the same name if needed
- virtual CValue* GetProperty(const STR_String & inName); // Get pointer to a property with name <inName>, returns NULL if there is no property named <inName>
+ virtual void SetProperty(const char* name,CValue* ioProperty);
+ virtual CValue* GetProperty(const char* inName); // Get pointer to a property with name <inName>, returns NULL if there is no property named <inName>
+ virtual CValue* GetProperty(const STR_String & inName);
STR_String GetPropertyText(const STR_String & inName,const STR_String& deftext=""); // Get text description of property with name <inName>, returns an empty string if there is no property named <inName>
float GetPropertyNumber(const STR_String& inName,float defnumber);
- virtual bool RemoveProperty(const STR_String & inName); // Remove the property named <inName>, returns true if the property was succesfully removed, false if property was not found or could not be removed
+ virtual bool RemoveProperty(const char *inName); // Remove the property named <inName>, returns true if the property was succesfully removed, false if property was not found or could not be removed
virtual vector<STR_String> GetPropertyNames();
virtual void ClearProperties(); // Clear all properties
@@ -304,7 +288,7 @@ public:
virtual void SetColorOperator(VALUE_OPERATOR op);
virtual const STR_String & GetText() = 0;
- virtual float GetNumber() = 0;
+ virtual double GetNumber() = 0;
double* ZeroVector() { return m_sZeroVec; };
virtual double* GetVector3(bool bGetTransformedVec = false);
diff --git a/source/gameengine/Expressions/VectorValue.cpp b/source/gameengine/Expressions/VectorValue.cpp
index bea6902eba8..497a50b90e7 100644
--- a/source/gameengine/Expressions/VectorValue.cpp
+++ b/source/gameengine/Expressions/VectorValue.cpp
@@ -156,7 +156,7 @@ this object
return ret;
}
-float CVectorValue::GetNumber()
+double CVectorValue::GetNumber()
{
return m_vec[KX_X];
}
diff --git a/source/gameengine/Expressions/VectorValue.h b/source/gameengine/Expressions/VectorValue.h
index 5d9b2a98891..99bf0abb11b 100644
--- a/source/gameengine/Expressions/VectorValue.h
+++ b/source/gameengine/Expressions/VectorValue.h
@@ -32,7 +32,7 @@ public:
void SetVector(double newvec[]);
void Configure(CValue* menuvalue);
virtual double* GetVector3(bool bGetTransformedVec=false);
- virtual float GetNumber();
+ virtual double GetNumber();
CValue* Calc(VALUE_OPERATOR op, CValue *val) {
return val->CalcFinal(VALUE_VECTOR_TYPE, op, this);
diff --git a/source/gameengine/Expressions/VoidValue.h b/source/gameengine/Expressions/VoidValue.h
index 4bde0254787..10a6ff9ad3d 100644
--- a/source/gameengine/Expressions/VoidValue.h
+++ b/source/gameengine/Expressions/VoidValue.h
@@ -47,7 +47,7 @@ public:
/// Value -> String or number
virtual const STR_String & GetText(); // Get string description of void value (unimplemented)
- virtual float GetNumber() { return -1; }
+ virtual double GetNumber() { return -1; }
/// Value calculation
virtual CValue* Calc(VALUE_OPERATOR op, CValue *val);
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
index c21e5db1410..c300baa9bd4 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
@@ -29,6 +29,7 @@
#endif
#include <stdio.h>
+#include <stdlib.h>
#include "SCA_Joystick.h"
#include "SCA_JoystickPrivate.h"
@@ -36,21 +37,19 @@
SCA_Joystick::SCA_Joystick(short int index)
:
m_joyindex(index),
- m_axis10(0),
- m_axis11(0),
- m_axis20(0),
- m_axis21(0),
m_prec(3200),
m_buttonnum(-2),
m_axismax(-1),
- m_hatdir(-2),
m_buttonmax(-1),
m_hatmax(-1),
+ m_hatdir(-2),
m_isinit(0),
m_istrig_axis(0),
m_istrig_button(0),
m_istrig_hat(0)
{
+ for(int i=0; i<JOYAXIS_MAX; i++)
+ m_axis_array[i]= 0;
#ifndef DISABLE_SDL
m_private = new PrivateData();
#endif
@@ -125,47 +124,30 @@ void SCA_Joystick::cSetPrecision(int val)
}
-bool SCA_Joystick::aAnyAxisIsPositive(int axis)
+bool SCA_Joystick::aAxisPairIsPositive(int axis)
{
- bool result;
- int res = pAxisTest(axis);
- res > m_prec? result = true: result = false;
- return result;
+ return (pAxisTest(axis) > m_prec) ? true:false;
}
-bool SCA_Joystick::aRightAxisIsPositive(int axis)
+bool SCA_Joystick::aAxisPairDirectionIsPositive(int axis, int dir)
{
- bool result;
- int res = pGetAxis(axis,1);
- res > m_prec? result = true: result = false;
- return result;
-}
-
-bool SCA_Joystick::aUpAxisIsPositive(int axis)
-{
- bool result;
- int res = pGetAxis(axis,0);
- res < -m_prec? result = true : result = false;
- return result;
+ int res;
+
+ if (dir==JOYAXIS_UP || dir==JOYAXIS_DOWN)
+ res = pGetAxis(axis, 1);
+ else /* JOYAXIS_LEFT || JOYAXIS_RIGHT */
+ res = pGetAxis(axis, 0);
+
+ if (dir==JOYAXIS_DOWN || dir==JOYAXIS_RIGHT)
+ return (res > m_prec) ? true : false;
+ else /* JOYAXIS_UP || JOYAXIS_LEFT */
+ return (res < -m_prec) ? true : false;
}
-
-bool SCA_Joystick::aLeftAxisIsPositive(int axis)
+bool SCA_Joystick::aAxisIsPositive(int axis_single)
{
- bool result;
- int res = pGetAxis(axis,1);
- res < -m_prec ? result = true : result = false;
- return result;
-}
-
-
-bool SCA_Joystick::aDownAxisIsPositive(int axis)
-{
- bool result;
- int res = pGetAxis(axis,0);
- res > m_prec ? result = true:result = false;
- return result;
+ return abs(m_axis_array[axis_single]) > m_prec ? true:false;
}
bool SCA_Joystick::aAnyButtonPressIsPositive(void)
@@ -255,8 +237,12 @@ bool SCA_Joystick::CreateJoystickDevice(void)
/* must run after being initialized */
m_axismax = SDL_JoystickNumAxes(m_private->m_joystick);
+ if (m_axismax > JOYAXIS_MAX) m_axismax= JOYAXIS_MAX; /* very unlikely */
+
m_buttonmax = SDL_JoystickNumButtons(m_private->m_joystick);
m_hatmax = SDL_JoystickNumHats(m_private->m_joystick);
+
+
}
return true;
#endif
@@ -288,17 +274,8 @@ int SCA_Joystick::Connected(void)
void SCA_Joystick::pFillAxes()
{
#ifndef DISABLE_SDL
- if(m_axismax == 1){
- m_axis10 = SDL_JoystickGetAxis(m_private->m_joystick, 0);
- m_axis11 = SDL_JoystickGetAxis(m_private->m_joystick, 1);
- }else if(m_axismax > 1){
- m_axis10 = SDL_JoystickGetAxis(m_private->m_joystick, 0);
- m_axis11 = SDL_JoystickGetAxis(m_private->m_joystick, 1);
- m_axis20 = SDL_JoystickGetAxis(m_private->m_joystick, 2);
- m_axis21 = SDL_JoystickGetAxis(m_private->m_joystick, 3);
- }else{
- m_axis10 = m_axis11 = m_axis20 = m_axis21 = 0;
- }
+ for(int i=0; i<m_axismax; i++)
+ m_axis_array[i]= SDL_JoystickGetAxis(m_private->m_joystick, i);
#endif
}
@@ -306,10 +283,7 @@ void SCA_Joystick::pFillAxes()
int SCA_Joystick::pGetAxis(int axisnum, int udlr)
{
#ifndef DISABLE_SDL
- if(axisnum == 1 && udlr == 1)return m_axis10; //u/d
- if(axisnum == 1 && udlr == 0)return m_axis11; //l/r
- if(axisnum == 2 && udlr == 0)return m_axis20; //...
- if(axisnum == 2 && udlr == 1)return m_axis21;
+ return m_axis_array[(axisnum*2)+udlr];
#endif
return 0;
}
@@ -317,13 +291,9 @@ int SCA_Joystick::pGetAxis(int axisnum, int udlr)
int SCA_Joystick::pAxisTest(int axisnum)
{
#ifndef DISABLE_SDL
- short i1,i2;
- if(axisnum == 1) {
- i1 = m_axis10; i2 = m_axis11;
- }
- else if(axisnum == 2) {
- i1 = m_axis20; i2 = m_axis21;
- }
+ short i1= m_axis_array[(axisnum*2)];
+ short i2= m_axis_array[(axisnum*2)+1];
+
/* long winded way to do
* return MAX2(abs(i1), abs(i2))
* avoid abs from math.h */
@@ -335,4 +305,3 @@ int SCA_Joystick::pAxisTest(int axisnum)
return 0;
#endif
}
-
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
index 8335d5538ad..53cd65cd495 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
@@ -55,10 +55,8 @@ class SCA_Joystick
/*
*support for 2 axes
*/
-
- int m_axis10,m_axis11;
- int m_axis20,m_axis21;
-
+ int m_axis_array[JOYAXIS_MAX];
+
/*
* Precision or range of the axes
*/
@@ -120,8 +118,11 @@ class SCA_Joystick
void OnButtonUp(SDL_Event *sdl_event);
void OnButtonDown(SDL_Event *sdl_event);
void OnNothing(SDL_Event *sdl_event);
+#if 0 /* not used yet */
void OnBallMotion(SDL_Event *sdl_event){}
#endif
+
+#endif
/*
* Open the joystick
*/
@@ -139,12 +140,12 @@ class SCA_Joystick
void pFillButtons(void);
/*
- * returns m_axis10,m_axis11...
+ * returns m_axis_array
*/
int pAxisTest(int axisnum);
/*
- * returns m_axis10,m_axis11...
+ * returns m_axis_array
*/
int pGetAxis(int axisnum, int udlr);
@@ -166,11 +167,9 @@ public:
/*
*/
- bool aAnyAxisIsPositive(int axis);
- bool aUpAxisIsPositive(int axis);
- bool aDownAxisIsPositive(int axis);
- bool aLeftAxisIsPositive(int axis);
- bool aRightAxisIsPositive(int axis);
+ bool aAxisPairIsPositive(int axis);
+ bool aAxisPairDirectionIsPositive(int axis, int dir); /* function assumes joysticks are in axis pairs */
+ bool aAxisIsPositive(int axis_single); /* check a single axis only */
bool aAnyButtonPressIsPositive(void);
bool aAnyButtonReleaseIsPositive(void);
@@ -184,24 +183,10 @@ public:
void cSetPrecision(int val);
- int GetAxis10(void){
-
- return m_axis10;
-
- }
-
- int GetAxis11(void){
- return m_axis11;
- }
-
- int GetAxis20(void){
- return m_axis20;
+ int GetAxisPosition(int index){
+ return m_axis_array[index];
}
-
- int GetAxis21(void){
- return m_axis21;
- }
-
+
int GetButton(void){
return m_buttonnum;
}
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h b/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h
index 73ffe1406d9..636c4dd5a42 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickDefines.h
@@ -39,5 +39,11 @@
#endif
#define JOYINDEX_MAX 8
+#define JOYAXIS_MAX 16
+
+#define JOYAXIS_RIGHT 0
+#define JOYAXIS_UP 1
+#define JOYAXIS_DOWN 3
+#define JOYAXIS_LEFT 2
#endif
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
index 73ca288861d..8e190060e95 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
@@ -68,7 +68,7 @@ void SCA_Joystick::OnButtonUp(SDL_Event* sdl_event)
void SCA_Joystick::OnButtonDown(SDL_Event* sdl_event)
{
- if(sdl_event->jbutton.button >= 0 || sdl_event->jbutton.button <= m_buttonmax)
+ if(sdl_event->jbutton.button <= m_buttonmax) /* unsigned int so always above 0 */
{
m_istrig_button = 1;
m_buttonnum = sdl_event->jbutton.button;
@@ -111,9 +111,11 @@ void SCA_Joystick::HandleEvents(void)
case SDL_JOYBUTTONDOWN:
SCA_Joystick::m_instance[sdl_event.jbutton.which]->OnButtonDown(&sdl_event);
break;
+#if 0 /* Not used yet */
case SDL_JOYBALLMOTION:
SCA_Joystick::m_instance[sdl_event.jball.which]->OnBallMotion(&sdl_event);
break;
+#endif
default:
printf("SCA_Joystick::HandleEvents, Unknown SDL event, this should not happen\n");
break;
diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
index 7bf051f2b5c..251a586308e 100644
--- a/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.cpp
@@ -1,5 +1,29 @@
-#include "SCA_IActuator.h"
+/**
+ * SCA_2DFilterActuator.cpp
+ *
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#include "SCA_IActuator.h"
#include "SCA_2DFilterActuator.h"
#ifdef HAVE_CONFIG_H
@@ -22,7 +46,7 @@ SCA_2DFilterActuator::SCA_2DFilterActuator(
PyTypeObject* T)
: SCA_IActuator(gameobj, T),
m_type(type),
- m_flag(flag),
+ m_disableMotionBlur(flag),
m_float_arg(float_arg),
m_int_arg(int_arg),
m_rasterizer(rasterizer),
@@ -35,12 +59,6 @@ SCA_2DFilterActuator::SCA_2DFilterActuator(
}
}
-void SCA_2DFilterActuator::SetShaderText(STR_String text)
-{
- m_shaderText = text;
-}
-
-
CValue* SCA_2DFilterActuator::GetReplica()
{
@@ -63,7 +81,7 @@ bool SCA_2DFilterActuator::Update()
if( m_type == RAS_2DFilterManager::RAS_2DFILTER_MOTIONBLUR )
{
- if(!m_flag)
+ if(!m_disableMotionBlur)
m_rasterizer->EnableMotionBlur(m_float_arg);
else
m_rasterizer->DisableMotionBlur();
@@ -79,23 +97,35 @@ bool SCA_2DFilterActuator::Update()
}
+void SCA_2DFilterActuator::SetShaderText(STR_String text)
+{
+ m_shaderText = text;
+}
+
+/* ------------------------------------------------------------------------- */
+/* Python functions */
+/* ------------------------------------------------------------------------- */
+
+
+
+/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_2DFilterActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_2DFilterActuator",
- sizeof(SCA_2DFilterActuator),
- 0,
- PyDestructor,
- 0,
- __getattr,
- __setattr,
- 0,
- __repr,
- 0,
- 0,
+ sizeof(PyObjectPlus_Proxy),
0,
- 0,
- 0
+ py_base_dealloc,
+ 0,
+ 0,
+ 0,
+ 0,
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -109,14 +139,26 @@ PyParentObject SCA_2DFilterActuator::Parents[] = {
PyMethodDef SCA_2DFilterActuator::Methods[] = {
- /* add python functions to deal with m_msg... */
+ /* add python functions to deal with m_msg... */
{NULL,NULL}
};
PyAttributeDef SCA_2DFilterActuator::Attributes[] = {
+ KX_PYATTRIBUTE_STRING_RW("shaderText", 0, 64000, false, SCA_2DFilterActuator, m_shaderText),
+ KX_PYATTRIBUTE_SHORT_RW("disableMotionBlur", 0, 1, true, SCA_2DFilterActuator, m_disableMotionBlur),
+ KX_PYATTRIBUTE_ENUM_RW("type",RAS_2DFilterManager::RAS_2DFILTER_ENABLED,RAS_2DFilterManager::RAS_2DFILTER_NUMBER_OF_FILTERS,false,SCA_2DFilterActuator,m_type),
+ KX_PYATTRIBUTE_INT_RW("passNb", 0, 100, true, SCA_2DFilterActuator, m_int_arg),
+ KX_PYATTRIBUTE_FLOAT_RW("value", 0.0, 100.0, SCA_2DFilterActuator, m_float_arg),
{ NULL } //Sentinel
};
-PyObject* SCA_2DFilterActuator::_getattr(const char *attr) {
- _getattr_up(SCA_IActuator);
+PyObject* SCA_2DFilterActuator::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_IActuator);
+}
+
+int SCA_2DFilterActuator::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IActuator);
}
+
diff --git a/source/gameengine/GameLogic/SCA_2DFilterActuator.h b/source/gameengine/GameLogic/SCA_2DFilterActuator.h
index 9da0500afff..de0201a4b19 100644
--- a/source/gameengine/GameLogic/SCA_2DFilterActuator.h
+++ b/source/gameengine/GameLogic/SCA_2DFilterActuator.h
@@ -1,3 +1,30 @@
+/**
+ * SCA_2DFilterActuator.h
+ *
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
#ifndef __SCA_2DFILETRACTUATOR_H__
#define __SCA_2DFILETRACTUATOR_H__
@@ -13,7 +40,7 @@ private:
vector<STR_String> m_propNames;
void * m_gameObj;
RAS_2DFilterManager::RAS_2DFILTER_MODE m_type;
- short m_flag;
+ short m_disableMotionBlur;
float m_float_arg;
int m_int_arg;
STR_String m_shaderText;
@@ -38,7 +65,13 @@ public:
virtual bool Update();
virtual CValue* GetReplica();
- virtual PyObject* _getattr(const char *attr);
+
+ /* --------------------------------------------------------------------- */
+ /* Python interface ---------------------------------------------------- */
+ /* --------------------------------------------------------------------- */
+
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
};
#endif
diff --git a/source/gameengine/GameLogic/SCA_ANDController.cpp b/source/gameengine/GameLogic/SCA_ANDController.cpp
index b67ef7dabaf..1cb03f375cb 100644
--- a/source/gameengine/GameLogic/SCA_ANDController.cpp
+++ b/source/gameengine/GameLogic/SCA_ANDController.cpp
@@ -107,22 +107,22 @@ CValue* SCA_ANDController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_ANDController::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_ANDController",
- sizeof(SCA_ANDController),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_ANDController::Parents[] = {
@@ -141,8 +141,8 @@ PyAttributeDef SCA_ANDController::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_ANDController::_getattr(const char *attr) {
- _getattr_up(SCA_IController);
+PyObject* SCA_ANDController::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IController);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_ANDController.h b/source/gameengine/GameLogic/SCA_ANDController.h
index eba7e1b545a..fdb93d0fc42 100644
--- a/source/gameengine/GameLogic/SCA_ANDController.h
+++ b/source/gameengine/GameLogic/SCA_ANDController.h
@@ -48,7 +48,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
};
diff --git a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
index 7f8dbef7758..acd906ef9dd 100644
--- a/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
@@ -122,22 +122,22 @@ void SCA_ActuatorSensor::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_ActuatorSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_ActuatorSensor",
- sizeof(SCA_ActuatorSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_ActuatorSensor::Parents[] = {
@@ -161,11 +161,12 @@ PyAttributeDef SCA_ActuatorSensor::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_ActuatorSensor::_getattr(const char *attr) {
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_ISensor); /* implicit return! */
+PyObject* SCA_ActuatorSensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_ISensor);
+}
+
+int SCA_ActuatorSensor::py_setattro(PyObject *attr, PyObject *value) {
+ py_setattro_up(SCA_ISensor);
}
int SCA_ActuatorSensor::CheckActuator(void *self, const PyAttributeDef*)
@@ -180,18 +181,11 @@ int SCA_ActuatorSensor::CheckActuator(void *self, const PyAttributeDef*)
return 1;
}
-int SCA_ActuatorSensor::_setattr(const char *attr, PyObject *value) {
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_ISensor::_setattr(attr, value);
-}
-
/* 3. getActuator */
const char SCA_ActuatorSensor::GetActuator_doc[] =
"getActuator()\n"
"\tReturn the Actuator with which the sensor operates.\n";
-PyObject* SCA_ActuatorSensor::PyGetActuator(PyObject* self)
+PyObject* SCA_ActuatorSensor::PyGetActuator()
{
ShowDeprecationWarning("getActuator()", "the actuator property");
return PyString_FromString(m_checkactname);
@@ -203,14 +197,14 @@ const char SCA_ActuatorSensor::SetActuator_doc[] =
"\t- name: string\n"
"\tSets the Actuator with which to operate. If there is no Actuator\n"
"\tof this name, the call is ignored.\n";
-PyObject* SCA_ActuatorSensor::PySetActuator(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_ActuatorSensor::PySetActuator(PyObject* args)
{
ShowDeprecationWarning("setActuator()", "the actuator property");
/* We should query whether the name exists. Or should we create a prop */
/* on the fly? */
char *actNameArg = NULL;
- if (!PyArg_ParseTuple(args, "s", &actNameArg)) {
+ if (!PyArg_ParseTuple(args, "s:setActuator", &actNameArg)) {
return NULL;
}
diff --git a/source/gameengine/GameLogic/SCA_ActuatorSensor.h b/source/gameengine/GameLogic/SCA_ActuatorSensor.h
index 75ee08f42d6..21960993497 100644
--- a/source/gameengine/GameLogic/SCA_ActuatorSensor.h
+++ b/source/gameengine/GameLogic/SCA_ActuatorSensor.h
@@ -61,11 +61,11 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
/* 3. setProperty */
- KX_PYMETHOD_DOC(SCA_ActuatorSensor,SetActuator);
+ KX_PYMETHOD_DOC_VARARGS(SCA_ActuatorSensor,SetActuator);
/* 4. getProperty */
KX_PYMETHOD_DOC_NOARGS(SCA_ActuatorSensor,GetActuator);
diff --git a/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp b/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
index 154f0ad8cef..b7ecb0233a1 100644
--- a/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_AlwaysSensor.cpp
@@ -105,22 +105,22 @@ bool SCA_AlwaysSensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_AlwaysSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_AlwaysSensor",
- sizeof(SCA_AlwaysSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_AlwaysSensor::Parents[] = {
@@ -139,8 +139,8 @@ PyAttributeDef SCA_AlwaysSensor::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_AlwaysSensor::_getattr(const char *attr) {
- _getattr_up(SCA_ISensor);
+PyObject* SCA_AlwaysSensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_ISensor);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_AlwaysSensor.h b/source/gameengine/GameLogic/SCA_AlwaysSensor.h
index ebe6ba80208..87949babf59 100644
--- a/source/gameengine/GameLogic/SCA_AlwaysSensor.h
+++ b/source/gameengine/GameLogic/SCA_AlwaysSensor.h
@@ -52,7 +52,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
};
diff --git a/source/gameengine/GameLogic/SCA_DelaySensor.cpp b/source/gameengine/GameLogic/SCA_DelaySensor.cpp
index 31a620b939d..44a0175d916 100644
--- a/source/gameengine/GameLogic/SCA_DelaySensor.cpp
+++ b/source/gameengine/GameLogic/SCA_DelaySensor.cpp
@@ -131,22 +131,22 @@ bool SCA_DelaySensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_DelaySensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_DelaySensor",
- sizeof(SCA_DelaySensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_DelaySensor::Parents[] = {
@@ -178,18 +178,12 @@ PyAttributeDef SCA_DelaySensor::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_DelaySensor::_getattr(const char *attr) {
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_ISensor);
+PyObject* SCA_DelaySensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_ISensor);
}
-int SCA_DelaySensor::_setattr(const char *attr, PyObject *value) {
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_ISensor::_setattr(attr, value);
+int SCA_DelaySensor::py_setattro(PyObject *attr, PyObject *value) {
+ py_setattro_up(SCA_ISensor);
}
@@ -198,12 +192,12 @@ const char SCA_DelaySensor::SetDelay_doc[] =
"\t- delay: length of the initial OFF period as number of frame\n"
"\t 0 for immediate trigger\n"
"\tSet the initial delay before the positive trigger\n";
-PyObject* SCA_DelaySensor::PySetDelay(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_DelaySensor::PySetDelay(PyObject* args)
{
ShowDeprecationWarning("setDelay()", "the delay property");
int delay;
- if(!PyArg_ParseTuple(args, "i", &delay)) {
+ if(!PyArg_ParseTuple(args, "i:setDelay", &delay)) {
return NULL;
}
if (delay < 0) {
@@ -220,12 +214,12 @@ const char SCA_DelaySensor::SetDuration_doc[] =
"\t 0 for no ON period\n"
"\tSet the duration of the ON pulse after initial delay.\n"
"\tIf > 0, a negative trigger is fired at the end of the ON pulse.\n";
-PyObject* SCA_DelaySensor::PySetDuration(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_DelaySensor::PySetDuration(PyObject* args)
{
ShowDeprecationWarning("setDuration()", "the duration property");
int duration;
- if(!PyArg_ParseTuple(args, "i", &duration)) {
+ if(!PyArg_ParseTuple(args, "i:setDuration", &duration)) {
return NULL;
}
if (duration < 0) {
@@ -241,12 +235,12 @@ const char SCA_DelaySensor::SetRepeat_doc[] =
"\t- repeat: 1 if the initial OFF-ON cycle should be repeated indefinately\n"
"\t 0 if the initial OFF-ON cycle should run only once\n"
"\tSet the sensor repeat mode\n";
-PyObject* SCA_DelaySensor::PySetRepeat(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_DelaySensor::PySetRepeat(PyObject* args)
{
ShowDeprecationWarning("setRepeat()", "the repeat property");
int repeat;
- if(!PyArg_ParseTuple(args, "i", &repeat)) {
+ if(!PyArg_ParseTuple(args, "i:setRepeat", &repeat)) {
return NULL;
}
m_repeat = (repeat != 0);
@@ -256,7 +250,7 @@ PyObject* SCA_DelaySensor::PySetRepeat(PyObject* self, PyObject* args, PyObject*
const char SCA_DelaySensor::GetDelay_doc[] =
"getDelay()\n"
"\tReturn the delay parameter value\n";
-PyObject* SCA_DelaySensor::PyGetDelay(PyObject* self)
+PyObject* SCA_DelaySensor::PyGetDelay()
{
ShowDeprecationWarning("getDelay()", "the delay property");
return PyInt_FromLong(m_delay);
@@ -265,7 +259,7 @@ PyObject* SCA_DelaySensor::PyGetDelay(PyObject* self)
const char SCA_DelaySensor::GetDuration_doc[] =
"getDuration()\n"
"\tReturn the duration parameter value\n";
-PyObject* SCA_DelaySensor::PyGetDuration(PyObject* self)
+PyObject* SCA_DelaySensor::PyGetDuration()
{
ShowDeprecationWarning("getDuration()", "the duration property");
return PyInt_FromLong(m_duration);
@@ -274,7 +268,7 @@ PyObject* SCA_DelaySensor::PyGetDuration(PyObject* self)
const char SCA_DelaySensor::GetRepeat_doc[] =
"getRepeat()\n"
"\tReturn the repeat parameter value\n";
-PyObject* SCA_DelaySensor::PyGetRepeat(PyObject* self)
+PyObject* SCA_DelaySensor::PyGetRepeat()
{
ShowDeprecationWarning("getRepeat()", "the repeat property");
return BoolToPyArg(m_repeat);
diff --git a/source/gameengine/GameLogic/SCA_DelaySensor.h b/source/gameengine/GameLogic/SCA_DelaySensor.h
index 491eee61da8..8da76ff7189 100644
--- a/source/gameengine/GameLogic/SCA_DelaySensor.h
+++ b/source/gameengine/GameLogic/SCA_DelaySensor.h
@@ -60,13 +60,13 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
/* setProperty */
- KX_PYMETHOD_DOC(SCA_DelaySensor,SetDelay);
- KX_PYMETHOD_DOC(SCA_DelaySensor,SetDuration);
- KX_PYMETHOD_DOC(SCA_DelaySensor,SetRepeat);
+ KX_PYMETHOD_DOC_VARARGS(SCA_DelaySensor,SetDelay);
+ KX_PYMETHOD_DOC_VARARGS(SCA_DelaySensor,SetDuration);
+ KX_PYMETHOD_DOC_VARARGS(SCA_DelaySensor,SetRepeat);
/* getProperty */
KX_PYMETHOD_DOC_NOARGS(SCA_DelaySensor,GetDelay);
KX_PYMETHOD_DOC_NOARGS(SCA_DelaySensor,GetDuration);
diff --git a/source/gameengine/GameLogic/SCA_ExpressionController.cpp b/source/gameengine/GameLogic/SCA_ExpressionController.cpp
index 8ed46beb7f3..352a39a6fea 100644
--- a/source/gameengine/GameLogic/SCA_ExpressionController.cpp
+++ b/source/gameengine/GameLogic/SCA_ExpressionController.cpp
@@ -109,7 +109,7 @@ void SCA_ExpressionController::Trigger(SCA_LogicManager* logicmgr)
printf(value->GetText());
} else
{
- float num = value->GetNumber();
+ float num = (float)value->GetNumber();
expressionresult = !MT_fuzzyZero(num);
}
value->Release();
diff --git a/source/gameengine/GameLogic/SCA_ExpressionController.h b/source/gameengine/GameLogic/SCA_ExpressionController.h
index 79c26eea1e7..2936742be19 100644
--- a/source/gameengine/GameLogic/SCA_ExpressionController.h
+++ b/source/gameengine/GameLogic/SCA_ExpressionController.h
@@ -59,7 +59,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
-// virtual PyObject* _getattr(const char *attr);
+// virtual PyObject* py_getattro(PyObject *attr);
};
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
index 49d39f75814..3cd750ff63b 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
@@ -123,7 +123,7 @@ const STR_String& SCA_ILogicBrick::GetText()
-float SCA_ILogicBrick::GetNumber()
+double SCA_ILogicBrick::GetNumber()
{
return -1;
}
@@ -217,22 +217,22 @@ CValue* SCA_ILogicBrick::GetEvent()
/* python stuff */
PyTypeObject SCA_ILogicBrick::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_ILogicBrick",
- sizeof(SCA_ILogicBrick),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -246,8 +246,8 @@ PyParentObject SCA_ILogicBrick::Parents[] = {
PyMethodDef SCA_ILogicBrick::Methods[] = {
+ // --> Deprecated
{"getOwner", (PyCFunction) SCA_ILogicBrick::sPyGetOwner, METH_NOARGS},
- // --> Deprecated
{"getExecutePriority", (PyCFunction) SCA_ILogicBrick::sPyGetExecutePriority, METH_NOARGS},
{"setExecutePriority", (PyCFunction) SCA_ILogicBrick::sPySetExecutePriority, METH_VARARGS},
// <-- Deprecated
@@ -255,6 +255,7 @@ PyMethodDef SCA_ILogicBrick::Methods[] = {
};
PyAttributeDef SCA_ILogicBrick::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("owner", SCA_ILogicBrick, pyattr_get_owner),
KX_PYATTRIBUTE_INT_RW("executePriority",0,100000,false,SCA_ILogicBrick,m_Execute_Ueber_Priority),
{NULL} //Sentinel
};
@@ -278,30 +279,25 @@ int SCA_ILogicBrick::CheckProperty(void *self, const PyAttributeDef *attrdef)
}
PyObject*
-SCA_ILogicBrick::_getattr(const char *attr)
+SCA_ILogicBrick::py_getattro(PyObject *attr)
{
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(CValue);
+ py_getattro_up(CValue);
}
-int SCA_ILogicBrick::_setattr(const char *attr, PyObject *value)
+int SCA_ILogicBrick::py_setattro(PyObject *attr, PyObject *value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return CValue::_setattr(attr, value);
+ py_setattro_up(CValue);
}
-PyObject* SCA_ILogicBrick::PyGetOwner(PyObject* self)
+PyObject* SCA_ILogicBrick::PyGetOwner()
{
+ ShowDeprecationWarning("getOwner()", "the owner property");
+
CValue* parent = GetParent();
if (parent)
{
- parent->AddRef();
- return parent;
+ return parent->GetProxy();
}
printf("ERROR: Python scriptblock without owner\n");
@@ -310,15 +306,13 @@ PyObject* SCA_ILogicBrick::PyGetOwner(PyObject* self)
-PyObject* SCA_ILogicBrick::PySetExecutePriority(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* SCA_ILogicBrick::PySetExecutePriority(PyObject* args)
{
ShowDeprecationWarning("setExecutePriority()", "the executePriority property");
int priority=0;
- if (!PyArg_ParseTuple(args, "i", &priority)) {
+ if (!PyArg_ParseTuple(args, "i:setExecutePriority", &priority)) {
return NULL;
}
@@ -329,13 +323,26 @@ PyObject* SCA_ILogicBrick::PySetExecutePriority(PyObject* self,
-PyObject* SCA_ILogicBrick::PyGetExecutePriority(PyObject* self)
+PyObject* SCA_ILogicBrick::PyGetExecutePriority()
{
ShowDeprecationWarning("getExecutePriority()", "the executePriority property");
return PyInt_FromLong(m_Execute_Ueber_Priority);
}
+/*Attribute functions */
+PyObject* SCA_ILogicBrick::pyattr_get_owner(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ILogicBrick* self= static_cast<SCA_ILogicBrick*>(self_v);
+ CValue* parent = self->GetParent();
+
+ if (parent)
+ return parent->GetProxy();
+
+ Py_RETURN_NONE;
+}
+
+
/* Conversions for making life better. */
bool SCA_ILogicBrick::PyArgToBool(int boolArg)
@@ -347,8 +354,6 @@ bool SCA_ILogicBrick::PyArgToBool(int boolArg)
}
}
-
-
PyObject* SCA_ILogicBrick::BoolToPyArg(bool boolarg)
{
return PyInt_FromLong(boolarg? KX_TRUE: KX_FALSE);
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.h b/source/gameengine/GameLogic/SCA_ILogicBrick.h
index 70d49941613..e59d05ea051 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.h
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.h
@@ -69,7 +69,7 @@ public:
virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
virtual const STR_String & GetText();
- virtual float GetNumber();
+ virtual double GetNumber();
virtual STR_String GetName();
virtual void SetName(STR_String name);
virtual void ReplicaSetName(STR_String name);
@@ -79,8 +79,8 @@ public:
virtual bool LessComparedTo(SCA_ILogicBrick* other);
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
static class SCA_LogicManager* m_sCurrentLogicManager;
@@ -88,8 +88,10 @@ public:
// python methods
KX_PYMETHOD_NOARGS(SCA_ILogicBrick,GetOwner);
- KX_PYMETHOD(SCA_ILogicBrick,SetExecutePriority);
+ KX_PYMETHOD_VARARGS(SCA_ILogicBrick,SetExecutePriority);
KX_PYMETHOD_NOARGS(SCA_ILogicBrick,GetExecutePriority);
+
+ static PyObject* pyattr_get_owner(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
// check that attribute is a property
static int CheckProperty(void *self, const PyAttributeDef *attrdef);
diff --git a/source/gameengine/GameLogic/SCA_IObject.cpp b/source/gameengine/GameLogic/SCA_IObject.cpp
index debd62d44e6..75804525e7a 100644
--- a/source/gameengine/GameLogic/SCA_IObject.cpp
+++ b/source/gameengine/GameLogic/SCA_IObject.cpp
@@ -375,22 +375,22 @@ void SCA_IObject::SetState(unsigned int state)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_IObject::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_IObject",
- sizeof(SCA_IObject),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -414,7 +414,7 @@ PyAttributeDef SCA_IObject::Attributes[] = {
};
-PyObject* SCA_IObject::_getattr(const char *attr) {
- _getattr_up(CValue);
+PyObject* SCA_IObject::py_getattro(PyObject *attr) {
+ py_getattro_up(CValue);
}
diff --git a/source/gameengine/GameLogic/SCA_IObject.h b/source/gameengine/GameLogic/SCA_IObject.h
index d47353b1ac0..44ed3c8f3fe 100644
--- a/source/gameengine/GameLogic/SCA_IObject.h
+++ b/source/gameengine/GameLogic/SCA_IObject.h
@@ -145,7 +145,7 @@ public:
// const class MT_Point3& ConvertPythonPylist(PyObject* pylist);
// here come the python forwarded methods
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
virtual int GetGameObjectType() {return -1;}
diff --git a/source/gameengine/GameLogic/SCA_ISensor.cpp b/source/gameengine/GameLogic/SCA_ISensor.cpp
index e8a072f4c46..68f5653d53a 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ISensor.cpp
@@ -105,7 +105,7 @@ void SCA_ISensor::SetLevel(bool lvl) {
}
-float SCA_ISensor::GetNumber() {
+double SCA_ISensor::GetNumber() {
return IsPositiveTrigger();
}
@@ -218,7 +218,7 @@ void SCA_ISensor::Activate(class SCA_LogicManager* logicmgr, CValue* event)
const char SCA_ISensor::IsPositive_doc[] =
"isPositive()\n"
"\tReturns whether the sensor is in an active state.\n";
-PyObject* SCA_ISensor::PyIsPositive(PyObject* self)
+PyObject* SCA_ISensor::PyIsPositive()
{
ShowDeprecationWarning("isPositive()", "the read-only positive property");
int retval = IsPositiveTrigger();
@@ -228,7 +228,7 @@ PyObject* SCA_ISensor::PyIsPositive(PyObject* self)
const char SCA_ISensor::IsTriggered_doc[] =
"isTriggered()\n"
"\tReturns whether the sensor has triggered the current controller.\n";
-PyObject* SCA_ISensor::PyIsTriggered(PyObject* self)
+PyObject* SCA_ISensor::PyIsTriggered()
{
ShowDeprecationWarning("isTriggered()", "the read-only triggered property");
// check with the current controller
@@ -244,7 +244,7 @@ PyObject* SCA_ISensor::PyIsTriggered(PyObject* self)
const char SCA_ISensor::GetUsePosPulseMode_doc[] =
"getUsePosPulseMode()\n"
"\tReturns whether positive pulse mode is active.\n";
-PyObject* SCA_ISensor::PyGetUsePosPulseMode(PyObject* self)
+PyObject* SCA_ISensor::PyGetUsePosPulseMode()
{
ShowDeprecationWarning("getUsePosPulseMode()", "the usePosPulseMode property");
return BoolToPyArg(m_pos_pulsemode);
@@ -258,11 +258,11 @@ const char SCA_ISensor::SetUsePosPulseMode_doc[] =
"\t - pulse? : Pulse when a positive event occurs?\n"
"\t (KX_TRUE, KX_FALSE)\n"
"\tSet whether to do pulsing when positive pulses occur.\n";
-PyObject* SCA_ISensor::PySetUsePosPulseMode(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_ISensor::PySetUsePosPulseMode(PyObject* args)
{
ShowDeprecationWarning("setUsePosPulseMode()", "the usePosPulseMode property");
int pyarg = 0;
- if(!PyArg_ParseTuple(args, "i", &pyarg)) { return NULL; }
+ if(!PyArg_ParseTuple(args, "i:setUsePosPulseMode", &pyarg)) { return NULL; }
m_pos_pulsemode = PyArgToBool(pyarg);
Py_RETURN_NONE;
}
@@ -273,7 +273,7 @@ PyObject* SCA_ISensor::PySetUsePosPulseMode(PyObject* self, PyObject* args, PyOb
const char SCA_ISensor::GetFrequency_doc[] =
"getFrequency()\n"
"\tReturns the frequency of the updates in pulse mode.\n" ;
-PyObject* SCA_ISensor::PyGetFrequency(PyObject* self)
+PyObject* SCA_ISensor::PyGetFrequency()
{
ShowDeprecationWarning("getFrequency()", "the frequency property");
return PyInt_FromLong(m_pulse_frequency);
@@ -287,12 +287,12 @@ const char SCA_ISensor::SetFrequency_doc[] =
"\t- pulse_frequency: The frequency of the updates in pulse mode (integer)"
"\tSet the frequency of the updates in pulse mode.\n"
"\tIf the frequency is negative, it is set to 0.\n" ;
-PyObject* SCA_ISensor::PySetFrequency(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_ISensor::PySetFrequency(PyObject* args)
{
ShowDeprecationWarning("setFrequency()", "the frequency property");
int pulse_frequencyArg = 0;
- if(!PyArg_ParseTuple(args, "i", &pulse_frequencyArg)) {
+ if(!PyArg_ParseTuple(args, "i:setFrequency", &pulse_frequencyArg)) {
return NULL;
}
@@ -310,7 +310,7 @@ PyObject* SCA_ISensor::PySetFrequency(PyObject* self, PyObject* args, PyObject*
const char SCA_ISensor::GetInvert_doc[] =
"getInvert()\n"
"\tReturns whether or not pulses from this sensor are inverted.\n" ;
-PyObject* SCA_ISensor::PyGetInvert(PyObject* self)
+PyObject* SCA_ISensor::PyGetInvert()
{
ShowDeprecationWarning("getInvert()", "the invert property");
return BoolToPyArg(m_invert);
@@ -320,11 +320,11 @@ const char SCA_ISensor::SetInvert_doc[] =
"setInvert(invert?)\n"
"\t- invert?: Invert the event-values? (KX_TRUE, KX_FALSE)\n"
"\tSet whether to invert pulses.\n";
-PyObject* SCA_ISensor::PySetInvert(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_ISensor::PySetInvert(PyObject* args)
{
ShowDeprecationWarning("setInvert()", "the invert property");
int pyarg = 0;
- if(!PyArg_ParseTuple(args, "i", &pyarg)) { return NULL; }
+ if(!PyArg_ParseTuple(args, "i:setInvert", &pyarg)) { return NULL; }
m_invert = PyArgToBool(pyarg);
Py_RETURN_NONE;
}
@@ -336,7 +336,7 @@ const char SCA_ISensor::GetLevel_doc[] =
"\tA level detector will immediately generate a pulse, negative or positive\n"
"\tdepending on the sensor condition, as soon as the state is activated.\n"
"\tA edge detector will wait for a state change before generating a pulse.\n";
-PyObject* SCA_ISensor::PyGetLevel(PyObject* self)
+PyObject* SCA_ISensor::PyGetLevel()
{
ShowDeprecationWarning("getLevel()", "the level property");
return BoolToPyArg(m_level);
@@ -346,11 +346,11 @@ const char SCA_ISensor::SetLevel_doc[] =
"setLevel(level?)\n"
"\t- level?: Detect level instead of edge? (KX_TRUE, KX_FALSE)\n"
"\tSet whether to detect level or edge transition when entering a state.\n";
-PyObject* SCA_ISensor::PySetLevel(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_ISensor::PySetLevel(PyObject* args)
{
ShowDeprecationWarning("setLevel()", "the level property");
int pyarg = 0;
- if(!PyArg_ParseTuple(args, "i", &pyarg)) { return NULL; }
+ if(!PyArg_ParseTuple(args, "i:setLevel", &pyarg)) { return NULL; }
m_level = PyArgToBool(pyarg);
Py_RETURN_NONE;
}
@@ -358,7 +358,7 @@ PyObject* SCA_ISensor::PySetLevel(PyObject* self, PyObject* args, PyObject* kwds
const char SCA_ISensor::GetUseNegPulseMode_doc[] =
"getUseNegPulseMode()\n"
"\tReturns whether negative pulse mode is active.\n";
-PyObject* SCA_ISensor::PyGetUseNegPulseMode(PyObject* self)
+PyObject* SCA_ISensor::PyGetUseNegPulseMode()
{
ShowDeprecationWarning("getUseNegPulseMode()", "the useNegPulseMode property");
return BoolToPyArg(m_neg_pulsemode);
@@ -369,11 +369,11 @@ const char SCA_ISensor::SetUseNegPulseMode_doc[] =
"\t - pulse? : Pulse when a negative event occurs?\n"
"\t (KX_TRUE, KX_FALSE)\n"
"\tSet whether to do pulsing when negative pulses occur.\n";
-PyObject* SCA_ISensor::PySetUseNegPulseMode(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_ISensor::PySetUseNegPulseMode(PyObject* args)
{
ShowDeprecationWarning("setUseNegPulseMode()", "the useNegPulseMode property");
int pyarg = 0;
- if(!PyArg_ParseTuple(args, "i", &pyarg)) { return NULL; }
+ if(!PyArg_ParseTuple(args, "i:setUseNegPulseMode", &pyarg)) { return NULL; }
m_neg_pulsemode = PyArgToBool(pyarg);
Py_RETURN_NONE;
}
@@ -393,22 +393,22 @@ KX_PYMETHODDEF_DOC_NOARGS(SCA_ISensor, reset,
/* ----------------------------------------------- */
PyTypeObject SCA_ISensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_ISensor",
- sizeof(SCA_ISensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_ISensor::Parents[] = {
@@ -454,38 +454,35 @@ PyAttributeDef SCA_ISensor::Attributes[] = {
KX_PYATTRIBUTE_INT_RW("frequency",0,100000,true,SCA_ISensor,m_pulse_frequency),
KX_PYATTRIBUTE_BOOL_RW("invert",SCA_ISensor,m_invert),
KX_PYATTRIBUTE_BOOL_RW("level",SCA_ISensor,m_level),
- // make these properties read-only in _setaddr, must still implement them in _getattr
- KX_PYATTRIBUTE_DUMMY("triggered"),
- KX_PYATTRIBUTE_DUMMY("positive"),
+ KX_PYATTRIBUTE_RO_FUNCTION("triggered", SCA_ISensor, pyattr_get_triggered),
+ KX_PYATTRIBUTE_RO_FUNCTION("positive", SCA_ISensor, pyattr_get_positive),
{ NULL } //Sentinel
};
PyObject*
-SCA_ISensor::_getattr(const char *attr)
+SCA_ISensor::py_getattro(PyObject *attr)
{
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- if (!strcmp(attr, "triggered"))
- {
- int retval = 0;
- if (SCA_PythonController::m_sCurrentController)
- retval = SCA_PythonController::m_sCurrentController->IsTriggered(this);
- return PyInt_FromLong(retval);
- }
- if (!strcmp(attr, "positive"))
- {
- int retval = IsPositiveTrigger();
- return PyInt_FromLong(retval);
- }
- _getattr_up(SCA_ILogicBrick);
+ py_getattro_up(SCA_ILogicBrick);
}
-int SCA_ISensor::_setattr(const char *attr, PyObject *value)
+int SCA_ISensor::py_setattro(PyObject *attr, PyObject *value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_ILogicBrick::_setattr(attr, value);
+ py_setattro_up(SCA_ILogicBrick);
}
+
+PyObject* SCA_ISensor::pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+ int retval = 0;
+ if (SCA_PythonController::m_sCurrentController)
+ retval = SCA_PythonController::m_sCurrentController->IsTriggered(self);
+ return PyInt_FromLong(retval);
+}
+
+PyObject* SCA_ISensor::pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+ return PyInt_FromLong(self->IsPositiveTrigger());
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_ISensor.h b/source/gameengine/GameLogic/SCA_ISensor.h
index 23f2c76c19f..6b1c8cca104 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.h
+++ b/source/gameengine/GameLogic/SCA_ISensor.h
@@ -113,7 +113,7 @@ public:
virtual void RegisterToManager();
virtual void UnregisterToManager();
- virtual float GetNumber();
+ virtual double GetNumber();
/** Stop sensing for a while. */
void Suspend();
@@ -136,24 +136,27 @@ public:
/* Python functions: */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,IsPositive);
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,IsTriggered);
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,GetUsePosPulseMode);
- KX_PYMETHOD_DOC(SCA_ISensor,SetUsePosPulseMode);
+ KX_PYMETHOD_DOC_VARARGS(SCA_ISensor,SetUsePosPulseMode);
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,GetFrequency);
- KX_PYMETHOD_DOC(SCA_ISensor,SetFrequency);
+ KX_PYMETHOD_DOC_VARARGS(SCA_ISensor,SetFrequency);
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,GetUseNegPulseMode);
- KX_PYMETHOD_DOC(SCA_ISensor,SetUseNegPulseMode);
+ KX_PYMETHOD_DOC_VARARGS(SCA_ISensor,SetUseNegPulseMode);
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,GetInvert);
- KX_PYMETHOD_DOC(SCA_ISensor,SetInvert);
+ KX_PYMETHOD_DOC_VARARGS(SCA_ISensor,SetInvert);
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,GetLevel);
- KX_PYMETHOD_DOC(SCA_ISensor,SetLevel);
+ KX_PYMETHOD_DOC_VARARGS(SCA_ISensor,SetLevel);
//<------
KX_PYMETHOD_DOC_NOARGS(SCA_ISensor,reset);
+
+ static PyObject* pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
};
#endif //__SCA_ISENSOR
diff --git a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
index c2d90c830cf..1c601eded81 100644
--- a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
@@ -117,11 +117,15 @@ bool SCA_JoystickSensor::Evaluate(CValue* event)
case KX_JOYSENSORMODE_AXIS:
{
/* what is what!
- m_axisf == 0 == right
+ m_axisf == JOYAXIS_RIGHT, JOYAXIS_UP, JOYAXIS_DOWN, JOYAXIS_LEFT
m_axisf == 1 == up
m_axisf == 2 == left
m_axisf == 3 == down
- numberof== m_axis -- max 2
+
+ numberof== m_axis (1-4), range is half of JOYAXIS_MAX since
+ it assumes the axis joysticks are axis parirs (0,1), (2,3), etc
+ also note that this starts at 1 where functions its used
+ with expect a zero index.
*/
if (!js->IsTrigAxis() && !reset) /* No events from SDL? - dont bother */
@@ -129,18 +133,7 @@ bool SCA_JoystickSensor::Evaluate(CValue* event)
js->cSetPrecision(m_precision);
if (m_bAllEvents) {
- if(js->aAnyAxisIsPositive(m_axis)){
- m_istrig = 1;
- result = true;
- }else{
- if(m_istrig){
- m_istrig = 0;
- result = true;
- }
- }
- }
- else if(m_axisf == 1){
- if(js->aUpAxisIsPositive(m_axis)){
+ if(js->aAxisPairIsPositive(m_axis-1)){ /* use zero based axis index internally */
m_istrig = 1;
result = true;
}else{
@@ -150,8 +143,8 @@ bool SCA_JoystickSensor::Evaluate(CValue* event)
}
}
}
- else if(m_axisf == 3){
- if(js->aDownAxisIsPositive(m_axis)){
+ else {
+ if(js->aAxisPairDirectionIsPositive(m_axis-1, m_axisf)){ /* use zero based axis index internally */
m_istrig = 1;
result = true;
}else{
@@ -161,30 +154,28 @@ bool SCA_JoystickSensor::Evaluate(CValue* event)
}
}
}
- else if(m_axisf == 2){
- if(js->aLeftAxisIsPositive(m_axis)){
- m_istrig = 1;
- result = true;
- }else{
- if(m_istrig){
- m_istrig = 0;
- result = true;
- }
- }
- }
- else if(m_axisf == 0){
- if(js->aRightAxisIsPositive(m_axis)){
- m_istrig = 1;
+ break;
+ }
+ case KX_JOYSENSORMODE_AXIS_SINGLE:
+ {
+ /* Like KX_JOYSENSORMODE_AXIS but dont pair up axis */
+ if (!js->IsTrigAxis() && !reset) /* No events from SDL? - dont bother */
+ return false;
+
+ /* No need for 'm_bAllEvents' check here since were only checking 1 axis */
+ js->cSetPrecision(m_precision);
+ if(js->aAxisIsPositive(m_axis-1)){ /* use zero based axis index internally */
+ m_istrig = 1;
+ result = true;
+ }else{
+ if(m_istrig){
+ m_istrig = 0;
result = true;
- }else{
- if(m_istrig){
- m_istrig = 0;
- result = true;
- }
}
}
break;
}
+
case KX_JOYSENSORMODE_BUTTON:
{
/* what is what!
@@ -275,22 +266,22 @@ bool SCA_JoystickSensor::isValid(SCA_JoystickSensor::KX_JOYSENSORMODE m)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_JoystickSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_JoystickSensor",
- sizeof(SCA_JoystickSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -333,48 +324,24 @@ PyAttributeDef SCA_JoystickSensor::Attributes[] = {
KX_PYATTRIBUTE_INT_RW("button",0,100,false,SCA_JoystickSensor,m_button),
KX_PYATTRIBUTE_INT_LIST_RW_CHECK("axis",0,3,true,SCA_JoystickSensor,m_axis,2,CheckAxis),
KX_PYATTRIBUTE_INT_LIST_RW_CHECK("hat",0,12,true,SCA_JoystickSensor,m_hat,2,CheckHat),
- // dummy attributes will just be read-only in _setattr
- // you still need to defined them in _getattr
- KX_PYATTRIBUTE_DUMMY("axisPosition"),
- KX_PYATTRIBUTE_DUMMY("numAxis"),
- KX_PYATTRIBUTE_DUMMY("numButtons"),
- KX_PYATTRIBUTE_DUMMY("numHats"),
- KX_PYATTRIBUTE_DUMMY("connected"),
+ KX_PYATTRIBUTE_RO_FUNCTION("axisValues", SCA_JoystickSensor, pyattr_get_axis_values),
+ KX_PYATTRIBUTE_RO_FUNCTION("axisSingle", SCA_JoystickSensor, pyattr_get_axis_single),
+ KX_PYATTRIBUTE_RO_FUNCTION("numAxis", SCA_JoystickSensor, pyattr_get_num_axis),
+ KX_PYATTRIBUTE_RO_FUNCTION("numButtons", SCA_JoystickSensor, pyattr_get_num_buttons),
+ KX_PYATTRIBUTE_RO_FUNCTION("numHats", SCA_JoystickSensor, pyattr_get_num_hats),
+ KX_PYATTRIBUTE_RO_FUNCTION("connected", SCA_JoystickSensor, pyattr_get_connected),
+
{ NULL } //Sentinel
};
-PyObject* SCA_JoystickSensor::_getattr(const char *attr) {
- SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
- if (!strcmp(attr, "axisPosition")) {
- if(joy)
- return Py_BuildValue("[iiii]", joy->GetAxis10(), joy->GetAxis11(), joy->GetAxis20(), joy->GetAxis21());
- else
- return Py_BuildValue("[iiii]", 0, 0, 0, 0);
- }
- if (!strcmp(attr, "numAxis")) {
- return PyInt_FromLong( joy ? joy->GetNumberOfAxes() : 0 );
- }
- if (!strcmp(attr, "numButtons")) {
- return PyInt_FromLong( joy ? joy->GetNumberOfButtons() : 0 );
- }
- if (!strcmp(attr, "numHats")) {
- return PyInt_FromLong( joy ? joy->GetNumberOfHats() : 0 );
- }
- if (!strcmp(attr, "connected")) {
- return PyBool_FromLong( joy ? joy->Connected() : 0 );
- }
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_ISensor);
+PyObject* SCA_JoystickSensor::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_ISensor);
}
-int SCA_JoystickSensor::_setattr(const char *attr, PyObject *value)
+int SCA_JoystickSensor::py_setattro(PyObject *attr, PyObject *value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_ISensor::_setattr(attr, value);
+ py_setattro_up(SCA_ISensor);
}
@@ -382,7 +349,7 @@ int SCA_JoystickSensor::_setattr(const char *attr, PyObject *value)
const char SCA_JoystickSensor::GetIndex_doc[] =
"getIndex\n"
"\tReturns the joystick index to use.\n";
-PyObject* SCA_JoystickSensor::PyGetIndex( PyObject* self ) {
+PyObject* SCA_JoystickSensor::PyGetIndex( ) {
ShowDeprecationWarning("getIndex()", "the index property");
return PyInt_FromLong(m_joyindex);
}
@@ -392,7 +359,7 @@ PyObject* SCA_JoystickSensor::PyGetIndex( PyObject* self ) {
const char SCA_JoystickSensor::SetIndex_doc[] =
"setIndex\n"
"\tSets the joystick index to use.\n";
-PyObject* SCA_JoystickSensor::PySetIndex( PyObject* self, PyObject* value ) {
+PyObject* SCA_JoystickSensor::PySetIndex( PyObject* value ) {
ShowDeprecationWarning("setIndex()", "the index property");
int index = PyInt_AsLong( value ); /* -1 on error, will raise an error in this case */
if (index < 0 || index >= JOYINDEX_MAX) {
@@ -408,7 +375,7 @@ PyObject* SCA_JoystickSensor::PySetIndex( PyObject* self, PyObject* value ) {
const char SCA_JoystickSensor::GetAxis_doc[] =
"getAxis\n"
"\tReturns the current axis this sensor reacts to.\n";
-PyObject* SCA_JoystickSensor::PyGetAxis( PyObject* self) {
+PyObject* SCA_JoystickSensor::PyGetAxis( ) {
ShowDeprecationWarning("getAxis()", "the axis property");
return Py_BuildValue("[ii]",m_axis, m_axisf);
}
@@ -418,11 +385,11 @@ PyObject* SCA_JoystickSensor::PyGetAxis( PyObject* self) {
const char SCA_JoystickSensor::SetAxis_doc[] =
"setAxis\n"
"\tSets the current axis this sensor reacts to.\n";
-PyObject* SCA_JoystickSensor::PySetAxis( PyObject* self, PyObject* args ) {
+PyObject* SCA_JoystickSensor::PySetAxis( PyObject* args ) {
ShowDeprecationWarning("setAxis()", "the axis property");
int axis,axisflag;
- if(!PyArg_ParseTuple(args, "ii", &axis, &axisflag)){
+ if(!PyArg_ParseTuple(args, "ii:setAxis", &axis, &axisflag)){
return NULL;
}
m_axis = axis;
@@ -435,13 +402,18 @@ PyObject* SCA_JoystickSensor::PySetAxis( PyObject* self, PyObject* args ) {
const char SCA_JoystickSensor::GetAxisValue_doc[] =
"getAxisValue\n"
"\tReturns a list of the values for the current state of each axis.\n";
-PyObject* SCA_JoystickSensor::PyGetAxisValue( PyObject* self) {
+PyObject* SCA_JoystickSensor::PyGetAxisValue( ) {
ShowDeprecationWarning("getAxisValue()", "the axisPosition property");
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
- if(joy)
- return Py_BuildValue("[iiii]", joy->GetAxis10(), joy->GetAxis11(), joy->GetAxis20(), joy->GetAxis21());
- else
- return Py_BuildValue("[iiii]", 0, 0, 0, 0);
+
+ int axis_index= joy->GetNumberOfAxes();
+ PyObject *list= PyList_New(axis_index);
+
+ while(axis_index--) {
+ PyList_SET_ITEM(list, axis_index, PyInt_FromLong(joy->GetAxisPosition(axis_index)));
+ }
+
+ return list;
}
@@ -449,7 +421,7 @@ PyObject* SCA_JoystickSensor::PyGetAxisValue( PyObject* self) {
const char SCA_JoystickSensor::GetThreshold_doc[] =
"getThreshold\n"
"\tReturns the threshold of the axis.\n";
-PyObject* SCA_JoystickSensor::PyGetThreshold( PyObject* self) {
+PyObject* SCA_JoystickSensor::PyGetThreshold( ) {
ShowDeprecationWarning("getThreshold()", "the threshold property");
return PyInt_FromLong(m_precision);
}
@@ -459,10 +431,10 @@ PyObject* SCA_JoystickSensor::PyGetThreshold( PyObject* self) {
const char SCA_JoystickSensor::SetThreshold_doc[] =
"setThreshold\n"
"\tSets the threshold of the axis.\n";
-PyObject* SCA_JoystickSensor::PySetThreshold( PyObject* self, PyObject* args ) {
+PyObject* SCA_JoystickSensor::PySetThreshold( PyObject* args ) {
ShowDeprecationWarning("setThreshold()", "the threshold property");
int thresh;
- if(!PyArg_ParseTuple(args, "i", &thresh)){
+ if(!PyArg_ParseTuple(args, "i:setThreshold", &thresh)){
return NULL;
}
m_precision = thresh;
@@ -473,7 +445,7 @@ PyObject* SCA_JoystickSensor::PySetThreshold( PyObject* self, PyObject* args ) {
const char SCA_JoystickSensor::GetButton_doc[] =
"getButton\n"
"\tReturns the current button this sensor is checking.\n";
-PyObject* SCA_JoystickSensor::PyGetButton( PyObject* self) {
+PyObject* SCA_JoystickSensor::PyGetButton( ) {
ShowDeprecationWarning("getButton()", "the button property");
return PyInt_FromLong(m_button);
}
@@ -482,7 +454,7 @@ PyObject* SCA_JoystickSensor::PyGetButton( PyObject* self) {
const char SCA_JoystickSensor::SetButton_doc[] =
"setButton\n"
"\tSets the button the sensor reacts to.\n";
-PyObject* SCA_JoystickSensor::PySetButton( PyObject* self, PyObject* value ) {
+PyObject* SCA_JoystickSensor::PySetButton( PyObject* value ) {
ShowDeprecationWarning("setButton()", "the button property");
int button = PyInt_AsLong(value);
if(button==-1 && PyErr_Occurred()) {
@@ -497,16 +469,16 @@ PyObject* SCA_JoystickSensor::PySetButton( PyObject* self, PyObject* value ) {
const char SCA_JoystickSensor::GetButtonValue_doc[] =
"getButtonValue\n"
"\tReturns a list containing the indicies of the current pressed state of each button.\n";
-PyObject* SCA_JoystickSensor::PyGetButtonValue( PyObject* self) {
+PyObject* SCA_JoystickSensor::PyGetButtonValue( ) {
ShowDeprecationWarning("getButtonValue()", "getButtonActiveList");
- return PyGetButtonActiveList(self);
+ return PyGetButtonActiveList( );
}
/* get button active list -------------------------------------------------- */
const char SCA_JoystickSensor::GetButtonActiveList_doc[] =
"getButtonActiveList\n"
"\tReturns a list containing the indicies of the button currently pressed.\n";
-PyObject* SCA_JoystickSensor::PyGetButtonActiveList( PyObject* self) {
+PyObject* SCA_JoystickSensor::PyGetButtonActiveList( ) {
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
PyObject *ls = PyList_New(0);
PyObject *value;
@@ -528,12 +500,11 @@ PyObject* SCA_JoystickSensor::PyGetButtonActiveList( PyObject* self) {
const char SCA_JoystickSensor::GetButtonStatus_doc[] =
"getButtonStatus(buttonIndex)\n"
"\tReturns a bool of the current pressed state of the specified button.\n";
-PyObject* SCA_JoystickSensor::PyGetButtonStatus( PyObject* self, PyObject* args ) {
+PyObject* SCA_JoystickSensor::PyGetButtonStatus( PyObject* args ) {
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
- PyObject *value;
int index;
- if(!PyArg_ParseTuple(args, "i", &index)){
+ if(!PyArg_ParseTuple(args, "i:getButtonStatus", &index)){
return NULL;
}
if(joy && index >= 0 && index < joy->GetNumberOfButtons()) {
@@ -546,7 +517,7 @@ PyObject* SCA_JoystickSensor::PyGetButtonStatus( PyObject* self, PyObject* args
const char SCA_JoystickSensor::GetHat_doc[] =
"getHat\n"
"\tReturns the current direction of the hat.\n";
-PyObject* SCA_JoystickSensor::PyGetHat( PyObject* self ) {
+PyObject* SCA_JoystickSensor::PyGetHat( ) {
ShowDeprecationWarning("getHat()", "the hat property");
return Py_BuildValue("[ii]",m_hat, m_hatf);
}
@@ -556,10 +527,10 @@ PyObject* SCA_JoystickSensor::PyGetHat( PyObject* self ) {
const char SCA_JoystickSensor::SetHat_doc[] =
"setHat\n"
"\tSets the hat the sensor reacts to.\n";
-PyObject* SCA_JoystickSensor::PySetHat( PyObject* self, PyObject* args ) {
+PyObject* SCA_JoystickSensor::PySetHat( PyObject* args ) {
ShowDeprecationWarning("setHat()", "the hat property");
int hat,hatflag;
- if(!PyArg_ParseTuple(args, "ii", &hat, &hatflag)){
+ if(!PyArg_ParseTuple(args, "ii:setHat", &hat, &hatflag)){
return NULL;
}
m_hat = hat;
@@ -572,7 +543,7 @@ PyObject* SCA_JoystickSensor::PySetHat( PyObject* self, PyObject* args ) {
const char SCA_JoystickSensor::NumberOfAxes_doc[] =
"getNumAxes\n"
"\tReturns the number of axes .\n";
-PyObject* SCA_JoystickSensor::PyNumberOfAxes( PyObject* self ) {
+PyObject* SCA_JoystickSensor::PyNumberOfAxes( ) {
ShowDeprecationWarning("getNumAxes()", "the numAxis property");
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
// when the joystick is null their is 0 exis still. dumb but scripters should use isConnected()
@@ -583,7 +554,7 @@ PyObject* SCA_JoystickSensor::PyNumberOfAxes( PyObject* self ) {
const char SCA_JoystickSensor::NumberOfButtons_doc[] =
"getNumButtons\n"
"\tReturns the number of buttons .\n";
-PyObject* SCA_JoystickSensor::PyNumberOfButtons( PyObject* self ) {
+PyObject* SCA_JoystickSensor::PyNumberOfButtons( ) {
ShowDeprecationWarning("getNumButtons()", "the numButtons property");
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
return PyInt_FromLong( joy ? joy->GetNumberOfButtons() : 0 );
@@ -593,7 +564,7 @@ PyObject* SCA_JoystickSensor::PyNumberOfButtons( PyObject* self ) {
const char SCA_JoystickSensor::NumberOfHats_doc[] =
"getNumHats\n"
"\tReturns the number of hats .\n";
-PyObject* SCA_JoystickSensor::PyNumberOfHats( PyObject* self ) {
+PyObject* SCA_JoystickSensor::PyNumberOfHats( ) {
ShowDeprecationWarning("getNumHats()", "the numHats property");
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
return PyInt_FromLong( joy ? joy->GetNumberOfHats() : 0 );
@@ -602,8 +573,65 @@ PyObject* SCA_JoystickSensor::PyNumberOfHats( PyObject* self ) {
const char SCA_JoystickSensor::Connected_doc[] =
"getConnected\n"
"\tReturns True if a joystick is connected at this joysticks index.\n";
-PyObject* SCA_JoystickSensor::PyConnected( PyObject* self ) {
+PyObject* SCA_JoystickSensor::PyConnected( ) {
ShowDeprecationWarning("getConnected()", "the connected property");
SCA_Joystick *joy = m_pJoystickMgr->GetJoystickDevice(m_joyindex);
return PyBool_FromLong( joy ? joy->Connected() : 0 );
}
+
+
+PyObject* SCA_JoystickSensor::pyattr_get_axis_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+
+ int axis_index= joy->GetNumberOfAxes();
+ PyObject *list= PyList_New(axis_index);
+
+ while(axis_index--) {
+ PyList_SET_ITEM(list, axis_index, PyInt_FromLong(joy->GetAxisPosition(axis_index)));
+ }
+
+ return list;
+}
+
+PyObject* SCA_JoystickSensor::pyattr_get_axis_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+
+ if(self->m_joymode != KX_JOYSENSORMODE_AXIS_SINGLE) {
+ PyErr_SetString(PyExc_TypeError, "val = sensor.axisSingle: Joystick Sensor, not 'Single Axis' type");
+ return NULL;
+ }
+
+ return PyInt_FromLong(joy->GetAxisPosition(self->m_axis-1));
+}
+
+PyObject* SCA_JoystickSensor::pyattr_get_num_axis(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+ return PyInt_FromLong( joy ? joy->GetNumberOfAxes() : 0 );
+}
+
+PyObject* SCA_JoystickSensor::pyattr_get_num_buttons(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+ return PyInt_FromLong( joy ? joy->GetNumberOfButtons() : 0 );
+}
+
+PyObject* SCA_JoystickSensor::pyattr_get_num_hats(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+ return PyInt_FromLong( joy ? joy->GetNumberOfHats() : 0 );
+}
+
+PyObject* SCA_JoystickSensor::pyattr_get_connected(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_JoystickSensor* self= static_cast<SCA_JoystickSensor*>(self_v);
+ SCA_Joystick *joy = self->m_pJoystickMgr->GetJoystickDevice(self->m_joyindex);
+ return PyBool_FromLong( joy ? joy->Connected() : 0 );
+}
diff --git a/source/gameengine/GameLogic/SCA_JoystickSensor.h b/source/gameengine/GameLogic/SCA_JoystickSensor.h
index 49d220c056d..cf3e7e74414 100644
--- a/source/gameengine/GameLogic/SCA_JoystickSensor.h
+++ b/source/gameengine/GameLogic/SCA_JoystickSensor.h
@@ -93,6 +93,7 @@ class SCA_JoystickSensor :public SCA_ISensor
KX_JOYSENSORMODE_AXIS,
KX_JOYSENSORMODE_BUTTON,
KX_JOYSENSORMODE_HAT,
+ KX_JOYSENSORMODE_AXIS_SINGLE,
KX_JOYSENSORMODE_MAX
};
bool isValid(KX_JOYSENSORMODE);
@@ -121,8 +122,8 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
/* Joystick Index */
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,GetIndex);
@@ -148,6 +149,14 @@ public:
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,NumberOfHats);
KX_PYMETHOD_DOC_NOARGS(SCA_JoystickSensor,Connected);
+ static PyObject* pyattr_get_axis_values(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_axis_single(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_num_axis(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_num_buttons(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_num_hats(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_connected(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+
/* attribute check */
static int CheckAxis(void *self, const PyAttributeDef*)
{
diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
index ca30382b8c0..c946156283f 100644
--- a/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
@@ -352,148 +352,7 @@ void SCA_KeyboardSensor::AddToTargetProp(int keyIndex)
}
}
-
-/**
- * Determine whether this character can be printed. We cannot use
- * the library functions here, because we need to test our own
- * keycodes. */
-bool SCA_KeyboardSensor::IsPrintable(int keyIndex)
-{
- /* only print
- * - numerals: KX_ZEROKEY to KX_NINEKEY
- * - alphas: KX_AKEY to KX_ZKEY.
- * - specials: KX_RETKEY, KX_PADASTERKEY, KX_PADCOMMAKEY to KX_PERIODKEY,
- * KX_TABKEY , KX_SEMICOLONKEY to KX_RIGHTBRACKETKEY,
- * KX_PAD2 to KX_PADPLUSKEY
- * - delete and backspace: also printable in the sense that they modify
- * the string
- * - retkey: should this be printable?
- * - virgule: prints a space... don't know which key that's supposed
- * to be...
- */
- if ( ((keyIndex >= SCA_IInputDevice::KX_ZEROKEY)
- && (keyIndex <= SCA_IInputDevice::KX_NINEKEY))
- || ((keyIndex >= SCA_IInputDevice::KX_AKEY)
- && (keyIndex <= SCA_IInputDevice::KX_ZKEY))
- || (keyIndex == SCA_IInputDevice::KX_SPACEKEY)
-/* || (keyIndex == KX_RETKEY) */
- || (keyIndex == SCA_IInputDevice::KX_PADASTERKEY)
- || (keyIndex == SCA_IInputDevice::KX_TABKEY)
- || ((keyIndex >= SCA_IInputDevice::KX_COMMAKEY)
- && (keyIndex <= SCA_IInputDevice::KX_PERIODKEY))
- || ((keyIndex >= SCA_IInputDevice::KX_SEMICOLONKEY)
- && (keyIndex <= SCA_IInputDevice::KX_RIGHTBRACKETKEY))
- || ((keyIndex >= SCA_IInputDevice::KX_PAD2)
- && (keyIndex <= SCA_IInputDevice::KX_PADPLUSKEY))
- || (keyIndex == SCA_IInputDevice::KX_DELKEY)
- || (keyIndex == SCA_IInputDevice::KX_BACKSPACEKEY)
- )
- {
- return true;
- } else {
- return false;
- }
-}
-
-// this code looks ugly, please use an ordinary hashtable
-
-char SCA_KeyboardSensor::ToCharacter(int keyIndex, bool shifted)
-{
- /* numerals */
- if ( (keyIndex >= SCA_IInputDevice::KX_ZEROKEY)
- && (keyIndex <= SCA_IInputDevice::KX_NINEKEY) ) {
- if (shifted) {
- char numshift[] = ")!@#$%^&*(";
- return numshift[keyIndex - '0'];
- } else {
- return keyIndex - SCA_IInputDevice::KX_ZEROKEY + '0';
- }
- }
-
- /* letters... always lowercase... is that desirable? */
- if ( (keyIndex >= SCA_IInputDevice::KX_AKEY)
- && (keyIndex <= SCA_IInputDevice::KX_ZKEY) ) {
- if (shifted) {
- return keyIndex - SCA_IInputDevice::KX_AKEY + 'A';
- } else {
- return keyIndex - SCA_IInputDevice::KX_AKEY + 'a';
- }
- }
-
- if (keyIndex == SCA_IInputDevice::KX_SPACEKEY) {
- return ' ';
- }
-
-/* || (keyIndex == SCA_IInputDevice::KX_RETKEY) */
-
- if (keyIndex == SCA_IInputDevice::KX_PADASTERKEY) {
- return '*';
- }
-
- if (keyIndex == SCA_IInputDevice::KX_TABKEY) {
- return '\t';
- }
-
- /* comma to period */
- char commatoperiod[] = ",-.";
- char commatoperiodshifted[] = "<_>";
- if (keyIndex == SCA_IInputDevice::KX_COMMAKEY) {
- if (shifted) {
- return commatoperiodshifted[0];
- } else {
- return commatoperiod[0];
- }
- }
- if (keyIndex == SCA_IInputDevice::KX_MINUSKEY) {
- if (shifted) {
- return commatoperiodshifted[1];
- } else {
- return commatoperiod[1];
- }
- }
- if (keyIndex == SCA_IInputDevice::KX_PERIODKEY) {
- if (shifted) {
- return commatoperiodshifted[2];
- } else {
- return commatoperiod[2];
- }
- }
-
- /* semicolon to rightbracket */
- char semicolontorightbracket[] = ";\'` /\\=[]";
- char semicolontorightbracketshifted[] = ":\"~ \?|+{}";
- if ((keyIndex >= SCA_IInputDevice::KX_SEMICOLONKEY)
- && (keyIndex <= SCA_IInputDevice::KX_RIGHTBRACKETKEY)) {
- if (shifted) {
- return semicolontorightbracketshifted[keyIndex - SCA_IInputDevice::KX_SEMICOLONKEY];
- } else {
- return semicolontorightbracket[keyIndex - SCA_IInputDevice::KX_SEMICOLONKEY];
- }
- }
- /* keypad2 to padplus */
- char pad2topadplus[] = "246813579. 0- +";
- if ((keyIndex >= SCA_IInputDevice::KX_PAD2)
- && (keyIndex <= SCA_IInputDevice::KX_PADPLUSKEY)) {
- return pad2topadplus[keyIndex - SCA_IInputDevice::KX_PAD2];
- }
-
- return '!';
-}
-
-/**
- * Tests whether this is a delete key.
- */
-bool SCA_KeyboardSensor::IsDelete(int keyIndex)
-{
- if ( (keyIndex == SCA_IInputDevice::KX_DELKEY)
- || (keyIndex == SCA_IInputDevice::KX_BACKSPACEKEY) ) {
- return true;
- } else {
- return false;
- }
-}
-
/**
* Tests whether shift is pressed
*/
@@ -553,7 +412,7 @@ void SCA_KeyboardSensor::LogKeystrokes(void)
const char SCA_KeyboardSensor::GetKey_doc[] =
"getKey()\n"
"\tReturn the code of the key this sensor is listening to.\n" ;
-PyObject* SCA_KeyboardSensor::PyGetKey(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PyGetKey()
{
ShowDeprecationWarning("getKey()", "the key property");
return PyInt_FromLong(m_hotkey);
@@ -564,12 +423,12 @@ const char SCA_KeyboardSensor::SetKey_doc[] =
"setKey(keycode)\n"
"\t- keycode: any code from GameKeys\n"
"\tSet the key this sensor should listen to.\n" ;
-PyObject* SCA_KeyboardSensor::PySetKey(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PySetKey(PyObject* args)
{
ShowDeprecationWarning("setKey()", "the key property");
int keyCode;
- if(!PyArg_ParseTuple(args, "i", &keyCode)) {
+ if(!PyArg_ParseTuple(args, "i:setKey", &keyCode)) {
return NULL;
}
@@ -585,7 +444,7 @@ const char SCA_KeyboardSensor::GetHold1_doc[] =
"getHold1()\n"
"\tReturn the code of the first key modifier to the key this \n"
"\tsensor is listening to.\n" ;
-PyObject* SCA_KeyboardSensor::PyGetHold1(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PyGetHold1()
{
ShowDeprecationWarning("getHold1()", "the hold1 property");
return PyInt_FromLong(m_qual);
@@ -596,12 +455,12 @@ const char SCA_KeyboardSensor::SetHold1_doc[] =
"setHold1(keycode)\n"
"\t- keycode: any code from GameKeys\n"
"\tSet the first modifier to the key this sensor should listen to.\n" ;
-PyObject* SCA_KeyboardSensor::PySetHold1(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PySetHold1(PyObject* args)
{
ShowDeprecationWarning("setHold1()", "the hold1 property");
int keyCode;
- if(!PyArg_ParseTuple(args, "i", &keyCode)) {
+ if(!PyArg_ParseTuple(args, "i:setHold1", &keyCode)) {
return NULL;
}
@@ -617,7 +476,7 @@ const char SCA_KeyboardSensor::GetHold2_doc[] =
"getHold2()\n"
"\tReturn the code of the second key modifier to the key this \n"
"\tsensor is listening to.\n" ;
-PyObject* SCA_KeyboardSensor::PyGetHold2(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PyGetHold2()
{
ShowDeprecationWarning("getHold2()", "the hold2 property");
return PyInt_FromLong(m_qual2);
@@ -628,12 +487,12 @@ const char SCA_KeyboardSensor::SetHold2_doc[] =
"setHold2(keycode)\n"
"\t- keycode: any code from GameKeys\n"
"\tSet the first modifier to the key this sensor should listen to.\n" ;
-PyObject* SCA_KeyboardSensor::PySetHold2(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PySetHold2(PyObject* args)
{
ShowDeprecationWarning("setHold2()", "the hold2 property");
int keyCode;
- if(!PyArg_ParseTuple(args, "i", &keyCode)) {
+ if(!PyArg_ParseTuple(args, "i:setHold2", &keyCode)) {
return NULL;
}
@@ -649,9 +508,9 @@ const char SCA_KeyboardSensor::GetPressedKeys_doc[] =
"getPressedKeys()\n"
"\tGet a list of pressed keys that have either been pressed, or just released this frame.\n" ;
-PyObject* SCA_KeyboardSensor::PyGetPressedKeys(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PyGetPressedKeys()
{
- ShowDeprecationWarning("getPressedKeys()", "getEventList()");
+ ShowDeprecationWarning("getPressedKeys()", "events");
SCA_IInputDevice* inputdev = m_pKeyboardMgr->GetInputDevice();
@@ -669,20 +528,19 @@ PyObject* SCA_KeyboardSensor::PyGetPressedKeys(PyObject* self, PyObject* args, P
if ((inevent.m_status == SCA_InputEvent::KX_JUSTACTIVATED)
|| (inevent.m_status == SCA_InputEvent::KX_JUSTRELEASED))
{
- if (index < num)
- {
- PyObject* keypair = PyList_New(2);
- PyList_SetItem(keypair,0,PyInt_FromLong(i));
- PyList_SetItem(keypair,1,PyInt_FromLong(inevent.m_status));
- PyList_SetItem(resultlist,index,keypair);
- index++;
- }
+ PyObject* keypair = PyList_New(2);
+ PyList_SET_ITEM(keypair,0,PyInt_FromLong(i));
+ PyList_SET_ITEM(keypair,1,PyInt_FromLong(inevent.m_status));
+ PyList_SET_ITEM(resultlist,index,keypair);
+ index++;
+
+ if (index >= num) /* should not happen */
+ break;
}
- }
- if (index>0) return resultlist;
+ }
}
- Py_RETURN_NONE;
+ return resultlist;
}
@@ -691,11 +549,11 @@ const char SCA_KeyboardSensor::GetCurrentlyPressedKeys_doc[] =
"getCurrentlyPressedKeys()\n"
"\tGet a list of keys that are currently pressed.\n" ;
-PyObject* SCA_KeyboardSensor::PyGetCurrentlyPressedKeys(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_KeyboardSensor::PyGetCurrentlyPressedKeys()
{
-ShowDeprecationWarning("getCurrentlyPressedKeys()", "getEventList()");
+ ShowDeprecationWarning("getCurrentlyPressedKeys()", "events");
-SCA_IInputDevice* inputdev = m_pKeyboardMgr->GetInputDevice();
+ SCA_IInputDevice* inputdev = m_pKeyboardMgr->GetInputDevice();
int num = inputdev->GetNumActiveEvents();
PyObject* resultlist = PyList_New(num);
@@ -710,67 +568,43 @@ SCA_IInputDevice* inputdev = m_pKeyboardMgr->GetInputDevice();
if ( (inevent.m_status == SCA_InputEvent::KX_ACTIVE)
|| (inevent.m_status == SCA_InputEvent::KX_JUSTACTIVATED))
{
- if (index < num)
- {
- PyObject* keypair = PyList_New(2);
- PyList_SetItem(keypair,0,PyInt_FromLong(i));
- PyList_SetItem(keypair,1,PyInt_FromLong(inevent.m_status));
- PyList_SetItem(resultlist,index,keypair);
- index++;
- }
+ PyObject* keypair = PyList_New(2);
+ PyList_SET_ITEM(keypair,0,PyInt_FromLong(i));
+ PyList_SET_ITEM(keypair,1,PyInt_FromLong(inevent.m_status));
+ PyList_SET_ITEM(resultlist,index,keypair);
+ index++;
+
+ if (index >= num) /* should never happen */
+ break;
}
}
-
- /* why?*/
- if (index > 0) return resultlist;
}
- Py_RETURN_NONE;
-}
-//<---- Deprecated
-
-KX_PYMETHODDEF_DOC_NOARGS(SCA_KeyboardSensor, getEventList,
-"getEventList()\n"
-"\tGet the list of the keyboard events in this frame.\n")
-{
- SCA_IInputDevice* inputdev = m_pKeyboardMgr->GetInputDevice();
-
- PyObject* resultlist = PyList_New(0);
-
- for (int i=SCA_IInputDevice::KX_BEGINKEY ; i<= SCA_IInputDevice::KX_ENDKEY;i++)
- {
- const SCA_InputEvent & inevent = inputdev->GetEventValue((SCA_IInputDevice::KX_EnumInputs) i);
- if (inevent.m_status != SCA_InputEvent::KX_NO_INPUTSTATUS)
- {
- PyObject* keypair = PyList_New(2);
- PyList_SetItem(keypair,0,PyInt_FromLong(i));
- PyList_SetItem(keypair,1,PyInt_FromLong(inevent.m_status));
- PyList_Append(resultlist,keypair);
- }
- }
return resultlist;
}
+//<---- Deprecated
+
KX_PYMETHODDEF_DOC_O(SCA_KeyboardSensor, getKeyStatus,
"getKeyStatus(keycode)\n"
"\tGet the given key's status (KX_NO_INPUTSTATUS, KX_JUSTACTIVATED, KX_ACTIVE or KX_JUSTRELEASED).\n")
{
- if (PyInt_Check(value))
- {
- int keycode = PyInt_AsLong(value);
-
- if ((keycode < SCA_IInputDevice::KX_BEGINKEY)
- || (keycode > SCA_IInputDevice::KX_ENDKEY)){
- PyErr_SetString(PyExc_AttributeError, "invalid keycode specified!");
- return NULL;
- }
-
- SCA_IInputDevice* inputdev = m_pKeyboardMgr->GetInputDevice();
- const SCA_InputEvent & inevent = inputdev->GetEventValue((SCA_IInputDevice::KX_EnumInputs) keycode);
- return PyInt_FromLong(inevent.m_status);
+ if (!PyInt_Check(value)) {
+ PyErr_SetString(PyExc_ValueError, "sensor.getKeyStatus(int): Keyboard Sensor, expected an int");
+ return NULL;
}
- Py_RETURN_NONE;
+ int keycode = PyInt_AsLong(value);
+
+ if ((keycode < SCA_IInputDevice::KX_BEGINKEY)
+ || (keycode > SCA_IInputDevice::KX_ENDKEY)){
+ PyErr_SetString(PyExc_AttributeError, "sensor.getKeyStatus(int): Keyboard Sensor, invalid keycode specified!");
+ return NULL;
+ }
+
+ SCA_IInputDevice* inputdev = m_pKeyboardMgr->GetInputDevice();
+ const SCA_InputEvent & inevent = inputdev->GetEventValue((SCA_IInputDevice::KX_EnumInputs) keycode);
+ return PyInt_FromLong(inevent.m_status);
}
/* ------------------------------------------------------------------------- */
@@ -778,22 +612,22 @@ KX_PYMETHODDEF_DOC_O(SCA_KeyboardSensor, getKeyStatus,
/* ------------------------------------------------------------------------- */
PyTypeObject SCA_KeyboardSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_KeyboardSensor",
- sizeof(SCA_KeyboardSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_KeyboardSensor::Parents[] = {
@@ -806,21 +640,21 @@ PyParentObject SCA_KeyboardSensor::Parents[] = {
PyMethodDef SCA_KeyboardSensor::Methods[] = {
//Deprecated functions ------>
- {"getKey", (PyCFunction) SCA_KeyboardSensor::sPyGetKey, METH_VARARGS, (PY_METHODCHAR)GetKey_doc},
+ {"getKey", (PyCFunction) SCA_KeyboardSensor::sPyGetKey, METH_NOARGS, (PY_METHODCHAR)GetKey_doc},
{"setKey", (PyCFunction) SCA_KeyboardSensor::sPySetKey, METH_VARARGS, (PY_METHODCHAR)SetKey_doc},
- {"getHold1", (PyCFunction) SCA_KeyboardSensor::sPyGetHold1, METH_VARARGS, (PY_METHODCHAR)GetHold1_doc},
+ {"getHold1", (PyCFunction) SCA_KeyboardSensor::sPyGetHold1, METH_NOARGS, (PY_METHODCHAR)GetHold1_doc},
{"setHold1", (PyCFunction) SCA_KeyboardSensor::sPySetHold1, METH_VARARGS, (PY_METHODCHAR)SetHold1_doc},
- {"getHold2", (PyCFunction) SCA_KeyboardSensor::sPyGetHold2, METH_VARARGS, (PY_METHODCHAR)GetHold2_doc},
+ {"getHold2", (PyCFunction) SCA_KeyboardSensor::sPyGetHold2, METH_NOARGS, (PY_METHODCHAR)GetHold2_doc},
{"setHold2", (PyCFunction) SCA_KeyboardSensor::sPySetHold2, METH_VARARGS, (PY_METHODCHAR)SetHold2_doc},
- {"getPressedKeys", (PyCFunction) SCA_KeyboardSensor::sPyGetPressedKeys, METH_VARARGS, (PY_METHODCHAR)GetPressedKeys_doc},
- {"getCurrentlyPressedKeys", (PyCFunction) SCA_KeyboardSensor::sPyGetCurrentlyPressedKeys, METH_VARARGS, (PY_METHODCHAR)GetCurrentlyPressedKeys_doc},
+ {"getPressedKeys", (PyCFunction) SCA_KeyboardSensor::sPyGetPressedKeys, METH_NOARGS, (PY_METHODCHAR)GetPressedKeys_doc},
+ {"getCurrentlyPressedKeys", (PyCFunction) SCA_KeyboardSensor::sPyGetCurrentlyPressedKeys, METH_NOARGS, (PY_METHODCHAR)GetCurrentlyPressedKeys_doc},
//<----- Deprecated
- KX_PYMETHODTABLE_NOARGS(SCA_KeyboardSensor, getEventList),
KX_PYMETHODTABLE_O(SCA_KeyboardSensor, getKeyStatus),
{NULL,NULL} //Sentinel
};
PyAttributeDef SCA_KeyboardSensor::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("events", SCA_KeyboardSensor, pyattr_get_events),
KX_PYATTRIBUTE_BOOL_RW("useAllKeys",SCA_KeyboardSensor,m_bAllKeys),
KX_PYATTRIBUTE_INT_RW("key",0,SCA_IInputDevice::KX_ENDKEY,true,SCA_KeyboardSensor,m_hotkey),
KX_PYATTRIBUTE_SHORT_RW("hold1",0,SCA_IInputDevice::KX_ENDKEY,true,SCA_KeyboardSensor,m_qual),
@@ -831,18 +665,184 @@ PyAttributeDef SCA_KeyboardSensor::Attributes[] = {
};
PyObject*
-SCA_KeyboardSensor::_getattr(const char *attr)
+SCA_KeyboardSensor::py_getattro(PyObject *attr)
{
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_ISensor);
+ py_getattro_up(SCA_ISensor);
+}
+
+int SCA_KeyboardSensor::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_ISensor);
+}
+
+
+PyObject* SCA_KeyboardSensor::pyattr_get_events(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_KeyboardSensor* self= static_cast<SCA_KeyboardSensor*>(self_v);
+
+ SCA_IInputDevice* inputdev = self->m_pKeyboardMgr->GetInputDevice();
+
+ PyObject* resultlist = PyList_New(0);
+
+ for (int i=SCA_IInputDevice::KX_BEGINKEY ; i<= SCA_IInputDevice::KX_ENDKEY;i++)
+ {
+ const SCA_InputEvent & inevent = inputdev->GetEventValue((SCA_IInputDevice::KX_EnumInputs) i);
+ if (inevent.m_status != SCA_InputEvent::KX_NO_INPUTSTATUS)
+ {
+ PyObject* keypair = PyList_New(2);
+ PyList_SET_ITEM(keypair,0,PyInt_FromLong(i));
+ PyList_SetItem(keypair,1,PyInt_FromLong(inevent.m_status));
+ PyList_Append(resultlist,keypair);
+ }
+ }
+ return resultlist;
}
-int SCA_KeyboardSensor::_setattr(const char *attr, PyObject *value)
+
+/* Accessed from python */
+
+// this code looks ugly, please use an ordinary hashtable
+
+char ToCharacter(int keyIndex, bool shifted)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_ISensor::_setattr(attr, value);
+ /* numerals */
+ if ( (keyIndex >= SCA_IInputDevice::KX_ZEROKEY)
+ && (keyIndex <= SCA_IInputDevice::KX_NINEKEY) ) {
+ if (shifted) {
+ char numshift[] = ")!@#$%^&*(";
+ return numshift[keyIndex - '0'];
+ } else {
+ return keyIndex - SCA_IInputDevice::KX_ZEROKEY + '0';
+ }
+ }
+
+ /* letters... always lowercase... is that desirable? */
+ if ( (keyIndex >= SCA_IInputDevice::KX_AKEY)
+ && (keyIndex <= SCA_IInputDevice::KX_ZKEY) ) {
+ if (shifted) {
+ return keyIndex - SCA_IInputDevice::KX_AKEY + 'A';
+ } else {
+ return keyIndex - SCA_IInputDevice::KX_AKEY + 'a';
+ }
+ }
+
+ if (keyIndex == SCA_IInputDevice::KX_SPACEKEY) {
+ return ' ';
+ }
+ if (keyIndex == SCA_IInputDevice::KX_RETKEY || keyIndex == SCA_IInputDevice::KX_PADENTER) {
+ return '\n';
+ }
+
+
+ if (keyIndex == SCA_IInputDevice::KX_PADASTERKEY) {
+ return '*';
+ }
+
+ if (keyIndex == SCA_IInputDevice::KX_TABKEY) {
+ return '\t';
+ }
+
+ /* comma to period */
+ char commatoperiod[] = ",-.";
+ char commatoperiodshifted[] = "<_>";
+ if (keyIndex == SCA_IInputDevice::KX_COMMAKEY) {
+ if (shifted) {
+ return commatoperiodshifted[0];
+ } else {
+ return commatoperiod[0];
+ }
+ }
+ if (keyIndex == SCA_IInputDevice::KX_MINUSKEY) {
+ if (shifted) {
+ return commatoperiodshifted[1];
+ } else {
+ return commatoperiod[1];
+ }
+ }
+ if (keyIndex == SCA_IInputDevice::KX_PERIODKEY) {
+ if (shifted) {
+ return commatoperiodshifted[2];
+ } else {
+ return commatoperiod[2];
+ }
+ }
+
+ /* semicolon to rightbracket */
+ char semicolontorightbracket[] = ";\'`/\\=[]";
+ char semicolontorightbracketshifted[] = ":\"~\?|+{}";
+ if ((keyIndex >= SCA_IInputDevice::KX_SEMICOLONKEY)
+ && (keyIndex <= SCA_IInputDevice::KX_RIGHTBRACKETKEY)) {
+ if (shifted) {
+ return semicolontorightbracketshifted[keyIndex - SCA_IInputDevice::KX_SEMICOLONKEY];
+ } else {
+ return semicolontorightbracket[keyIndex - SCA_IInputDevice::KX_SEMICOLONKEY];
+ }
+ }
+
+ /* keypad2 to padplus */
+ char pad2topadplus[] = "246813579. 0- +";
+ if ((keyIndex >= SCA_IInputDevice::KX_PAD2)
+ && (keyIndex <= SCA_IInputDevice::KX_PADPLUSKEY)) {
+ return pad2topadplus[keyIndex - SCA_IInputDevice::KX_PAD2];
+ }
+
+ return '!';
+}
+
+
+
+/**
+ * Determine whether this character can be printed. We cannot use
+ * the library functions here, because we need to test our own
+ * keycodes. */
+bool IsPrintable(int keyIndex)
+{
+ /* only print
+ * - numerals: KX_ZEROKEY to KX_NINEKEY
+ * - alphas: KX_AKEY to KX_ZKEY.
+ * - specials: KX_RETKEY, KX_PADASTERKEY, KX_PADCOMMAKEY to KX_PERIODKEY,
+ * KX_TABKEY , KX_SEMICOLONKEY to KX_RIGHTBRACKETKEY,
+ * KX_PAD2 to KX_PADPLUSKEY
+ * - delete and backspace: also printable in the sense that they modify
+ * the string
+ * - retkey: should this be printable?
+ * - virgule: prints a space... don't know which key that's supposed
+ * to be...
+ */
+ if ( ((keyIndex >= SCA_IInputDevice::KX_ZEROKEY)
+ && (keyIndex <= SCA_IInputDevice::KX_NINEKEY))
+ || ((keyIndex >= SCA_IInputDevice::KX_AKEY)
+ && (keyIndex <= SCA_IInputDevice::KX_ZKEY))
+ || (keyIndex == SCA_IInputDevice::KX_SPACEKEY)
+ || (keyIndex == SCA_IInputDevice::KX_RETKEY)
+ || (keyIndex == SCA_IInputDevice::KX_PADENTER)
+ || (keyIndex == SCA_IInputDevice::KX_PADASTERKEY)
+ || (keyIndex == SCA_IInputDevice::KX_TABKEY)
+ || ((keyIndex >= SCA_IInputDevice::KX_COMMAKEY)
+ && (keyIndex <= SCA_IInputDevice::KX_PERIODKEY))
+ || ((keyIndex >= SCA_IInputDevice::KX_SEMICOLONKEY)
+ && (keyIndex <= SCA_IInputDevice::KX_RIGHTBRACKETKEY))
+ || ((keyIndex >= SCA_IInputDevice::KX_PAD2)
+ && (keyIndex <= SCA_IInputDevice::KX_PADPLUSKEY))
+ || (keyIndex == SCA_IInputDevice::KX_DELKEY)
+ || (keyIndex == SCA_IInputDevice::KX_BACKSPACEKEY)
+ )
+ {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+/**
+ * Tests whether this is a delete key.
+ */
+bool IsDelete(int keyIndex)
+{
+ if ( (keyIndex == SCA_IInputDevice::KX_DELKEY)
+ || (keyIndex == SCA_IInputDevice::KX_BACKSPACEKEY) ) {
+ return true;
+ } else {
+ return false;
+ }
}
diff --git a/source/gameengine/GameLogic/SCA_KeyboardSensor.h b/source/gameengine/GameLogic/SCA_KeyboardSensor.h
index bc2f86327a5..073b3e6dbe0 100644
--- a/source/gameengine/GameLogic/SCA_KeyboardSensor.h
+++ b/source/gameengine/GameLogic/SCA_KeyboardSensor.h
@@ -82,22 +82,6 @@ class SCA_KeyboardSensor : public SCA_ISensor
void AddToTargetProp(int keyIndex);
/**
- * Determine whether this character can be printed. We cannot use
- * the library functions here, because we need to test our own
- * keycodes. */
- bool IsPrintable(int keyIndex);
-
- /**
- * Transform keycodes to something printable.
- */
- char ToCharacter(int keyIndex, bool shifted);
-
- /**
- * Tests whether this is a delete key.
- */
- bool IsDelete(int keyIndex);
-
- /**
* Tests whether shift is pressed.
*/
bool IsShifted(void);
@@ -126,33 +110,55 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->
/** 1. GetKey : check which key this sensor looks at */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,GetKey);
+ KX_PYMETHOD_DOC_NOARGS(SCA_KeyboardSensor,GetKey);
/** 2. SetKey: change the key to look at */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,SetKey);
+ KX_PYMETHOD_DOC_VARARGS(SCA_KeyboardSensor,SetKey);
/** 3. GetHold1 : set the first bucky bit */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,GetHold1);
+ KX_PYMETHOD_DOC_NOARGS(SCA_KeyboardSensor,GetHold1);
/** 4. SetHold1: change the first bucky bit */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,SetHold1);
+ KX_PYMETHOD_DOC_VARARGS(SCA_KeyboardSensor,SetHold1);
/** 5. GetHold2 : set the second bucky bit */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,GetHold2);
+ KX_PYMETHOD_DOC_NOARGS(SCA_KeyboardSensor,GetHold2);
/** 6. SetHold2: change the second bucky bit */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,SetHold2);
+ KX_PYMETHOD_DOC_VARARGS(SCA_KeyboardSensor,SetHold2);
/** 9. GetPressedKeys: */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,GetPressedKeys);
+ KX_PYMETHOD_DOC_NOARGS(SCA_KeyboardSensor,GetPressedKeys);
/** 9. GetCurrrentlyPressedKeys: */
- KX_PYMETHOD_DOC(SCA_KeyboardSensor,GetCurrentlyPressedKeys);
+ KX_PYMETHOD_DOC_NOARGS(SCA_KeyboardSensor,GetCurrentlyPressedKeys);
// <------
// KeyEvents:
KX_PYMETHOD_DOC_NOARGS(SCA_KeyboardSensor,getEventList);
// KeyStatus:
KX_PYMETHOD_DOC_O(SCA_KeyboardSensor,getKeyStatus);
+
+ static PyObject* pyattr_get_events(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
};
+
+/**
+ * Transform keycodes to something printable.
+ */
+char ToCharacter(int keyIndex, bool shifted);
+
+/**
+ * Determine whether this character can be printed. We cannot use
+ * the library functions here, because we need to test our own
+ * keycodes. */
+bool IsPrintable(int keyIndex);
+
+/**
+ * Tests whether this is a delete key.
+ */
+bool IsDelete(int keyIndex);
+
+
#endif //__KX_KEYBOARDSENSOR
+
+
diff --git a/source/gameengine/GameLogic/SCA_MouseSensor.cpp b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
index 57535b29f32..4dbeb156e63 100644
--- a/source/gameengine/GameLogic/SCA_MouseSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_MouseSensor.cpp
@@ -102,7 +102,7 @@ int SCA_MouseSensor::UpdateHotkey(void *self, const PyAttributeDef*)
default:
; /* ignore, no hotkey */
}
- // return value is used in _setattr(),
+ // return value is used in py_setattro(),
// 0=attribute checked ok (see Attributes array definition)
return 0;
}
@@ -252,9 +252,7 @@ const char SCA_MouseSensor::GetXPosition_doc[] =
"\tReturns the x-coordinate of the mouse sensor, in frame coordinates.\n"
"\tThe lower-left corner is the origin. The coordinate is given in\n"
"\tpixels\n";
-PyObject* SCA_MouseSensor::PyGetXPosition(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* SCA_MouseSensor::PyGetXPosition() {
ShowDeprecationWarning("getXPosition()", "the position property");
return PyInt_FromLong(m_x);
}
@@ -265,9 +263,7 @@ const char SCA_MouseSensor::GetYPosition_doc[] =
"\tReturns the y-coordinate of the mouse sensor, in frame coordinates.\n"
"\tThe lower-left corner is the origin. The coordinate is given in\n"
"\tpixels\n";
-PyObject* SCA_MouseSensor::PyGetYPosition(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* SCA_MouseSensor::PyGetYPosition() {
ShowDeprecationWarning("getYPosition()", "the position property");
return PyInt_FromLong(m_y);
}
@@ -275,7 +271,7 @@ PyObject* SCA_MouseSensor::PyGetYPosition(PyObject* self,
KX_PYMETHODDEF_DOC_O(SCA_MouseSensor, getButtonStatus,
"getButtonStatus(button)\n"
-"\tGet the given button's status (KX_NO_INPUTSTATUS, KX_JUSTACTIVATED, KX_ACTIVE or KX_JUSTRELEASED).\n")
+"\tGet the given button's status (KX_INPUT_NONE, KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED).\n")
{
if (PyInt_Check(value))
{
@@ -283,7 +279,7 @@ KX_PYMETHODDEF_DOC_O(SCA_MouseSensor, getButtonStatus,
if ((button < SCA_IInputDevice::KX_LEFTMOUSE)
|| (button > SCA_IInputDevice::KX_RIGHTMOUSE)){
- PyErr_SetString(PyExc_ValueError, "invalid button specified!");
+ PyErr_SetString(PyExc_ValueError, "sensor.getButtonStatus(int): Mouse Sensor, invalid button specified!");
return NULL;
}
@@ -300,22 +296,22 @@ KX_PYMETHODDEF_DOC_O(SCA_MouseSensor, getButtonStatus,
/* ------------------------------------------------------------------------- */
PyTypeObject SCA_MouseSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_MouseSensor",
- sizeof(SCA_MouseSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_MouseSensor::Parents[] = {
@@ -341,20 +337,14 @@ PyAttributeDef SCA_MouseSensor::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_MouseSensor::_getattr(const char *attr)
+PyObject* SCA_MouseSensor::py_getattro(PyObject *attr)
{
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_ISensor);
+ py_getattro_up(SCA_ISensor);
}
-int SCA_MouseSensor::_setattr(const char *attr, PyObject *value)
+int SCA_MouseSensor::py_setattro(PyObject *attr, PyObject *value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_ISensor::_setattr(attr, value);
+ py_setattro_up(SCA_ISensor);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_MouseSensor.h b/source/gameengine/GameLogic/SCA_MouseSensor.h
index 30b43fe53cc..2d1c496029d 100644
--- a/source/gameengine/GameLogic/SCA_MouseSensor.h
+++ b/source/gameengine/GameLogic/SCA_MouseSensor.h
@@ -109,14 +109,14 @@ class SCA_MouseSensor : public SCA_ISensor
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated functions ----->
/* read x-coordinate */
- KX_PYMETHOD_DOC(SCA_MouseSensor,GetXPosition);
+ KX_PYMETHOD_DOC_NOARGS(SCA_MouseSensor,GetXPosition);
/* read y-coordinate */
- KX_PYMETHOD_DOC(SCA_MouseSensor,GetYPosition);
+ KX_PYMETHOD_DOC_NOARGS(SCA_MouseSensor,GetYPosition);
//<----- deprecated
// get button status
diff --git a/source/gameengine/GameLogic/SCA_NANDController.cpp b/source/gameengine/GameLogic/SCA_NANDController.cpp
index 18426d75582..703c9c1bbaf 100644
--- a/source/gameengine/GameLogic/SCA_NANDController.cpp
+++ b/source/gameengine/GameLogic/SCA_NANDController.cpp
@@ -107,22 +107,22 @@ CValue* SCA_NANDController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_NANDController::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_NANDController",
- sizeof(SCA_NANDController),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_NANDController::Parents[] = {
@@ -141,8 +141,8 @@ PyAttributeDef SCA_NANDController::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_NANDController::_getattr(const char *attr) {
- _getattr_up(SCA_IController);
+PyObject* SCA_NANDController::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IController);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_NANDController.h b/source/gameengine/GameLogic/SCA_NANDController.h
index d88504cfc0d..11600914a1a 100644
--- a/source/gameengine/GameLogic/SCA_NANDController.h
+++ b/source/gameengine/GameLogic/SCA_NANDController.h
@@ -48,7 +48,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
};
diff --git a/source/gameengine/GameLogic/SCA_NORController.cpp b/source/gameengine/GameLogic/SCA_NORController.cpp
index 1de6a641c3d..06acae5a81a 100644
--- a/source/gameengine/GameLogic/SCA_NORController.cpp
+++ b/source/gameengine/GameLogic/SCA_NORController.cpp
@@ -107,22 +107,22 @@ CValue* SCA_NORController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_NORController::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_NORController",
- sizeof(SCA_NORController),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_NORController::Parents[] = {
@@ -141,8 +141,8 @@ PyAttributeDef SCA_NORController::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_NORController::_getattr(const char *attr) {
- _getattr_up(SCA_IController);
+PyObject* SCA_NORController::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IController);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_NORController.h b/source/gameengine/GameLogic/SCA_NORController.h
index 45b639f3f3f..fc814e28d37 100644
--- a/source/gameengine/GameLogic/SCA_NORController.h
+++ b/source/gameengine/GameLogic/SCA_NORController.h
@@ -48,7 +48,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
};
diff --git a/source/gameengine/GameLogic/SCA_ORController.cpp b/source/gameengine/GameLogic/SCA_ORController.cpp
index 61fbc889d90..319ff04f776 100644
--- a/source/gameengine/GameLogic/SCA_ORController.cpp
+++ b/source/gameengine/GameLogic/SCA_ORController.cpp
@@ -99,22 +99,22 @@ void SCA_ORController::Trigger(SCA_LogicManager* logicmgr)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_ORController::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_ORController",
- sizeof(SCA_ORController),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_ORController::Parents[] = {
@@ -134,8 +134,8 @@ PyAttributeDef SCA_ORController::Attributes[] = {
};
-PyObject* SCA_ORController::_getattr(const char *attr) {
- _getattr_up(SCA_IController);
+PyObject* SCA_ORController::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IController);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_ORController.h b/source/gameengine/GameLogic/SCA_ORController.h
index 9a6e9e75022..fdc81486e74 100644
--- a/source/gameengine/GameLogic/SCA_ORController.h
+++ b/source/gameengine/GameLogic/SCA_ORController.h
@@ -49,7 +49,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
};
#endif //__KX_ORCONTROLLER
diff --git a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
index c9ace081bae..c4db723ee89 100644
--- a/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertyActuator.cpp
@@ -77,11 +77,25 @@ bool SCA_PropertyActuator::Update()
CParser parser;
parser.SetContext( propowner->AddRef());
- CExpression* userexpr = parser.ProcessText(m_exprtxt);
- if (userexpr)
+ CExpression* userexpr= NULL;
+
+ if (m_type==KX_ACT_PROP_TOGGLE)
{
-
-
+ /* dont use */
+ CValue* newval;
+ CValue* oldprop = propowner->GetProperty(m_propname);
+ if (oldprop)
+ {
+ newval = new CBoolValue((oldprop->GetNumber()==0.0) ? true:false);
+ oldprop->SetValue(newval);
+ } else
+ { /* as not been assigned, evaluate as false, so assign true */
+ newval = new CBoolValue(true);
+ propowner->SetProperty(m_propname,newval);
+ }
+ newval->Release();
+ }
+ else if ((userexpr = parser.ProcessText(m_exprtxt))) {
switch (m_type)
{
@@ -135,6 +149,7 @@ bool SCA_PropertyActuator::Update()
}
break;
}
+ /* case KX_ACT_PROP_TOGGLE: */ /* accounted for above, no need for userexpr */
default:
{
@@ -218,22 +233,22 @@ void SCA_PropertyActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_PropertyActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_PropertyActuator",
- sizeof(SCA_PropertyActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_PropertyActuator::Parents[] = {
@@ -260,18 +275,12 @@ PyAttributeDef SCA_PropertyActuator::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_PropertyActuator::_getattr(const char *attr) {
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_IActuator);
+PyObject* SCA_PropertyActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
}
-int SCA_PropertyActuator::_setattr(const char *attr, PyObject *value) {
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_IActuator::_setattr(attr, value);
+int SCA_PropertyActuator::py_setattro(PyObject *attr, PyObject *value) {
+ py_setattro_up(SCA_IActuator);
}
/* 1. setProperty */
@@ -280,12 +289,12 @@ const char SCA_PropertyActuator::SetProperty_doc[] =
"\t- name: string\n"
"\tSet the property on which to operate. If there is no property\n"
"\tof this name, the call is ignored.\n";
-PyObject* SCA_PropertyActuator::PySetProperty(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertyActuator::PySetProperty(PyObject* args, PyObject* kwds)
{
ShowDeprecationWarning("setProperty()", "the 'property' property");
/* Check whether the name exists first ! */
char *nameArg;
- if (!PyArg_ParseTuple(args, "s", &nameArg)) {
+ if (!PyArg_ParseTuple(args, "s:setProperty", &nameArg)) {
return NULL;
}
@@ -305,7 +314,7 @@ PyObject* SCA_PropertyActuator::PySetProperty(PyObject* self, PyObject* args, Py
const char SCA_PropertyActuator::GetProperty_doc[] =
"getProperty(name)\n"
"\tReturn the property on which the actuator operates.\n";
-PyObject* SCA_PropertyActuator::PyGetProperty(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertyActuator::PyGetProperty(PyObject* args, PyObject* kwds)
{
ShowDeprecationWarning("getProperty()", "the 'property' property");
return PyString_FromString(m_propname);
@@ -318,11 +327,11 @@ const char SCA_PropertyActuator::SetValue_doc[] =
"\tSet the value with which the actuator operates. If the value\n"
"\tis not compatible with the type of the property, the subsequent\n"
"\t action is ignored.\n";
-PyObject* SCA_PropertyActuator::PySetValue(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertyActuator::PySetValue(PyObject* args, PyObject* kwds)
{
ShowDeprecationWarning("setValue()", "the value property");
char *valArg;
- if(!PyArg_ParseTuple(args, "s", &valArg)) {
+ if(!PyArg_ParseTuple(args, "s:setValue", &valArg)) {
return NULL;
}
@@ -335,7 +344,7 @@ PyObject* SCA_PropertyActuator::PySetValue(PyObject* self, PyObject* args, PyObj
const char SCA_PropertyActuator::GetValue_doc[] =
"getValue()\n"
"\tReturns the value with which the actuator operates.\n";
-PyObject* SCA_PropertyActuator::PyGetValue(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertyActuator::PyGetValue(PyObject* args, PyObject* kwds)
{
ShowDeprecationWarning("getValue()", "the value property");
return PyString_FromString(m_exprtxt);
diff --git a/source/gameengine/GameLogic/SCA_PropertyActuator.h b/source/gameengine/GameLogic/SCA_PropertyActuator.h
index 444d9285796..bb841cf88ad 100644
--- a/source/gameengine/GameLogic/SCA_PropertyActuator.h
+++ b/source/gameengine/GameLogic/SCA_PropertyActuator.h
@@ -43,6 +43,7 @@ class SCA_PropertyActuator : public SCA_IActuator
KX_ACT_PROP_ASSIGN,
KX_ACT_PROP_ADD,
KX_ACT_PROP_COPY,
+ KX_ACT_PROP_TOGGLE,
KX_ACT_PROP_MAX
};
@@ -85,8 +86,8 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
// python wrapped methods
KX_PYMETHOD_DOC(SCA_PropertyActuator,SetProperty);
diff --git a/source/gameengine/GameLogic/SCA_PropertySensor.cpp b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
index d683c8bb3e7..de8a9fcf03e 100644
--- a/source/gameengine/GameLogic/SCA_PropertySensor.cpp
+++ b/source/gameengine/GameLogic/SCA_PropertySensor.cpp
@@ -306,22 +306,22 @@ int SCA_PropertySensor::validValueForProperty(void *self, const PyAttributeDef*)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_PropertySensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_PropertySensor",
- sizeof(SCA_PropertySensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_PropertySensor::Parents[] = {
@@ -334,11 +334,11 @@ PyParentObject SCA_PropertySensor::Parents[] = {
PyMethodDef SCA_PropertySensor::Methods[] = {
//Deprecated functions ------>
- {"getType", (PyCFunction) SCA_PropertySensor::sPyGetType, METH_VARARGS, (PY_METHODCHAR)GetType_doc},
+ {"getType", (PyCFunction) SCA_PropertySensor::sPyGetType, METH_NOARGS, (PY_METHODCHAR)GetType_doc},
{"setType", (PyCFunction) SCA_PropertySensor::sPySetType, METH_VARARGS, (PY_METHODCHAR)SetType_doc},
- {"getProperty", (PyCFunction) SCA_PropertySensor::sPyGetProperty, METH_VARARGS, (PY_METHODCHAR)GetProperty_doc},
+ {"getProperty", (PyCFunction) SCA_PropertySensor::sPyGetProperty, METH_NOARGS, (PY_METHODCHAR)GetProperty_doc},
{"setProperty", (PyCFunction) SCA_PropertySensor::sPySetProperty, METH_VARARGS, (PY_METHODCHAR)SetProperty_doc},
- {"getValue", (PyCFunction) SCA_PropertySensor::sPyGetValue, METH_VARARGS, (PY_METHODCHAR)GetValue_doc},
+ {"getValue", (PyCFunction) SCA_PropertySensor::sPyGetValue, METH_NOARGS, (PY_METHODCHAR)GetValue_doc},
{"setValue", (PyCFunction) SCA_PropertySensor::sPySetValue, METH_VARARGS, (PY_METHODCHAR)SetValue_doc},
//<----- Deprecated
{NULL,NULL} //Sentinel
@@ -352,25 +352,19 @@ PyAttributeDef SCA_PropertySensor::Attributes[] = {
};
-PyObject* SCA_PropertySensor::_getattr(const char *attr) {
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_ISensor); /* implicit return! */
+PyObject* SCA_PropertySensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_ISensor);
}
-int SCA_PropertySensor::_setattr(const char *attr, PyObject *value) {
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_ISensor::_setattr(attr, value);
+int SCA_PropertySensor::py_setattro(PyObject *attr, PyObject *value) {
+ py_setattro_up(SCA_ISensor);
}
/* 1. getType */
const char SCA_PropertySensor::GetType_doc[] =
"getType()\n"
"\tReturns the type of check this sensor performs.\n";
-PyObject* SCA_PropertySensor::PyGetType(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertySensor::PyGetType()
{
ShowDeprecationWarning("getType()", "the type property");
return PyInt_FromLong(m_checktype);
@@ -383,12 +377,12 @@ const char SCA_PropertySensor::SetType_doc[] =
"\t KX_PROPSENSOR_INTERVAL, KX_PROPSENSOR_CHANGED,\n"
"\t or KX_PROPSENSOR_EXPRESSION.\n"
"\tSet the type of check to perform.\n";
-PyObject* SCA_PropertySensor::PySetType(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertySensor::PySetType(PyObject* args)
{
ShowDeprecationWarning("setType()", "the type property");
int typeArg;
- if (!PyArg_ParseTuple(args, "i", &typeArg)) {
+ if (!PyArg_ParseTuple(args, "i:setType", &typeArg)) {
return NULL;
}
@@ -404,7 +398,7 @@ PyObject* SCA_PropertySensor::PySetType(PyObject* self, PyObject* args, PyObject
const char SCA_PropertySensor::GetProperty_doc[] =
"getProperty()\n"
"\tReturn the property with which the sensor operates.\n";
-PyObject* SCA_PropertySensor::PyGetProperty(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertySensor::PyGetProperty()
{
ShowDeprecationWarning("getProperty()", "the 'property' property");
return PyString_FromString(m_checkpropname);
@@ -416,14 +410,14 @@ const char SCA_PropertySensor::SetProperty_doc[] =
"\t- name: string\n"
"\tSets the property with which to operate. If there is no property\n"
"\tof this name, the call is ignored.\n";
-PyObject* SCA_PropertySensor::PySetProperty(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertySensor::PySetProperty(PyObject* args)
{
ShowDeprecationWarning("setProperty()", "the 'property' property");
/* We should query whether the name exists. Or should we create a prop */
/* on the fly? */
char *propNameArg = NULL;
- if (!PyArg_ParseTuple(args, "s", &propNameArg)) {
+ if (!PyArg_ParseTuple(args, "s:setProperty", &propNameArg)) {
return NULL;
}
@@ -441,7 +435,7 @@ PyObject* SCA_PropertySensor::PySetProperty(PyObject* self, PyObject* args, PyOb
const char SCA_PropertySensor::GetValue_doc[] =
"getValue()\n"
"\tReturns the value with which the sensor operates.\n";
-PyObject* SCA_PropertySensor::PyGetValue(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertySensor::PyGetValue()
{
ShowDeprecationWarning("getValue()", "the value property");
return PyString_FromString(m_checkpropval);
@@ -454,19 +448,19 @@ const char SCA_PropertySensor::SetValue_doc[] =
"\tSet the value with which the sensor operates. If the value\n"
"\tis not compatible with the type of the property, the subsequent\n"
"\t action is ignored.\n";
-PyObject* SCA_PropertySensor::PySetValue(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* SCA_PropertySensor::PySetValue(PyObject* args)
{
ShowDeprecationWarning("setValue()", "the value property");
/* Here, we need to check whether the value is 'valid' for this property.*/
/* We know that the property exists, or is NULL. */
char *propValArg = NULL;
- if(!PyArg_ParseTuple(args, "s", &propValArg)) {
+ if(!PyArg_ParseTuple(args, "s:setValue", &propValArg)) {
return NULL;
}
STR_String oldval = m_checkpropval;
m_checkpropval = propValArg;
- if (validValueForProperty(self, NULL)) {
+ if (validValueForProperty(m_proxy, NULL)) {
m_checkpropval = oldval;
return NULL;
}
diff --git a/source/gameengine/GameLogic/SCA_PropertySensor.h b/source/gameengine/GameLogic/SCA_PropertySensor.h
index 2594e3fca9d..e1e378a973c 100644
--- a/source/gameengine/GameLogic/SCA_PropertySensor.h
+++ b/source/gameengine/GameLogic/SCA_PropertySensor.h
@@ -89,21 +89,21 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. getType */
- KX_PYMETHOD_DOC(SCA_PropertySensor,GetType);
+ KX_PYMETHOD_DOC_NOARGS(SCA_PropertySensor,GetType);
/* 2. setType */
- KX_PYMETHOD_DOC(SCA_PropertySensor,SetType);
+ KX_PYMETHOD_DOC_VARARGS(SCA_PropertySensor,SetType);
/* 3. setProperty */
- KX_PYMETHOD_DOC(SCA_PropertySensor,SetProperty);
+ KX_PYMETHOD_DOC_VARARGS(SCA_PropertySensor,SetProperty);
/* 4. getProperty */
- KX_PYMETHOD_DOC(SCA_PropertySensor,GetProperty);
+ KX_PYMETHOD_DOC_NOARGS(SCA_PropertySensor,GetProperty);
/* 5. getValue */
- KX_PYMETHOD_DOC(SCA_PropertySensor,GetValue);
+ KX_PYMETHOD_DOC_NOARGS(SCA_PropertySensor,GetValue);
/* 6. setValue */
- KX_PYMETHOD_DOC(SCA_PropertySensor,SetValue);
+ KX_PYMETHOD_DOC_VARARGS(SCA_PropertySensor,SetValue);
/**
* Test whether this is a sensible value (type check)
*/
diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp
index c75e36acab2..b8052555528 100644
--- a/source/gameengine/GameLogic/SCA_PythonController.cpp
+++ b/source/gameengine/GameLogic/SCA_PythonController.cpp
@@ -154,10 +154,10 @@ int SCA_PythonController::IsTriggered(class SCA_ISensor* sensor)
static const char* sPyGetCurrentController__doc__;
#endif
-
-PyObject* SCA_PythonController::sPyGetCurrentController(PyObject* self)
+/* warning, self is not the SCA_PythonController, its a PyObjectPlus_Proxy */
+PyObject* SCA_PythonController::sPyGetCurrentController(PyObject *self)
{
- return m_sCurrentController->AddRef();
+ return m_sCurrentController->GetProxy();
}
SCA_IActuator* SCA_PythonController::LinkedActuatorFromPy(PyObject *value)
@@ -176,10 +176,10 @@ SCA_IActuator* SCA_PythonController::LinkedActuatorFromPy(PyObject *value)
}
}
}
- else {
- /* Expecting an actuator type */
+ else if (BGE_PROXY_CHECK_TYPE(value)) {
+ PyObjectPlus *value_plus= BGE_PROXY_REF(value); /* Expecting an actuator type */ // XXX TODO - CHECK TYPE
for(it = lacts.begin(); it!= lacts.end(); it++) {
- if( static_cast<SCA_IActuator*>(value) == (*it) ) {
+ if( static_cast<SCA_IActuator*>(value_plus) == (*it) ) {
return *it;
}
}
@@ -187,7 +187,7 @@ SCA_IActuator* SCA_PythonController::LinkedActuatorFromPy(PyObject *value)
/* set the exception */
PyObject *value_str = PyObject_Repr(value); /* new ref */
- PyErr_Format(PyExc_ValueError, "'%s' not in this controllers actuator list", PyString_AsString(value_str));
+ PyErr_Format(PyExc_ValueError, "'%s' not in this python controllers actuator list", PyString_AsString(value_str));
Py_DECREF(value_str);
return false;
@@ -197,15 +197,12 @@ SCA_IActuator* SCA_PythonController::LinkedActuatorFromPy(PyObject *value)
static const char* sPyAddActiveActuator__doc__;
#endif
-PyObject* SCA_PythonController::sPyAddActiveActuator(
-
- PyObject* self,
- PyObject* args)
+/* warning, self is not the SCA_PythonController, its a PyObjectPlus_Proxy */
+PyObject* SCA_PythonController::sPyAddActiveActuator(PyObject* self, PyObject* args)
{
-
PyObject* ob1;
int activate;
- if (!PyArg_ParseTuple(args, "Oi", &ob1,&activate))
+ if (!PyArg_ParseTuple(args, "Oi:addActiveActuator", &ob1,&activate))
return NULL;
SCA_IActuator* actu = LinkedActuatorFromPy(ob1);
@@ -224,22 +221,22 @@ const char* SCA_PythonController::sPyAddActiveActuator__doc__= "addActiveActuato
const char SCA_PythonController::GetActuators_doc[] = "getActuator";
PyTypeObject SCA_PythonController::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_PythonController",
- sizeof(SCA_PythonController),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_PythonController::Parents[] = {
@@ -265,6 +262,8 @@ PyMethodDef SCA_PythonController::Methods[] = {
};
PyAttributeDef SCA_PythonController::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("state", SCA_PythonController, pyattr_get_state),
+ KX_PYATTRIBUTE_RW_FUNCTION("script", SCA_PythonController, pyattr_get_script, pyattr_set_script),
{ NULL } //Sentinel
};
@@ -298,7 +297,7 @@ bool SCA_PythonController::Compile()
* their user count. Not to mention holding references to wrapped data.
* This is especially bad when the PyObject for the wrapped data is free'd, after blender
* has alredy dealocated the pointer */
- PySys_SetObject( (char *)"last_traceback", Py_None);
+ PySys_SetObject( (char *)"last_traceback", NULL);
PyErr_Clear(); /* just to be sure */
return false;
@@ -356,7 +355,7 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
* their user count. Not to mention holding references to wrapped data.
* This is especially bad when the PyObject for the wrapped data is free'd, after blender
* has alredy dealocated the pointer */
- PySys_SetObject( (char *)"last_traceback", Py_None);
+ PySys_SetObject( (char *)"last_traceback", NULL);
PyErr_Clear(); /* just to be sure */
//PyRun_SimpleString(m_scriptText.Ptr());
@@ -372,41 +371,17 @@ void SCA_PythonController::Trigger(SCA_LogicManager* logicmgr)
-PyObject* SCA_PythonController::_getattr(const char *attr)
+PyObject* SCA_PythonController::py_getattro(PyObject *attr)
{
- if (!strcmp(attr,"state")) {
- return PyInt_FromLong(m_statemask);
- }
- if (!strcmp(attr,"script")) {
- return PyString_FromString(m_scriptText);
- }
- _getattr_up(SCA_IController);
+ py_getattro_up(SCA_IController);
}
-int SCA_PythonController::_setattr(const char *attr, PyObject *value)
+int SCA_PythonController::py_setattro(PyObject *attr, PyObject *value)
{
- if (!strcmp(attr,"state")) {
- PyErr_SetString(PyExc_AttributeError, "state is read only");
- return 1;
- }
- if (!strcmp(attr,"script")) {
- char *scriptArg = PyString_AsString(value);
-
- if (scriptArg==NULL) {
- PyErr_SetString(PyExc_TypeError, "expected a string (script name)");
- return -1;
- }
-
- /* set scripttext sets m_bModified to true,
- so next time the script is needed, a reparse into byte code is done */
- this->SetScriptText(scriptArg);
-
- return 1;
- }
- return SCA_IController::_setattr(attr, value);
+ py_setattro_up(SCA_IController);
}
-PyObject* SCA_PythonController::PyActivate(PyObject* self, PyObject *value)
+PyObject* SCA_PythonController::PyActivate(PyObject *value)
{
SCA_IActuator* actu = LinkedActuatorFromPy(value);
if(actu==NULL)
@@ -418,7 +393,7 @@ PyObject* SCA_PythonController::PyActivate(PyObject* self, PyObject *value)
Py_RETURN_NONE;
}
-PyObject* SCA_PythonController::PyDeActivate(PyObject* self, PyObject *value)
+PyObject* SCA_PythonController::PyDeActivate(PyObject *value)
{
SCA_IActuator* actu = LinkedActuatorFromPy(value);
if(actu==NULL)
@@ -430,26 +405,26 @@ PyObject* SCA_PythonController::PyDeActivate(PyObject* self, PyObject *value)
Py_RETURN_NONE;
}
-PyObject* SCA_PythonController::PyGetActuators(PyObject* self)
+PyObject* SCA_PythonController::PyGetActuators()
{
PyObject* resultlist = PyList_New(m_linkedactuators.size());
for (unsigned int index=0;index<m_linkedactuators.size();index++)
{
- PyList_SET_ITEM(resultlist,index,m_linkedactuators[index]->AddRef());
+ PyList_SET_ITEM(resultlist,index, m_linkedactuators[index]->GetProxy());
}
return resultlist;
}
const char SCA_PythonController::GetSensor_doc[] =
-"GetSensor (char sensorname) return linked sensor that is named [sensorname]\n";
+"getSensor (char sensorname) return linked sensor that is named [sensorname]\n";
PyObject*
-SCA_PythonController::PyGetSensor(PyObject* self, PyObject* value)
+SCA_PythonController::PyGetSensor(PyObject* value)
{
char *scriptArg = PyString_AsString(value);
if (scriptArg==NULL) {
- PyErr_SetString(PyExc_TypeError, "expected a string (sensor name)");
+ PyErr_SetString(PyExc_TypeError, "controller.getSensor(string): Python Controller, expected a string (sensor name)");
return NULL;
}
@@ -459,27 +434,25 @@ SCA_PythonController::PyGetSensor(PyObject* self, PyObject* value)
STR_String realname = sensor->GetName();
if (realname == scriptArg)
{
- return sensor->AddRef();
+ return sensor->GetProxy();
}
}
- char emsg[96];
- PyOS_snprintf( emsg, sizeof( emsg ), "Unable to find requested sensor \"%s\"", scriptArg );
- PyErr_SetString(PyExc_AttributeError, emsg);
+ PyErr_Format(PyExc_AttributeError, "controller.getSensor(string): Python Controller, unable to find requested sensor \"%s\"", scriptArg);
return NULL;
}
const char SCA_PythonController::GetActuator_doc[] =
-"GetActuator (char sensorname) return linked actuator that is named [actuatorname]\n";
+"getActuator (char sensorname) return linked actuator that is named [actuatorname]\n";
PyObject*
-SCA_PythonController::PyGetActuator(PyObject* self, PyObject* value)
+SCA_PythonController::PyGetActuator(PyObject* value)
{
char *scriptArg = PyString_AsString(value);
if (scriptArg==NULL) {
- PyErr_SetString(PyExc_TypeError, "expected a string (actuator name)");
+ PyErr_SetString(PyExc_TypeError, "controller.getActuator(string): Python Controller, expected a string (actuator name)");
return NULL;
}
@@ -488,39 +461,37 @@ SCA_PythonController::PyGetActuator(PyObject* self, PyObject* value)
SCA_IActuator* actua = m_linkedactuators[index];
if (actua->GetName() == scriptArg)
{
- return actua->AddRef();
+ return actua->GetProxy();
}
}
- char emsg[96];
- PyOS_snprintf( emsg, sizeof( emsg ), "Unable to find requested actuator \"%s\"", scriptArg );
- PyErr_SetString(PyExc_AttributeError, emsg);
+ PyErr_Format(PyExc_AttributeError, "controller.getActuator(string): Python Controller, unable to find requested actuator \"%s\"", scriptArg);
return NULL;
}
const char SCA_PythonController::GetSensors_doc[] = "getSensors returns a list of all attached sensors";
PyObject*
-SCA_PythonController::PyGetSensors(PyObject* self)
+SCA_PythonController::PyGetSensors()
{
PyObject* resultlist = PyList_New(m_linkedsensors.size());
for (unsigned int index=0;index<m_linkedsensors.size();index++)
{
- PyList_SET_ITEM(resultlist,index,m_linkedsensors[index]->AddRef());
+ PyList_SET_ITEM(resultlist,index, m_linkedsensors[index]->GetProxy());
}
return resultlist;
}
/* 1. getScript */
-PyObject* SCA_PythonController::PyGetScript(PyObject* self)
+PyObject* SCA_PythonController::PyGetScript()
{
ShowDeprecationWarning("getScript()", "the script property");
return PyString_FromString(m_scriptText);
}
/* 2. setScript */
-PyObject* SCA_PythonController::PySetScript(PyObject* self, PyObject* value)
+PyObject* SCA_PythonController::PySetScript(PyObject* value)
{
char *scriptArg = PyString_AsString(value);
@@ -540,10 +511,41 @@ PyObject* SCA_PythonController::PySetScript(PyObject* self, PyObject* value)
}
/* 1. getScript */
-PyObject* SCA_PythonController::PyGetState(PyObject* self)
+PyObject* SCA_PythonController::PyGetState()
{
ShowDeprecationWarning("getState()", "the state property");
return PyInt_FromLong(m_statemask);
}
+PyObject* SCA_PythonController::pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
+ return PyInt_FromLong(self->m_statemask);
+}
+
+PyObject* SCA_PythonController::pyattr_get_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
+ return PyString_FromString(self->m_scriptText);
+}
+
+int SCA_PythonController::pyattr_set_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ SCA_PythonController* self= static_cast<SCA_PythonController*>(self_v);
+
+ char *scriptArg = PyString_AsString(value);
+
+ if (scriptArg==NULL) {
+ PyErr_SetString(PyExc_TypeError, "controller.script = string: Python Controller, expected a string script text");
+ return -1;
+ }
+
+ /* set scripttext sets m_bModified to true,
+ so next time the script is needed, a reparse into byte code is done */
+ self->SetScriptText(scriptArg);
+
+ return 0;
+}
+
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_PythonController.h b/source/gameengine/GameLogic/SCA_PythonController.h
index 4ec18f32c23..f10c4e47ebb 100644
--- a/source/gameengine/GameLogic/SCA_PythonController.h
+++ b/source/gameengine/GameLogic/SCA_PythonController.h
@@ -78,8 +78,8 @@ class SCA_PythonController : public SCA_IController
static PyObject* sPyAddActiveActuator(PyObject* self,
PyObject* args);
static SCA_IActuator* LinkedActuatorFromPy(PyObject *value);
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
KX_PYMETHOD_O(SCA_PythonController,Activate);
@@ -92,6 +92,10 @@ class SCA_PythonController : public SCA_IController
KX_PYMETHOD_NOARGS(SCA_PythonController,GetScript);
KX_PYMETHOD_NOARGS(SCA_PythonController,GetState);
+ static PyObject* pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_script(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
};
diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.cpp b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
index d6c73f21f37..3a72d9b7652 100644
--- a/source/gameengine/GameLogic/SCA_RandomActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
@@ -312,22 +312,22 @@ void SCA_RandomActuator::enforceConstraints() {
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_RandomActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_RandomActuator",
- sizeof(SCA_RandomActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_RandomActuator::Parents[] = {
@@ -341,23 +341,25 @@ PyParentObject SCA_RandomActuator::Parents[] = {
PyMethodDef SCA_RandomActuator::Methods[] = {
//Deprecated functions ------>
{"setSeed", (PyCFunction) SCA_RandomActuator::sPySetSeed, METH_VARARGS, (PY_METHODCHAR)SetSeed_doc},
- {"getSeed", (PyCFunction) SCA_RandomActuator::sPyGetSeed, METH_VARARGS, (PY_METHODCHAR)GetSeed_doc},
- {"getPara1", (PyCFunction) SCA_RandomActuator::sPyGetPara1, METH_VARARGS, (PY_METHODCHAR)GetPara1_doc},
- {"getPara2", (PyCFunction) SCA_RandomActuator::sPyGetPara2, METH_VARARGS, (PY_METHODCHAR)GetPara2_doc},
- {"getDistribution", (PyCFunction) SCA_RandomActuator::sPyGetDistribution, METH_VARARGS, (PY_METHODCHAR)GetDistribution_doc},
+ {"getSeed", (PyCFunction) SCA_RandomActuator::sPyGetSeed, METH_NOARGS, (PY_METHODCHAR)GetSeed_doc},
+ {"getPara1", (PyCFunction) SCA_RandomActuator::sPyGetPara1, METH_NOARGS, (PY_METHODCHAR)GetPara1_doc},
+ {"getPara2", (PyCFunction) SCA_RandomActuator::sPyGetPara2, METH_NOARGS, (PY_METHODCHAR)GetPara2_doc},
+ {"getDistribution", (PyCFunction) SCA_RandomActuator::sPyGetDistribution, METH_NOARGS, (PY_METHODCHAR)GetDistribution_doc},
{"setProperty", (PyCFunction) SCA_RandomActuator::sPySetProperty, METH_VARARGS, (PY_METHODCHAR)SetProperty_doc},
- {"getProperty", (PyCFunction) SCA_RandomActuator::sPyGetProperty, METH_VARARGS, (PY_METHODCHAR)GetProperty_doc},
+ {"getProperty", (PyCFunction) SCA_RandomActuator::sPyGetProperty, METH_NOARGS, (PY_METHODCHAR)GetProperty_doc},
//<----- Deprecated
- {"setBoolConst", (PyCFunction) SCA_RandomActuator::sPySetBoolConst, METH_VARARGS, (PY_METHODCHAR)SetBoolConst_doc},
- {"setBoolUniform", (PyCFunction) SCA_RandomActuator::sPySetBoolUniform, METH_VARARGS, (PY_METHODCHAR)SetBoolUniform_doc},
- {"setBoolBernouilli",(PyCFunction) SCA_RandomActuator::sPySetBoolBernouilli, METH_VARARGS, (PY_METHODCHAR)SetBoolBernouilli_doc},
- {"setIntConst", (PyCFunction) SCA_RandomActuator::sPySetIntConst, METH_VARARGS, (PY_METHODCHAR)SetIntConst_doc},
- {"setIntUniform", (PyCFunction) SCA_RandomActuator::sPySetIntUniform, METH_VARARGS, (PY_METHODCHAR)SetIntUniform_doc},
- {"setIntPoisson", (PyCFunction) SCA_RandomActuator::sPySetIntPoisson, METH_VARARGS, (PY_METHODCHAR)SetIntPoisson_doc},
- {"setFloatConst", (PyCFunction) SCA_RandomActuator::sPySetFloatConst, METH_VARARGS, (PY_METHODCHAR)SetFloatConst_doc},
- {"setFloatUniform", (PyCFunction) SCA_RandomActuator::sPySetFloatUniform, METH_VARARGS, (PY_METHODCHAR)SetFloatUniform_doc},
- {"setFloatNormal", (PyCFunction) SCA_RandomActuator::sPySetFloatNormal, METH_VARARGS, (PY_METHODCHAR)SetFloatNormal_doc},
- {"setFloatNegativeExponential", (PyCFunction) SCA_RandomActuator::sPySetFloatNegativeExponential, METH_VARARGS, (PY_METHODCHAR)SetFloatNegativeExponential_doc},
+ KX_PYMETHODTABLE(SCA_RandomActuator, setBoolConst),
+ KX_PYMETHODTABLE_NOARGS(SCA_RandomActuator, setBoolUniform),
+ KX_PYMETHODTABLE(SCA_RandomActuator, setBoolBernouilli),
+
+ KX_PYMETHODTABLE(SCA_RandomActuator, setIntConst),
+ KX_PYMETHODTABLE(SCA_RandomActuator, setIntUniform),
+ KX_PYMETHODTABLE(SCA_RandomActuator, setIntPoisson),
+
+ KX_PYMETHODTABLE(SCA_RandomActuator, setFloatConst),
+ KX_PYMETHODTABLE(SCA_RandomActuator, setFloatUniform),
+ KX_PYMETHODTABLE(SCA_RandomActuator, setFloatNormal),
+ KX_PYMETHODTABLE(SCA_RandomActuator, setFloatNegativeExponential),
{NULL,NULL} //Sentinel
};
@@ -366,35 +368,36 @@ PyAttributeDef SCA_RandomActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RO("para2",SCA_RandomActuator,m_parameter2),
KX_PYATTRIBUTE_ENUM_RO("distribution",SCA_RandomActuator,m_distribution),
KX_PYATTRIBUTE_STRING_RW_CHECK("property",0,100,false,SCA_RandomActuator,m_propname,CheckProperty),
+ KX_PYATTRIBUTE_RW_FUNCTION("seed",SCA_RandomActuator,pyattr_get_seed,pyattr_set_seed),
{ NULL } //Sentinel
};
-PyObject* SCA_RandomActuator::_getattr(const char *attr) {
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- if (!strcmp(attr, "seed")) {
- return PyInt_FromLong(m_base->GetSeed());
- }
- _getattr_up(SCA_IActuator);
+PyObject* SCA_RandomActuator::pyattr_get_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_RandomActuator* act = static_cast<SCA_RandomActuator*>(self);
+ return PyInt_FromLong(act->m_base->GetSeed());
}
-int SCA_RandomActuator::_setattr(const char *attr, PyObject *value)
+int SCA_RandomActuator::pyattr_set_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- if (!strcmp(attr, "seed")) {
- if (PyInt_Check(value)) {
- int ival = PyInt_AsLong(value);
- m_base->SetSeed(ival);
- return 0;
- } else {
- PyErr_SetString(PyExc_TypeError, "expected an integer");
- return 1;
- }
+ SCA_RandomActuator* act = static_cast<SCA_RandomActuator*>(self);
+ if (PyInt_Check(value)) {
+ int ival = PyInt_AsLong(value);
+ act->m_base->SetSeed(ival);
+ return 0;
+ } else {
+ PyErr_SetString(PyExc_TypeError, "actuator.seed = int: Random Actuator, expected an integer");
+ return 1;
}
- return SCA_IActuator::_setattr(attr, value);
+}
+
+PyObject* SCA_RandomActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
+}
+
+int SCA_RandomActuator::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_IActuator);
}
/* 1. setSeed */
@@ -404,10 +407,10 @@ const char SCA_RandomActuator::SetSeed_doc[] =
"\tSet the initial seed of the generator. Equal seeds produce\n"
"\tequal series. If the seed is 0, the generator will produce\n"
"\tthe same value on every call.\n";
-PyObject* SCA_RandomActuator::PySetSeed(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomActuator::PySetSeed(PyObject* args) {
ShowDeprecationWarning("setSeed()", "the seed property");
long seedArg;
- if(!PyArg_ParseTuple(args, "i", &seedArg)) {
+ if(!PyArg_ParseTuple(args, "i:setSeed", &seedArg)) {
return NULL;
}
@@ -420,7 +423,8 @@ const char SCA_RandomActuator::GetSeed_doc[] =
"getSeed()\n"
"\tReturns the initial seed of the generator. Equal seeds produce\n"
"\tequal series.\n";
-PyObject* SCA_RandomActuator::PyGetSeed(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomActuator::PyGetSeed()
+{
ShowDeprecationWarning("getSeed()", "the seed property");
return PyInt_FromLong(m_base->GetSeed());
}
@@ -431,7 +435,8 @@ const char SCA_RandomActuator::GetPara1_doc[] =
"\tReturns the first parameter of the active distribution. Refer\n"
"\tto the documentation of the generator types for the meaning\n"
"\tof this value.";
-PyObject* SCA_RandomActuator::PyGetPara1(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomActuator::PyGetPara1()
+{
ShowDeprecationWarning("getPara1()", "the para1 property");
return PyFloat_FromDouble(m_parameter1);
}
@@ -442,7 +447,8 @@ const char SCA_RandomActuator::GetPara2_doc[] =
"\tReturns the first parameter of the active distribution. Refer\n"
"\tto the documentation of the generator types for the meaning\n"
"\tof this value.";
-PyObject* SCA_RandomActuator::PyGetPara2(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomActuator::PyGetPara2()
+{
ShowDeprecationWarning("getPara2()", "the para2 property");
return PyFloat_FromDouble(m_parameter2);
}
@@ -451,7 +457,8 @@ PyObject* SCA_RandomActuator::PyGetPara2(PyObject* self, PyObject* args, PyObjec
const char SCA_RandomActuator::GetDistribution_doc[] =
"getDistribution()\n"
"\tReturns the type of the active distribution.\n";
-PyObject* SCA_RandomActuator::PyGetDistribution(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomActuator::PyGetDistribution()
+{
ShowDeprecationWarning("getDistribution()", "the distribution property");
return PyInt_FromLong(m_distribution);
}
@@ -462,10 +469,10 @@ const char SCA_RandomActuator::SetProperty_doc[] =
"\t- name: string\n"
"\tSet the property to which the random value is assigned. If the \n"
"\tgenerator and property types do not match, the assignment is ignored.\n";
-PyObject* SCA_RandomActuator::PySetProperty(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomActuator::PySetProperty(PyObject* args) {
ShowDeprecationWarning("setProperty()", "the 'property' property");
char *nameArg;
- if (!PyArg_ParseTuple(args, "s", &nameArg)) {
+ if (!PyArg_ParseTuple(args, "s:setProperty", &nameArg)) {
return NULL;
}
@@ -485,21 +492,20 @@ const char SCA_RandomActuator::GetProperty_doc[] =
"getProperty(name)\n"
"\tReturn the property to which the random value is assigned. If the \n"
"\tgenerator and property types do not match, the assignment is ignored.\n";
-PyObject* SCA_RandomActuator::PyGetProperty(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomActuator::PyGetProperty()
+{
ShowDeprecationWarning("getProperty()", "the 'property' property");
return PyString_FromString(m_propname);
}
/* 11. setBoolConst */
-const char SCA_RandomActuator::SetBoolConst_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setBoolConst,
"setBoolConst(value)\n"
"\t- value: 0 or 1\n"
-"\tSet this generator to produce a constant boolean value.\n";
-PyObject* SCA_RandomActuator::PySetBoolConst(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tSet this generator to produce a constant boolean value.\n")
+{
int paraArg;
- if(!PyArg_ParseTuple(args, "i", &paraArg)) {
+ if(!PyArg_ParseTuple(args, "i:setBoolConst", &paraArg)) {
return NULL;
}
@@ -509,27 +515,23 @@ PyObject* SCA_RandomActuator::PySetBoolConst(PyObject* self,
Py_RETURN_NONE;
}
/* 12. setBoolUniform, */
-const char SCA_RandomActuator::SetBoolUniform_doc[] =
+KX_PYMETHODDEF_DOC_NOARGS(SCA_RandomActuator, setBoolUniform,
"setBoolUniform()\n"
-"\tSet this generator to produce true and false, each with 50%% chance of occuring\n";
-PyObject* SCA_RandomActuator::PySetBoolUniform(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tSet this generator to produce true and false, each with 50%% chance of occuring\n")
+{
/* no args */
m_distribution = KX_RANDOMACT_BOOL_UNIFORM;
enforceConstraints();
Py_RETURN_NONE;
}
/* 13. setBoolBernouilli, */
-const char SCA_RandomActuator::SetBoolBernouilli_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setBoolBernouilli,
"setBoolBernouilli(value)\n"
"\t- value: a float between 0 and 1\n"
-"\tReturn false value * 100%% of the time.\n";
-PyObject* SCA_RandomActuator::PySetBoolBernouilli(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tReturn false value * 100%% of the time.\n")
+{
float paraArg;
- if(!PyArg_ParseTuple(args, "f", &paraArg)) {
+ if(!PyArg_ParseTuple(args, "f:setBoolBernouilli", &paraArg)) {
return NULL;
}
@@ -539,15 +541,13 @@ PyObject* SCA_RandomActuator::PySetBoolBernouilli(PyObject* self,
Py_RETURN_NONE;
}
/* 14. setIntConst,*/
-const char SCA_RandomActuator::SetIntConst_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setIntConst,
"setIntConst(value)\n"
"\t- value: integer\n"
-"\tAlways return value\n";
-PyObject* SCA_RandomActuator::PySetIntConst(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tAlways return value\n")
+{
int paraArg;
- if(!PyArg_ParseTuple(args, "i", &paraArg)) {
+ if(!PyArg_ParseTuple(args, "i:setIntConst", &paraArg)) {
return NULL;
}
@@ -557,17 +557,15 @@ PyObject* SCA_RandomActuator::PySetIntConst(PyObject* self,
Py_RETURN_NONE;
}
/* 15. setIntUniform,*/
-const char SCA_RandomActuator::SetIntUniform_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setIntUniform,
"setIntUniform(lower_bound, upper_bound)\n"
"\t- lower_bound: integer\n"
"\t- upper_bound: integer\n"
"\tReturn a random integer between lower_bound and\n"
-"\tupper_bound. The boundaries are included.\n";
-PyObject* SCA_RandomActuator::PySetIntUniform(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tupper_bound. The boundaries are included.\n")
+{
int paraArg1, paraArg2;
- if(!PyArg_ParseTuple(args, "ii", &paraArg1, &paraArg2)) {
+ if(!PyArg_ParseTuple(args, "ii:setIntUniform", &paraArg1, &paraArg2)) {
return NULL;
}
@@ -578,17 +576,15 @@ PyObject* SCA_RandomActuator::PySetIntUniform(PyObject* self,
Py_RETURN_NONE;
}
/* 16. setIntPoisson, */
-const char SCA_RandomActuator::SetIntPoisson_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setIntPoisson,
"setIntPoisson(value)\n"
"\t- value: float\n"
"\tReturn a Poisson-distributed number. This performs a series\n"
"\tof Bernouilli tests with parameter value. It returns the\n"
-"\tnumber of tries needed to achieve succes.\n";
-PyObject* SCA_RandomActuator::PySetIntPoisson(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tnumber of tries needed to achieve succes.\n")
+{
float paraArg;
- if(!PyArg_ParseTuple(args, "f", &paraArg)) {
+ if(!PyArg_ParseTuple(args, "f:setIntPoisson", &paraArg)) {
return NULL;
}
@@ -597,16 +593,14 @@ PyObject* SCA_RandomActuator::PySetIntPoisson(PyObject* self,
enforceConstraints();
Py_RETURN_NONE;
}
-/* 17. setFloatConst,*/
-const char SCA_RandomActuator::SetFloatConst_doc[] =
+/* 17. setFloatConst */
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setFloatConst,
"setFloatConst(value)\n"
"\t- value: float\n"
-"\tAlways return value\n";
-PyObject* SCA_RandomActuator::PySetFloatConst(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tAlways return value\n")
+{
float paraArg;
- if(!PyArg_ParseTuple(args, "f", &paraArg)) {
+ if(!PyArg_ParseTuple(args, "f:setFloatConst", &paraArg)) {
return NULL;
}
@@ -616,17 +610,15 @@ PyObject* SCA_RandomActuator::PySetFloatConst(PyObject* self,
Py_RETURN_NONE;
}
/* 18. setFloatUniform, */
-const char SCA_RandomActuator::SetFloatUniform_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setFloatUniform,
"setFloatUniform(lower_bound, upper_bound)\n"
"\t- lower_bound: float\n"
"\t- upper_bound: float\n"
"\tReturn a random integer between lower_bound and\n"
-"\tupper_bound.\n";
-PyObject* SCA_RandomActuator::PySetFloatUniform(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tupper_bound.\n")
+{
float paraArg1, paraArg2;
- if(!PyArg_ParseTuple(args, "ff", &paraArg1, &paraArg2)) {
+ if(!PyArg_ParseTuple(args, "ff:setFloatUniform", &paraArg1, &paraArg2)) {
return NULL;
}
@@ -637,17 +629,15 @@ PyObject* SCA_RandomActuator::PySetFloatUniform(PyObject* self,
Py_RETURN_NONE;
}
/* 19. setFloatNormal, */
-const char SCA_RandomActuator::SetFloatNormal_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setFloatNormal,
"setFloatNormal(mean, standard_deviation)\n"
"\t- mean: float\n"
"\t- standard_deviation: float\n"
"\tReturn normal-distributed numbers. The average is mean, and the\n"
-"\tdeviation from the mean is characterized by standard_deviation.\n";
-PyObject* SCA_RandomActuator::PySetFloatNormal(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tdeviation from the mean is characterized by standard_deviation.\n")
+{
float paraArg1, paraArg2;
- if(!PyArg_ParseTuple(args, "ff", &paraArg1, &paraArg2)) {
+ if(!PyArg_ParseTuple(args, "ff:setFloatNormal", &paraArg1, &paraArg2)) {
return NULL;
}
@@ -658,16 +648,14 @@ PyObject* SCA_RandomActuator::PySetFloatNormal(PyObject* self,
Py_RETURN_NONE;
}
/* 20. setFloatNegativeExponential, */
-const char SCA_RandomActuator::SetFloatNegativeExponential_doc[] =
+KX_PYMETHODDEF_DOC_VARARGS(SCA_RandomActuator, setFloatNegativeExponential,
"setFloatNegativeExponential(half_life)\n"
"\t- half_life: float\n"
"\tReturn negative-exponentially distributed numbers. The half-life 'time'\n"
-"\tis characterized by half_life.\n";
-PyObject* SCA_RandomActuator::PySetFloatNegativeExponential(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+"\tis characterized by half_life.\n")
+{
float paraArg;
- if(!PyArg_ParseTuple(args, "f", &paraArg)) {
+ if(!PyArg_ParseTuple(args, "f:setFloatNegativeExponential", &paraArg)) {
return NULL;
}
diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.h b/source/gameengine/GameLogic/SCA_RandomActuator.h
index 0d404fa8a9f..8f58ed0dcec 100644
--- a/source/gameengine/GameLogic/SCA_RandomActuator.h
+++ b/source/gameengine/GameLogic/SCA_RandomActuator.h
@@ -96,46 +96,32 @@ class SCA_RandomActuator : public SCA_IActuator
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
- /* 1. setSeed */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetSeed);
- /* 2. getSeed */
- KX_PYMETHOD_DOC(SCA_RandomActuator,GetSeed);
- /* 3. setPara1 -removed- */
- /* 4. getPara1 */
- KX_PYMETHOD_DOC(SCA_RandomActuator,GetPara1);
- /* 5. setPara2 -removed- */
- /* 6. getPara2 */
- KX_PYMETHOD_DOC(SCA_RandomActuator,GetPara2);
- /* 7. setDistribution -removed- */
- /* 8. getDistribution */
- KX_PYMETHOD_DOC(SCA_RandomActuator,GetDistribution);
- /* 9. setProperty */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetProperty);
- /* 10. getProperty */
- KX_PYMETHOD_DOC(SCA_RandomActuator,GetProperty);
- /* 11. setBoolConst */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetBoolConst);
- /* 12. setBoolUniform, */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetBoolUniform);
- /* 13. setBoolBernouilli, */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetBoolBernouilli);
- /* 14. setIntConst,*/
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetIntConst);
- /* 15. setIntUniform,*/
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetIntUniform);
- /* 16. setIntPoisson, */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetIntPoisson);
- /* 17. setFloatConst,*/
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatConst);
- /* 18. setFloatUniform, */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatUniform);
- /* 19. setFloatNormal, */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatNormal);
- /* 20. setFloatNegativeExponential, */
- KX_PYMETHOD_DOC(SCA_RandomActuator,SetFloatNegativeExponential);
+ static PyObject* pyattr_get_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_seed(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
+ // Deprecated methods ----->
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator,SetSeed);
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetSeed);
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetPara1);
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetPara2);
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetDistribution);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator,SetProperty);
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator,GetProperty);
+ // <-----
+
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setBoolConst);
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomActuator, setBoolUniform);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setBoolBernouilli);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setIntConst);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setIntUniform);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setIntPoisson);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatConst);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatUniform);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatNormal);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomActuator, setFloatNegativeExponential);
}; /* end of class KX_EditObjectActuator : public SCA_PropertyActuator */
#endif
diff --git a/source/gameengine/GameLogic/SCA_RandomSensor.cpp b/source/gameengine/GameLogic/SCA_RandomSensor.cpp
index 5354c120f52..5ead82db428 100644
--- a/source/gameengine/GameLogic/SCA_RandomSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomSensor.cpp
@@ -127,22 +127,22 @@ bool SCA_RandomSensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_RandomSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_RandomSensor",
- sizeof(SCA_RandomSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_RandomSensor::Parents[] = {
@@ -155,42 +155,24 @@ PyParentObject SCA_RandomSensor::Parents[] = {
PyMethodDef SCA_RandomSensor::Methods[] = {
{"setSeed", (PyCFunction) SCA_RandomSensor::sPySetSeed, METH_VARARGS, (PY_METHODCHAR)SetSeed_doc},
- {"getSeed", (PyCFunction) SCA_RandomSensor::sPyGetSeed, METH_VARARGS, (PY_METHODCHAR)GetSeed_doc},
- {"getLastDraw", (PyCFunction) SCA_RandomSensor::sPyGetLastDraw, METH_VARARGS, (PY_METHODCHAR)GetLastDraw_doc},
+ {"getSeed", (PyCFunction) SCA_RandomSensor::sPyGetSeed, METH_NOARGS, (PY_METHODCHAR)GetSeed_doc},
+ {"getLastDraw", (PyCFunction) SCA_RandomSensor::sPyGetLastDraw, METH_NOARGS, (PY_METHODCHAR)GetLastDraw_doc},
{NULL,NULL} //Sentinel
};
PyAttributeDef SCA_RandomSensor::Attributes[] = {
KX_PYATTRIBUTE_BOOL_RO("lastDraw",SCA_RandomSensor,m_lastdraw),
+ KX_PYATTRIBUTE_RW_FUNCTION("seed", SCA_RandomSensor, pyattr_get_seed, pyattr_set_seed),
{NULL} //Sentinel
};
-PyObject* SCA_RandomSensor::_getattr(const char *attr) {
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- if (!strcmp(attr,"seed")) {
- return PyInt_FromLong(m_basegenerator->GetSeed());
- }
- _getattr_up(SCA_ISensor);
+PyObject* SCA_RandomSensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_ISensor);
}
-int SCA_RandomSensor::_setattr(const char *attr, PyObject *value)
+int SCA_RandomSensor::py_setattro(PyObject *attr, PyObject *value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- if (!strcmp(attr,"seed")) {
- if (PyInt_Check(value)) {
- int ival = PyInt_AsLong(value);
- m_basegenerator->SetSeed(ival);
- return 0;
- } else {
- PyErr_SetString(PyExc_TypeError, "expected an integer");
- return 1;
- }
- }
- return SCA_ISensor::_setattr(attr, value);
+ py_setattro_up(SCA_ISensor);
}
/* 1. setSeed */
@@ -200,10 +182,10 @@ const char SCA_RandomSensor::SetSeed_doc[] =
"\tSet the initial seed of the generator. Equal seeds produce\n"
"\tequal series. If the seed is 0, the generator will produce\n"
"\tthe same value on every call.\n";
-PyObject* SCA_RandomSensor::PySetSeed(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomSensor::PySetSeed(PyObject* args) {
ShowDeprecationWarning("setSeed()", "the seed property");
long seedArg;
- if(!PyArg_ParseTuple(args, "i", &seedArg)) {
+ if(!PyArg_ParseTuple(args, "i:setSeed", &seedArg)) {
return NULL;
}
@@ -217,7 +199,7 @@ const char SCA_RandomSensor::GetSeed_doc[] =
"getSeed()\n"
"\tReturns the initial seed of the generator. Equal seeds produce\n"
"\tequal series.\n";
-PyObject* SCA_RandomSensor::PyGetSeed(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomSensor::PyGetSeed() {
ShowDeprecationWarning("getSeed()", "the seed property");
return PyInt_FromLong(m_basegenerator->GetSeed());
}
@@ -226,9 +208,27 @@ PyObject* SCA_RandomSensor::PyGetSeed(PyObject* self, PyObject* args, PyObject*
const char SCA_RandomSensor::GetLastDraw_doc[] =
"getLastDraw()\n"
"\tReturn the last value that was drawn.\n";
-PyObject* SCA_RandomSensor::PyGetLastDraw(PyObject* self, PyObject* args, PyObject* kwds) {
+PyObject* SCA_RandomSensor::PyGetLastDraw() {
ShowDeprecationWarning("getLastDraw()", "the lastDraw property");
return PyInt_FromLong(m_lastdraw);
}
+
+PyObject* SCA_RandomSensor::pyattr_get_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_RandomSensor* self= static_cast<SCA_RandomSensor*>(self_v);
+ return PyInt_FromLong(self->m_basegenerator->GetSeed());
+}
+
+int SCA_RandomSensor::pyattr_set_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ SCA_RandomSensor* self= static_cast<SCA_RandomSensor*>(self_v);
+ if (!PyInt_Check(value)) {
+ PyErr_SetString(PyExc_TypeError, "sensor.seed = int: Random Sensor, expected an integer");
+ return -1;
+ }
+ self->m_basegenerator->SetSeed(PyInt_AsLong(value));
+ return 0;
+}
+
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_RandomSensor.h b/source/gameengine/GameLogic/SCA_RandomSensor.h
index d808db07536..764692600c3 100644
--- a/source/gameengine/GameLogic/SCA_RandomSensor.h
+++ b/source/gameengine/GameLogic/SCA_RandomSensor.h
@@ -60,15 +60,18 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. setSeed */
- KX_PYMETHOD_DOC(SCA_RandomSensor,SetSeed);
+ KX_PYMETHOD_DOC_VARARGS(SCA_RandomSensor,SetSeed);
/* 2. getSeed */
- KX_PYMETHOD_DOC(SCA_RandomSensor,GetSeed);
- /* 3. getSeed */
- KX_PYMETHOD_DOC(SCA_RandomSensor,GetLastDraw);
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomSensor,GetSeed);
+ /* 3. getLastDraw */
+ KX_PYMETHOD_DOC_NOARGS(SCA_RandomSensor,GetLastDraw);
+
+ static PyObject* pyattr_get_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_seed(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
};
diff --git a/source/gameengine/GameLogic/SCA_XNORController.cpp b/source/gameengine/GameLogic/SCA_XNORController.cpp
index b2734dd1b33..e9bb37ee958 100644
--- a/source/gameengine/GameLogic/SCA_XNORController.cpp
+++ b/source/gameengine/GameLogic/SCA_XNORController.cpp
@@ -111,22 +111,22 @@ CValue* SCA_XNORController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_XNORController::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_XNORController",
- sizeof(SCA_XNORController),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_XNORController::Parents[] = {
@@ -145,8 +145,8 @@ PyAttributeDef SCA_XNORController::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_XNORController::_getattr(const char *attr) {
- _getattr_up(SCA_IController);
+PyObject* SCA_XNORController::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IController);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_XNORController.h b/source/gameengine/GameLogic/SCA_XNORController.h
index a431a72c177..c992d5f1834 100644
--- a/source/gameengine/GameLogic/SCA_XNORController.h
+++ b/source/gameengine/GameLogic/SCA_XNORController.h
@@ -48,7 +48,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
};
diff --git a/source/gameengine/GameLogic/SCA_XORController.cpp b/source/gameengine/GameLogic/SCA_XORController.cpp
index 662ef523d56..791a139975f 100644
--- a/source/gameengine/GameLogic/SCA_XORController.cpp
+++ b/source/gameengine/GameLogic/SCA_XORController.cpp
@@ -111,22 +111,22 @@ CValue* SCA_XORController::GetReplica()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject SCA_XORController::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"SCA_XORController",
- sizeof(SCA_XORController),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject SCA_XORController::Parents[] = {
@@ -145,8 +145,8 @@ PyAttributeDef SCA_XORController::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* SCA_XORController::_getattr(const char *attr) {
- _getattr_up(SCA_IController);
+PyObject* SCA_XORController::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IController);
}
/* eof */
diff --git a/source/gameengine/GameLogic/SCA_XORController.h b/source/gameengine/GameLogic/SCA_XORController.h
index 2fbc7866ecf..065b31fd901 100644
--- a/source/gameengine/GameLogic/SCA_XORController.h
+++ b/source/gameengine/GameLogic/SCA_XORController.h
@@ -48,7 +48,7 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
};
diff --git a/source/gameengine/GamePlayer/common/GPC_KeyboardDevice.cpp b/source/gameengine/GamePlayer/common/GPC_KeyboardDevice.cpp
index 474df9276a7..472ff580392 100644
--- a/source/gameengine/GamePlayer/common/GPC_KeyboardDevice.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_KeyboardDevice.cpp
@@ -42,7 +42,7 @@ void GPC_KeyboardDevice::NextFrame()
// Now convert justpressed key events into regular (active) keyevents
int previousTable = 1-m_currentTable;
- for (int keyevent= KX_BEGINKEY; keyevent< KX_ENDKEY;keyevent++)
+ for (int keyevent= KX_BEGINKEY; keyevent<= KX_ENDKEY;keyevent++)
{
SCA_InputEvent& oldevent = m_eventStatusTables[previousTable][keyevent];
if (oldevent.m_status == SCA_InputEvent::KX_JUSTACTIVATED ||
@@ -69,7 +69,7 @@ bool GPC_KeyboardDevice::ConvertEvent(int incode, int val)
KX_EnumInputs kxevent = this->ToNative(incode);
// only process it, if it's a key
- if (kxevent >= KX_BEGINKEY && kxevent < KX_ENDKEY)
+ if (kxevent >= KX_BEGINKEY && kxevent <= KX_ENDKEY)
{
int previousTable = 1-m_currentTable;
@@ -114,9 +114,7 @@ bool GPC_KeyboardDevice::ConvertEvent(int incode, int val)
}
}
}
- } else if(kxevent==KX_ENDKEY) {
- exit(1);
- }
+ }
return result;
}
diff --git a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
index c0d6248a3ca..eafdb8a96bb 100644
--- a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
@@ -29,6 +29,10 @@
#include "GL/glew.h"
+#include "BMF_Api.h"
+
+#include "DNA_scene_types.h"
+
#include "RAS_IRenderTools.h"
#include "RAS_IRasterizer.h"
#include "RAS_LightObject.h"
@@ -52,6 +56,7 @@
#include "GPC_RenderTools.h"
+
unsigned int GPC_RenderTools::m_numgllights;
GPC_RenderTools::GPC_RenderTools()
@@ -72,6 +77,7 @@ void GPC_RenderTools::BeginFrame(RAS_IRasterizer* rasty)
m_clientobject = NULL;
m_lastlightlayer = -1;
m_lastlighting = false;
+ m_lastauxinfo = NULL;
DisableOpenGLLights();
}
@@ -85,25 +91,27 @@ void GPC_RenderTools::EndFrame(RAS_IRasterizer* rasty)
* has a maximum of 8 lights (simultaneous), so 20 * 8 lights are possible in
* a scene. */
-void GPC_RenderTools::ProcessLighting(RAS_IRasterizer *rasty, int layer, const MT_Transform& viewmat)
+void GPC_RenderTools::ProcessLighting(RAS_IRasterizer *rasty, bool uselights, const MT_Transform& viewmat)
{
- if(m_lastlightlayer == layer)
- return;
+ bool enable = false;
+ int layer= -1;
- m_lastlightlayer = layer;
+ /* find the layer */
+ if(uselights) {
+ if(m_clientobject)
+ layer = static_cast<KX_GameObject*>(m_clientobject)->GetLayer();
+ }
- bool enable = false;
+ /* avoid state switching */
+ if(m_lastlightlayer == layer && m_lastauxinfo == m_auxilaryClientInfo)
+ return;
- if (layer >= 0)
- {
- if (m_clientobject)
- {
- if (layer == RAS_LIGHT_OBJECT_LAYER)
- layer = static_cast<KX_GameObject*>(m_clientobject)->GetLayer();
+ m_lastlightlayer = layer;
+ m_lastauxinfo = m_auxilaryClientInfo;
- enable = applyLights(layer, viewmat);
- }
- }
+ /* enable/disable lights as needed */
+ if(layer >= 0)
+ enable = applyLights(layer, viewmat);
if(enable)
EnableOpenGLLights(rasty);
@@ -306,28 +314,19 @@ void GPC_RenderTools::RenderText2D(RAS_TEXT_RENDER_MODE mode,
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
-
- // Actual drawing
- unsigned char colors[2][3] = {
- {0x00, 0x00, 0x00},
- {0xFF, 0xFF, 0xFF}
- };
- int numTimes = mode == RAS_TEXT_PADDED ? 2 : 1;
- for (int i = 0; i < numTimes; i++) {
- glColor3ub(colors[i][0], colors[i][1], colors[i][2]);
- glRasterPos2i(xco, yco);
- for (p = s, lines = 0; *p; p++) {
- if (*p == '\n')
- {
- lines++;
- glRasterPos2i(xco, yco-(lines*18));
- }
- BMF_DrawCharacter(m_font, *p);
- }
- xco += 1;
- yco += 1;
+
+ // Actual drawing (draw black first if padded)
+ if (mode == RAS_IRenderTools::RAS_TEXT_PADDED)
+ {
+ glColor3ub(0, 0, 0);
+ glRasterPos2s(xco+1, height-yco-1);
+ BMF_DrawString(m_font, s);
}
+ glColor3ub(255, 255, 255);
+ glRasterPos2s(xco, height-yco);
+ BMF_DrawString(m_font, s);
+
// Restore view settings
glMatrixMode(GL_PROJECTION);
glPopMatrix();
@@ -392,11 +391,16 @@ void GPC_RenderTools::PopMatrix()
int GPC_RenderTools::applyLights(int objectlayer, const MT_Transform& viewmat)
{
// taken from blender source, incompatibility between Blender Object / GameObject
+ KX_Scene* kxscene = (KX_Scene*)m_auxilaryClientInfo;
+ int scenelayer = ~0;
float glviewmat[16];
unsigned int count;
float vec[4];
vec[3]= 1.0;
+
+ if(kxscene && kxscene->GetBlenderScene())
+ scenelayer = kxscene->GetBlenderScene()->lay;
for(count=0; count<m_numgllights; count++)
glDisable((GLenum)(GL_LIGHT0+count));
@@ -411,71 +415,77 @@ int GPC_RenderTools::applyLights(int objectlayer, const MT_Transform& viewmat)
for (lit = m_lights.begin(), count = 0; !(lit==m_lights.end()) && count < m_numgllights; ++lit)
{
RAS_LightObject* lightdata = (*lit);
- if (lightdata->m_layer & objectlayer)
- {
- vec[0] = (*(lightdata->m_worldmatrix))(0,3);
- vec[1] = (*(lightdata->m_worldmatrix))(1,3);
- vec[2] = (*(lightdata->m_worldmatrix))(2,3);
- vec[3] = 1;
+ KX_Scene* lightscene = (KX_Scene*)lightdata->m_scene;
- if(lightdata->m_type==RAS_LightObject::LIGHT_SUN) {
-
- vec[0] = (*(lightdata->m_worldmatrix))(0,2);
- vec[1] = (*(lightdata->m_worldmatrix))(1,2);
- vec[2] = (*(lightdata->m_worldmatrix))(2,2);
- //vec[0]= base->object->obmat[2][0];
- //vec[1]= base->object->obmat[2][1];
- //vec[2]= base->object->obmat[2][2];
- vec[3]= 0.0;
- glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
- }
- else {
- //vec[3]= 1.0;
- glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
- glLightf((GLenum)(GL_LIGHT0+count), GL_CONSTANT_ATTENUATION, 1.0);
- glLightf((GLenum)(GL_LIGHT0+count), GL_LINEAR_ATTENUATION, lightdata->m_att1/lightdata->m_distance);
- // without this next line it looks backward compatible.
- //attennuation still is acceptable
- glLightf((GLenum)(GL_LIGHT0+count), GL_QUADRATIC_ATTENUATION, lightdata->m_att2/(lightdata->m_distance*lightdata->m_distance));
-
- if(lightdata->m_type==RAS_LightObject::LIGHT_SPOT) {
- vec[0] = -(*(lightdata->m_worldmatrix))(0,2);
- vec[1] = -(*(lightdata->m_worldmatrix))(1,2);
- vec[2] = -(*(lightdata->m_worldmatrix))(2,2);
- //vec[0]= -base->object->obmat[2][0];
- //vec[1]= -base->object->obmat[2][1];
- //vec[2]= -base->object->obmat[2][2];
- glLightfv((GLenum)(GL_LIGHT0+count), GL_SPOT_DIRECTION, vec);
- glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, lightdata->m_spotsize/2.0);
- glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_EXPONENT, 128.0*lightdata->m_spotblend);
- }
- else glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, 180.0);
- }
+ /* only use lights in the same layer as the object */
+ if(!(lightdata->m_layer & objectlayer))
+ continue;
+ /* only use lights in the same scene, and in a visible layer */
+ if(kxscene != lightscene || !(lightdata->m_layer & scenelayer))
+ continue;
+
+ vec[0] = (*(lightdata->m_worldmatrix))(0,3);
+ vec[1] = (*(lightdata->m_worldmatrix))(1,3);
+ vec[2] = (*(lightdata->m_worldmatrix))(2,3);
+ vec[3] = 1;
+
+ if(lightdata->m_type==RAS_LightObject::LIGHT_SUN) {
- if (lightdata->m_nodiffuse)
- {
- vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
- } else {
- vec[0]= lightdata->m_energy*lightdata->m_red;
- vec[1]= lightdata->m_energy*lightdata->m_green;
- vec[2]= lightdata->m_energy*lightdata->m_blue;
- vec[3]= 1.0;
- }
- glLightfv((GLenum)(GL_LIGHT0+count), GL_DIFFUSE, vec);
- if (lightdata->m_nospecular)
- {
- vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
- } else if (lightdata->m_nodiffuse) {
- vec[0]= lightdata->m_energy*lightdata->m_red;
- vec[1]= lightdata->m_energy*lightdata->m_green;
- vec[2]= lightdata->m_energy*lightdata->m_blue;
- vec[3]= 1.0;
+ vec[0] = (*(lightdata->m_worldmatrix))(0,2);
+ vec[1] = (*(lightdata->m_worldmatrix))(1,2);
+ vec[2] = (*(lightdata->m_worldmatrix))(2,2);
+ //vec[0]= base->object->obmat[2][0];
+ //vec[1]= base->object->obmat[2][1];
+ //vec[2]= base->object->obmat[2][2];
+ vec[3]= 0.0;
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
+ }
+ else {
+ //vec[3]= 1.0;
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_POSITION, vec);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_CONSTANT_ATTENUATION, 1.0);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_LINEAR_ATTENUATION, lightdata->m_att1/lightdata->m_distance);
+ // without this next line it looks backward compatible.
+ //attennuation still is acceptable
+ glLightf((GLenum)(GL_LIGHT0+count), GL_QUADRATIC_ATTENUATION, lightdata->m_att2/(lightdata->m_distance*lightdata->m_distance));
+
+ if(lightdata->m_type==RAS_LightObject::LIGHT_SPOT) {
+ vec[0] = -(*(lightdata->m_worldmatrix))(0,2);
+ vec[1] = -(*(lightdata->m_worldmatrix))(1,2);
+ vec[2] = -(*(lightdata->m_worldmatrix))(2,2);
+ //vec[0]= -base->object->obmat[2][0];
+ //vec[1]= -base->object->obmat[2][1];
+ //vec[2]= -base->object->obmat[2][2];
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_SPOT_DIRECTION, vec);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, lightdata->m_spotsize/2.0);
+ glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_EXPONENT, 128.0*lightdata->m_spotblend);
}
- glLightfv((GLenum)(GL_LIGHT0+count), GL_SPECULAR, vec);
- glEnable((GLenum)(GL_LIGHT0+count));
-
- count++;
+ else glLightf((GLenum)(GL_LIGHT0+count), GL_SPOT_CUTOFF, 180.0);
+ }
+
+ if (lightdata->m_nodiffuse)
+ {
+ vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
+ } else {
+ vec[0]= lightdata->m_energy*lightdata->m_red;
+ vec[1]= lightdata->m_energy*lightdata->m_green;
+ vec[2]= lightdata->m_energy*lightdata->m_blue;
+ vec[3]= 1.0;
}
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_DIFFUSE, vec);
+ if (lightdata->m_nospecular)
+ {
+ vec[0] = vec[1] = vec[2] = vec[3] = 0.0;
+ } else if (lightdata->m_nodiffuse) {
+ vec[0]= lightdata->m_energy*lightdata->m_red;
+ vec[1]= lightdata->m_energy*lightdata->m_green;
+ vec[2]= lightdata->m_energy*lightdata->m_blue;
+ vec[3]= 1.0;
+ }
+ glLightfv((GLenum)(GL_LIGHT0+count), GL_SPECULAR, vec);
+ glEnable((GLenum)(GL_LIGHT0+count));
+
+ count++;
}
glPopMatrix();
diff --git a/source/gameengine/GamePlayer/common/GPC_RenderTools.h b/source/gameengine/GamePlayer/common/GPC_RenderTools.h
index 2a1b66a3aa9..316860a7d43 100644
--- a/source/gameengine/GamePlayer/common/GPC_RenderTools.h
+++ b/source/gameengine/GamePlayer/common/GPC_RenderTools.h
@@ -54,6 +54,7 @@ class GPC_RenderTools : public RAS_IRenderTools
{
int m_lastlightlayer;
bool m_lastlighting;
+ void *m_lastauxinfo;
static unsigned int m_numgllights;
BMF_Font* m_font;
@@ -67,7 +68,7 @@ public:
void EnableOpenGLLights(RAS_IRasterizer *rasty);
void DisableOpenGLLights();
- void ProcessLighting(RAS_IRasterizer *rasty, int layer, const MT_Transform& viewmat);
+ void ProcessLighting(RAS_IRasterizer *rasty, bool uselights, const MT_Transform& viewmat);
/* @attention mode is ignored here */
void RenderText2D(RAS_TEXT_RENDER_MODE mode,
diff --git a/source/gameengine/GamePlayer/common/windows/Makefile b/source/gameengine/GamePlayer/common/windows/Makefile
index b0fb25f35b8..f35642f9651 100644
--- a/source/gameengine/GamePlayer/common/windows/Makefile
+++ b/source/gameengine/GamePlayer/common/windows/Makefile
@@ -50,6 +50,7 @@ CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_BMFONT)/include
CPPFLAGS += -I$(NAN_SOUNDSYSTEM)/include
+CPPFLAGS += -I$(NAN_GLEW)/include
# Blender stuff
CPPFLAGS += -I$(SRCHOME)/blender/blenkernel
diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
index 81a0f1f4e99..109ed3790ff 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
@@ -151,7 +151,7 @@ GPG_Application::~GPG_Application(void)
-bool GPG_Application::SetGameEngineData(struct Main* maggie, Scene *scene)
+bool GPG_Application::SetGameEngineData(struct Main* maggie, Scene *scene, int argc, char **argv)
{
bool result = false;
@@ -163,6 +163,10 @@ bool GPG_Application::SetGameEngineData(struct Main* maggie, Scene *scene)
m_startScene = scene;
result = true;
}
+
+ /* Python needs these */
+ m_argc= argc;
+ m_argv= argv;
return result;
}
@@ -208,7 +212,7 @@ static LRESULT CALLBACK screenSaverWindowProc(HWND hwnd, UINT uMsg, WPARAM wPara
BOOL CALLBACK findGhostWindowHWNDProc(HWND hwnd, LPARAM lParam)
{
- GHOST_IWindow *p = (GHOST_IWindow*) GetWindowLong(hwnd, GWL_USERDATA);
+ GHOST_IWindow *p = (GHOST_IWindow*) GetWindowLongPtr(hwnd, GWLP_USERDATA);
BOOL ret = TRUE;
if (p == ghost_window_to_find)
{
@@ -292,8 +296,8 @@ bool GPG_Application::startScreenSaverFullScreen(
if (ghost_hwnd != NULL)
{
GetCursorPos(&scr_save_mouse_pos);
- ghost_wnd_proc = (WNDPROC) GetWindowLong(ghost_hwnd, GWL_WNDPROC);
- SetWindowLong(ghost_hwnd,GWL_WNDPROC, (LONG) screenSaverWindowProc);
+ ghost_wnd_proc = (WNDPROC) GetWindowLongPtr(ghost_hwnd, GWLP_WNDPROC);
+ SetWindowLongPtr(ghost_hwnd,GWLP_WNDPROC, (uintptr_t) screenSaverWindowProc);
}
}
return ret;
@@ -530,7 +534,7 @@ bool GPG_Application::initEngine(GHOST_IWindow* window, const int stereoMode)
bool fixed_framerate= (SYS_GetCommandLineInt(syshandle, "fixed_framerate", fixedFr) != 0);
bool frameRate = (SYS_GetCommandLineInt(syshandle, "show_framerate", 0) != 0);
bool useLists = (SYS_GetCommandLineInt(syshandle, "displaylists", G.fileflags & G_FILE_DISPLAY_LISTS) != 0);
- bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 0) != 0);
+ bool nodepwarnings = (SYS_GetCommandLineInt(syshandle, "ignore_deprecation_warnings", 1) != 0);
if(GLEW_ARB_multitexture && GLEW_VERSION_1_1)
m_blendermat = (SYS_GetCommandLineInt(syshandle, "blender_material", 1) != 0);
@@ -681,7 +685,7 @@ bool GPG_Application::startEngine(void)
// some python things
- PyObject* dictionaryobject = initGamePlayerPythonScripting("Ketsji", psl_Lowest);
+ PyObject* dictionaryobject = initGamePlayerPythonScripting("Ketsji", psl_Lowest, m_maggie, m_argc, m_argv);
m_ketsjiengine->SetPythonDictionary(dictionaryobject);
initRasterizer(m_rasterizer, m_canvas);
PyObject *gameLogic = initGameLogic(m_ketsjiengine, startscene);
@@ -689,9 +693,15 @@ bool GPG_Application::startEngine(void)
initGameKeys();
initPythonConstraintBinding();
initMathutils();
+ initBGL();
#ifdef WITH_FFMPEG
initVideoTexture();
#endif
+
+ //initialize Dome Settings
+ if(m_startScene->r.stereomode == RAS_IRasterizer::RAS_STEREO_DOME)
+ m_ketsjiengine->InitDome(m_startScene->r.domesize, m_startScene->r.domeres, m_startScene->r.domemode, m_startScene->r.domeangle, m_startScene->r.domeresbuf, m_startScene->r.dometext);
+
// Set the GameLogic.globalDict from marshal'd data, so we can
// load new blend files and keep data in GameLogic.globalDict
loadGamePythonConfig(m_pyGlobalDictString, m_pyGlobalDictString_Length);
diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.h b/source/gameengine/GamePlayer/ghost/GPG_Application.h
index 38408f919b4..845686f5770 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_Application.h
+++ b/source/gameengine/GamePlayer/ghost/GPG_Application.h
@@ -58,7 +58,7 @@ public:
GPG_Application(GHOST_ISystem* system);
~GPG_Application(void);
- bool SetGameEngineData(struct Main* maggie, struct Scene* scene);
+ bool SetGameEngineData(struct Main* maggie, struct Scene* scene, int argc, char** argv);
bool startWindow(STR_String& title, int windowLeft, int windowTop, int windowWidth, int windowHeight,
const bool stereoVisual, const int stereoMode);
bool startFullScreen(int width, int height, int bpp, int frequency, const bool stereoVisual, const int stereoMode);
@@ -154,5 +154,9 @@ protected:
*/
char* m_pyGlobalDictString;
int m_pyGlobalDictString_Length;
+
+ /* argc and argv need to be passed on to python */
+ int m_argc;
+ char** m_argv;
};
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index d993694ab4a..97b21d13e90 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -205,7 +205,9 @@ void usage(const char* program)
printf(" show_properties 0 Show debug properties\n");
printf(" show_profile 0 Show profiling information\n");
printf(" blender_material 0 Enable material settings\n");
- printf(" ignore_deprecation_warnings 0 Ignore deprecation warnings\n");
+ printf(" ignore_deprecation_warnings 1 Ignore deprecation warnings\n");
+ printf("\n");
+ printf(" - : all arguments after this are ignored, allowing python to access them from sys.argv\n");
printf("\n");
printf("example: %s -w 320 200 10 10 -g noaudio c:\\loadtest.blend\n", program);
printf("example: %s -g show_framerate = 0 c:\\loadtest.blend\n", program);
@@ -292,6 +294,7 @@ static BlendFileData *load_game_data(char *progname, char *filename = NULL, char
int main(int argc, char** argv)
{
int i;
+ int argc_py_clamped= argc; /* use this so python args can be added after ' - ' */
bool error = false;
SYS_SystemHandle syshandle = SYS_GetSystem();
bool fullScreen = false;
@@ -392,6 +395,12 @@ int main(int argc, char** argv)
#endif
if (argv[i][0] == '-')
{
+ /* ignore all args after " - ", allow python to have own args */
+ if (argv[i][1]=='\0') {
+ argc_py_clamped= i;
+ break;
+ }
+
switch (argv[i][1])
{
case 'g':
@@ -595,7 +604,7 @@ int main(int argc, char** argv)
char pathname[FILE_MAXDIR + FILE_MAXFILE];
char *titlename;
- get_filename(argc, argv, filename);
+ get_filename(argc_py_clamped, argv, filename);
if(filename[0])
BLI_convertstringcwd(filename);
@@ -690,7 +699,7 @@ int main(int argc, char** argv)
}
// GPG_Application app (system, maggie, startscenename);
- app.SetGameEngineData(maggie, scene);
+ app.SetGameEngineData(maggie, scene, argc, argv); /* this argc cant be argc_py_clamped, since python uses it */
BLI_strncpy(pathname, maggie->name, sizeof(pathname));
BLI_strncpy(G.sce, maggie->name, sizeof(G.sce));
diff --git a/source/gameengine/Ketsji/BL_BlenderShader.cpp b/source/gameengine/Ketsji/BL_BlenderShader.cpp
index 8ec463be6ff..3df483b0598 100644
--- a/source/gameengine/Ketsji/BL_BlenderShader.cpp
+++ b/source/gameengine/Ketsji/BL_BlenderShader.cpp
@@ -52,7 +52,7 @@ void BL_BlenderShader::SetProg(bool enable, double time)
{
if(VerifyShader()) {
if(enable)
- GPU_material_bind(GPU_material_from_blender(mBlenderScene, mMat), mLightLayer, ~0, time);
+ GPU_material_bind(GPU_material_from_blender(mBlenderScene, mMat), mLightLayer, mBlenderScene->lay, time);
else
GPU_material_unbind(GPU_material_from_blender(mBlenderScene, mMat));
}
diff --git a/source/gameengine/Ketsji/BL_Shader.cpp b/source/gameengine/Ketsji/BL_Shader.cpp
index 60cb288436a..88d920043e0 100644
--- a/source/gameengine/Ketsji/BL_Shader.cpp
+++ b/source/gameengine/Ketsji/BL_Shader.cpp
@@ -729,9 +729,9 @@ void BL_Shader::SetUniform(int uniform, const int* val, int len)
}
-PyObject* BL_Shader::_getattr(const char *attr)
+PyObject* BL_Shader::py_getattro(PyObject *attr)
{
- _getattr_up(PyObjectPlus);
+ py_getattro_up(PyObjectPlus);
}
@@ -772,24 +772,28 @@ PyAttributeDef BL_Shader::Attributes[] = {
};
PyTypeObject BL_Shader::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"BL_Shader",
- sizeof(BL_Shader),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
0,
- __repr,
- 0
+ 0,
+ 0,
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject BL_Shader::Parents[] = {
- &PyObjectPlus::Type,
&BL_Shader::Type,
+ &PyObjectPlus::Type,
NULL
};
@@ -803,7 +807,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setSource," setSource(vertexProgram, fragmentProg
}
char *v,*f;
int apply=0;
- if( PyArg_ParseTuple(args, "ssi", &v, &f, &apply) )
+ if( PyArg_ParseTuple(args, "ssi:setSource", &v, &f, &apply) )
{
vertProg = v;
fragProg = f;
@@ -854,7 +858,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, validate, "validate()")
Py_RETURN_NONE;
}
if(mShader==0) {
- PyErr_Format(PyExc_TypeError, "invalid shader object");
+ PyErr_SetString(PyExc_TypeError, "shader.validate(): BL_Shader, invalid shader object");
return NULL;
}
int stat = 0;
@@ -886,7 +890,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setSampler, "setSampler(name, index)" )
const char *uniform="";
int index=-1;
- if(PyArg_ParseTuple(args, "si", &uniform, &index))
+ if(PyArg_ParseTuple(args, "si:setSampler", &uniform, &index))
{
int loc = GetUniformLocation(uniform);
if(loc != -1) {
@@ -911,7 +915,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setSampler, "setSampler(name, index)" )
KX_PYMETHODDEF_DOC( BL_Shader, setNumberOfPasses, "setNumberOfPasses( max-pass )" )
{
int pass = 1;
- if(!PyArg_ParseTuple(args, "i", &pass))
+ if(!PyArg_ParseTuple(args, "i:setNumberOfPasses", &pass))
return NULL;
mPass = 1;
@@ -927,7 +931,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform1f, "setUniform1f(name, fx)" )
const char *uniform="";
float value=0;
- if(PyArg_ParseTuple(args, "sf", &uniform, &value ))
+ if(PyArg_ParseTuple(args, "sf:setUniform1f", &uniform, &value ))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -951,7 +955,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform2f , "setUniform2f(name, fx, fy)")
}
const char *uniform="";
float array[2]={ 0,0 };
- if(PyArg_ParseTuple(args, "sff", &uniform, &array[0],&array[1] ))
+ if(PyArg_ParseTuple(args, "sff:setUniform2f", &uniform, &array[0],&array[1] ))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -975,7 +979,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform3f, "setUniform3f(name, fx,fy,fz) ")
}
const char *uniform="";
float array[3]={0,0,0};
- if(PyArg_ParseTuple(args, "sfff", &uniform, &array[0],&array[1],&array[2]))
+ if(PyArg_ParseTuple(args, "sfff:setUniform3f", &uniform, &array[0],&array[1],&array[2]))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -1000,7 +1004,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform4f, "setUniform4f(name, fx,fy,fz, fw) "
}
const char *uniform="";
float array[4]={0,0,0,0};
- if(PyArg_ParseTuple(args, "sffff", &uniform, &array[0],&array[1],&array[2], &array[3]))
+ if(PyArg_ParseTuple(args, "sffff:setUniform4f", &uniform, &array[0],&array[1],&array[2], &array[3]))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -1024,7 +1028,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform1i, "setUniform1i(name, ix)" )
}
const char *uniform="";
int value=0;
- if(PyArg_ParseTuple(args, "si", &uniform, &value ))
+ if(PyArg_ParseTuple(args, "si:setUniform1i", &uniform, &value ))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -1048,7 +1052,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform2i , "setUniform2i(name, ix, iy)")
}
const char *uniform="";
int array[2]={ 0,0 };
- if(PyArg_ParseTuple(args, "sii", &uniform, &array[0],&array[1] ))
+ if(PyArg_ParseTuple(args, "sii:setUniform2i", &uniform, &array[0],&array[1] ))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -1073,7 +1077,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform3i, "setUniform3i(name, ix,iy,iz) ")
const char *uniform="";
int array[3]={0,0,0};
- if(PyArg_ParseTuple(args, "siii", &uniform, &array[0],&array[1],&array[2]))
+ if(PyArg_ParseTuple(args, "siii:setUniform3i", &uniform, &array[0],&array[1],&array[2]))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -1096,7 +1100,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform4i, "setUniform4i(name, ix,iy,iz, iw) "
}
const char *uniform="";
int array[4]={0,0,0, 0};
- if(PyArg_ParseTuple(args, "siiii", &uniform, &array[0],&array[1],&array[2], &array[3] ))
+ if(PyArg_ParseTuple(args, "siiii:setUniform4i", &uniform, &array[0],&array[1],&array[2], &array[3] ))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -1121,7 +1125,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformfv , "setUniformfv( float (list2 or lis
PyObject *listPtr =0;
float array_data[4] = {0.f,0.f,0.f,0.f};
- if(PyArg_ParseTuple(args, "sO", &uniform, &listPtr))
+ if(PyArg_ParseTuple(args, "sO:setUniformfv", &uniform, &listPtr))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
@@ -1171,7 +1175,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformfv , "setUniformfv( float (list2 or lis
}break;
default:
{
- PyErr_Format(PyExc_TypeError, "Invalid list size");
+ PyErr_SetString(PyExc_TypeError, "shader.setUniform4i(name, ix,iy,iz, iw): BL_Shader. invalid list size");
return NULL;
}break;
}
@@ -1181,7 +1185,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformfv , "setUniformfv( float (list2 or lis
return NULL;
}
-KX_PYMETHODDEF_DOC( BL_Shader, setUniformiv, "setUniformiv( int (list2 or list3 or list4) )")
+KX_PYMETHODDEF_DOC( BL_Shader, setUniformiv, "setUniformiv( uniform_name, (list2 or list3 or list4) )")
{
if(mError) {
Py_RETURN_NONE;
@@ -1190,70 +1194,84 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformiv, "setUniformiv( int (list2 or list3
PyObject *listPtr =0;
int array_data[4] = {0,0,0,0};
- if(PyArg_ParseTuple(args, "sO", &uniform, &listPtr))
+ if(!PyArg_ParseTuple(args, "sO:setUniformiv", &uniform, &listPtr))
+ return NULL;
+
+ int loc = GetUniformLocation(uniform);
+
+ if(loc == -1) {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformiv(...): BL_Shader, first string argument is not a valid uniform value");
+ return NULL;
+ }
+
+ if(!PySequence_Check(listPtr)) {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformiv(...): BL_Shader, second argument is not a sequence");
+ return NULL;
+ }
+
+ unsigned int list_size = PySequence_Size(listPtr);
+
+ for(unsigned int i=0; (i<list_size && i<4); i++)
{
- int loc = GetUniformLocation(uniform);
- if(loc != -1)
+ PyObject *item = PySequence_GetItem(listPtr, i);
+ array_data[i] = PyInt_AsLong(item);
+ Py_DECREF(item);
+ }
+
+ if(PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformiv(...): BL_Shader, one or more values in the list is not an int");
+ return NULL;
+ }
+
+ /* Sanity checks done! */
+
+ switch(list_size)
+ {
+ case 2:
{
- if(PySequence_Check(listPtr))
- {
- unsigned int list_size = PySequence_Size(listPtr);
-
- for(unsigned int i=0; (i<list_size && i<4); i++)
- {
- PyObject *item = PySequence_GetItem(listPtr, i);
- array_data[i] = PyInt_AsLong(item);
- Py_DECREF(item);
- }
- switch(list_size)
- {
- case 2:
- {
- int array2[2] = { array_data[0],array_data[1]};
+ int array2[2] = { array_data[0],array_data[1]};
#ifdef SORT_UNIFORMS
- SetUniformiv(loc, BL_Uniform::UNI_INT2, array2, sizeof(int)*2);
+ SetUniformiv(loc, BL_Uniform::UNI_INT2, array2, sizeof(int)*2);
#else
- SetUniform(loc, array2, 2);
+ SetUniform(loc, array2, 2);
#endif
- Py_RETURN_NONE;
- } break;
- case 3:
- {
- int array3[3] = { array_data[0],array_data[1],array_data[2] };
+ Py_RETURN_NONE;
+ } break;
+ case 3:
+ {
+ int array3[3] = { array_data[0],array_data[1],array_data[2] };
#ifdef SORT_UNIFORMS
- SetUniformiv(loc, BL_Uniform::UNI_INT3, array3, sizeof(int)*3);
-
+ SetUniformiv(loc, BL_Uniform::UNI_INT3, array3, sizeof(int)*3);
+
#else
- SetUniform(loc, array3, 3);
+ SetUniform(loc, array3, 3);
#endif
- Py_RETURN_NONE;
- }break;
- case 4:
- {
- int array4[4] = { array_data[0],array_data[1],array_data[2],array_data[3] };
+ Py_RETURN_NONE;
+ }break;
+ case 4:
+ {
+ int array4[4] = { array_data[0],array_data[1],array_data[2],array_data[3] };
#ifdef SORT_UNIFORMS
- SetUniformiv(loc, BL_Uniform::UNI_INT4, array4, sizeof(int)*4);
-
+ SetUniformiv(loc, BL_Uniform::UNI_INT4, array4, sizeof(int)*4);
+
#else
- SetUniform(loc, array4, 4);
+ SetUniform(loc, array4, 4);
#endif
- Py_RETURN_NONE;
- }break;
- default:
- {
- PyErr_Format(PyExc_TypeError, "Invalid list size");
- return NULL;
- }break;
- }
- }
- }
+ Py_RETURN_NONE;
+ }break;
+ default:
+ {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformiv(...): BL_Shader, second argument, invalid list size, expected an int list between 2 and 4");
+ return NULL;
+ }break;
}
- return NULL;
+
+ Py_RETURN_NONE;
}
KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix4,
-"setUniformMatrix4(uniform-name, mat-4x4, transpose(row-major=true, col-major=false)" )
+"setUniformMatrix4(uniform_name, mat-4x4, transpose(row-major=true, col-major=false)" )
{
if(mError) {
Py_RETURN_NONE;
@@ -1269,33 +1287,38 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix4,
const char *uniform="";
PyObject *matrix=0;
int transp=1; // MT_ is row major so transpose by default....
- if(PyArg_ParseTuple(args, "sO|i",&uniform, &matrix,&transp))
- {
- int loc = GetUniformLocation(uniform);
- if(loc != -1)
- {
- if (PyObject_IsMT_Matrix(matrix, 4))
- {
- MT_Matrix4x4 mat;
- if (PyMatTo(matrix, mat))
- {
+
+ if(!PyArg_ParseTuple(args, "sO|i:setUniformMatrix4",&uniform, &matrix,&transp))
+ return NULL;
+
+ int loc = GetUniformLocation(uniform);
+
+ if(loc == -1) {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformMatrix4(...): BL_Shader, first string argument is not a valid uniform value");
+ return NULL;
+ }
+
+ MT_Matrix4x4 mat;
+
+ if (!PyMatTo(matrix, mat)) {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformMatrix4(...): BL_Shader, second argument cannot be converted into a 4x4 matrix");
+ return NULL;
+ }
+
+ /* Sanity checks done! */
+
#ifdef SORT_UNIFORMS
- mat.getValue(matr);
- SetUniformfv(loc, BL_Uniform::UNI_MAT4, matr, (sizeof(float)*16), (transp!=0) );
+ mat.getValue(matr);
+ SetUniformfv(loc, BL_Uniform::UNI_MAT4, matr, (sizeof(float)*16), (transp!=0) );
#else
- SetUniform(loc,mat,(transp!=0));
+ SetUniform(loc,mat,(transp!=0));
#endif
- Py_RETURN_NONE;
- }
- }
- }
- }
- return NULL;
+ Py_RETURN_NONE;
}
KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix3,
-"setUniformMatrix3(uniform-name, list[3x3], transpose(row-major=true, col-major=false)" )
+"setUniformMatrix3(uniform_name, list[3x3], transpose(row-major=true, col-major=false)" )
{
if(mError) {
Py_RETURN_NONE;
@@ -1310,29 +1333,32 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix3,
const char *uniform="";
PyObject *matrix=0;
int transp=1; // MT_ is row major so transpose by default....
- if(PyArg_ParseTuple(args, "sO|i",&uniform, &matrix,&transp))
- {
- int loc = GetUniformLocation(uniform);
- if(loc != -1)
- {
- if (PyObject_IsMT_Matrix(matrix, 3))
- {
- MT_Matrix3x3 mat;
- if (PyMatTo(matrix, mat))
- {
+ if(!PyArg_ParseTuple(args, "sO|i:setUniformMatrix3",&uniform, &matrix,&transp))
+ return NULL;
+
+ int loc = GetUniformLocation(uniform);
+
+ if(loc == -1) {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformMatrix3(...): BL_Shader, first string argument is not a valid uniform value");
+ return NULL;
+ }
+
+
+ MT_Matrix3x3 mat;
+
+ if (!PyMatTo(matrix, mat)) {
+ PyErr_SetString(PyExc_TypeError, "shader.setUniformMatrix3(...): BL_Shader, second argument cannot be converted into a 3x3 matrix");
+ return NULL;
+ }
+
+
#ifdef SORT_UNIFORMS
- mat.getValue(matr);
- SetUniformfv(loc, BL_Uniform::UNI_MAT3, matr, (sizeof(float)*9), (transp!=0) );
+ mat.getValue(matr);
+ SetUniformfv(loc, BL_Uniform::UNI_MAT3, matr, (sizeof(float)*9), (transp!=0) );
#else
- SetUniform(loc,mat,(transp!=0));
+ SetUniform(loc,mat,(transp!=0));
#endif
- Py_RETURN_NONE;
-
- }
- }
- }
- }
- return NULL;
+ Py_RETURN_NONE;
}
KX_PYMETHODDEF_DOC( BL_Shader, setAttrib, "setAttrib(enum)" )
@@ -1340,18 +1366,20 @@ KX_PYMETHODDEF_DOC( BL_Shader, setAttrib, "setAttrib(enum)" )
if(mError) {
Py_RETURN_NONE;
}
+
int attr=0;
- if(PyArg_ParseTuple(args, "i", &attr )) {
- if(mShader==0) {
- PyErr_Format(PyExc_ValueError, "invalid shader object");
- return NULL;
- }
- mAttr=SHD_TANGENT;
- glUseProgramObjectARB(mShader);
- glBindAttribLocationARB(mShader, mAttr, "Tangent");
- Py_RETURN_NONE;
+
+ if(!PyArg_ParseTuple(args, "i:setAttrib", &attr ))
+ return NULL;
+
+ if(mShader==0) {
+ PyErr_SetString(PyExc_ValueError, "shader.setAttrib() BL_Shader, invalid shader object");
+ return NULL;
}
- return NULL;
+ mAttr=SHD_TANGENT; /* What the heck is going on here - attr is just ignored??? - Campbell */
+ glUseProgramObjectARB(mShader);
+ glBindAttribLocationARB(mShader, mAttr, "Tangent");
+ Py_RETURN_NONE;
}
@@ -1363,7 +1391,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformDef, "setUniformDef(name, enum)" )
const char *uniform="";
int nloc=0;
- if(PyArg_ParseTuple(args, "si",&uniform, &nloc))
+ if(PyArg_ParseTuple(args, "si:setUniformDef",&uniform, &nloc))
{
int loc = GetUniformLocation(uniform);
if(loc != -1)
diff --git a/source/gameengine/Ketsji/BL_Shader.h b/source/gameengine/Ketsji/BL_Shader.h
index 76acd5513ef..08cad5071fd 100644
--- a/source/gameengine/Ketsji/BL_Shader.h
+++ b/source/gameengine/Ketsji/BL_Shader.h
@@ -202,7 +202,8 @@ public:
void SetUniform(int uniform, const int val);
// Python interface
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual PyObject* py_repr(void) { return PyString_FromFormat("BL_Shader\n\tvertex shader:%s\n\n\tfragment shader%s\n\n", vertProg, fragProg); }
// -----------------------------------
KX_PYMETHOD_DOC( BL_Shader, setSource );
diff --git a/source/gameengine/Ketsji/CMakeLists.txt b/source/gameengine/Ketsji/CMakeLists.txt
index d054894589f..73d7191ffde 100644
--- a/source/gameengine/Ketsji/CMakeLists.txt
+++ b/source/gameengine/Ketsji/CMakeLists.txt
@@ -37,6 +37,8 @@ FILE(GLOB SRC *.cpp)
# ../../../source/blender/python/api2_2x/point.c
# ../../../source/blender/python/api2_2x/quat.c
# ../../../source/blender/python/api2_2x/vector.c
+# ../../../source/blender/python/api2_2x/bpy_internal_import.c
+# ../../../source/blender/python/api2_2x/BGL.c
#)
SET(INC
@@ -68,7 +70,7 @@ SET(INC
../../../source/gameengine/Physics/Sumo
../../../source/gameengine/Physics/Sumo/Fuzzics/include
../../../source/gameengine/Network/LoopBackNetwork
- ../../../intern/SoundSystem
+ ../../../intern/SoundSystem
../../../source/blender/misc
../../../source/blender/blenloader
../../../source/blender/gpu
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
index 4e5f27df2da..2483a6bfb39 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.cpp
@@ -47,7 +47,7 @@ KX_NetworkMessageActuator::KX_NetworkMessageActuator(
m_networkscene(networkscene),
m_toPropName(toPropName),
m_subject(subject),
- m_bodyType(bodyType),
+ m_bPropBody(bodyType),
m_body(body)
{
}
@@ -69,7 +69,7 @@ bool KX_NetworkMessageActuator::Update()
}
//printf("messageactuator true event\n");
- if (m_bodyType == 1) // ACT_MESG_PROP in DNA_actuator_types.h
+ if (m_bPropBody) // ACT_MESG_PROP in DNA_actuator_types.h
{
m_networkscene->SendMessage(
m_toPropName,
@@ -105,22 +105,22 @@ CValue* KX_NetworkMessageActuator::GetReplica()
/* Integration hooks -------------------------------------------------- */
PyTypeObject KX_NetworkMessageActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_NetworkMessageActuator",
- sizeof(KX_NetworkMessageActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_NetworkMessageActuator::Parents[] = {
@@ -132,6 +132,7 @@ PyParentObject KX_NetworkMessageActuator::Parents[] = {
};
PyMethodDef KX_NetworkMessageActuator::Methods[] = {
+ // Deprecated ----->
{"setToPropName", (PyCFunction)
KX_NetworkMessageActuator::sPySetToPropName, METH_VARARGS},
{"setSubject", (PyCFunction)
@@ -140,26 +141,36 @@ PyMethodDef KX_NetworkMessageActuator::Methods[] = {
KX_NetworkMessageActuator::sPySetBodyType, METH_VARARGS},
{"setBody", (PyCFunction)
KX_NetworkMessageActuator::sPySetBody, METH_VARARGS},
+ // <-----
{NULL,NULL} // Sentinel
};
PyAttributeDef KX_NetworkMessageActuator::Attributes[] = {
+ KX_PYATTRIBUTE_STRING_RW("propName", 0, 100, false, KX_NetworkMessageActuator, m_toPropName),
+ KX_PYATTRIBUTE_STRING_RW("subject", 0, 100, false, KX_NetworkMessageActuator, m_subject),
+ KX_PYATTRIBUTE_BOOL_RW("usePropBody", KX_NetworkMessageActuator, m_bPropBody),
+ KX_PYATTRIBUTE_STRING_RW("body", 0, 100, false, KX_NetworkMessageActuator, m_body),
{ NULL } //Sentinel
};
-PyObject* KX_NetworkMessageActuator::_getattr(const char *attr) {
- _getattr_up(SCA_IActuator);
+PyObject* KX_NetworkMessageActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
}
+int KX_NetworkMessageActuator::py_setattro(PyObject *attr, PyObject *value) {
+ py_setattro_up(SCA_IActuator);
+}
+
+// Deprecated ----->
// 1. SetToPropName
PyObject* KX_NetworkMessageActuator::PySetToPropName(
- PyObject* self,
PyObject* args,
PyObject* kwds)
{
+ ShowDeprecationWarning("setToProp()", "the propName property");
char* ToPropName;
- if (PyArg_ParseTuple(args, "s", &ToPropName)) {
+ if (PyArg_ParseTuple(args, "s:setToPropName", &ToPropName)) {
m_toPropName = ToPropName;
}
else {
@@ -171,13 +182,13 @@ PyObject* KX_NetworkMessageActuator::PySetToPropName(
// 2. SetSubject
PyObject* KX_NetworkMessageActuator::PySetSubject(
- PyObject* self,
PyObject* args,
PyObject* kwds)
{
+ ShowDeprecationWarning("setSubject()", "the subject property");
char* Subject;
- if (PyArg_ParseTuple(args, "s", &Subject)) {
+ if (PyArg_ParseTuple(args, "s:setSubject", &Subject)) {
m_subject = Subject;
}
else {
@@ -189,14 +200,14 @@ PyObject* KX_NetworkMessageActuator::PySetSubject(
// 3. SetBodyType
PyObject* KX_NetworkMessageActuator::PySetBodyType(
- PyObject* self,
PyObject* args,
PyObject* kwds)
{
+ ShowDeprecationWarning("setBodyType()", "the usePropBody property");
int BodyType;
- if (PyArg_ParseTuple(args, "i", &BodyType)) {
- m_bodyType = BodyType;
+ if (PyArg_ParseTuple(args, "i:setBodyType", &BodyType)) {
+ m_bPropBody = (BodyType != 0);
}
else {
return NULL;
@@ -207,13 +218,13 @@ PyObject* KX_NetworkMessageActuator::PySetBodyType(
// 4. SetBody
PyObject* KX_NetworkMessageActuator::PySetBody(
- PyObject* self,
PyObject* args,
PyObject* kwds)
{
+ ShowDeprecationWarning("setBody()", "the body property");
char* Body;
- if (PyArg_ParseTuple(args, "s", &Body)) {
+ if (PyArg_ParseTuple(args, "s:setBody", &Body)) {
m_body = Body;
}
else {
@@ -223,3 +234,4 @@ PyObject* KX_NetworkMessageActuator::PySetBody(
Py_RETURN_NONE;
}
+// <----- Deprecated \ No newline at end of file
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
index 96b55ef839b..850f825b8f3 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageActuator.h
@@ -41,7 +41,7 @@ class KX_NetworkMessageActuator : public SCA_IActuator
class NG_NetworkScene* m_networkscene; // needed for replication
STR_String m_toPropName;
STR_String m_subject;
- int m_bodyType;
+ bool m_bPropBody;
STR_String m_body;
public:
KX_NetworkMessageActuator(
@@ -61,12 +61,15 @@ public:
/* Python interface ------------------------------------------- */
/* ------------------------------------------------------------ */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+ // Deprecated ----->
KX_PYMETHOD(KX_NetworkMessageActuator, SetToPropName);
KX_PYMETHOD(KX_NetworkMessageActuator, SetSubject);
KX_PYMETHOD(KX_NetworkMessageActuator, SetBodyType);
KX_PYMETHOD(KX_NetworkMessageActuator, SetBody);
+ // <-----
};
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
index ac89d8b0716..7782567943e 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.cpp
@@ -168,22 +168,22 @@ bool KX_NetworkMessageSensor::IsPositiveTrigger()
/* Integration hooks --------------------------------------------------- */
PyTypeObject KX_NetworkMessageSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_NetworkMessageSensor",
- sizeof(KX_NetworkMessageSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_NetworkMessageSensor::Parents[] = {
@@ -195,6 +195,7 @@ PyParentObject KX_NetworkMessageSensor::Parents[] = {
};
PyMethodDef KX_NetworkMessageSensor::Methods[] = {
+ // Deprecated ----->
{"setSubjectFilterText", (PyCFunction)
KX_NetworkMessageSensor::sPySetSubjectFilterText, METH_O,
(PY_METHODCHAR)SetSubjectFilterText_doc},
@@ -210,27 +211,58 @@ PyMethodDef KX_NetworkMessageSensor::Methods[] = {
{"getSubjects", (PyCFunction)
KX_NetworkMessageSensor::sPyGetSubjects, METH_NOARGS,
(PY_METHODCHAR)GetSubjects_doc},
+ // <-----
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_NetworkMessageSensor::Attributes[] = {
+ KX_PYATTRIBUTE_STRING_RW("subject", 0, 100, false, KX_NetworkMessageSensor, m_subject),
+ KX_PYATTRIBUTE_INT_RO("frameMessageCount", KX_NetworkMessageSensor, m_frame_message_count),
+ KX_PYATTRIBUTE_RO_FUNCTION("bodies", KX_NetworkMessageSensor, pyattr_get_bodies),
+ KX_PYATTRIBUTE_RO_FUNCTION("subjects", KX_NetworkMessageSensor, pyattr_get_subjects),
{ NULL } //Sentinel
};
-PyObject* KX_NetworkMessageSensor::_getattr(const char *attr) {
- _getattr_up(SCA_ISensor); // implicit return!
+PyObject* KX_NetworkMessageSensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_ISensor);
}
+int KX_NetworkMessageSensor::py_setattro(PyObject *attr, PyObject *value) {
+ return SCA_ISensor::py_setattro(attr, value);
+}
+
+PyObject* KX_NetworkMessageSensor::pyattr_get_bodies(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_NetworkMessageSensor *self = static_cast<KX_NetworkMessageSensor*>(self_v);
+ if (self->m_BodyList) {
+ return self->m_BodyList->GetProxy();
+ } else {
+ return (new CListValue())->NewProxy(true);
+ }
+}
+
+PyObject* KX_NetworkMessageSensor::pyattr_get_subjects(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_NetworkMessageSensor *self = static_cast<KX_NetworkMessageSensor*>(self_v);
+ if (self->m_SubjectList) {
+ return self->m_SubjectList->GetProxy();
+ } else {
+ return (new CListValue())->NewProxy(true);
+ }
+}
+
+// Deprecated ----->
// 1. Set the message subject that this sensor listens for
const char KX_NetworkMessageSensor::SetSubjectFilterText_doc[] =
"\tsetSubjectFilterText(value)\n"
"\tChange the message subject text that this sensor is listening to.\n";
-PyObject* KX_NetworkMessageSensor::PySetSubjectFilterText( PyObject* self, PyObject* value)
+PyObject* KX_NetworkMessageSensor::PySetSubjectFilterText(PyObject* value)
{
+ ShowDeprecationWarning("setSubjectFilterText()", "subject");
char* Subject = PyString_AsString(value);
if (Subject==NULL) {
- PyErr_SetString(PyExc_TypeError, "expected a string message");
+ PyErr_SetString(PyExc_TypeError, "sensor.tsetSubjectFilterText(string): KX_NetworkMessageSensor, expected a string message");
return NULL;
}
@@ -243,8 +275,9 @@ const char KX_NetworkMessageSensor::GetFrameMessageCount_doc[] =
"\tgetFrameMessageCount()\n"
"\tGet the number of messages received since the last frame.\n";
-PyObject* KX_NetworkMessageSensor::PyGetFrameMessageCount( PyObject* )
+PyObject* KX_NetworkMessageSensor::PyGetFrameMessageCount()
{
+ ShowDeprecationWarning("getFrameMessageCount()", "frameMessageCount");
return PyInt_FromLong(long(m_frame_message_count));
}
@@ -253,12 +286,13 @@ const char KX_NetworkMessageSensor::GetBodies_doc[] =
"\tgetBodies()\n"
"\tGet the list of message bodies.\n";
-PyObject* KX_NetworkMessageSensor::PyGetBodies( PyObject* )
+PyObject* KX_NetworkMessageSensor::PyGetBodies()
{
+ ShowDeprecationWarning("getBodies()", "bodies");
if (m_BodyList) {
- return ((PyObject*) m_BodyList->AddRef());
+ return m_BodyList->GetProxy();
} else {
- return ((PyObject*) new CListValue());
+ return (new CListValue())->NewProxy(true);
}
}
@@ -267,8 +301,9 @@ const char KX_NetworkMessageSensor::GetSubject_doc[] =
"\tgetSubject()\n"
"\tGet the subject: field of the message sensor.\n";
-PyObject* KX_NetworkMessageSensor::PyGetSubject( PyObject* )
+PyObject* KX_NetworkMessageSensor::PyGetSubject()
{
+ ShowDeprecationWarning("getSubject()", "subject");
return PyString_FromString(m_subject ? m_subject : "");
}
@@ -277,11 +312,13 @@ const char KX_NetworkMessageSensor::GetSubjects_doc[] =
"\tgetSubjects()\n"
"\tGet list of message subjects.\n";
-PyObject* KX_NetworkMessageSensor::PyGetSubjects( PyObject* )
+PyObject* KX_NetworkMessageSensor::PyGetSubjects()
{
+ ShowDeprecationWarning("getSubjects()", "subjects");
if (m_SubjectList) {
- return ((PyObject*) m_SubjectList->AddRef());
+ return m_SubjectList->GetProxy();
} else {
- return ((PyObject*) new CListValue());
+ return (new CListValue())->NewProxy(true);
}
}
+// <----- Deprecated \ No newline at end of file
diff --git a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
index 26adbc9945a..ac0e880d25c 100644
--- a/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
+++ b/source/gameengine/Ketsji/KXNetwork/KX_NetworkMessageSensor.h
@@ -72,14 +72,20 @@ public:
/* Python interface -------------------------------------------- */
/* ------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+ // Deprecated ----->
KX_PYMETHOD_DOC_O(KX_NetworkMessageSensor, SetSubjectFilterText);
KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetFrameMessageCount);
KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetBodies);
KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetSubject);
KX_PYMETHOD_DOC_NOARGS(KX_NetworkMessageSensor, GetSubjects);
+ // <-----
+ /* attributes */
+ static PyObject* pyattr_get_bodies(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_subjects(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
};
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index b9bd7647f89..849332008ce 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -753,36 +753,40 @@ PyAttributeDef KX_BlenderMaterial::Attributes[] = {
};
PyTypeObject KX_BlenderMaterial::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_BlenderMaterial",
- sizeof(KX_BlenderMaterial),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
0,
- __repr,
- 0
+ 0,
+ 0,
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_BlenderMaterial::Parents[] = {
- &PyObjectPlus::Type,
&KX_BlenderMaterial::Type,
+ &PyObjectPlus::Type,
NULL
};
-PyObject* KX_BlenderMaterial::_getattr(const char *attr)
+PyObject* KX_BlenderMaterial::py_getattro(PyObject *attr)
{
- _getattr_up(PyObjectPlus);
+ py_getattro_up(PyObjectPlus);
}
-int KX_BlenderMaterial::_setattr(const char *attr, PyObject *pyvalue)
+int KX_BlenderMaterial::py_setattro(PyObject *attr, PyObject *pyvalue)
{
- return PyObjectPlus::_setattr(attr, pyvalue);
+ return PyObjectPlus::py_setattro(attr, pyvalue);
}
@@ -823,8 +827,7 @@ KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
m_flag &= ~RAS_BLENDERGLSL;
mMaterial->SetSharedMaterial(true);
mScene->GetBucketManager()->ReleaseDisplayLists(this);
- Py_INCREF(mShader);
- return mShader;
+ return mShader->GetProxy();
}else
{
// decref all references to the object
@@ -832,18 +835,13 @@ KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
// We will then go back to fixed functionality
// for this material
if(mShader) {
- if(mShader->ob_refcnt > 1) {
- Py_DECREF(mShader);
- }
- else {
- delete mShader;
- mShader=0;
- }
+ delete mShader; /* will handle python de-referencing */
+ mShader=0;
}
}
Py_RETURN_NONE;
}
- PyErr_Format(PyExc_ValueError, "GLSL Error");
+ PyErr_SetString(PyExc_ValueError, "material.getShader(): KX_BlenderMaterial, GLSL Error");
return NULL;
}
@@ -893,7 +891,7 @@ static unsigned int GL_array[11] = {
KX_PYMETHODDEF_DOC( KX_BlenderMaterial, setBlending , "setBlending( GameLogic.src, GameLogic.dest)")
{
unsigned int b[2];
- if(PyArg_ParseTuple(args, "ii", &b[0], &b[1]))
+ if(PyArg_ParseTuple(args, "ii:setBlending", &b[0], &b[1]))
{
bool value_found[2] = {false, false};
for(int i=0; i<11; i++)
@@ -909,7 +907,7 @@ KX_PYMETHODDEF_DOC( KX_BlenderMaterial, setBlending , "setBlending( GameLogic.sr
if(value_found[0] && value_found[1]) break;
}
if(!value_found[0] || !value_found[1]) {
- PyErr_Format(PyExc_ValueError, "invalid enum.");
+ PyErr_SetString(PyExc_ValueError, "material.setBlending(int, int): KX_BlenderMaterial, invalid enum.");
return NULL;
}
mUserDefBlend = true;
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h
index 2cf623dbd85..48d4730ab07 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.h
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h
@@ -82,8 +82,9 @@ public:
);
// --------------------------------
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *pyvalue);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
+ virtual PyObject* py_repr(void) { return PyString_FromString(mMaterial->matname.ReadPtr()); }
KX_PYMETHOD_DOC( KX_BlenderMaterial, getShader );
KX_PYMETHOD_DOC( KX_BlenderMaterial, getMaterialIndex );
diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
index 062e9f7df50..831f9241fec 100644
--- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
+++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
@@ -59,6 +59,24 @@ void KX_BulletPhysicsController::applyImpulse(const MT_Point3& attach, const MT_
}
+float KX_BulletPhysicsController::GetLinVelocityMin()
+{
+ return (float)CcdPhysicsController::GetLinVelocityMin();
+}
+void KX_BulletPhysicsController::SetLinVelocityMin(float val)
+{
+ CcdPhysicsController::SetLinVelocityMin(val);
+}
+
+float KX_BulletPhysicsController::GetLinVelocityMax()
+{
+ return (float)CcdPhysicsController::GetLinVelocityMax();
+}
+void KX_BulletPhysicsController::SetLinVelocityMax(float val)
+{
+ CcdPhysicsController::SetLinVelocityMax(val);
+}
+
void KX_BulletPhysicsController::SetObject (SG_IObject* object)
{
SG_Controller::SetObject(object);
@@ -73,6 +91,10 @@ void KX_BulletPhysicsController::SetObject (SG_IObject* object)
}
+MT_Scalar KX_BulletPhysicsController::GetRadius()
+{
+ return MT_Scalar(CcdPhysicsController::GetRadius());
+}
void KX_BulletPhysicsController::setMargin (float collisionMargin)
{
@@ -162,9 +184,18 @@ MT_Scalar KX_BulletPhysicsController::GetMass()
}
-MT_Scalar KX_BulletPhysicsController::GetRadius()
+MT_Vector3 KX_BulletPhysicsController::GetLocalInertia()
{
- return MT_Scalar(CcdPhysicsController::GetRadius());
+ MT_Vector3 inertia(0.f, 0.f, 0.f);
+ btVector3 inv_inertia;
+ if (GetRigidBody()) {
+ inv_inertia = GetRigidBody()->getInvInertiaDiagLocal();
+ if (!btFuzzyZero(inv_inertia.getX()) &&
+ !btFuzzyZero(inv_inertia.getY()) &&
+ !btFuzzyZero(inv_inertia.getZ()))
+ inertia = MT_Vector3(1.f/inv_inertia.getX(), 1.f/inv_inertia.getY(), 1.f/inv_inertia.getZ());
+ }
+ return inertia;
}
MT_Vector3 KX_BulletPhysicsController::getReactionForce()
@@ -417,13 +448,14 @@ void KX_BulletPhysicsController::SetSumoTransform(bool nondynaonly)
{
if (!nondynaonly)
{
+ /*
btTransform worldTrans;
if (GetRigidBody())
{
GetRigidBody()->getMotionState()->getWorldTransform(worldTrans);
GetRigidBody()->setCenterOfMassTransform(worldTrans);
}
-
+ */
/*
scaling?
if (m_bDyna)
diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.h b/source/gameengine/Ketsji/KX_BulletPhysicsController.h
index 44fbde7054e..b39098206f7 100644
--- a/source/gameengine/Ketsji/KX_BulletPhysicsController.h
+++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.h
@@ -42,6 +42,7 @@ public:
virtual void setScaling(const MT_Vector3& scaling);
virtual MT_Scalar GetMass();
virtual void SetMass(MT_Scalar newmass);
+ virtual MT_Vector3 GetLocalInertia();
virtual MT_Vector3 getReactionForce();
virtual void setRigidBody(bool rigid);
virtual void AddCompoundChild(KX_IPhysicsController* child);
@@ -55,7 +56,11 @@ public:
virtual SG_Controller* GetReplica(class SG_Node* destnode);
virtual MT_Scalar GetRadius();
-
+
+ virtual float GetLinVelocityMin();
+ virtual void SetLinVelocityMin(float val);
+ virtual float GetLinVelocityMax();
+ virtual void SetLinVelocityMax(float val);
virtual void SetSumoTransform(bool nondynaonly);
// todo: remove next line !
diff --git a/source/gameengine/Ketsji/KX_CDActuator.cpp b/source/gameengine/Ketsji/KX_CDActuator.cpp
index ef7883910fd..121d4512265 100644
--- a/source/gameengine/Ketsji/KX_CDActuator.cpp
+++ b/source/gameengine/Ketsji/KX_CDActuator.cpp
@@ -98,7 +98,7 @@ bool KX_CDActuator::Update()
SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
SND_CDObject::Instance()->SetTrack(1);
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
- result = true;
+ //result = true;
break;
}
case KX_CDACT_PLAY_TRACK:
@@ -106,7 +106,7 @@ bool KX_CDActuator::Update()
SND_CDObject::Instance()->SetPlaymode(SND_CD_TRACK);
SND_CDObject::Instance()->SetTrack(m_track);
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
- result = true;
+ //result = true;
break;
}
case KX_CDACT_LOOP_TRACK:
@@ -114,7 +114,7 @@ bool KX_CDActuator::Update()
SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
SND_CDObject::Instance()->SetTrack(m_track);
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
- result = true;
+ //result = true;
break;
}
case KX_CDACT_STOP:
@@ -125,19 +125,19 @@ bool KX_CDActuator::Update()
case KX_CDACT_PAUSE:
{
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE);
- result = true;
+ //result = true;
break;
}
case KX_CDACT_RESUME:
{
SND_CDObject::Instance()->SetPlaystate(SND_MUST_RESUME);
- result = true;
+ //result = true;
break;
}
case KX_CDACT_VOLUME:
{
SND_CDObject::Instance()->SetGain(m_gain);
- result = true;
+ //result = true;
break;
}
default:
@@ -158,22 +158,22 @@ bool KX_CDActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_CDActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_SoundActuator",
- sizeof(KX_CDActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -189,54 +189,111 @@ PyParentObject KX_CDActuator::Parents[] = {
PyMethodDef KX_CDActuator::Methods[] = {
- {"startCD",(PyCFunction) KX_CDActuator::sPyStartCD,METH_VARARGS,NULL},
- {"pauseCD",(PyCFunction) KX_CDActuator::sPyPauseCD,METH_VARARGS,NULL},
- {"stopCD",(PyCFunction) KX_CDActuator::sPyStopCD,METH_VARARGS,NULL},
+ // Deprecated ----->
{"setGain",(PyCFunction) KX_CDActuator::sPySetGain,METH_VARARGS,NULL},
{"getGain",(PyCFunction) KX_CDActuator::sPyGetGain,METH_VARARGS,NULL},
+ // <-----
+ KX_PYMETHODTABLE_NOARGS(KX_CDActuator, startCD),
+ KX_PYMETHODTABLE_NOARGS(KX_CDActuator, pauseCD),
+ KX_PYMETHODTABLE_NOARGS(KX_CDActuator, resumeCD),
+ KX_PYMETHODTABLE_NOARGS(KX_CDActuator, stopCD),
+ KX_PYMETHODTABLE_NOARGS(KX_CDActuator, playAll),
+ KX_PYMETHODTABLE_O(KX_CDActuator, playTrack),
{NULL,NULL,NULL,NULL} //Sentinel
};
PyAttributeDef KX_CDActuator::Attributes[] = {
+ KX_PYATTRIBUTE_FLOAT_RW_CHECK("volume", 0.0, 1.0, KX_CDActuator, m_gain,pyattr_setGain),
+ KX_PYATTRIBUTE_INT_RW("track", 1, 99, false, KX_CDActuator, m_track),
{ NULL } //Sentinel
};
-PyObject* KX_CDActuator::_getattr(const char *attr)
+int KX_CDActuator::pyattr_setGain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
{
- _getattr_up(SCA_IActuator);
+ KX_CDActuator* act = static_cast<KX_CDActuator*>(self);
+ SND_CDObject::Instance()->SetGain(act->m_gain);
+ return 0;
}
+PyObject* KX_CDActuator::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_IActuator);
+}
+
+int KX_CDActuator::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_IActuator);
+}
-PyObject* KX_CDActuator::PyStartCD(PyObject* self, PyObject* args, PyObject* kwds)
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, startCD,
+"startCD()\n"
+"\tStarts the CD playing.\n")
{
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
Py_RETURN_NONE;
}
-
-PyObject* KX_CDActuator::PyPauseCD(PyObject* self, PyObject* args, PyObject* kwds)
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, pauseCD,
+"pauseCD()\n"
+"\tPauses the CD playing.\n")
{
SND_CDObject::Instance()->SetPlaystate(SND_MUST_PAUSE);
Py_RETURN_NONE;
}
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, resumeCD,
+"resumeCD()\n"
+"\tResumes the CD playing.\n")
+{
+ SND_CDObject::Instance()->SetPlaystate(SND_MUST_RESUME);
+ Py_RETURN_NONE;
+}
+
-PyObject* KX_CDActuator::PyStopCD(PyObject* self, PyObject* args, PyObject* kwds)
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, stopCD,
+"stopCD()\n"
+"\tStops the CD playing.\n")
{
SND_CDObject::Instance()->SetPlaystate(SND_MUST_STOP);
Py_RETURN_NONE;
}
+KX_PYMETHODDEF_DOC_O(KX_CDActuator, playTrack,
+"playTrack(trackNumber)\n"
+"\tPlays the track selected.\n")
+{
+ if (PyInt_Check(value)) {
+ int track = PyInt_AsLong(value);
+ SND_CDObject::Instance()->SetPlaymode(SND_CD_TRACK);
+ SND_CDObject::Instance()->SetTrack(track);
+ SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
+ }
+ Py_RETURN_NONE;
+}
+
+
+
+KX_PYMETHODDEF_DOC_NOARGS(KX_CDActuator, playAll,
+"playAll()\n"
+"\tPlays the CD from the beginning.\n")
+{
+ SND_CDObject::Instance()->SetPlaymode(SND_CD_ALL);
+ SND_CDObject::Instance()->SetTrack(1);
+ SND_CDObject::Instance()->SetPlaystate(SND_MUST_PLAY);
+ Py_RETURN_NONE;
+}
-PyObject* KX_CDActuator::PySetGain(PyObject* self, PyObject* args, PyObject* kwds)
+// Deprecated ----->
+PyObject* KX_CDActuator::PySetGain(PyObject* args)
{
float gain = 1.0;
- if (!PyArg_ParseTuple(args, "f", &gain))
+ ShowDeprecationWarning("setGain()", "the volume property");
+ if (!PyArg_ParseTuple(args, "f:setGain", &gain))
return NULL;
SND_CDObject::Instance()->SetGain(gain);
@@ -246,10 +303,12 @@ PyObject* KX_CDActuator::PySetGain(PyObject* self, PyObject* args, PyObject* kwd
-PyObject* KX_CDActuator::PyGetGain(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_CDActuator::PyGetGain(PyObject* args)
{
float gain = SND_CDObject::Instance()->GetGain();
+ ShowDeprecationWarning("getGain()", "the volume property");
PyObject* result = PyFloat_FromDouble(gain);
return result;
}
+// <-----
diff --git a/source/gameengine/Ketsji/KX_CDActuator.h b/source/gameengine/Ketsji/KX_CDActuator.h
index 393c49083f9..b674755e59f 100644
--- a/source/gameengine/Ketsji/KX_CDActuator.h
+++ b/source/gameengine/Ketsji/KX_CDActuator.h
@@ -81,13 +81,24 @@ public:
/* Python interface --------------------------------------------------- */
/* -------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+
+ // Deprecated ----->
+ KX_PYMETHOD_VARARGS(KX_CDActuator,SetGain);
+ KX_PYMETHOD_VARARGS(KX_CDActuator,GetGain);
+ // <-----
+
+ KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, startCD);
+ KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, pauseCD);
+ KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, resumeCD);
+ KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, stopCD);
+ KX_PYMETHOD_DOC_NOARGS(KX_CDActuator, playAll);
+ KX_PYMETHOD_DOC_O(KX_CDActuator, playTrack);
+
+ static int pyattr_setGain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+
- KX_PYMETHOD(KX_CDActuator,StartCD);
- KX_PYMETHOD(KX_CDActuator,PauseCD);
- KX_PYMETHOD(KX_CDActuator,StopCD);
- KX_PYMETHOD(KX_CDActuator,SetGain);
- KX_PYMETHOD(KX_CDActuator,GetGain);
};
#endif //__KX_CDACTUATOR
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp
index 5caac2fc670..c8575424751 100644
--- a/source/gameengine/Ketsji/KX_Camera.cpp
+++ b/source/gameengine/Ketsji/KX_Camera.cpp
@@ -484,56 +484,53 @@ PyMethodDef KX_Camera::Methods[] = {
};
PyAttributeDef KX_Camera::Attributes[] = {
+
+ KX_PYATTRIBUTE_BOOL_RW("frustum_culling", KX_Camera, m_frustum_culling),
+ KX_PYATTRIBUTE_RW_FUNCTION("perspective", KX_Camera, pyattr_get_perspective, pyattr_set_perspective),
+
+ KX_PYATTRIBUTE_RW_FUNCTION("lens", KX_Camera, pyattr_get_lens, pyattr_set_lens),
+ KX_PYATTRIBUTE_RW_FUNCTION("near", KX_Camera, pyattr_get_near, pyattr_set_near),
+ KX_PYATTRIBUTE_RW_FUNCTION("far", KX_Camera, pyattr_get_far, pyattr_set_far),
+
+ KX_PYATTRIBUTE_RO_FUNCTION("projection_matrix", KX_Camera, pyattr_get_projection_matrix),
+ KX_PYATTRIBUTE_RO_FUNCTION("modelview_matrix", KX_Camera, pyattr_get_modelview_matrix),
+ KX_PYATTRIBUTE_RO_FUNCTION("camera_to_world", KX_Camera, pyattr_get_camera_to_world),
+ KX_PYATTRIBUTE_RO_FUNCTION("world_to_camera", KX_Camera, pyattr_get_world_to_camera),
+
+ /* Grrr, functions for constants? */
+ KX_PYATTRIBUTE_RO_FUNCTION("INSIDE", KX_Camera, pyattr_get_INSIDE),
+ KX_PYATTRIBUTE_RO_FUNCTION("OUTSIDE", KX_Camera, pyattr_get_OUTSIDE),
+ KX_PYATTRIBUTE_RO_FUNCTION("INTERSECT", KX_Camera, pyattr_get_INTERSECT),
+
{ NULL } //Sentinel
};
-char KX_Camera::doc[] = "Module KX_Camera\n\n"
-"Constants:\n"
-"\tINSIDE\n"
-"\tINTERSECT\n"
-"\tOUTSIDE\n"
-"Attributes:\n"
-"\tlens -> float\n"
-"\t\tThe camera's lens value\n"
-"\tnear -> float\n"
-"\t\tThe camera's near clip distance\n"
-"\tfar -> float\n"
-"\t\tThe camera's far clip distance\n"
-"\tfrustum_culling -> bool\n"
-"\t\tNon zero if this camera is frustum culling.\n"
-"\tprojection_matrix -> [[float]]\n"
-"\t\tThis camera's projection matrix.\n"
-"\tmodelview_matrix -> [[float]] (read only)\n"
-"\t\tThis camera's model view matrix.\n"
-"\t\tRegenerated every frame from the camera's position and orientation.\n"
-"\tcamera_to_world -> [[float]] (read only)\n"
-"\t\tThis camera's camera to world transform.\n"
-"\t\tRegenerated every frame from the camera's position and orientation.\n"
-"\tworld_to_camera -> [[float]] (read only)\n"
-"\t\tThis camera's world to camera transform.\n"
-"\t\tRegenerated every frame from the camera's position and orientation.\n"
-"\t\tThis is camera_to_world inverted.\n";
-
PyTypeObject KX_Camera::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_Camera",
- sizeof(KX_Camera),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0, 0, 0, 0, 0, 0,
- doc
+ py_base_repr,
+ 0,0,
+ &KX_GameObject::Mapping,
+ 0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
+
+
+
+
+
PyParentObject KX_Camera::Parents[] = {
&KX_Camera::Type,
&KX_GameObject::Type,
@@ -542,90 +539,14 @@ PyParentObject KX_Camera::Parents[] = {
NULL
};
-PyObject* KX_Camera::_getattr(const char *attr)
-{
- if (!strcmp(attr, "INSIDE"))
- return PyInt_FromLong(INSIDE); /* new ref */
- if (!strcmp(attr, "OUTSIDE"))
- return PyInt_FromLong(OUTSIDE); /* new ref */
- if (!strcmp(attr, "INTERSECT"))
- return PyInt_FromLong(INTERSECT); /* new ref */
-
- if (!strcmp(attr, "lens"))
- return PyFloat_FromDouble(GetLens()); /* new ref */
- if (!strcmp(attr, "near"))
- return PyFloat_FromDouble(GetCameraNear()); /* new ref */
- if (!strcmp(attr, "far"))
- return PyFloat_FromDouble(GetCameraFar()); /* new ref */
- if (!strcmp(attr, "frustum_culling"))
- return PyInt_FromLong(m_frustum_culling); /* new ref */
- if (!strcmp(attr, "perspective"))
- return PyInt_FromLong(m_camdata.m_perspective); /* new ref */
- if (!strcmp(attr, "projection_matrix"))
- return PyObjectFrom(GetProjectionMatrix()); /* new ref */
- if (!strcmp(attr, "modelview_matrix"))
- return PyObjectFrom(GetModelviewMatrix()); /* new ref */
- if (!strcmp(attr, "camera_to_world"))
- return PyObjectFrom(GetCameraToWorld()); /* new ref */
- if (!strcmp(attr, "world_to_camera"))
- return PyObjectFrom(GetWorldToCamera()); /* new ref */
-
- _getattr_up(KX_GameObject);
-}
-
-int KX_Camera::_setattr(const char *attr, PyObject *pyvalue)
-{
- if (PyInt_Check(pyvalue))
- {
- if (!strcmp(attr, "frustum_culling"))
- {
- m_frustum_culling = PyInt_AsLong(pyvalue);
- return 0;
- }
-
- if (!strcmp(attr, "perspective"))
- {
- m_camdata.m_perspective = PyInt_AsLong(pyvalue);
- return 0;
- }
- }
-
- if (PyFloat_Check(pyvalue))
- {
- if (!strcmp(attr, "lens"))
- {
- m_camdata.m_lens = PyFloat_AsDouble(pyvalue);
- m_set_projection_matrix = false;
- return 0;
- }
- if (!strcmp(attr, "near"))
- {
- m_camdata.m_clipstart = PyFloat_AsDouble(pyvalue);
- m_set_projection_matrix = false;
- return 0;
- }
- if (!strcmp(attr, "far"))
- {
- m_camdata.m_clipend = PyFloat_AsDouble(pyvalue);
- m_set_projection_matrix = false;
- return 0;
- }
- }
-
- if (PyObject_IsMT_Matrix(pyvalue, 4))
- {
- if (!strcmp(attr, "projection_matrix"))
- {
- MT_Matrix4x4 mat;
- if (PyMatTo(pyvalue, mat))
- {
- SetProjectionMatrix(mat);
- return 0;
- }
- return 1;
- }
- }
- return KX_GameObject::_setattr(attr, pyvalue);
+PyObject* KX_Camera::py_getattro(PyObject *attr)
+{
+ py_getattro_up(KX_GameObject);
+}
+
+int KX_Camera::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(KX_GameObject);
}
KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, sphereInsideFrustum,
@@ -648,7 +569,7 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, sphereInsideFrustum,
{
PyObject *pycenter;
float radius;
- if (PyArg_ParseTuple(args, "Of", &pycenter, &radius))
+ if (PyArg_ParseTuple(args, "Of:sphereInsideFrustum", &pycenter, &radius))
{
MT_Point3 center;
if (PyVecTo(pycenter, center))
@@ -657,7 +578,7 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, sphereInsideFrustum,
}
}
- PyErr_SetString(PyExc_TypeError, "sphereInsideFrustum: Expected arguments: (center, radius)");
+ PyErr_SetString(PyExc_TypeError, "camera.sphereInsideFrustum(center, radius): KX_Camera, expected arguments: (center, radius)");
return NULL;
}
@@ -690,7 +611,7 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, boxInsideFrustum,
unsigned int num_points = PySequence_Size(value);
if (num_points != 8)
{
- PyErr_Format(PyExc_TypeError, "boxInsideFrustum: Expected eight (8) points, got %d", num_points);
+ PyErr_Format(PyExc_TypeError, "camera.boxInsideFrustum(box): KX_Camera, expected eight (8) points, got %d", num_points);
return NULL;
}
@@ -729,7 +650,7 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, pointInsideFrustum,
return PyInt_FromLong(PointInsideFrustum(point)); /* new ref */
}
- PyErr_SetString(PyExc_TypeError, "pointInsideFrustum: Expected point argument.");
+ PyErr_SetString(PyExc_TypeError, "camera.pointInsideFrustum(point): KX_Camera, expected point argument.");
return NULL;
}
@@ -805,7 +726,7 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, setProjectionMatrix,
MT_Matrix4x4 mat;
if (!PyMatTo(value, mat))
{
- PyErr_SetString(PyExc_TypeError, "setProjectionMatrix: Expected 4x4 list as matrix argument.");
+ PyErr_SetString(PyExc_TypeError, "camera.setProjectionMatrix(matrix): KX_Camera, expected 4x4 list as matrix argument.");
return NULL;
}
@@ -821,7 +742,7 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, enableViewport,
int viewport = PyObject_IsTrue(value);
if (viewport == -1) {
- PyErr_SetString(PyExc_ValueError, "expected True/False or 0/1");
+ PyErr_SetString(PyExc_ValueError, "camera.enableViewport(bool): KX_Camera, expected True/False or 0/1");
return NULL;
}
@@ -856,3 +777,126 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Camera, setOnTop,
scene->SetCameraOnTop(this);
Py_RETURN_NONE;
}
+
+PyObject* KX_Camera::pyattr_get_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyBool_FromLong(self->m_camdata.m_perspective);
+}
+
+int KX_Camera::pyattr_set_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ int param = PyObject_IsTrue( value );
+ if (param == -1) {
+ PyErr_SetString(PyExc_AttributeError, "camera.perspective = bool: KX_Camera, expected True/False or 0/1");
+ return -1;
+ }
+
+ self->m_camdata.m_perspective= param;
+ return 0;
+}
+
+PyObject* KX_Camera::pyattr_get_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyFloat_FromDouble(self->m_camdata.m_lens);
+}
+
+int KX_Camera::pyattr_set_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ float param = PyFloat_AsDouble(value);
+ if (param == -1) {
+ PyErr_SetString(PyExc_AttributeError, "camera.lens = float: KX_Camera, expected a float greater then zero");
+ return -1;
+ }
+
+ self->m_camdata.m_lens= param;
+ self->m_set_projection_matrix = false;
+ return 0;
+}
+
+PyObject* KX_Camera::pyattr_get_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyFloat_FromDouble(self->m_camdata.m_clipstart);
+}
+
+int KX_Camera::pyattr_set_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ float param = PyFloat_AsDouble(value);
+ if (param == -1) {
+ PyErr_SetString(PyExc_AttributeError, "camera.near = float: KX_Camera, expected a float greater then zero");
+ return -1;
+ }
+
+ self->m_camdata.m_clipstart= param;
+ self->m_set_projection_matrix = false;
+ return 0;
+}
+
+PyObject* KX_Camera::pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyFloat_FromDouble(self->m_camdata.m_clipend);
+}
+
+int KX_Camera::pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ float param = PyFloat_AsDouble(value);
+ if (param == -1) {
+ PyErr_SetString(PyExc_AttributeError, "camera.far = float: KX_Camera, expected a float greater then zero");
+ return -1;
+ }
+
+ self->m_camdata.m_clipend= param;
+ self->m_set_projection_matrix = false;
+ return 0;
+}
+
+PyObject* KX_Camera::pyattr_get_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyObjectFrom(self->GetProjectionMatrix());
+}
+
+int KX_Camera::pyattr_set_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ MT_Matrix4x4 mat;
+ if (!PyMatTo(value, mat))
+ return -1;
+
+ self->SetProjectionMatrix(mat);
+ return 0;
+}
+
+PyObject* KX_Camera::pyattr_get_modelview_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyObjectFrom(self->GetModelviewMatrix());
+}
+
+PyObject* KX_Camera::pyattr_get_camera_to_world(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyObjectFrom(self->GetCameraToWorld());
+}
+
+PyObject* KX_Camera::pyattr_get_world_to_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Camera* self= static_cast<KX_Camera*>(self_v);
+ return PyObjectFrom(self->GetWorldToCamera());
+}
+
+
+PyObject* KX_Camera::pyattr_get_INSIDE(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{ return PyInt_FromLong(INSIDE); }
+PyObject* KX_Camera::pyattr_get_OUTSIDE(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{ return PyInt_FromLong(OUTSIDE); }
+PyObject* KX_Camera::pyattr_get_INTERSECT(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{ return PyInt_FromLong(INTERSECT); }
+
diff --git a/source/gameengine/Ketsji/KX_Camera.h b/source/gameengine/Ketsji/KX_Camera.h
index efd18f99390..4accd4bc2f1 100644
--- a/source/gameengine/Ketsji/KX_Camera.h
+++ b/source/gameengine/Ketsji/KX_Camera.h
@@ -45,6 +45,7 @@ class KX_Camera : public KX_GameObject
{
Py_Header;
protected:
+ friend class KX_Scene;
/** Camera parameters (clips distances, focal lenght). These
* params are closely tied to Blender. In the gameengine, only the
* projection and modelview matrices are relevant. There's a
@@ -67,6 +68,7 @@ protected:
* Storage for the projection matrix that is passed to the
* rasterizer. */
MT_Matrix4x4 m_projection_matrix;
+ //MT_Matrix4x4 m_projection_matrix1;
/**
* Storage for the modelview matrix that is passed to the
@@ -108,11 +110,6 @@ protected:
bool m_set_frustum_center;
/**
- * Python module doc string.
- */
- static char doc[];
-
- /**
* Extracts the camera clip frames from the projection and world-to-camera matrices.
*/
void ExtractClipPlanes();
@@ -124,6 +121,16 @@ protected:
* Extracts the bound sphere of the view frustum.
*/
void ExtractFrustumSphere();
+ /**
+ * return the clip plane
+ */
+ MT_Vector4 *GetNormalizedClipPlanes()
+ {
+ ExtractClipPlanes();
+ NormalizeClipPlanes();
+ return m_planes;
+ }
+
public:
enum { INSIDE, INTERSECT, OUTSIDE } ;
@@ -270,9 +277,29 @@ public:
KX_PYMETHOD_DOC_VARARGS(KX_Camera, setViewport);
KX_PYMETHOD_DOC_NOARGS(KX_Camera, setOnTop);
- virtual PyObject* _getattr(const char *attr); /* lens, near, far, projection_matrix */
- virtual int _setattr(const char *attr, PyObject *pyvalue);
+ virtual PyObject* py_getattro(PyObject *attr); /* lens, near, far, projection_matrix */
+ virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
+
+ static PyObject* pyattr_get_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_perspective(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_lens(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_near(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_far(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
+ static PyObject* pyattr_get_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_projection_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
+ static PyObject* pyattr_get_modelview_matrix(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_camera_to_world(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_world_to_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ static PyObject* pyattr_get_INSIDE(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_OUTSIDE(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_INTERSECT(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
};
#endif //__KX_CAMERA
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.cpp b/source/gameengine/Ketsji/KX_CameraActuator.cpp
index 30ecc5ad441..8ef9f318142 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.cpp
+++ b/source/gameengine/Ketsji/KX_CameraActuator.cpp
@@ -371,22 +371,22 @@ bool KX_CameraActuator::string2axischoice(const char *axisString)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_CameraActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_CameraActuator",
- sizeof(KX_CameraActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_CameraActuator::Parents[] = {
@@ -408,7 +408,7 @@ PyMethodDef KX_CameraActuator::Methods[] = {
{"setHeight",(PyCFunction) KX_CameraActuator::sPySetHeight, METH_VARARGS, (PY_METHODCHAR)SetHeight_doc},
{"getHeight",(PyCFunction) KX_CameraActuator::sPyGetHeight, METH_NOARGS, (PY_METHODCHAR)GetHeight_doc},
{"setXY" ,(PyCFunction) KX_CameraActuator::sPySetXY, METH_VARARGS, (PY_METHODCHAR)SetXY_doc},
- {"getXY" ,(PyCFunction) KX_CameraActuator::sPyGetXY, METH_VARARGS, (PY_METHODCHAR)GetXY_doc},
+ {"getXY" ,(PyCFunction) KX_CameraActuator::sPyGetXY, METH_NOARGS, (PY_METHODCHAR)GetXY_doc},
{NULL,NULL,NULL,NULL} //Sentinel
};
@@ -417,47 +417,16 @@ PyAttributeDef KX_CameraActuator::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RW("max",-FLT_MAX,FLT_MAX,KX_CameraActuator,m_maxHeight),
KX_PYATTRIBUTE_FLOAT_RW("height",-FLT_MAX,FLT_MAX,KX_CameraActuator,m_height),
KX_PYATTRIBUTE_BOOL_RW("xy",KX_CameraActuator,m_x),
+ KX_PYATTRIBUTE_RW_FUNCTION("object", KX_CameraActuator, pyattr_get_object, pyattr_set_object),
{NULL}
};
-PyObject* KX_CameraActuator::_getattr(const char *attr) {
- PyObject* object;
-
- if (!strcmp(attr, "object")) {
- if (!m_ob) Py_RETURN_NONE;
- else return m_ob->AddRef();
- }
-
- object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_IActuator);
+PyObject* KX_CameraActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
}
-int KX_CameraActuator::_setattr(const char *attr, PyObject* value) {
- int ret;
-
- if (!strcmp(attr, "object")) {
- KX_GameObject *gameobj;
-
- if (!ConvertPythonToGameObject(value, &gameobj, true))
- return 1; // ConvertPythonToGameObject sets the error
-
- if (m_ob != NULL)
- m_ob->UnregisterActuator(this);
-
- m_ob = (SCA_IObject*)gameobj;
-
- if (m_ob)
- m_ob->RegisterActuator(this);
-
- return 0;
- }
-
- ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
- return SCA_IActuator::_setattr(attr, value);
+int KX_CameraActuator::py_setattro(PyObject *attr, PyObject* value) {
+ py_setattro_up(SCA_IActuator);
}
/* get obj ---------------------------------------------------------- */
@@ -465,13 +434,13 @@ const char KX_CameraActuator::GetObject_doc[] =
"getObject(name_only = 1)\n"
"name_only - optional arg, when true will return the KX_GameObject rather then its name\n"
"\tReturns the object this sensor reacts to.\n";
-PyObject* KX_CameraActuator::PyGetObject(PyObject* self, PyObject* args)
+PyObject* KX_CameraActuator::PyGetObject(PyObject* args)
{
int ret_name_only = 1;
ShowDeprecationWarning("getObject()", "the object property");
- if (!PyArg_ParseTuple(args, "|i", &ret_name_only))
+ if (!PyArg_ParseTuple(args, "|i:getObject", &ret_name_only))
return NULL;
if (!m_ob)
@@ -480,20 +449,20 @@ PyObject* KX_CameraActuator::PyGetObject(PyObject* self, PyObject* args)
if (ret_name_only)
return PyString_FromString(m_ob->GetName());
else
- return m_ob->AddRef();
+ return m_ob->GetProxy();
}
/* set obj ---------------------------------------------------------- */
const char KX_CameraActuator::SetObject_doc[] =
"setObject(object)\n"
"\t- object: KX_GameObject, string or None\n"
"\tSets the object this sensor reacts to.\n";
-PyObject* KX_CameraActuator::PySetObject(PyObject* self, PyObject* value)
+PyObject* KX_CameraActuator::PySetObject(PyObject* value)
{
KX_GameObject *gameobj;
ShowDeprecationWarning("setObject()", "the object property");
- if (!ConvertPythonToGameObject(value, &gameobj, true))
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.setObject(value): KX_CameraActuator"))
return NULL; // ConvertPythonToGameObject sets the error
if (m_ob != NULL)
@@ -510,9 +479,7 @@ PyObject* KX_CameraActuator::PySetObject(PyObject* self, PyObject* value)
const char KX_CameraActuator::GetMin_doc[] =
"getMin\n"
"\tReturns the minimum value set in the Min: field.\n";
-PyObject* KX_CameraActuator::PyGetMin(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PyGetMin()
{
ShowDeprecationWarning("getMin()", "the min property");
return PyFloat_FromDouble(m_minHeight);
@@ -521,13 +488,11 @@ PyObject* KX_CameraActuator::PyGetMin(PyObject* self,
const char KX_CameraActuator::SetMin_doc[] =
"setMin\n"
"\tSets the minimum value.\n";
-PyObject* KX_CameraActuator::PySetMin(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PySetMin(PyObject* args)
{
ShowDeprecationWarning("setMin()", "the min property");
float min;
- if(PyArg_ParseTuple(args,"f", &min))
+ if(PyArg_ParseTuple(args,"f:setMin", &min))
{
m_minHeight = min;
Py_RETURN_NONE;
@@ -538,9 +503,7 @@ PyObject* KX_CameraActuator::PySetMin(PyObject* self,
const char KX_CameraActuator::GetMax_doc[] =
"getMax\n"
"\tReturns the maximum value set in the Max: field.\n";
-PyObject* KX_CameraActuator::PyGetMax(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PyGetMax()
{
ShowDeprecationWarning("getMax()", "the max property");
return PyFloat_FromDouble(m_maxHeight);
@@ -549,13 +512,11 @@ PyObject* KX_CameraActuator::PyGetMax(PyObject* self,
const char KX_CameraActuator::SetMax_doc[] =
"setMax\n"
"\tSets the maximum value.\n";
-PyObject* KX_CameraActuator::PySetMax(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PySetMax(PyObject* args)
{
ShowDeprecationWarning("getMax()", "the max property");
float max;
- if(PyArg_ParseTuple(args,"f", &max))
+ if(PyArg_ParseTuple(args,"f:setMax", &max))
{
m_maxHeight = max;
Py_RETURN_NONE;
@@ -566,9 +527,7 @@ PyObject* KX_CameraActuator::PySetMax(PyObject* self,
const char KX_CameraActuator::GetHeight_doc[] =
"getHeight\n"
"\tReturns the height value set in the height: field.\n";
-PyObject* KX_CameraActuator::PyGetHeight(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PyGetHeight()
{
ShowDeprecationWarning("getHeight()", "the height property");
return PyFloat_FromDouble(m_height);
@@ -577,13 +536,11 @@ PyObject* KX_CameraActuator::PyGetHeight(PyObject* self,
const char KX_CameraActuator::SetHeight_doc[] =
"setHeight\n"
"\tSets the height value.\n";
-PyObject* KX_CameraActuator::PySetHeight(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PySetHeight(PyObject* args)
{
ShowDeprecationWarning("getHeight()", "the height property");
float height;
- if(PyArg_ParseTuple(args,"f", &height))
+ if(PyArg_ParseTuple(args,"f:setHeight", &height))
{
m_height = height;
Py_RETURN_NONE;
@@ -595,13 +552,11 @@ const char KX_CameraActuator::SetXY_doc[] =
"setXY\n"
"\tSets axis the camera tries to get behind.\n"
"\t1=x, 0=y\n";
-PyObject* KX_CameraActuator::PySetXY(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PySetXY(PyObject* args)
{
ShowDeprecationWarning("setXY()", "the xy property");
int value;
- if(PyArg_ParseTuple(args,"i", &value))
+ if(PyArg_ParseTuple(args,"i:setXY", &value))
{
m_x = value != 0;
Py_RETURN_NONE;
@@ -614,12 +569,36 @@ const char KX_CameraActuator::GetXY_doc[] =
"getXY\n"
"\tGets the axis the camera tries to get behind.\n"
"\tTrue = X, False = Y\n";
-PyObject* KX_CameraActuator::PyGetXY(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_CameraActuator::PyGetXY()
{
ShowDeprecationWarning("getXY()", "the xy property");
return PyInt_FromLong(m_x);
}
+PyObject* KX_CameraActuator::pyattr_get_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_CameraActuator* self= static_cast<KX_CameraActuator*>(self_v);
+ if (self->m_ob==NULL)
+ Py_RETURN_NONE;
+ else
+ return self->m_ob->GetProxy();
+}
+
+int KX_CameraActuator::pyattr_set_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_CameraActuator* self= static_cast<KX_CameraActuator*>(self_v);
+ KX_GameObject *gameobj;
+
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_CameraActuator"))
+ return 1; // ConvertPythonToGameObject sets the error
+
+ if (self->m_ob)
+ self->m_ob->UnregisterActuator(self);
+
+ if ((self->m_ob = (SCA_IObject*)gameobj))
+ self->m_ob->RegisterActuator(self);
+
+ return 0;
+}
+
/* eof */
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.h b/source/gameengine/Ketsji/KX_CameraActuator.h
index 3b08536fc21..9298e1e868d 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.h
+++ b/source/gameengine/Ketsji/KX_CameraActuator.h
@@ -120,21 +120,24 @@ private :
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
/* set object to look at */
KX_PYMETHOD_DOC_O(KX_CameraActuator,SetObject);
/* get current object */
KX_PYMETHOD_DOC_VARARGS(KX_CameraActuator,GetObject);
- KX_PYMETHOD_DOC(KX_CameraActuator,SetMin);
- KX_PYMETHOD_DOC(KX_CameraActuator,GetMin);
- KX_PYMETHOD_DOC(KX_CameraActuator,SetMax);
- KX_PYMETHOD_DOC(KX_CameraActuator,GetMax);
- KX_PYMETHOD_DOC(KX_CameraActuator,SetHeight);
- KX_PYMETHOD_DOC(KX_CameraActuator,GetHeight);
- KX_PYMETHOD_DOC(KX_CameraActuator,SetXY);
- KX_PYMETHOD_DOC(KX_CameraActuator,GetXY);
+ KX_PYMETHOD_DOC_VARARGS(KX_CameraActuator,SetMin);
+ KX_PYMETHOD_DOC_NOARGS(KX_CameraActuator,GetMin);
+ KX_PYMETHOD_DOC_VARARGS(KX_CameraActuator,SetMax);
+ KX_PYMETHOD_DOC_NOARGS(KX_CameraActuator,GetMax);
+ KX_PYMETHOD_DOC_VARARGS(KX_CameraActuator,SetHeight);
+ KX_PYMETHOD_DOC_NOARGS(KX_CameraActuator,GetHeight);
+ KX_PYMETHOD_DOC_VARARGS(KX_CameraActuator,SetXY);
+ KX_PYMETHOD_DOC_NOARGS(KX_CameraActuator,GetXY);
+
+ static PyObject* pyattr_get_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
};
diff --git a/source/gameengine/Ketsji/KX_ConstraintActuator.cpp b/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
index fba9544d702..c2b4db2de8e 100644
--- a/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ConstraintActuator.cpp
@@ -57,19 +57,21 @@ KX_ConstraintActuator::KX_ConstraintActuator(SCA_IObject *gameobj,
char *property,
PyTypeObject* T) :
SCA_IActuator(gameobj, T),
- m_refDirection(refDir),
+ m_refDirVector(refDir),
m_currentTime(0)
{
+ m_refDirection[0] = refDir[0];
+ m_refDirection[1] = refDir[1];
+ m_refDirection[2] = refDir[2];
m_posDampTime = posDampTime;
m_rotDampTime = rotDampTime;
m_locrot = locrotxyz;
m_option = option;
m_activeTime = time;
if (property) {
- strncpy(m_property, property, sizeof(m_property));
- m_property[sizeof(m_property)-1] = 0;
+ m_property = property;
} else {
- m_property[0] = 0;
+ m_property = "";
}
/* The units of bounds are determined by the type of constraint. To */
/* make the constraint application easier and more transparent later on, */
@@ -80,13 +82,16 @@ KX_ConstraintActuator::KX_ConstraintActuator(SCA_IObject *gameobj,
case KX_ACT_CONSTRAINT_ORIY:
case KX_ACT_CONSTRAINT_ORIZ:
{
- MT_Scalar len = m_refDirection.length();
+ MT_Scalar len = m_refDirVector.length();
if (MT_fuzzyZero(len)) {
// missing a valid direction
std::cout << "WARNING: Constraint actuator " << GetName() << ": There is no valid reference direction!" << std::endl;
m_locrot = KX_ACT_CONSTRAINT_NODEF;
} else {
- m_refDirection /= len;
+ m_refDirection[0] /= len;
+ m_refDirection[1] /= len;
+ m_refDirection[2] /= len;
+ m_refDirVector /= len;
}
m_minimumBound = cos(minBound);
m_maximumBound = cos(maxBound);
@@ -116,7 +121,7 @@ bool KX_ConstraintActuator::RayHit(KX_ClientObjectInfo* client, KX_RayCast* resu
bool bFound = false;
- if (m_property[0] == 0)
+ if (m_property.IsEmpty())
{
bFound = true;
}
@@ -126,7 +131,7 @@ bool KX_ConstraintActuator::RayHit(KX_ClientObjectInfo* client, KX_RayCast* resu
{
if (client->m_auxilary_info)
{
- bFound = !strcmp(m_property, ((char*)client->m_auxilary_info));
+ bFound = !strcmp(m_property.Ptr(), ((char*)client->m_auxilary_info));
}
}
else
@@ -209,7 +214,7 @@ bool KX_ConstraintActuator::Update(double curtime, bool frame)
if ((m_maximumBound < (1.0f-FLT_EPSILON)) || (m_minimumBound < (1.0f-FLT_EPSILON))) {
// reference direction needs to be evaluated
// 1. get the cosine between current direction and target
- cosangle = direction.dot(m_refDirection);
+ cosangle = direction.dot(m_refDirVector);
if (cosangle >= (m_maximumBound-FLT_EPSILON) && cosangle <= (m_minimumBound+FLT_EPSILON)) {
// no change to do
result = true;
@@ -218,27 +223,27 @@ bool KX_ConstraintActuator::Update(double curtime, bool frame)
// 2. define a new reference direction
// compute local axis with reference direction as X and
// Y in direction X refDirection plane
- MT_Vector3 zaxis = m_refDirection.cross(direction);
+ MT_Vector3 zaxis = m_refDirVector.cross(direction);
if (MT_fuzzyZero2(zaxis.length2())) {
// direction and refDirection are identical,
// choose any other direction to define plane
if (direction[0] < 0.9999)
- zaxis = m_refDirection.cross(MT_Vector3(1.0,0.0,0.0));
+ zaxis = m_refDirVector.cross(MT_Vector3(1.0,0.0,0.0));
else
- zaxis = m_refDirection.cross(MT_Vector3(0.0,1.0,0.0));
+ zaxis = m_refDirVector.cross(MT_Vector3(0.0,1.0,0.0));
}
- MT_Vector3 yaxis = zaxis.cross(m_refDirection);
+ MT_Vector3 yaxis = zaxis.cross(m_refDirVector);
yaxis.normalize();
if (cosangle > m_minimumBound) {
// angle is too close to reference direction,
// choose a new reference that is exactly at minimum angle
- refDirection = m_minimumBound * m_refDirection + m_minimumSine * yaxis;
+ refDirection = m_minimumBound * m_refDirVector + m_minimumSine * yaxis;
} else {
// angle is too large, choose new reference direction at maximum angle
- refDirection = m_maximumBound * m_refDirection + m_maximumSine * yaxis;
+ refDirection = m_maximumBound * m_refDirVector + m_maximumSine * yaxis;
}
} else {
- refDirection = m_refDirection;
+ refDirection = m_refDirVector;
}
// apply damping on the direction
direction = filter*direction + (1.0-filter)*refDirection;
@@ -470,7 +475,7 @@ bool KX_ConstraintActuator::Update(double curtime, bool frame)
// Fh force is stored in m_maximum
MT_Scalar springForce = springExtent * m_maximumBound;
// damping is stored in m_refDirection [0] = damping, [1] = rot damping
- MT_Scalar springDamp = relativeVelocityRay * m_refDirection[0];
+ MT_Scalar springDamp = relativeVelocityRay * m_refDirVector[0];
MT_Vector3 newVelocity = spc->GetLinearVelocity()-(springForce+springDamp)*direction;
if (m_option & KX_ACT_CONSTRAINT_NORMAL)
{
@@ -483,7 +488,7 @@ bool KX_ConstraintActuator::Update(double curtime, bool frame)
MT_Vector3 angVelocity = spc->GetAngularVelocity();
// remove component that is parallel to normal
angVelocity -= angVelocity.dot(newnormal)*newnormal;
- MT_Vector3 angDamp = angVelocity * ((m_refDirection[1]>MT_EPSILON)?m_refDirection[1]:m_refDirection[0]);
+ MT_Vector3 angDamp = angVelocity * ((m_refDirVector[1]>MT_EPSILON)?m_refDirVector[1]:m_refDirVector[0]);
spc->SetAngularVelocity(spc->GetAngularVelocity()+(angSpring-angDamp), false);
}
} else if (m_option & KX_ACT_CONSTRAINT_PERMANENT) {
@@ -560,22 +565,22 @@ bool KX_ConstraintActuator::IsValidMode(KX_ConstraintActuator::KX_CONSTRAINTTYPE
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_ConstraintActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_ConstraintActuator",
- sizeof(KX_ConstraintActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_ConstraintActuator::Parents[] = {
@@ -587,6 +592,7 @@ PyParentObject KX_ConstraintActuator::Parents[] = {
};
PyMethodDef KX_ConstraintActuator::Methods[] = {
+ // Deprecated -->
{"setDamp", (PyCFunction) KX_ConstraintActuator::sPySetDamp, METH_VARARGS, (PY_METHODCHAR)SetDamp_doc},
{"getDamp", (PyCFunction) KX_ConstraintActuator::sPyGetDamp, METH_NOARGS, (PY_METHODCHAR)GetDamp_doc},
{"setRotDamp", (PyCFunction) KX_ConstraintActuator::sPySetRotDamp, METH_VARARGS, (PY_METHODCHAR)SetRotDamp_doc},
@@ -609,15 +615,47 @@ PyMethodDef KX_ConstraintActuator::Methods[] = {
{"getRayLength", (PyCFunction) KX_ConstraintActuator::sPyGetMax, METH_NOARGS, (PY_METHODCHAR)GetRayLength_doc},
{"setLimit", (PyCFunction) KX_ConstraintActuator::sPySetLimit, METH_VARARGS, (PY_METHODCHAR)SetLimit_doc},
{"getLimit", (PyCFunction) KX_ConstraintActuator::sPyGetLimit, METH_NOARGS, (PY_METHODCHAR)GetLimit_doc},
+ // <--
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_ConstraintActuator::Attributes[] = {
+ KX_PYATTRIBUTE_INT_RW("damp",0,100,true,KX_ConstraintActuator,m_posDampTime),
+ KX_PYATTRIBUTE_INT_RW("rotDamp",0,100,true,KX_ConstraintActuator,m_rotDampTime),
+ KX_PYATTRIBUTE_FLOAT_ARRAY_RW_CHECK("direction",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_refDirection,3,pyattr_check_direction),
+ KX_PYATTRIBUTE_INT_RW("option",0,0xFFFF,false,KX_ConstraintActuator,m_option),
+ KX_PYATTRIBUTE_INT_RW("time",0,1000,true,KX_ConstraintActuator,m_activeTime),
+ KX_PYATTRIBUTE_STRING_RW("property",0,32,true,KX_ConstraintActuator,m_property),
+ KX_PYATTRIBUTE_FLOAT_RW("min",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_minimumBound),
+ KX_PYATTRIBUTE_FLOAT_RW("distance",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_minimumBound),
+ KX_PYATTRIBUTE_FLOAT_RW("max",-FLT_MAX,FLT_MAX,KX_ConstraintActuator,m_maximumBound),
+ KX_PYATTRIBUTE_FLOAT_RW("rayLength",0,2000.f,KX_ConstraintActuator,m_maximumBound),
+ KX_PYATTRIBUTE_INT_RW("limit",KX_ConstraintActuator::KX_ACT_CONSTRAINT_NODEF+1,KX_ConstraintActuator::KX_ACT_CONSTRAINT_MAX-1,false,KX_ConstraintActuator,m_locrot),
{ NULL } //Sentinel
};
-PyObject* KX_ConstraintActuator::_getattr(const char *attr) {
- _getattr_up(SCA_IActuator);
+PyObject* KX_ConstraintActuator::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_IActuator);
+}
+
+int KX_ConstraintActuator::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IActuator);
+}
+
+
+int KX_ConstraintActuator::pyattr_check_direction(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_ConstraintActuator* act = static_cast<KX_ConstraintActuator*>(self);
+ MT_Vector3 dir(act->m_refDirection);
+ MT_Scalar len = dir.length();
+ if (MT_fuzzyZero(len)) {
+ PyErr_SetString(PyExc_ValueError, "actuator.direction = vec: KX_ConstraintActuator, invalid direction");
+ return 1;
+ }
+ act->m_refDirVector = dir/len;
+ return 0;
}
/* 2. setDamp */
@@ -626,11 +664,10 @@ const char KX_ConstraintActuator::SetDamp_doc[] =
"\t- duration: integer\n"
"\tSets the time constant of the orientation and distance constraint.\n"
"\tIf the duration is negative, it is set to 0.\n";
-PyObject* KX_ConstraintActuator::PySetDamp(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetDamp(PyObject* args) {
+ ShowDeprecationWarning("setDamp()", "the damp property");
int dampArg;
- if(!PyArg_ParseTuple(args, "i", &dampArg)) {
+ if(!PyArg_ParseTuple(args, "i:setDamp", &dampArg)) {
return NULL;
}
@@ -643,7 +680,8 @@ PyObject* KX_ConstraintActuator::PySetDamp(PyObject* self,
const char KX_ConstraintActuator::GetDamp_doc[] =
"getDamp()\n"
"\tReturns the damping parameter.\n";
-PyObject* KX_ConstraintActuator::PyGetDamp(PyObject* self){
+PyObject* KX_ConstraintActuator::PyGetDamp(){
+ ShowDeprecationWarning("getDamp()", "the damp property");
return PyInt_FromLong(m_posDampTime);
}
@@ -653,11 +691,10 @@ const char KX_ConstraintActuator::SetRotDamp_doc[] =
"\t- duration: integer\n"
"\tSets the time constant of the orientation constraint.\n"
"\tIf the duration is negative, it is set to 0.\n";
-PyObject* KX_ConstraintActuator::PySetRotDamp(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetRotDamp(PyObject* args) {
+ ShowDeprecationWarning("setRotDamp()", "the rotDamp property");
int dampArg;
- if(!PyArg_ParseTuple(args, "i", &dampArg)) {
+ if(!PyArg_ParseTuple(args, "i:setRotDamp", &dampArg)) {
return NULL;
}
@@ -670,7 +707,8 @@ PyObject* KX_ConstraintActuator::PySetRotDamp(PyObject* self,
const char KX_ConstraintActuator::GetRotDamp_doc[] =
"getRotDamp()\n"
"\tReturns the damping time for application of the constraint.\n";
-PyObject* KX_ConstraintActuator::PyGetRotDamp(PyObject* self){
+PyObject* KX_ConstraintActuator::PyGetRotDamp(){
+ ShowDeprecationWarning("getRotDamp()", "the rotDamp property");
return PyInt_FromLong(m_rotDampTime);
}
@@ -679,14 +717,13 @@ const char KX_ConstraintActuator::SetDirection_doc[] =
"setDirection(vector)\n"
"\t- vector: 3-tuple\n"
"\tSets the reference direction in world coordinate for the orientation constraint.\n";
-PyObject* KX_ConstraintActuator::PySetDirection(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetDirection(PyObject* args) {
+ ShowDeprecationWarning("setDirection()", "the direction property");
float x, y, z;
MT_Scalar len;
MT_Vector3 dir;
- if(!PyArg_ParseTuple(args, "(fff)", &x, &y, &z)) {
+ if(!PyArg_ParseTuple(args, "(fff):setDirection", &x, &y, &z)) {
return NULL;
}
dir[0] = x;
@@ -697,7 +734,10 @@ PyObject* KX_ConstraintActuator::PySetDirection(PyObject* self,
std::cout << "Invalid direction" << std::endl;
return NULL;
}
- m_refDirection = dir/len;
+ m_refDirVector = dir/len;
+ m_refDirection[0] = x/len;
+ m_refDirection[1] = y/len;
+ m_refDirection[2] = z/len;
Py_RETURN_NONE;
}
@@ -705,7 +745,8 @@ PyObject* KX_ConstraintActuator::PySetDirection(PyObject* self,
const char KX_ConstraintActuator::GetDirection_doc[] =
"getDirection()\n"
"\tReturns the reference direction of the orientation constraint as a 3-tuple.\n";
-PyObject* KX_ConstraintActuator::PyGetDirection(PyObject* self){
+PyObject* KX_ConstraintActuator::PyGetDirection(){
+ ShowDeprecationWarning("getDirection()", "the direction property");
PyObject *retVal = PyList_New(3);
PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_refDirection[0]));
@@ -724,11 +765,10 @@ const char KX_ConstraintActuator::SetOption_doc[] =
"\t\t128 : Detect material rather than property\n"
"\t\t256 : No deactivation if ray does not hit target\n"
"\t\t512 : Activate distance control\n";
-PyObject* KX_ConstraintActuator::PySetOption(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetOption(PyObject* args) {
+ ShowDeprecationWarning("setOption()", "the option property");
int option;
- if(!PyArg_ParseTuple(args, "i", &option)) {
+ if(!PyArg_ParseTuple(args, "i:setOption", &option)) {
return NULL;
}
@@ -740,7 +780,8 @@ PyObject* KX_ConstraintActuator::PySetOption(PyObject* self,
const char KX_ConstraintActuator::GetOption_doc[] =
"getOption()\n"
"\tReturns the option parameter.\n";
-PyObject* KX_ConstraintActuator::PyGetOption(PyObject* self){
+PyObject* KX_ConstraintActuator::PyGetOption(){
+ ShowDeprecationWarning("getOption()", "the option property");
return PyInt_FromLong(m_option);
}
@@ -751,11 +792,10 @@ const char KX_ConstraintActuator::SetTime_doc[] =
"\tSets the activation time of the actuator.\n"
"\tThe actuator disables itself after this many frame.\n"
"\tIf set to 0 or negative, the actuator is not limited in time.\n";
-PyObject* KX_ConstraintActuator::PySetTime(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetTime(PyObject* args) {
+ ShowDeprecationWarning("setTime()", "the time property");
int t;
- if(!PyArg_ParseTuple(args, "i", &t)) {
+ if(!PyArg_ParseTuple(args, "i:setTime", &t)) {
return NULL;
}
@@ -769,7 +809,8 @@ PyObject* KX_ConstraintActuator::PySetTime(PyObject* self,
const char KX_ConstraintActuator::GetTime_doc[] =
"getTime()\n"
"\tReturns the time parameter.\n";
-PyObject* KX_ConstraintActuator::PyGetTime(PyObject* self){
+PyObject* KX_ConstraintActuator::PyGetTime(){
+ ShowDeprecationWarning("getTime()", "the time property");
return PyInt_FromLong(m_activeTime);
}
@@ -779,18 +820,16 @@ const char KX_ConstraintActuator::SetProperty_doc[] =
"\t- property: string\n"
"\tSets the name of the property or material for the ray detection of the distance constraint.\n"
"\tIf empty, the ray will detect any collisioning object.\n";
-PyObject* KX_ConstraintActuator::PySetProperty(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetProperty(PyObject* args) {
+ ShowDeprecationWarning("setProperty()", "the 'property' property");
char *property;
- if (!PyArg_ParseTuple(args, "s", &property)) {
+ if (!PyArg_ParseTuple(args, "s:setProperty", &property)) {
return NULL;
}
if (property == NULL) {
- m_property[0] = 0;
+ m_property = "";
} else {
- strncpy(m_property, property, sizeof(m_property));
- m_property[sizeof(m_property)-1] = 0;
+ m_property = property;
}
Py_RETURN_NONE;
@@ -799,8 +838,9 @@ PyObject* KX_ConstraintActuator::PySetProperty(PyObject* self,
const char KX_ConstraintActuator::GetProperty_doc[] =
"getProperty()\n"
"\tReturns the property parameter.\n";
-PyObject* KX_ConstraintActuator::PyGetProperty(PyObject* self){
- return PyString_FromString(m_property);
+PyObject* KX_ConstraintActuator::PyGetProperty(){
+ ShowDeprecationWarning("getProperty()", "the 'property' property");
+ return PyString_FromString(m_property.Ptr());
}
/* 4. setDistance */
@@ -814,11 +854,10 @@ const char KX_ConstraintActuator::SetMin_doc[] =
"\t- lower_bound: float\n"
"\tSets the lower value of the interval to which the value\n"
"\tis clipped.\n";
-PyObject* KX_ConstraintActuator::PySetMin(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetMin(PyObject* args) {
+ ShowDeprecationWarning("setMin() or setDistance()", "the min or distance property");
float minArg;
- if(!PyArg_ParseTuple(args, "f", &minArg)) {
+ if(!PyArg_ParseTuple(args, "f:setMin", &minArg)) {
return NULL;
}
@@ -844,7 +883,8 @@ const char KX_ConstraintActuator::GetMin_doc[] =
"getMin()\n"
"\tReturns the lower value of the interval to which the value\n"
"\tis clipped.\n";
-PyObject* KX_ConstraintActuator::PyGetMin(PyObject* self) {
+PyObject* KX_ConstraintActuator::PyGetMin() {
+ ShowDeprecationWarning("getMin() or getDistance()", "the min or distance property");
return PyFloat_FromDouble(m_minimumBound);
}
@@ -859,11 +899,10 @@ const char KX_ConstraintActuator::SetMax_doc[] =
"\t- upper_bound: float\n"
"\tSets the upper value of the interval to which the value\n"
"\tis clipped.\n";
-PyObject* KX_ConstraintActuator::PySetMax(PyObject* self,
- PyObject* args,
- PyObject* kwds){
+PyObject* KX_ConstraintActuator::PySetMax(PyObject* args){
+ ShowDeprecationWarning("setMax() or setRayLength()", "the max or rayLength property");
float maxArg;
- if(!PyArg_ParseTuple(args, "f", &maxArg)) {
+ if(!PyArg_ParseTuple(args, "f:setMax", &maxArg)) {
return NULL;
}
@@ -889,7 +928,8 @@ const char KX_ConstraintActuator::GetMax_doc[] =
"getMax()\n"
"\tReturns the upper value of the interval to which the value\n"
"\tis clipped.\n";
-PyObject* KX_ConstraintActuator::PyGetMax(PyObject* self) {
+PyObject* KX_ConstraintActuator::PyGetMax() {
+ ShowDeprecationWarning("getMax() or getRayLength()", "the max or rayLength property");
return PyFloat_FromDouble(m_maximumBound);
}
@@ -912,11 +952,10 @@ const char KX_ConstraintActuator::SetLimit_doc[] =
"\t 14 : Align Y axis\n"
"\t 15 : Align Z axis\n"
"\tSets the type of constraint.\n";
-PyObject* KX_ConstraintActuator::PySetLimit(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ConstraintActuator::PySetLimit(PyObject* args) {
+ ShowDeprecationWarning("setLimit()", "the limit property");
int locrotArg;
- if(!PyArg_ParseTuple(args, "i", &locrotArg)) {
+ if(!PyArg_ParseTuple(args, "i:setLimit", &locrotArg)) {
return NULL;
}
@@ -928,7 +967,8 @@ PyObject* KX_ConstraintActuator::PySetLimit(PyObject* self,
const char KX_ConstraintActuator::GetLimit_doc[] =
"getLimit()\n"
"\tReturns the type of constraint.\n";
-PyObject* KX_ConstraintActuator::PyGetLimit(PyObject* self) {
+PyObject* KX_ConstraintActuator::PyGetLimit() {
+ ShowDeprecationWarning("setLimit()", "the limit property");
return PyInt_FromLong(m_locrot);
}
diff --git a/source/gameengine/Ketsji/KX_ConstraintActuator.h b/source/gameengine/Ketsji/KX_ConstraintActuator.h
index 132b8a7328a..98f6fcd7906 100644
--- a/source/gameengine/Ketsji/KX_ConstraintActuator.h
+++ b/source/gameengine/Ketsji/KX_ConstraintActuator.h
@@ -56,7 +56,8 @@ protected:
// sinus of maximum angle
float m_maximumSine;
// reference direction
- MT_Vector3 m_refDirection;
+ float m_refDirection[3];
+ MT_Vector3 m_refDirVector; // same as m_refDirection
// locrotxyz choice (pick one): only one choice allowed at a time!
int m_locrot;
// active time of actuator
@@ -65,7 +66,7 @@ protected:
// option
int m_option;
// property to check
- char m_property[32];
+ STR_String m_property;
// hit object
KX_GameObject* m_hitObject;
@@ -142,29 +143,33 @@ protected:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetDamp);
+ static int pyattr_check_direction(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_check_min(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetDamp);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetDamp);
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetRotDamp);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetRotDamp);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetRotDamp);
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetDirection);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetDirection);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetDirection);
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetOption);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetOption);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetOption);
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetTime);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetTime);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetTime);
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetProperty);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetProperty);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetProperty);
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetMin);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetMin);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetMin);
static const char SetDistance_doc[];
static const char GetDistance_doc[];
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetMax);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetMax);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetMax);
static const char SetRayLength_doc[];
static const char GetRayLength_doc[];
- KX_PYMETHOD_DOC(KX_ConstraintActuator,SetLimit);
+ KX_PYMETHOD_DOC_VARARGS(KX_ConstraintActuator,SetLimit);
KX_PYMETHOD_DOC_NOARGS(KX_ConstraintActuator,GetLimit);
};
diff --git a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
index f014c1896fe..7c3abb49159 100644
--- a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
@@ -49,17 +49,12 @@ KX_ConstraintWrapper::~KX_ConstraintWrapper()
{
}
//python integration methods
-PyObject* KX_ConstraintWrapper::PyTestMethod(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ConstraintWrapper::PyTestMethod(PyObject* args, PyObject* kwds)
{
-
Py_RETURN_NONE;
}
-PyObject* KX_ConstraintWrapper::PyGetConstraintId(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ConstraintWrapper::PyGetConstraintId(PyObject* args, PyObject* kwds)
{
return PyInt_FromLong(m_constraintId);
}
@@ -69,22 +64,22 @@ PyObject* KX_ConstraintWrapper::PyGetConstraintId(PyObject* self,
//python specific stuff
PyTypeObject KX_ConstraintWrapper::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_ConstraintWrapper",
- sizeof(KX_ConstraintWrapper),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_ConstraintWrapper::Parents[] = {
@@ -92,16 +87,16 @@ PyParentObject KX_ConstraintWrapper::Parents[] = {
NULL
};
-PyObject* KX_ConstraintWrapper::_getattr(const char *attr)
+PyObject* KX_ConstraintWrapper::py_getattro(PyObject *attr)
{
//here you can search for existing data members (like mass,friction etc.)
- _getattr_up(PyObjectPlus);
+ py_getattro_up(PyObjectPlus);
}
-int KX_ConstraintWrapper::_setattr(const char *attr,PyObject* pyobj)
+int KX_ConstraintWrapper::py_setattro(PyObject *attr,PyObject* pyobj)
{
int result = 1;
-
+ /* what the heck is this supposed to do?, needs attention */
if (PyList_Check(pyobj))
{
result = 0;
@@ -120,7 +115,7 @@ int KX_ConstraintWrapper::_setattr(const char *attr,PyObject* pyobj)
result = 0;
}
if (result)
- result = PyObjectPlus::_setattr(attr,pyobj);
+ result = PyObjectPlus::py_setattro(attr,pyobj);
return result;
};
diff --git a/source/gameengine/Ketsji/KX_ConstraintWrapper.h b/source/gameengine/Ketsji/KX_ConstraintWrapper.h
index 36606d2d67b..6e67d842cb6 100644
--- a/source/gameengine/Ketsji/KX_ConstraintWrapper.h
+++ b/source/gameengine/Ketsji/KX_ConstraintWrapper.h
@@ -35,8 +35,8 @@
class KX_ConstraintWrapper : public PyObjectPlus
{
Py_Header;
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
public:
KX_ConstraintWrapper(PHY_ConstraintType ctype,int constraintId,class PHY_IPhysicsEnvironment* physenv,PyTypeObject *T = &Type);
virtual ~KX_ConstraintWrapper ();
diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
index 602486e0017..08e2ea30414 100644
--- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
+++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
@@ -801,6 +801,8 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
ci.m_gravity = btVector3(0,0,0);
ci.m_localInertiaTensor =btVector3(0,0,0);
ci.m_mass = objprop->m_dyna ? shapeprops->m_mass : 0.f;
+ ci.m_clamp_vel_min = shapeprops->m_clamp_vel_min;
+ ci.m_clamp_vel_max = shapeprops->m_clamp_vel_max;
ci.m_margin = objprop->m_margin;
shapeInfo->m_radius = objprop->m_radius;
isbulletdyna = objprop->m_dyna;
@@ -881,8 +883,10 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
{
shapeInfo->SetMesh(meshobj, false,false);
}
+
+ // Soft bodies require welding. Only avoid remove doubles for non-soft bodies!
if (objprop->m_softbody)
- shapeInfo->setVertexWeldingThreshold(0.01f); //todo: expose this to the UI
+ shapeInfo->setVertexWeldingThreshold1(0.01f); //todo: expose this to the UI
bm = shapeInfo->CreateBulletShape();
//no moving concave meshes, so don't bother calculating inertia
@@ -1103,16 +1107,19 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj,
if (rbody)
{
- btVector3 linearFactor(
- objprop->m_lockXaxis? 0 : 1,
- objprop->m_lockYaxis? 0 : 1,
- objprop->m_lockZaxis? 0 : 1);
- btVector3 angularFactor(
- objprop->m_lockXRotaxis? 0 : 1,
- objprop->m_lockYRotaxis? 0 : 1,
- objprop->m_lockZRotaxis? 0 : 1);
- rbody->setLinearFactor(linearFactor);
- rbody->setAngularFactor(angularFactor);
+ if (objprop->m_angular_rigidbody)
+ {
+ btVector3 linearFactor(
+ objprop->m_lockXaxis? 0 : 1,
+ objprop->m_lockYaxis? 0 : 1,
+ objprop->m_lockZaxis? 0 : 1);
+ btVector3 angularFactor(
+ objprop->m_lockXRotaxis? 0 : 1,
+ objprop->m_lockYRotaxis? 0 : 1,
+ objprop->m_lockZRotaxis? 0 : 1);
+ rbody->setLinearFactor(linearFactor);
+ rbody->setAngularFactor(angularFactor);
+ }
if (rbody && objprop->m_disableSleeping)
{
diff --git a/source/gameengine/Ketsji/KX_Dome.cpp b/source/gameengine/Ketsji/KX_Dome.cpp
new file mode 100644
index 00000000000..321370f9f3f
--- /dev/null
+++ b/source/gameengine/Ketsji/KX_Dome.cpp
@@ -0,0 +1,1819 @@
+/* $Id$
+-----------------------------------------------------------------------------
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+http://www.gnu.org/copyleft/lesser.txt.
+
+Contributor(s): Dalai Felinto
+
+This code is originally inspired on some of the ideas and codes from Paul Bourke.
+Developed as part of a Research and Development project for SAT - La Société des arts technologiques.
+-----------------------------------------------------------------------------
+*/
+
+#include "KX_Dome.h"
+
+#include <structmember.h>
+#include <float.h>
+#include <math.h>
+
+#include "DNA_scene_types.h"
+#include "RAS_CameraData.h"
+#include "BLI_arithb.h"
+
+#include "GL/glew.h"
+
+// constructor
+KX_Dome::KX_Dome (
+ RAS_ICanvas* canvas,
+ /// rasterizer
+ RAS_IRasterizer* rasterizer,
+ /// render tools
+ RAS_IRenderTools* rendertools,
+ /// engine
+ KX_KetsjiEngine* engine,
+
+ float size, //size for adjustments
+ short res, //resolution of the mesh
+ short mode, //mode - fisheye, truncated, warped, panoramic, ...
+ short angle,
+ float resbuf, //size adjustment of the buffer
+ struct Text* warptext
+
+):
+ m_canvas(canvas),
+ m_rasterizer(rasterizer),
+ m_rendertools(rendertools),
+ m_engine(engine),
+ m_drawingmode(engine->GetDrawType()),
+ m_size(size),
+ m_resolution(res),
+ m_mode(mode),
+ m_angle(angle),
+ m_resbuffer(resbuf),
+ canvaswidth(-1), canvasheight(-1),
+ dlistSupported(false)
+{
+ warp.usemesh = false;
+
+ if (mode >= DOME_NUM_MODES)
+ m_mode = DOME_FISHEYE;
+
+ if (warptext) // it there is a text data try to warp it
+ {
+ char *buf;
+ buf = txt_to_buf(warptext);
+ if (buf)
+ {
+ warp.usemesh = ParseWarpMesh(STR_String(buf));
+ MEM_freeN(buf);
+ }
+ }
+
+ //setting the viewport size
+ GLuint viewport[4]={0};
+ glGetIntegerv(GL_VIEWPORT,(GLint *)viewport);
+
+ SetViewPort(viewport);
+
+ switch(m_mode){
+ case DOME_FISHEYE:
+ if (m_angle <= 180){
+ cubetop.resize(1);
+ cubebottom.resize(1);
+ cubeleft.resize(2);
+ cuberight.resize(2);
+
+ CreateMeshDome180();
+ m_numfaces = 4;
+ }else if (m_angle > 180){
+ cubetop.resize(2);
+ cubebottom.resize(2);
+ cubeleft.resize(2);
+ cubefront.resize(2);
+ cuberight.resize(2);
+
+ CreateMeshDome250();
+ m_numfaces = 5;
+ } break;
+ case DOME_TRUNCATED:
+ cubetop.resize(1);
+ cubebottom.resize(1);
+ cubeleft.resize(2);
+ cuberight.resize(2);
+
+ m_angle = 180;
+ CreateMeshDome180();
+ m_numfaces = 4;
+ break;
+ case DOME_PANORAM_SPH:
+ cubeleft.resize(2);
+ cubeleftback.resize(2);
+ cuberight.resize(2);
+ cuberightback.resize(2);
+ cubetop.resize(2);
+ cubebottom.resize(2);
+
+ m_angle = 360;
+ CreateMeshPanorama();
+ m_numfaces = 6;
+ break;
+ }
+
+ m_numimages =(warp.usemesh?m_numfaces+1:m_numfaces);
+
+ CalculateCameraOrientation();
+
+ CreateGLImages();
+
+ dlistSupported = CreateDL();
+}
+
+// destructor
+KX_Dome::~KX_Dome (void)
+{
+ GLuint m_numimages = m_numfaces;
+
+ ClearGLImages();
+
+ if(dlistSupported)
+ glDeleteLists(dlistId, (GLsizei) m_numimages);
+}
+
+void KX_Dome::SetViewPort(GLuint viewport[4])
+{
+ if(canvaswidth != m_canvas->GetWidth() || canvasheight != m_canvas->GetHeight())
+ {
+ m_viewport.SetLeft(viewport[0]);
+ m_viewport.SetBottom(viewport[1]);
+ m_viewport.SetRight(viewport[2]);
+ m_viewport.SetTop(viewport[3]);
+
+ CalculateImageSize();
+ }
+}
+
+void KX_Dome::CreateGLImages(void)
+{
+ glGenTextures(m_numimages, (GLuint*)&domefacesId);
+
+ for (int j=0;j<m_numfaces;j++){
+ glBindTexture(GL_TEXTURE_2D, domefacesId[j]);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, m_imagesize, m_imagesize, 0, GL_RGB8,
+ GL_UNSIGNED_BYTE, 0);
+ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, m_imagesize, m_imagesize, 0);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ }
+ if(warp.usemesh){
+ glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, warp.imagewidth, warp.imageheight, 0, GL_RGB8,
+ GL_UNSIGNED_BYTE, 0);
+ glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, warp.imagewidth, warp.imageheight, 0);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ }
+}
+
+void KX_Dome::ClearGLImages(void)
+{
+ glDeleteTextures(m_numimages, (GLuint*)&domefacesId);
+/*
+ for (int i=0;i<m_numimages;i++)
+ if(glIsTexture(domefacesId[i]))
+ glDeleteTextures(1, (GLuint*)&domefacesId[i]);
+*/
+}
+
+void KX_Dome::CalculateImageSize(void)
+{
+/*
+- determine the minimum buffer size
+- reduce the buffer for better performace
+- create a power of 2 texture bigger than the buffer
+*/
+
+ canvaswidth = m_canvas->GetWidth();
+ canvasheight = m_canvas->GetHeight();
+
+ m_buffersize = (canvaswidth > canvasheight?canvasheight:canvaswidth);
+ m_buffersize *= m_resbuffer; //reduce buffer size for better performance
+
+ int i = 0;
+ while ((1 << i) <= m_buffersize)
+ i++;
+ m_imagesize = (1 << i);
+
+ if (warp.usemesh){
+ warp.bufferwidth = canvaswidth;
+ warp.bufferheight = canvasheight;
+
+ i = 0;
+ while ((1 << i) <= warp.bufferwidth)
+ i++;
+ warp.imagewidth = (1 << i);
+
+ i = 0;
+ while ((1 << i) <= warp.bufferheight)
+ i++;
+ warp.imageheight = (1 << i);
+ }
+}
+
+bool KX_Dome::CreateDL(){
+ int i,j;
+
+ dlistId = glGenLists((GLsizei) m_numimages);
+ if (dlistId != 0) {
+ if(m_mode == DOME_FISHEYE || m_mode == DOME_TRUNCATED){
+ glNewList(dlistId, GL_COMPILE);
+ GLDrawTriangles(cubetop, nfacestop);
+ glEndList();
+
+ glNewList(dlistId+1, GL_COMPILE);
+ GLDrawTriangles(cubebottom, nfacesbottom);
+ glEndList();
+
+ glNewList(dlistId+2, GL_COMPILE);
+ GLDrawTriangles(cubeleft, nfacesleft);
+ glEndList();
+
+ glNewList(dlistId+3, GL_COMPILE);
+ GLDrawTriangles(cuberight, nfacesright);
+ glEndList();
+
+ if (m_angle > 180){
+ glNewList(dlistId+4, GL_COMPILE);
+ GLDrawTriangles(cubefront, nfacesfront);
+ glEndList();
+ }
+ }
+ else if (m_mode == DOME_PANORAM_SPH)
+ {
+ glNewList(dlistId, GL_COMPILE);
+ GLDrawTriangles(cubetop, nfacestop);
+ glEndList();
+
+ glNewList(dlistId+1, GL_COMPILE);
+ GLDrawTriangles(cubebottom, nfacesbottom);
+ glEndList();
+
+ glNewList(dlistId+2, GL_COMPILE);
+ GLDrawTriangles(cubeleft, nfacesleft);
+ glEndList();
+
+ glNewList(dlistId+3, GL_COMPILE);
+ GLDrawTriangles(cuberight, nfacesright);
+ glEndList();
+
+ glNewList(dlistId+4, GL_COMPILE);
+ GLDrawTriangles(cubeleftback, nfacesleftback);
+ glEndList();
+
+ glNewList(dlistId+5, GL_COMPILE);
+ GLDrawTriangles(cuberightback, nfacesrightback);
+ glEndList();
+ }
+
+ if(warp.usemesh){
+ glNewList((dlistId + m_numfaces), GL_COMPILE);
+ GLDrawWarpQuads();
+ glEndList();
+ }
+
+ //clearing the vectors
+ cubetop.clear();
+ cubebottom.clear();
+ cuberight.clear();
+ cubeleft.clear();
+ cubefront.clear();
+ cubeleftback.clear();
+ cuberightback.clear();
+ warp.nodes.clear();
+
+ } else // genList failed
+ return false;
+
+ return true;
+}
+
+void KX_Dome::GLDrawTriangles(vector <DomeFace>& face, int nfaces)
+{
+ int i,j;
+ glBegin(GL_TRIANGLES);
+ for (i=0;i<nfaces;i++) {
+ for (j=0;j<3;j++) {
+ glTexCoord2f(face[i].u[j],face[i].v[j]);
+ glVertex3f((GLfloat)face[i].verts[j][0],(GLfloat)face[i].verts[j][1],(GLfloat)face[i].verts[j][2]);
+ }
+ }
+ glEnd();
+}
+
+void KX_Dome::GLDrawWarpQuads(void)
+{
+ int i, j, i2;
+ float uv_width = (float)(warp.bufferwidth-1) / warp.imagewidth;
+ float uv_height = (float)(warp.bufferheight-1) / warp.imageheight;
+
+ if(warp.mode ==2 ){
+ glBegin(GL_QUADS);
+ for (i=0;i<warp.n_height-1;i++) {
+ for (j=0;j<warp.n_width-1;j++) {
+ if(warp.nodes[i][j].i < 0 || warp.nodes[i+1][j].i < 0 || warp.nodes[i+1][j+1].i < 0 || warp.nodes[i][j+1].i < 0)
+ continue;
+
+ glColor3f(warp.nodes[i][j].i, warp.nodes[i][j].i, warp.nodes[i][j].i);
+ glTexCoord2f((warp.nodes[i][j].u * uv_width), (warp.nodes[i][j].v * uv_height));
+ glVertex3f(warp.nodes[i][j].x, warp.nodes[i][j].y,0.0);
+
+ glColor3f(warp.nodes[i+1][j].i, warp.nodes[i+1][j].i, warp.nodes[i+1][j].i);
+ glTexCoord2f((warp.nodes[i+1][j].u * uv_width), (warp.nodes[i+1][j].v * uv_height));
+ glVertex3f(warp.nodes[i+1][j].x, warp.nodes[i+1][j].y,0.0);
+
+ glColor3f(warp.nodes[i+1][j+1].i, warp.nodes[i+1][j+1].i, warp.nodes[i+1][j+1].i);
+ glTexCoord2f((warp.nodes[i+1][j+1].u * uv_width), (warp.nodes[i+1][j+1].v * uv_height));
+ glVertex3f(warp.nodes[i+1][j+1].x, warp.nodes[i+1][j+1].y,0.0);
+
+ glColor3f(warp.nodes[i][j+1].i, warp.nodes[i][j+1].i, warp.nodes[i][j+1].i);
+ glTexCoord2f((warp.nodes[i][j+1].u * uv_width), (warp.nodes[i][j+1].v * uv_height));
+ glVertex3f(warp.nodes[i][j+1].x, warp.nodes[i][j+1].y,0.0);
+ }
+ }
+ glEnd();
+ }
+ else if (warp.mode == 1){
+ glBegin(GL_QUADS);
+ for (i=0;i<warp.n_height-1;i++) {
+ for (j=0;j<warp.n_width-1;j++) {
+ i2 = (i+1) % warp.n_width; // Wrap around, i = warp.n_width = 0
+
+ if (warp.nodes[i][j].i < 0 || warp.nodes[i2][j].i < 0 || warp.nodes[i2][j+1].i < 0 || warp.nodes[i][j+1].i < 0)
+ continue;
+
+ glColor3f(warp.nodes[i][j].i,warp.nodes[i][j].i,warp.nodes[i][j].i);
+ glTexCoord2f((warp.nodes[i][j].u * uv_width), (warp.nodes[i][j].v * uv_height));
+ glVertex3f(warp.nodes[i][j].x,warp.nodes[i][j].y,0.0);
+
+ glColor3f(warp.nodes[i2][j].i,warp.nodes[i2][j].i,warp.nodes[i2][j].i);
+ glTexCoord2f((warp.nodes[i2][j].u * uv_width), (warp.nodes[i2][j].v * uv_height));
+ glVertex3f(warp.nodes[i2][j].x,warp.nodes[i2][j].y,0.0);
+
+ glColor3f(warp.nodes[i2][j+1].i,warp.nodes[i2][j+1].i,warp.nodes[i2][j+1].i);
+ glTexCoord2f((warp.nodes[i2][j+1].u * uv_width), (warp.nodes[i2][j+1].v * uv_height));
+ glVertex3f(warp.nodes[i2][j+1].x,warp.nodes[i2][j+1].y,0.0);
+
+ glColor3f(warp.nodes[i2][j+1].i,warp.nodes[i2][j+1].i,warp.nodes[i2][j+1].i);
+ glTexCoord2f((warp.nodes[i2][j+1].u * uv_width), (warp.nodes[i2][j+1].v * uv_height));
+ glVertex3f(warp.nodes[i2][j+1].x,warp.nodes[i2][j+1].y,0.0);
+
+ }
+ }
+ glEnd();
+ } else{
+ printf("Error: Warp Mode unsupported. Try 1 for Polar Mesh or 2 for Fisheye.\n");
+ }
+}
+
+
+bool KX_Dome::ParseWarpMesh(STR_String text)
+{
+/*
+//Notes about the supported data format:
+File example::
+ mode
+ width height
+ n0_x n0_y n0_u n0_v n0_i
+ n1_x n1_y n1_u n1_v n1_i
+ n2_x n1_y n2_u n2_v n2_i
+ n3_x n3_y n3_u n3_v n3_i
+ (...)
+First line is the image type the mesh is support to be applied to: 2 = fisheye, 1=radial
+Tthe next line has the mesh dimensions
+Rest of the lines are the nodes of the mesh. Each line has x y u v i
+ (x,y) are the normalised screen coordinates
+ (u,v) texture coordinates
+ i a multiplicative intensity factor
+
+x varies from -screen aspect to screen aspect
+y varies from -1 to 1
+u and v vary from 0 to 1
+i ranges from 0 to 1, if negative don't draw that mesh node
+*/
+ int i,j,k;
+ int nodeX=0, nodeY=0;
+
+ vector<STR_String> columns, lines;
+
+ lines = text.Explode('\n');
+ if(lines.size() < 6){
+ printf("Error: Warp Mesh File with insufficient data!\n");
+ return false;
+ }
+ columns = lines[1].Explode(' ');
+
+ if(columns.size() !=2){
+ printf("Error: Warp Mesh File incorrect. The second line should contain: width height.\n");
+ return false;
+ }
+
+ warp.mode = atoi(lines[0]);// 1 = radial, 2 = fisheye
+
+ warp.n_width = atoi(columns[0]);
+ warp.n_height = atoi(columns[1]);
+
+ if (lines.size() < 2 + (warp.n_width * warp.n_height)){
+ printf("Error: Warp Mesh File with insufficient data!\n");
+ return false;
+ }else{
+ warp.nodes = vector<vector<WarpMeshNode> > (warp.n_height, vector<WarpMeshNode>(warp.n_width));
+
+ for(i=2; i-2 < (warp.n_width*warp.n_height); i++){
+ columns = lines[i].Explode(' ');
+
+ if (columns.size() == 5){
+ nodeX = (i-2)%warp.n_width;
+ nodeY = ((i-2) - nodeX) / warp.n_width;
+
+ warp.nodes[nodeY][nodeX].x = atof(columns[0]);
+ warp.nodes[nodeY][nodeX].y = atof(columns[1]);
+ warp.nodes[nodeY][nodeX].u = atof(columns[2]);
+ warp.nodes[nodeY][nodeX].v = atof(columns[3]);
+ warp.nodes[nodeY][nodeX].i = atof(columns[4]);
+ }
+ else{
+ warp.nodes.clear();
+ printf("Error: Warp Mesh File with wrong number of fields. You should use 5: x y u v i.\n");
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+void KX_Dome::CreateMeshDome180(void)
+{
+/*
+1)- Define the faces of half of a cube
+ - each face is made out of 2 triangles
+2) Subdivide the faces
+ - more resolution == more curved lines
+3) Spherize the cube
+ - normalize the verts
+4) Flatten onto xz plane
+ - transform it onto an equidistant spherical projection techniques to transform the sphere onto a dome image
+*/
+ int i,j;
+ float sqrt_2 = sqrt(2.0);
+ float uv_ratio = (float)(m_buffersize-1) / m_imagesize;
+
+ m_radangle = m_angle * M_PI/180.0;//calculates the radians angle, used for flattening
+
+ //creating faces for the env mapcube 180º Dome
+ // Top Face - just a triangle
+ cubetop[0].verts[0][0] = -sqrt_2 / 2.0;
+ cubetop[0].verts[0][1] = 0.0;
+ cubetop[0].verts[0][2] = 0.5;
+ cubetop[0].u[0] = 0.0;
+ cubetop[0].v[0] = uv_ratio;
+
+ cubetop[0].verts[1][0] = 0.0;
+ cubetop[0].verts[1][1] = sqrt_2 / 2.0;
+ cubetop[0].verts[1][2] = 0.5;
+ cubetop[0].u[1] = 0.0;
+ cubetop[0].v[1] = 0.0;
+
+ cubetop[0].verts[2][0] = sqrt_2 / 2.0;
+ cubetop[0].verts[2][1] = 0.0;
+ cubetop[0].verts[2][2] = 0.5;
+ cubetop[0].u[2] = uv_ratio;
+ cubetop[0].v[2] = 0.0;
+
+ nfacestop = 1;
+
+ /* Bottom face - just a triangle */
+ cubebottom[0].verts[0][0] = -sqrt_2 / 2.0;
+ cubebottom[0].verts[0][1] = 0.0;
+ cubebottom[0].verts[0][2] = -0.5;
+ cubebottom[0].u[0] = uv_ratio;
+ cubebottom[0].v[0] = 0.0;
+
+ cubebottom[0].verts[1][0] = sqrt_2 / 2.0;
+ cubebottom[0].verts[1][1] = 0;
+ cubebottom[0].verts[1][2] = -0.5;
+ cubebottom[0].u[1] = 0.0;
+ cubebottom[0].v[1] = uv_ratio;
+
+ cubebottom[0].verts[2][0] = 0.0;
+ cubebottom[0].verts[2][1] = sqrt_2 / 2.0;
+ cubebottom[0].verts[2][2] = -0.5;
+ cubebottom[0].u[2] = 0.0;
+ cubebottom[0].v[2] = 0.0;
+
+ nfacesbottom = 1;
+
+ /* Left face - two triangles */
+
+ cubeleft[0].verts[0][0] = -sqrt_2 / 2.0;
+ cubeleft[0].verts[0][1] = .0;
+ cubeleft[0].verts[0][2] = -0.5;
+ cubeleft[0].u[0] = 0.0;
+ cubeleft[0].v[0] = 0.0;
+
+ cubeleft[0].verts[1][0] = 0.0;
+ cubeleft[0].verts[1][1] = sqrt_2 / 2.0;
+ cubeleft[0].verts[1][2] = -0.5;
+ cubeleft[0].u[1] = uv_ratio;
+ cubeleft[0].v[1] = 0.0;
+
+ cubeleft[0].verts[2][0] = -sqrt_2 / 2.0;
+ cubeleft[0].verts[2][1] = 0.0;
+ cubeleft[0].verts[2][2] = 0.5;
+ cubeleft[0].u[2] = 0.0;
+ cubeleft[0].v[2] = uv_ratio;
+
+ //second triangle
+ cubeleft[1].verts[0][0] = -sqrt_2 / 2.0;
+ cubeleft[1].verts[0][1] = 0.0;
+ cubeleft[1].verts[0][2] = 0.5;
+ cubeleft[1].u[0] = 0.0;
+ cubeleft[1].v[0] = uv_ratio;
+
+ cubeleft[1].verts[1][0] = 0.0;
+ cubeleft[1].verts[1][1] = sqrt_2 / 2.0;
+ cubeleft[1].verts[1][2] = -0.5;
+ cubeleft[1].u[1] = uv_ratio;
+ cubeleft[1].v[1] = 0.0;
+
+ cubeleft[1].verts[2][0] = 0.0;
+ cubeleft[1].verts[2][1] = sqrt_2 / 2.0;
+ cubeleft[1].verts[2][2] = 0.5;
+ cubeleft[1].u[2] = uv_ratio;
+ cubeleft[1].v[2] = uv_ratio;
+
+ nfacesleft = 2;
+
+ /* Right face - two triangles */
+ cuberight[0].verts[0][0] = 0.0;
+ cuberight[0].verts[0][1] = sqrt_2 / 2.0;
+ cuberight[0].verts[0][2] = -0.5;
+ cuberight[0].u[0] = 0.0;
+ cuberight[0].v[0] = 0.0;
+
+ cuberight[0].verts[1][0] = sqrt_2 / 2.0;
+ cuberight[0].verts[1][1] = 0.0;
+ cuberight[0].verts[1][2] = -0.5;
+ cuberight[0].u[1] = uv_ratio;
+ cuberight[0].v[1] = 0.0;
+
+ cuberight[0].verts[2][0] = sqrt_2 / 2.0;
+ cuberight[0].verts[2][1] = 0.0;
+ cuberight[0].verts[2][2] = 0.5;
+ cuberight[0].u[2] = uv_ratio;
+ cuberight[0].v[2] = uv_ratio;
+
+ //second triangle
+ cuberight[1].verts[0][0] = 0.0;
+ cuberight[1].verts[0][1] = sqrt_2 / 2.0;
+ cuberight[1].verts[0][2] = -0.5;
+ cuberight[1].u[0] = 0.0;
+ cuberight[1].v[0] = 0.0;
+
+ cuberight[1].verts[1][0] = sqrt_2 / 2.0;
+ cuberight[1].verts[1][1] = 0.0;
+ cuberight[1].verts[1][2] = 0.5;
+ cuberight[1].u[1] = uv_ratio;
+ cuberight[1].v[1] = uv_ratio;
+
+ cuberight[1].verts[2][0] = 0.0;
+ cuberight[1].verts[2][1] = sqrt_2 / 2.0;
+ cuberight[1].verts[2][2] = 0.5;
+ cuberight[1].u[2] = 0.0;
+ cuberight[1].v[2] = uv_ratio;
+
+ nfacesright = 2;
+
+ //Refine a triangular mesh by bisecting each edge forms 3 new triangles for each existing triangle on each iteration
+ //Could be made more efficient for drawing if the triangles were ordered in a fan. Not that important since we are using DisplayLists
+
+ for(i=0;i<m_resolution;i++){
+ cubetop.resize(4*nfacestop);
+ SplitFace(cubetop,&nfacestop);
+ cubebottom.resize(4*nfacesbottom);
+ SplitFace(cubebottom,&nfacesbottom);
+ cubeleft.resize(4*nfacesleft);
+ SplitFace(cubeleft,&nfacesleft);
+ cuberight.resize(4*nfacesright);
+ SplitFace(cuberight,&nfacesright);
+ }
+
+ // Turn into a hemisphere
+ for(j=0;j<3;j++){
+ for(i=0;i<nfacestop;i++)
+ cubetop[i].verts[j].normalize();
+ for(i=0;i<nfacesbottom;i++)
+ cubebottom[i].verts[j].normalize();
+ for(i=0;i<nfacesleft;i++)
+ cubeleft[i].verts[j].normalize();
+ for(i=0;i<nfacesright;i++)
+ cuberight[i].verts[j].normalize();
+ }
+
+ //flatten onto xz plane
+ for(i=0;i<nfacestop;i++)
+ FlattenDome(cubetop[i].verts);
+ for(i=0;i<nfacesbottom;i++)
+ FlattenDome(cubebottom[i].verts);
+ for(i=0;i<nfacesleft;i++)
+ FlattenDome(cubeleft[i].verts);
+ for(i=0;i<nfacesright;i++)
+ FlattenDome(cuberight[i].verts);
+
+}
+
+void KX_Dome::CreateMeshDome250(void)
+{
+/*
+1)- Define the faces of a cube without the back face
+ - each face is made out of 2 triangles
+2) Subdivide the faces
+ - more resolution == more curved lines
+3) Spherize the cube
+ - normalize the verts
+4) Flatten onto xz plane
+ - transform it onto an equidistant spherical projection techniques to transform the sphere onto a dome image
+*/
+
+ int i,j;
+ float uv_height, uv_base;
+ float verts_height;
+
+ float rad_ang = m_angle * MT_PI / 180.0;
+ float uv_ratio = (float)(m_buffersize-1) / m_imagesize;
+
+ m_radangle = m_angle * M_PI/180.0;//calculates the radians angle, used for flattening
+/*
+verts_height is the exactly needed height of the cube faces (not always 1.0).
+When we want some horizontal information (e.g. for horizontal 220º domes) we don't need to create and tesselate the whole cube.
+Therefore the lateral cube faces could be small, and the tesselate mesh would be completely used.
+(if we always worked with verts_height = 1.0, we would be discarding a lot of the calculated and tesselated geometry).
+
+So I came out with this formula:
+verts_height = tan((rad_ang/2) - (MT_PI/2))*sqrt(2.0);
+
+Here we take half the sphere(rad_ang/2) and subtract a quarter of it (MT_PI/2)
+Therefore we have the lenght in radians of the dome/sphere over the horizon.
+Once we take the tangent of that angle, you have the verts coordinate corresponding to the verts on the side faces.
+Then we need to multiply it by sqrt(2.0) to get the coordinate of the verts on the diagonal of the original cube.
+*/
+ verts_height = tan((rad_ang/2) - (MT_PI/2))*sqrt(2.0);
+
+ uv_height = uv_ratio * ((verts_height/2) + 0.5);
+ uv_base = uv_ratio * (1.0 - ((verts_height/2) + 0.5));
+
+ //creating faces for the env mapcube 180º Dome
+ // Front Face - 2 triangles
+ cubefront[0].verts[0][0] =-1.0;
+ cubefront[0].verts[0][1] = 1.0;
+ cubefront[0].verts[0][2] =-1.0;
+ cubefront[0].u[0] = 0.0;
+ cubefront[0].v[0] = 0.0;
+
+ cubefront[0].verts[1][0] = 1.0;
+ cubefront[0].verts[1][1] = 1.0;
+ cubefront[0].verts[1][2] = 1.0;
+ cubefront[0].u[1] = uv_ratio;
+ cubefront[0].v[1] = uv_ratio;
+
+ cubefront[0].verts[2][0] =-1.0;
+ cubefront[0].verts[2][1] = 1.0;
+ cubefront[0].verts[2][2] = 1.0;
+ cubefront[0].u[2] = 0.0;
+ cubefront[0].v[2] = uv_ratio;
+
+ //second triangle
+ cubefront[1].verts[0][0] = 1.0;
+ cubefront[1].verts[0][1] = 1.0;
+ cubefront[1].verts[0][2] = 1.0;
+ cubefront[1].u[0] = uv_ratio;
+ cubefront[1].v[0] = uv_ratio;
+
+ cubefront[1].verts[1][0] =-1.0;
+ cubefront[1].verts[1][1] = 1.0;
+ cubefront[1].verts[1][2] =-1.0;
+ cubefront[1].u[1] = 0.0;
+ cubefront[1].v[1] = 0.0;
+
+ cubefront[1].verts[2][0] = 1.0;
+ cubefront[1].verts[2][1] = 1.0;
+ cubefront[1].verts[2][2] =-1.0;
+ cubefront[1].u[2] = uv_ratio;
+ cubefront[1].v[2] = 0.0;
+
+ nfacesfront = 2;
+
+ // Left Face - 2 triangles
+ cubeleft[0].verts[0][0] =-1.0;
+ cubeleft[0].verts[0][1] = 1.0;
+ cubeleft[0].verts[0][2] =-1.0;
+ cubeleft[0].u[0] = uv_ratio;
+ cubeleft[0].v[0] = 0.0;
+
+ cubeleft[0].verts[1][0] =-1.0;
+ cubeleft[0].verts[1][1] =-verts_height;
+ cubeleft[0].verts[1][2] = 1.0;
+ cubeleft[0].u[1] = uv_base;
+ cubeleft[0].v[1] = uv_ratio;
+
+ cubeleft[0].verts[2][0] =-1.0;
+ cubeleft[0].verts[2][1] =-verts_height;
+ cubeleft[0].verts[2][2] =-1.0;
+ cubeleft[0].u[2] = uv_base;
+ cubeleft[0].v[2] = 0.0;
+
+ //second triangle
+ cubeleft[1].verts[0][0] =-1.0;
+ cubeleft[1].verts[0][1] =-verts_height;
+ cubeleft[1].verts[0][2] = 1.0;
+ cubeleft[1].u[0] = uv_base;
+ cubeleft[1].v[0] = uv_ratio;
+
+ cubeleft[1].verts[1][0] =-1.0;
+ cubeleft[1].verts[1][1] = 1.0;
+ cubeleft[1].verts[1][2] =-1.0;
+ cubeleft[1].u[1] = uv_ratio;
+ cubeleft[1].v[1] = 0.0;
+
+ cubeleft[1].verts[2][0] =-1.0;
+ cubeleft[1].verts[2][1] = 1.0;
+ cubeleft[1].verts[2][2] = 1.0;
+ cubeleft[1].u[2] = uv_ratio;
+ cubeleft[1].v[2] = uv_ratio;
+
+ nfacesleft = 2;
+
+ // right Face - 2 triangles
+ cuberight[0].verts[0][0] = 1.0;
+ cuberight[0].verts[0][1] = 1.0;
+ cuberight[0].verts[0][2] = 1.0;
+ cuberight[0].u[0] = 0.0;
+ cuberight[0].v[0] = uv_ratio;
+
+ cuberight[0].verts[1][0] = 1.0;
+ cuberight[0].verts[1][1] =-verts_height;
+ cuberight[0].verts[1][2] =-1.0;
+ cuberight[0].u[1] = uv_height;
+ cuberight[0].v[1] = 0.0;
+
+ cuberight[0].verts[2][0] = 1.0;
+ cuberight[0].verts[2][1] =-verts_height;
+ cuberight[0].verts[2][2] = 1.0;
+ cuberight[0].u[2] = uv_height;
+ cuberight[0].v[2] = uv_ratio;
+
+ //second triangle
+ cuberight[1].verts[0][0] = 1.0;
+ cuberight[1].verts[0][1] =-verts_height;
+ cuberight[1].verts[0][2] =-1.0;
+ cuberight[1].u[0] = uv_height;
+ cuberight[1].v[0] = 0.0;
+
+ cuberight[1].verts[1][0] = 1.0;
+ cuberight[1].verts[1][1] = 1.0;
+ cuberight[1].verts[1][2] = 1.0;
+ cuberight[1].u[1] = 0.0;
+ cuberight[1].v[1] = uv_ratio;
+
+ cuberight[1].verts[2][0] = 1.0;
+ cuberight[1].verts[2][1] = 1.0;
+ cuberight[1].verts[2][2] =-1.0;
+ cuberight[1].u[2] = 0.0;
+ cuberight[1].v[2] = 0.0;
+
+ nfacesright = 2;
+
+ // top Face - 2 triangles
+ cubetop[0].verts[0][0] =-1.0;
+ cubetop[0].verts[0][1] = 1.0;
+ cubetop[0].verts[0][2] = 1.0;
+ cubetop[0].u[0] = 0.0;
+ cubetop[0].v[0] = 0.0;
+
+ cubetop[0].verts[1][0] = 1.0;
+ cubetop[0].verts[1][1] =-verts_height;
+ cubetop[0].verts[1][2] = 1.0;
+ cubetop[0].u[1] = uv_ratio;
+ cubetop[0].v[1] = uv_height;
+
+ cubetop[0].verts[2][0] =-1.0;
+ cubetop[0].verts[2][1] =-verts_height;
+ cubetop[0].verts[2][2] = 1.0;
+ cubetop[0].u[2] = 0.0;
+ cubetop[0].v[2] = uv_height;
+
+ //second triangle
+ cubetop[1].verts[0][0] = 1.0;
+ cubetop[1].verts[0][1] =-verts_height;
+ cubetop[1].verts[0][2] = 1.0;
+ cubetop[1].u[0] = uv_ratio;
+ cubetop[1].v[0] = uv_height;
+
+ cubetop[1].verts[1][0] =-1.0;
+ cubetop[1].verts[1][1] = 1.0;
+ cubetop[1].verts[1][2] = 1.0;
+ cubetop[1].u[1] = 0.0;
+ cubetop[1].v[1] = 0.0;
+
+ cubetop[1].verts[2][0] = 1.0;
+ cubetop[1].verts[2][1] = 1.0;
+ cubetop[1].verts[2][2] = 1.0;
+ cubetop[1].u[2] = uv_ratio;
+ cubetop[1].v[2] = 0.0;
+
+ nfacestop = 2;
+
+ // bottom Face - 2 triangles
+ cubebottom[0].verts[0][0] =-1.0;
+ cubebottom[0].verts[0][1] =-verts_height;
+ cubebottom[0].verts[0][2] =-1.0;
+ cubebottom[0].u[0] = 0.0;
+ cubebottom[0].v[0] = uv_base;
+
+ cubebottom[0].verts[1][0] = 1.0;
+ cubebottom[0].verts[1][1] = 1.0;
+ cubebottom[0].verts[1][2] =-1.0;
+ cubebottom[0].u[1] = uv_ratio;
+ cubebottom[0].v[1] = uv_ratio;
+
+ cubebottom[0].verts[2][0] =-1.0;
+ cubebottom[0].verts[2][1] = 1.0;
+ cubebottom[0].verts[2][2] =-1.0;
+ cubebottom[0].u[2] = 0.0;
+ cubebottom[0].v[2] = uv_ratio;
+
+ //second triangle
+ cubebottom[1].verts[0][0] = 1.0;
+ cubebottom[1].verts[0][1] = 1.0;
+ cubebottom[1].verts[0][2] =-1.0;
+ cubebottom[1].u[0] = uv_ratio;
+ cubebottom[1].v[0] = uv_ratio;
+
+ cubebottom[1].verts[1][0] =-1.0;
+ cubebottom[1].verts[1][1] =-verts_height;
+ cubebottom[1].verts[1][2] =-1.0;
+ cubebottom[1].u[1] = 0.0;
+ cubebottom[1].v[1] = uv_base;
+
+ cubebottom[1].verts[2][0] = 1.0;
+ cubebottom[1].verts[2][1] =-verts_height;
+ cubebottom[1].verts[2][2] =-1.0;
+ cubebottom[1].u[2] = uv_ratio;
+ cubebottom[1].v[2] = uv_base;
+
+ nfacesbottom = 2;
+
+ //Refine a triangular mesh by bisecting each edge forms 3 new triangles for each existing triangle on each iteration
+ //It could be made more efficient for drawing if the triangles were ordered in a strip!
+
+ for(i=0;i<m_resolution;i++){
+ cubefront.resize(4*nfacesfront);
+ SplitFace(cubefront,&nfacesfront);
+ cubetop.resize(4*nfacestop);
+ SplitFace(cubetop,&nfacestop);
+ cubebottom.resize(4*nfacesbottom);
+ SplitFace(cubebottom,&nfacesbottom);
+ cubeleft.resize(4*nfacesleft);
+ SplitFace(cubeleft,&nfacesleft);
+ cuberight.resize(4*nfacesright);
+ SplitFace(cuberight,&nfacesright);
+ }
+
+ // Turn into a hemisphere/sphere
+ for(j=0;j<3;j++){
+ for(i=0;i<nfacesfront;i++)
+ cubefront[i].verts[j].normalize();
+ for(i=0;i<nfacestop;i++)
+ cubetop[i].verts[j].normalize();
+ for(i=0;i<nfacesbottom;i++)
+ cubebottom[i].verts[j].normalize();
+ for(i=0;i<nfacesleft;i++)
+ cubeleft[i].verts[j].normalize();
+ for(i=0;i<nfacesright;i++)
+ cuberight[i].verts[j].normalize();
+ }
+
+ //flatten onto xz plane
+ for(i=0;i<nfacesfront;i++)
+ FlattenDome(cubefront[i].verts);
+ for(i=0;i<nfacestop;i++)
+ FlattenDome(cubetop[i].verts);
+ for(i=0;i<nfacesbottom;i++)
+ FlattenDome(cubebottom[i].verts);
+ for(i=0;i<nfacesleft;i++)
+ FlattenDome(cubeleft[i].verts);
+ for(i=0;i<nfacesright;i++)
+ FlattenDome(cuberight[i].verts);
+}
+
+void KX_Dome::CreateMeshPanorama(void)
+{
+/*
+1)- Define the faces of a cube without the top and bottom faces
+ - each face is made out of 2 triangles
+2) Subdivide the faces
+ - more resolution == more curved lines
+3) Spherize the cube
+ - normalize the verts t
+4) Flatten onto xz plane
+ - use spherical projection techniques to transform the sphere onto a flat panorama
+*/
+ int i,j;
+
+ float sqrt_2 = sqrt(2.0);
+ float uv_ratio = (float)(m_buffersize-1) / m_imagesize;
+
+ /* Top face - two triangles */
+ cubetop[0].verts[0][0] = -sqrt_2;
+ cubetop[0].verts[0][1] = 0.0;
+ cubetop[0].verts[0][2] = 1.0;
+ cubetop[0].u[0] = 0.0;
+ cubetop[0].v[0] = uv_ratio;
+
+ cubetop[0].verts[1][0] = 0.0;
+ cubetop[0].verts[1][1] = sqrt_2;
+ cubetop[0].verts[1][2] = 1.0;
+ cubetop[0].u[1] = 0.0;
+ cubetop[0].v[1] = 0.0;
+
+ //second triangle
+ cubetop[0].verts[2][0] = sqrt_2;
+ cubetop[0].verts[2][1] = 0.0;
+ cubetop[0].verts[2][2] = 1.0;
+ cubetop[0].u[2] = uv_ratio;
+ cubetop[0].v[2] = 0.0;
+
+ cubetop[1].verts[0][0] = sqrt_2;
+ cubetop[1].verts[0][1] = 0.0;
+ cubetop[1].verts[0][2] = 1.0;
+ cubetop[1].u[0] = uv_ratio;
+ cubetop[1].v[0] = 0.0;
+
+ cubetop[1].verts[1][0] = 0.0;
+ cubetop[1].verts[1][1] = -sqrt_2;
+ cubetop[1].verts[1][2] = 1.0;
+ cubetop[1].u[1] = uv_ratio;
+ cubetop[1].v[1] = uv_ratio;
+
+ cubetop[1].verts[2][0] = -sqrt_2;
+ cubetop[1].verts[2][1] = 0.0;
+ cubetop[1].verts[2][2] = 1.0;
+ cubetop[1].u[2] = 0.0;
+ cubetop[1].v[2] = uv_ratio;
+
+ nfacestop = 2;
+
+ /* Bottom face - two triangles */
+ cubebottom[0].verts[0][0] = -sqrt_2;
+ cubebottom[0].verts[0][1] = 0.0;
+ cubebottom[0].verts[0][2] = -1.0;
+ cubebottom[0].u[0] = uv_ratio;
+ cubebottom[0].v[0] = 0.0;
+
+ cubebottom[0].verts[1][0] = sqrt_2;
+ cubebottom[0].verts[1][1] = 0.0;
+ cubebottom[0].verts[1][2] = -1.0;
+ cubebottom[0].u[1] = 0.0;
+ cubebottom[0].v[1] = uv_ratio;
+
+ cubebottom[0].verts[2][0] = 0.0;
+ cubebottom[0].verts[2][1] = sqrt_2;
+ cubebottom[0].verts[2][2] = -1.0;
+ cubebottom[0].u[2] = 0.0;
+ cubebottom[0].v[2] = 0.0;
+
+ //second triangle
+ cubebottom[1].verts[0][0] = sqrt_2;
+ cubebottom[1].verts[0][1] = 0.0;
+ cubebottom[1].verts[0][2] = -1.0;
+ cubebottom[1].u[0] = 0.0;
+ cubebottom[1].v[0] = uv_ratio;
+
+ cubebottom[1].verts[1][0] = -sqrt_2;
+ cubebottom[1].verts[1][1] = 0.0;
+ cubebottom[1].verts[1][2] = -1.0;
+ cubebottom[1].u[1] = uv_ratio;
+ cubebottom[1].v[1] = 0.0;
+
+ cubebottom[1].verts[2][0] = 0.0;
+ cubebottom[1].verts[2][1] = -sqrt_2;
+ cubebottom[1].verts[2][2] = -1.0;
+ cubebottom[1].u[2] = uv_ratio;
+ cubebottom[1].v[2] = uv_ratio;
+
+ nfacesbottom = 2;
+
+ /* Left Back (135º) face - two triangles */
+
+ cubeleftback[0].verts[0][0] = 0;
+ cubeleftback[0].verts[0][1] = -sqrt_2;
+ cubeleftback[0].verts[0][2] = -1.0;
+ cubeleftback[0].u[0] = 0;
+ cubeleftback[0].v[0] = 0;
+
+ cubeleftback[0].verts[1][0] = -sqrt_2;
+ cubeleftback[0].verts[1][1] = 0;
+ cubeleftback[0].verts[1][2] = -1.0;
+ cubeleftback[0].u[1] = uv_ratio;
+ cubeleftback[0].v[1] = 0;
+
+ cubeleftback[0].verts[2][0] = 0;
+ cubeleftback[0].verts[2][1] = -sqrt_2;
+ cubeleftback[0].verts[2][2] = 1.0;
+ cubeleftback[0].u[2] = 0;
+ cubeleftback[0].v[2] = uv_ratio;
+
+ //second triangle
+ cubeleftback[1].verts[0][0] = 0;
+ cubeleftback[1].verts[0][1] = -sqrt_2;
+ cubeleftback[1].verts[0][2] = 1.0;
+ cubeleftback[1].u[0] = 0;
+ cubeleftback[1].v[0] = uv_ratio;
+
+ cubeleftback[1].verts[1][0] = -sqrt_2;
+ cubeleftback[1].verts[1][1] = 0;
+ cubeleftback[1].verts[1][2] = -1.0;
+ cubeleftback[1].u[1] = uv_ratio;
+ cubeleftback[1].v[1] = 0;
+
+ cubeleftback[1].verts[2][0] = -sqrt_2;
+ cubeleftback[1].verts[2][1] = 0;
+ cubeleftback[1].verts[2][2] = 1.0;
+ cubeleftback[1].u[2] = uv_ratio;
+ cubeleftback[1].v[2] = uv_ratio;
+
+ nfacesleftback = 2;
+
+ /* Left face - two triangles */
+
+ cubeleft[0].verts[0][0] = -sqrt_2;
+ cubeleft[0].verts[0][1] = 0;
+ cubeleft[0].verts[0][2] = -1.0;
+ cubeleft[0].u[0] = 0;
+ cubeleft[0].v[0] = 0;
+
+ cubeleft[0].verts[1][0] = 0;
+ cubeleft[0].verts[1][1] = sqrt_2;
+ cubeleft[0].verts[1][2] = -1.0;
+ cubeleft[0].u[1] = uv_ratio;
+ cubeleft[0].v[1] = 0;
+
+ cubeleft[0].verts[2][0] = -sqrt_2;
+ cubeleft[0].verts[2][1] = 0;
+ cubeleft[0].verts[2][2] = 1.0;
+ cubeleft[0].u[2] = 0;
+ cubeleft[0].v[2] = uv_ratio;
+
+ //second triangle
+ cubeleft[1].verts[0][0] = -sqrt_2;
+ cubeleft[1].verts[0][1] = 0;
+ cubeleft[1].verts[0][2] = 1.0;
+ cubeleft[1].u[0] = 0;
+ cubeleft[1].v[0] = uv_ratio;
+
+ cubeleft[1].verts[1][0] = 0;
+ cubeleft[1].verts[1][1] = sqrt_2;
+ cubeleft[1].verts[1][2] = -1.0;
+ cubeleft[1].u[1] = uv_ratio;
+ cubeleft[1].v[1] = 0;
+
+ cubeleft[1].verts[2][0] = 0;
+ cubeleft[1].verts[2][1] = sqrt_2;
+ cubeleft[1].verts[2][2] = 1.0;
+ cubeleft[1].u[2] = uv_ratio;
+ cubeleft[1].v[2] = uv_ratio;
+
+ nfacesleft = 2;
+
+ /* Right face - two triangles */
+ cuberight[0].verts[0][0] = 0;
+ cuberight[0].verts[0][1] = sqrt_2;
+ cuberight[0].verts[0][2] = -1.0;
+ cuberight[0].u[0] = 0;
+ cuberight[0].v[0] = 0;
+
+ cuberight[0].verts[1][0] = sqrt_2;
+ cuberight[0].verts[1][1] = 0;
+ cuberight[0].verts[1][2] = -1.0;
+ cuberight[0].u[1] = uv_ratio;
+ cuberight[0].v[1] = 0;
+
+ cuberight[0].verts[2][0] = sqrt_2;
+ cuberight[0].verts[2][1] = 0;
+ cuberight[0].verts[2][2] = 1.0;
+ cuberight[0].u[2] = uv_ratio;
+ cuberight[0].v[2] = uv_ratio;
+
+ //second triangle
+ cuberight[1].verts[0][0] = 0;
+ cuberight[1].verts[0][1] = sqrt_2;
+ cuberight[1].verts[0][2] = -1.0;
+ cuberight[1].u[0] = 0;
+ cuberight[1].v[0] = 0;
+
+ cuberight[1].verts[1][0] = sqrt_2;
+ cuberight[1].verts[1][1] = 0;
+ cuberight[1].verts[1][2] = 1.0;
+ cuberight[1].u[1] = uv_ratio;
+ cuberight[1].v[1] = uv_ratio;
+
+ cuberight[1].verts[2][0] = 0;
+ cuberight[1].verts[2][1] = sqrt_2;
+ cuberight[1].verts[2][2] = 1.0;
+ cuberight[1].u[2] = 0;
+ cuberight[1].v[2] = uv_ratio;
+
+ nfacesright = 2;
+
+ /* Right Back (-135º) face - two triangles */
+ cuberightback[0].verts[0][0] = sqrt_2;
+ cuberightback[0].verts[0][1] = 0;
+ cuberightback[0].verts[0][2] = -1.0;
+ cuberightback[0].u[0] = 0;
+ cuberightback[0].v[0] = 0;
+
+ cuberightback[0].verts[1][0] = 0;
+ cuberightback[0].verts[1][1] = -sqrt_2;
+ cuberightback[0].verts[1][2] = -1.0;
+ cuberightback[0].u[1] = uv_ratio;
+ cuberightback[0].v[1] = 0;
+
+ cuberightback[0].verts[2][0] = 0;
+ cuberightback[0].verts[2][1] = -sqrt_2;
+ cuberightback[0].verts[2][2] = 1.0;
+ cuberightback[0].u[2] = uv_ratio;
+ cuberightback[0].v[2] = uv_ratio;
+
+ //second triangle
+ cuberightback[1].verts[0][0] = sqrt_2;
+ cuberightback[1].verts[0][1] = 0;
+ cuberightback[1].verts[0][2] = -1.0;
+ cuberightback[1].u[0] = 0;
+ cuberightback[1].v[0] = 0;
+
+ cuberightback[1].verts[1][0] = 0;
+ cuberightback[1].verts[1][1] = -sqrt_2;
+ cuberightback[1].verts[1][2] = 1.0;
+ cuberightback[1].u[1] = uv_ratio;
+ cuberightback[1].v[1] = uv_ratio;
+
+ cuberightback[1].verts[2][0] = sqrt_2;
+ cuberightback[1].verts[2][1] = 0;
+ cuberightback[1].verts[2][2] = 1.0;
+ cuberightback[1].u[2] = 0;
+ cuberightback[1].v[2] = uv_ratio;
+
+ nfacesrightback = 2;
+
+ // Subdivide the faces
+ for(i=0;i<m_resolution;i++)
+ {
+ cubetop.resize(4*nfacestop);
+ SplitFace(cubetop,&nfacestop);
+
+ cubebottom.resize(4*nfacesbottom);
+ SplitFace(cubebottom,&nfacesbottom);
+
+ cubeleft.resize(4*nfacesleft);
+ SplitFace(cubeleft,&nfacesleft);
+
+ cuberight.resize(4*nfacesright);
+ SplitFace(cuberight,&nfacesright);
+
+ cubeleftback.resize(4*nfacesleftback);
+ SplitFace(cubeleftback,&nfacesleftback);
+
+ cuberightback.resize(4*nfacesrightback);
+ SplitFace(cuberightback,&nfacesrightback);
+ }
+
+ // Spherize the cube
+ for(j=0;j<3;j++)
+ {
+ for(i=0;i<nfacestop;i++)
+ cubetop[i].verts[j].normalize();
+
+ for(i=0;i<nfacesbottom;i++)
+ cubebottom[i].verts[j].normalize();
+
+ for(i=0;i<nfacesleftback;i++)
+ cubeleftback[i].verts[j].normalize();
+
+ for(i=0;i<nfacesleft;i++)
+ cubeleft[i].verts[j].normalize();
+
+ for(i=0;i<nfacesright;i++)
+ cuberight[i].verts[j].normalize();
+
+ for(i=0;i<nfacesrightback;i++)
+ cuberightback[i].verts[j].normalize();
+ }
+
+ //Flatten onto xz plane
+ for(i=0;i<nfacesleftback;i++)
+ FlattenPanorama(cubeleftback[i].verts);
+
+ for(i=0;i<nfacesleft;i++)
+ FlattenPanorama(cubeleft[i].verts);
+
+ for(i=0;i<nfacesright;i++)
+ FlattenPanorama(cuberight[i].verts);
+
+ for(i=0;i<nfacesrightback;i++)
+ FlattenPanorama(cuberightback[i].verts);
+
+ for(i=0;i<nfacestop;i++)
+ FlattenPanorama(cubetop[i].verts);
+
+ for(i=0;i<nfacesbottom;i++)
+ FlattenPanorama(cubebottom[i].verts);
+}
+
+void KX_Dome::FlattenDome(MT_Vector3 verts[3])
+{
+ double phi, r;
+
+ for (int i=0;i<3;i++){
+ r = atan2(sqrt(verts[i][0]*verts[i][0] + verts[i][2]*verts[i][2]), verts[i][1]);
+ r /= m_radangle/2;
+
+ phi = atan2(verts[i][2], verts[i][0]);
+
+ verts[i][0] = r * cos(phi);
+ verts[i][1] = 0;
+ verts[i][2] = r * sin(phi);
+
+ if (r > 1.0){
+ //round the border
+ verts[i][0] = cos(phi);
+ verts[i][1] = -3.0;
+ verts[i][2] = sin(phi);
+ }
+ }
+}
+
+void KX_Dome::FlattenPanorama(MT_Vector3 verts[3])
+{
+// it creates a full spherical panoramic (360º)
+ int i;
+ double phi;
+ bool edge=false;
+
+ for (i=0;i<3;i++){
+ phi = atan2(verts[i][1], verts[i][0]);
+ phi *= -1.0; //flipping
+
+ if (phi == -MT_PI) //It's on the edge
+ edge=true;
+
+ verts[i][0] = phi / MT_PI;
+ verts[i][1] = 0;
+
+ verts[i][2] = atan2(verts[i][2], 1.0);
+ verts[i][2] /= MT_PI / 2;
+ }
+ if(edge){
+ bool right=false;
+
+ for (i=0;i<3;i++){
+ if(fmod(verts[i][0],1.0) > 0.0){
+ right=true;
+ break;
+ }
+ }
+ if(right){
+ for (i=0;i<3;i++){
+ if(verts[i][0] < 0.0)
+ verts[i][0] *= -1.0;
+ }
+ }
+ }
+}
+
+void KX_Dome::SplitFace(vector <DomeFace>& face, int *nfaces)
+{
+ int i;
+ int n1, n2;
+
+ n1 = n2 = *nfaces;
+
+ for(i=0;i<n1;i++){
+
+ face[n2].verts[0] = (face[i].verts[0] + face[i].verts[1]) /2;
+ face[n2].verts[1] = face[i].verts[1];
+ face[n2].verts[2] = (face[i].verts[1] + face[i].verts[2]) /2;
+ face[n2].u[0] = (face[i].u[0] + face[i].u[1]) /2;
+ face[n2].u[1] = face[i].u[1];
+ face[n2].u[2] = (face[i].u[1] + face[i].u[2]) /2;
+ face[n2].v[0] = (face[i].v[0] + face[i].v[1]) /2;
+ face[n2].v[1] = face[i].v[1];
+ face[n2].v[2] = (face[i].v[1] + face[i].v[2]) /2;
+
+ face[n2+1].verts[0] = (face[i].verts[1] + face[i].verts[2]) /2;
+ face[n2+1].verts[1] = face[i].verts[2];
+ face[n2+1].verts[2] = (face[i].verts[2] + face[i].verts[0]) /2;
+ face[n2+1].u[0] = (face[i].u[1] + face[i].u[2]) /2;
+ face[n2+1].u[1] = face[i].u[2];
+ face[n2+1].u[2] = (face[i].u[2] + face[i].u[0]) /2;
+ face[n2+1].v[0] = (face[i].v[1] + face[i].v[2]) /2;
+ face[n2+1].v[1] = face[i].v[2];
+ face[n2+1].v[2] = (face[i].v[2] + face[i].v[0]) /2;
+
+ face[n2+2].verts[0] = (face[i].verts[0] + face[i].verts[1]) /2;
+ face[n2+2].verts[1] = (face[i].verts[1] + face[i].verts[2]) /2;
+ face[n2+2].verts[2] = (face[i].verts[2] + face[i].verts[0]) /2;
+ face[n2+2].u[0] = (face[i].u[0] + face[i].u[1]) /2;
+ face[n2+2].u[1] = (face[i].u[1] + face[i].u[2]) /2;
+ face[n2+2].u[2] = (face[i].u[2] + face[i].u[0]) /2;
+ face[n2+2].v[0] = (face[i].v[0] + face[i].v[1]) /2;
+ face[n2+2].v[1] = (face[i].v[1] + face[i].v[2]) /2;
+ face[n2+2].v[2] = (face[i].v[2] + face[i].v[0]) /2;
+
+ //face[i].verts[0] = face[i].verts[0] ;
+ face[i].verts[1] = (face[i].verts[0] + face[i].verts[1]) /2;
+ face[i].verts[2] = (face[i].verts[0] + face[i].verts[2]) /2;
+ //face[i].u[0] = face[i].u[0];
+ face[i].u[1] = (face[i].u[0] + face[i].u[1]) /2;
+ face[i].u[2] = (face[i].u[0] + face[i].u[2]) /2;
+ //face[i].v[0] = face[i].v[0] ;
+ face[i].v[1] = (face[i].v[0] + face[i].v[1]) /2;
+ face[i].v[2] = (face[i].v[0] + face[i].v[2]) /2;
+
+ n2 += 3; // number of faces
+ }
+ *nfaces = n2;
+}
+
+void KX_Dome::CalculateFrustum(KX_Camera * cam)
+{
+ /*
+ // manually creating a 90º Field of View Frustum
+
+ the original formula:
+ top = tan(fov*3.14159/360.0) * near [for fov in degrees]
+ fov*0.5 = arctan ((top-bottom)*0.5 / near) [for fov in radians]
+ bottom = -top
+ left = aspect * bottom
+ right = aspect * top
+
+ // the equivalent GLU call is:
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+ gluPerspective(90.0,1.0,cam->GetCameraNear(),cam->GetCameraFar());
+ */
+
+ RAS_FrameFrustum m_frustrum; //90 deg. Frustum
+
+ m_frustrum.camnear = cam->GetCameraNear();
+ m_frustrum.camfar = cam->GetCameraFar();
+
+// float top = tan(90.0*MT_PI/360.0) * m_frustrum.camnear;
+ float top = m_frustrum.camnear; // for deg = 90º, tan = 1
+
+ m_frustrum.x1 = -top;
+ m_frustrum.x2 = top;
+ m_frustrum.y1 = -top;
+ m_frustrum.y2 = top;
+
+ m_projmat = m_rasterizer->GetFrustumMatrix(
+ m_frustrum.x1, m_frustrum.x2, m_frustrum.y1, m_frustrum.y2, m_frustrum.camnear, m_frustrum.camfar);
+
+}
+
+void KX_Dome::CalculateCameraOrientation()
+{
+/*
+Uses 4 cameras for angles up to 180º
+Uses 5 cameras for angles up to 250º
+Uses 6 cameras for angles up to 360º
+*/
+ float deg45 = MT_PI / 4;
+ MT_Scalar c = cos(deg45);
+ MT_Scalar s = sin(deg45);
+
+ if ((m_mode == DOME_FISHEYE && m_angle <= 180)|| m_mode == DOME_TRUNCATED){
+
+ m_locRot[0] = MT_Matrix3x3( // 90º - Top
+ c, -s, 0.0,
+ 0.0,0.0, -1.0,
+ s, c, 0.0);
+
+ m_locRot[1] = MT_Matrix3x3( // 90º - Bottom
+ -s, c, 0.0,
+ 0.0,0.0, 1.0,
+ s, c, 0.0);
+
+ m_locRot[2] = MT_Matrix3x3( // 45º - Left
+ c, 0.0, s,
+ 0, 1.0, 0.0,
+ -s, 0.0, c);
+
+ m_locRot[3] = MT_Matrix3x3( // 45º - Right
+ c, 0.0, -s,
+ 0.0, 1.0, 0.0,
+ s, 0.0, c);
+
+ } else if ((m_mode == DOME_FISHEYE && m_angle > 180)){
+
+ m_locRot[0] = MT_Matrix3x3( // 90º - Top
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0,-1.0,
+ 0.0, 1.0, 0.0);
+
+ m_locRot[1] = MT_Matrix3x3( // 90º - Bottom
+ 1.0, 0.0, 0.0,
+ 0.0, 0.0, 1.0,
+ 0.0,-1.0, 0.0);
+
+ m_locRot[2] = MT_Matrix3x3( // -90º - Left
+ 0.0, 0.0, 1.0,
+ 0.0, 1.0, 0.0,
+ -1.0, 0.0, 0.0);
+
+ m_locRot[3] = MT_Matrix3x3( // 90º - Right
+ 0.0, 0.0,-1.0,
+ 0.0, 1.0, 0.0,
+ 1.0, 0.0, 0.0);
+
+ m_locRot[4] = MT_Matrix3x3( // 0º - Front
+ 1.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 1.0);
+
+ m_locRot[5] = MT_Matrix3x3( // 180º - Back - NOT USING
+ -1.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0,-1.0);
+
+ } else if (m_mode == DOME_PANORAM_SPH){
+
+ m_locRot[0] = MT_Matrix3x3( // Top
+ c, s, 0.0,
+ 0.0,0.0, -1.0,
+ -s, c, 0.0);
+
+ m_locRot[1] = MT_Matrix3x3( // Bottom
+ c, s, 0.0,
+ 0.0 ,0.0, 1.0,
+ s, -c, 0.0);
+
+ m_locRot[2] = MT_Matrix3x3( // 45º - Left
+ -s, 0.0, c,
+ 0, 1.0, 0.0,
+ -c, 0.0, -s);
+
+ m_locRot[3] = MT_Matrix3x3( // 45º - Right
+ c, 0.0, s,
+ 0, 1.0, 0.0,
+ -s, 0.0, c);
+
+ m_locRot[4] = MT_Matrix3x3( // 135º - LeftBack
+ -s, 0.0, -c,
+ 0.0, 1.0, 0.0,
+ c, 0.0, -s);
+
+ m_locRot[5] = MT_Matrix3x3( // 135º - RightBack
+ c, 0.0, -s,
+ 0.0, 1.0, 0.0,
+ s, 0.0, c);
+ }
+}
+
+void KX_Dome::RotateCamera(KX_Camera* cam, int i)
+{
+// I'm not using it, I'm doing inline calls for these commands
+// but it's nice to have it here in case I need it
+
+ MT_Matrix3x3 camori = cam->GetSGNode()->GetLocalOrientation();
+
+ cam->NodeSetLocalOrientation(camori*m_locRot[i]);
+ cam->NodeUpdateGS(0.f);
+
+ MT_Transform camtrans(cam->GetWorldToCamera());
+ MT_Matrix4x4 viewmat(camtrans);
+ m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldPosition(),
+ cam->GetCameraLocation(), cam->GetCameraOrientation());
+ cam->SetModelviewMatrix(viewmat);
+
+ // restore the original orientation
+ cam->NodeSetLocalOrientation(camori);
+ cam->NodeUpdateGS(0.f);
+}
+
+void KX_Dome::Draw(void)
+{
+
+ switch(m_mode){
+ case DOME_FISHEYE:
+ DrawDomeFisheye();
+ break;
+ case DOME_TRUNCATED:
+ DrawDomeFisheye();
+ break;
+ case DOME_PANORAM_SPH:
+ DrawPanorama();
+ break;
+ }
+
+ if(warp.usemesh)
+ {
+ glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
+ glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_viewport.GetLeft(), m_viewport.GetBottom(), warp.bufferwidth, warp.bufferheight);
+ DrawDomeWarped();
+ }
+}
+
+void KX_Dome::DrawDomeFisheye(void)
+{
+ int i,j;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ // Making the viewport always square
+
+ int can_width = m_viewport.GetRight();
+ int can_height = m_viewport.GetTop();
+
+ float ortho_width, ortho_height;
+
+ if (warp.usemesh)
+ glOrtho((-1.0), 1.0, (-1.0), 1.0, -20.0, 10.0); //stretch the image to reduce resolution lost
+
+ else if(m_mode == DOME_TRUNCATED){
+ ortho_width = 1.0;
+ ortho_height = 2 * ((float)can_height/can_width) - 1.0 ;
+
+ ortho_width /= m_size;
+ ortho_height /= m_size;
+
+ glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_width, -20.0, 10.0);
+ } else {
+ if (can_width < can_height){
+ ortho_width = 1.0;
+ ortho_height = (float)can_height/can_width;
+ }else{
+ ortho_width = (float)can_width/can_height;
+ ortho_height = 1.0;
+ }
+
+ ortho_width /= m_size;
+ ortho_height /= m_size;
+
+ glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_height, -20.0, 10.0);
+ }
+
+ glMatrixMode(GL_TEXTURE);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt(0.0,-1.0,0.0, 0.0,0.0,0.0, 0.0,0.0,1.0);
+
+ if(m_drawingmode == RAS_IRasterizer::KX_WIREFRAME)
+ glPolygonMode(GL_FRONT, GL_LINE);
+ else
+ glPolygonMode(GL_FRONT, GL_FILL);
+
+ glShadeModel(GL_SMOOTH);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_DEPTH_TEST);
+
+ glEnable(GL_TEXTURE_2D);
+ glColor3f(1.0,1.0,1.0);
+
+ if (dlistSupported){
+ for(i=0;i<m_numfaces;i++){
+ glBindTexture(GL_TEXTURE_2D, domefacesId[i]);
+ glCallList(dlistId+i);
+ }
+ }
+ else { // DisplayLists not supported
+ // top triangle
+ glBindTexture(GL_TEXTURE_2D, domefacesId[0]);
+ GLDrawTriangles(cubetop, nfacestop);
+
+ // bottom triangle
+ glBindTexture(GL_TEXTURE_2D, domefacesId[1]);
+ GLDrawTriangles(cubebottom, nfacesbottom);
+
+ // left triangle
+ glBindTexture(GL_TEXTURE_2D, domefacesId[2]);
+ GLDrawTriangles(cubeleft, nfacesleft);
+
+ // right triangle
+ glBindTexture(GL_TEXTURE_2D, domefacesId[3]);
+ GLDrawTriangles(cuberight, nfacesright);
+
+ if (m_angle > 180){
+ // front triangle
+ glBindTexture(GL_TEXTURE_2D, domefacesId[4]);
+ GLDrawTriangles(cubefront, nfacesfront);
+ }
+ }
+ glDisable(GL_TEXTURE_2D);
+ glEnable(GL_DEPTH_TEST);
+}
+
+void KX_Dome::DrawPanorama(void)
+{
+ int i,j;
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ // Making the viewport always square
+
+ int can_width = m_viewport.GetRight();
+ int can_height = m_viewport.GetTop();
+
+ float ortho_height = 1.0;
+ float ortho_width = 1.0;
+
+ if (warp.usemesh)
+ glOrtho((-1.0), 1.0, (-0.5), 0.5, -20.0, 10.0); //stretch the image to reduce resolution lost
+
+ else {
+ //using all the screen
+ if ((can_width / 2) <= (can_height)){
+ ortho_width = 1.0;
+ ortho_height = (float)can_height/can_width;
+ }else{
+ ortho_width = (float)can_width/can_height * 0.5;
+ ortho_height = 0.5;
+ }
+
+ ortho_width /= m_size;
+ ortho_height /= m_size;
+
+ glOrtho((-ortho_width), ortho_width, (-ortho_height), ortho_height, -20.0, 10.0);
+ }
+
+ glMatrixMode(GL_TEXTURE);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt(0.0,-1.0,0.0, 0.0,0.0,0.0, 0.0,0.0,1.0);
+
+ if(m_drawingmode == RAS_IRasterizer::KX_WIREFRAME)
+ glPolygonMode(GL_FRONT, GL_LINE);
+ else
+ glPolygonMode(GL_FRONT, GL_FILL);
+
+ glShadeModel(GL_SMOOTH);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_DEPTH_TEST);
+
+ glEnable(GL_TEXTURE_2D);
+ glColor3f(1.0,1.0,1.0);
+
+ if (dlistSupported){
+ for(i=0;i<m_numfaces;i++){
+ glBindTexture(GL_TEXTURE_2D, domefacesId[i]);
+ glCallList(dlistId+i);
+ }
+ }
+ else {
+ // domefacesId[4] => (top)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[0]);
+ GLDrawTriangles(cubetop, nfacestop);
+
+ // domefacesId[5] => (bottom)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[1]);
+ GLDrawTriangles(cubebottom, nfacesbottom);
+
+ // domefacesId[1] => -45º (left)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[2]);
+ GLDrawTriangles(cubeleft, nfacesleft);
+
+ // domefacesId[2] => 45º (right)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[3]);
+ GLDrawTriangles(cuberight, nfacesright);
+
+ // domefacesId[0] => -135º (leftback)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[4]);
+ GLDrawTriangles(cubeleftback, nfacesleftback);
+
+ // domefacesId[3] => 135º (rightback)
+ glBindTexture(GL_TEXTURE_2D, domefacesId[5]);
+ GLDrawTriangles(cuberightback, nfacesrightback);
+ }
+ glDisable(GL_TEXTURE_2D);
+ glEnable(GL_DEPTH_TEST);
+}
+
+void KX_Dome::DrawDomeWarped(void)
+{
+ int i,j;
+
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glMatrixMode(GL_PROJECTION);
+ glLoadIdentity();
+
+ // Making the viewport always square
+ int can_width = m_viewport.GetRight();
+ int can_height = m_viewport.GetTop();
+
+ double screen_ratio = can_width/ (double) can_height;
+ screen_ratio /= m_size;
+
+ glOrtho(-screen_ratio,screen_ratio,-1.0,1.0,-20.0,10.0);
+
+
+ glMatrixMode(GL_TEXTURE);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glLoadIdentity();
+ gluLookAt(0.0, 0.0, 1.0, 0.0,0.0,0.0, 0.0,1.0,0.0);
+
+ if(m_drawingmode == RAS_IRasterizer::KX_WIREFRAME)
+ glPolygonMode(GL_FRONT, GL_LINE);
+ else
+ glPolygonMode(GL_FRONT, GL_FILL);
+
+ glShadeModel(GL_SMOOTH);
+ glDisable(GL_LIGHTING);
+ glDisable(GL_DEPTH_TEST);
+
+ glEnable(GL_TEXTURE_2D);
+ glColor3f(1.0,1.0,1.0);
+
+
+ float uv_width = (float)(warp.bufferwidth-1) / warp.imagewidth;
+ float uv_height = (float)(warp.bufferheight-1) / warp.imageheight;
+
+ if (dlistSupported){
+ glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
+ glCallList(dlistId + m_numfaces);
+ }
+ else{
+ glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
+ GLDrawWarpQuads();
+ }
+ glDisable(GL_TEXTURE_2D);
+ glEnable(GL_DEPTH_TEST);
+}
+
+void KX_Dome::BindImages(int i)
+{
+ glBindTexture(GL_TEXTURE_2D, domefacesId[i]);
+ glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_viewport.GetLeft(), m_viewport.GetBottom(), m_buffersize, m_buffersize);
+}
+
+void KX_Dome::RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i)
+{
+ if (!cam)
+ return;
+
+ m_canvas->SetViewPort(0,0,m_buffersize-1,m_buffersize-1);
+
+// m_rasterizer->SetAmbient();
+ m_rasterizer->DisplayFog();
+
+ CalculateFrustum(cam); //calculates m_projmat
+ cam->SetProjectionMatrix(m_projmat);
+ m_rasterizer->SetProjectionMatrix(cam->GetProjectionMatrix());
+// Dome_RotateCamera(cam,i);
+
+ MT_Matrix3x3 camori = cam->GetSGNode()->GetLocalOrientation();
+
+ cam->NodeSetLocalOrientation(camori*m_locRot[i]);
+ cam->NodeUpdateGS(0.f);
+
+ MT_Transform camtrans(cam->GetWorldToCamera());
+ MT_Matrix4x4 viewmat(camtrans);
+ m_rasterizer->SetViewMatrix(viewmat, cam->NodeGetWorldPosition(),
+ cam->GetCameraLocation(), cam->GetCameraOrientation());
+ cam->SetModelviewMatrix(viewmat);
+
+ scene->CalculateVisibleMeshes(m_rasterizer,cam);
+ scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
+
+ // restore the original orientation
+ cam->NodeSetLocalOrientation(camori);
+ cam->NodeUpdateGS(0.f);
+} \ No newline at end of file
diff --git a/source/gameengine/Ketsji/KX_Dome.h b/source/gameengine/Ketsji/KX_Dome.h
new file mode 100644
index 00000000000..786e04b4385
--- /dev/null
+++ b/source/gameengine/Ketsji/KX_Dome.h
@@ -0,0 +1,183 @@
+/* $Id$
+-----------------------------------------------------------------------------
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place - Suite 330, Boston, MA 02111-1307, USA, or go to
+http://www.gnu.org/copyleft/lesser.txt.
+
+Contributor(s): Dalai Felinto
+
+This source uses some of the ideas and code from Paul Bourke.
+Developed as part of a Research and Development project for SAT - La Société des arts technologiques.
+-----------------------------------------------------------------------------
+*/
+
+#if !defined KX_DOME_H
+#define KX_DOME_H
+
+#include "KX_Scene.h"
+#include "KX_Camera.h"
+#include "DNA_screen_types.h"
+#include "RAS_ICanvas.h"
+#include "RAS_IRasterizer.h"
+#include "RAS_IRenderTools.h"
+#include "KX_KetsjiEngine.h"
+
+#include "GL/glew.h"
+#include <vector>
+
+#include "MEM_guardedalloc.h"
+#include "BKE_text.h"
+//#include "BLI_blenlib.h"
+
+//Dome modes: limit hardcoded in buttons_scene.c
+#define DOME_FISHEYE 1
+#define DOME_TRUNCATED 2
+#define DOME_PANORAM_SPH 3
+#define DOME_NUM_MODES 4
+
+
+/// class for render 3d scene
+class KX_Dome
+{
+public:
+ /// constructor
+ KX_Dome (
+ RAS_ICanvas* m_canvas,
+ /// rasterizer
+ RAS_IRasterizer* m_rasterizer,
+ /// render tools
+ RAS_IRenderTools* m_rendertools,
+ /// engine
+ KX_KetsjiEngine* m_engine,
+
+ float size,
+ short res,
+ short mode,
+ short angle,
+ float resbuf,
+ struct Text* warptext
+ );
+
+ /// destructor
+ virtual ~KX_Dome (void);
+
+ //openGL checks:
+ bool dlistSupported;
+
+ //openGL names:
+ GLuint domefacesId[7]; // ID of the images -- room for 7 images, using only 4 for 180º x 360º dome, 6 for panoramic and +1 for warp mesh
+ GLuint dlistId; // ID of the Display Lists of the images (used as an offset)
+
+ typedef struct {
+ double u[3], v[3];
+ MT_Vector3 verts[3]; //three verts
+ } DomeFace;
+
+ //mesh warp functions
+ typedef struct {
+ double x, y, u, v, i;
+ } WarpMeshNode;
+
+ struct {
+ bool usemesh;
+ int mode;
+ int n_width, n_height; //nodes width and height
+ int imagewidth, imageheight;
+ int bufferwidth, bufferheight;
+ vector <vector <WarpMeshNode> > nodes;
+ } warp;
+
+ bool ParseWarpMesh(STR_String text);
+
+ vector <DomeFace> cubetop, cubebottom, cuberight, cubeleft, cubefront, cubeback; //for fisheye
+ vector <DomeFace> cubeleftback, cuberightback; //for panorama
+
+ int nfacestop, nfacesbottom, nfacesleft, nfacesright, nfacesfront, nfacesback;
+ int nfacesleftback, nfacesrightback;
+
+ int GetNumberRenders(){return m_numfaces;};
+
+ void RenderDome(void);
+ void RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i);
+ void BindImages(int i);
+
+ void SetViewPort(GLuint viewport[4]);
+ void CalculateFrustum(KX_Camera* cam);
+ void RotateCamera(KX_Camera* cam, int i);
+
+ //Mesh Creating Functions
+ void CreateMeshDome180(void);
+ void CreateMeshDome250(void);
+ void CreateMeshPanorama(void);
+
+ void SplitFace(vector <DomeFace>& face, int *nfaces);
+
+ void FlattenDome(MT_Vector3 verts[3]);
+ void FlattenPanorama(MT_Vector3 verts[3]);
+
+ //Draw functions
+ void GLDrawTriangles(vector <DomeFace>& face, int nfaces);
+ void GLDrawWarpQuads(void);
+ void Draw(void);
+ void DrawDomeFisheye(void);
+ void DrawPanorama(void);
+ void DrawDomeWarped(void);
+
+ //setting up openGL
+ void CreateGLImages(void);
+ void ClearGLImages(void);//called on resize
+ bool CreateDL(void); //create Display Lists
+ void ClearDL(void); //remove Display Lists
+
+ void CalculateCameraOrientation();
+ void CalculateImageSize(); //set m_imagesize
+
+ int canvaswidth;
+ int canvasheight;
+
+protected:
+ int m_drawingmode;
+
+ int m_imagesize;
+ int m_buffersize; // canvas small dimension
+ int m_numfaces; // 4 to 6 depending on the kind of dome image
+ int m_numimages; //numfaces +1 if we have warp mesh
+
+ float m_size; // size to adjust
+ short m_resolution; //resolution to tesselate the mesh
+ short m_mode; // the mode (truncated, warped, panoramic,...)
+ short m_angle; //the angle of the fisheye
+ float m_radangle; //the angle of the fisheye in radians
+ float m_resbuffer; //the resolution of the buffer
+
+ RAS_Rect m_viewport;
+
+ MT_Matrix4x4 m_projmat;
+
+ MT_Matrix3x3 m_locRot [6];// the rotation matrix
+
+ /// rendered scene
+ KX_Scene * m_scene;
+
+ /// canvas
+ RAS_ICanvas* m_canvas;
+ /// rasterizer
+ RAS_IRasterizer* m_rasterizer;
+ /// render tools
+ RAS_IRenderTools* m_rendertools;
+ /// engine
+ KX_KetsjiEngine* m_engine;
+};
+
+#endif
diff --git a/source/gameengine/Ketsji/KX_GameActuator.cpp b/source/gameengine/Ketsji/KX_GameActuator.cpp
index 3c0695b5952..8b587c6f7de 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.cpp
+++ b/source/gameengine/Ketsji/KX_GameActuator.cpp
@@ -208,22 +208,22 @@ bool KX_GameActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_GameActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_GameActuator",
- sizeof(KX_GameActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -241,21 +241,38 @@ PyParentObject KX_GameActuator::Parents[] =
PyMethodDef KX_GameActuator::Methods[] =
{
+ // Deprecated ----->
{"getFile", (PyCFunction) KX_GameActuator::sPyGetFile, METH_VARARGS, (PY_METHODCHAR)GetFile_doc},
{"setFile", (PyCFunction) KX_GameActuator::sPySetFile, METH_VARARGS, (PY_METHODCHAR)SetFile_doc},
+ // <-----
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_GameActuator::Attributes[] = {
+ KX_PYATTRIBUTE_STRING_RW("file",0,100,false,KX_GameActuator,m_filename),
{ NULL } //Sentinel
};
+PyObject*
+KX_GameActuator::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_IActuator);
+}
+
+int KX_GameActuator::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_IActuator);
+}
+
+
+// Deprecated ----->
/* getFile */
const char KX_GameActuator::GetFile_doc[] =
"getFile()\n"
"get the name of the file to start.\n";
-PyObject* KX_GameActuator::PyGetFile(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_GameActuator::PyGetFile(PyObject* args, PyObject* kwds)
{
+ ShowDeprecationWarning("getFile()", "the file property");
return PyString_FromString(m_filename);
}
@@ -263,11 +280,13 @@ PyObject* KX_GameActuator::PyGetFile(PyObject* self, PyObject* args, PyObject* k
const char KX_GameActuator::SetFile_doc[] =
"setFile(name)\n"
"set the name of the file to start.\n";
-PyObject* KX_GameActuator::PySetFile(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_GameActuator::PySetFile(PyObject* args, PyObject* kwds)
{
char* new_file;
+
+ ShowDeprecationWarning("setFile()", "the file property");
- if (!PyArg_ParseTuple(args, "s", &new_file))
+ if (!PyArg_ParseTuple(args, "s:setFile", &new_file))
{
return NULL;
}
@@ -277,12 +296,4 @@ PyObject* KX_GameActuator::PySetFile(PyObject* self, PyObject* args, PyObject* k
Py_RETURN_NONE;
}
-
-
-
-PyObject* KX_GameActuator::_getattr(const char *attr)
-{
- _getattr_up(SCA_IActuator);
-}
-
-
+// <-----
diff --git a/source/gameengine/Ketsji/KX_GameActuator.h b/source/gameengine/Ketsji/KX_GameActuator.h
index 856fa0c24e9..570cb2e68ef 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.h
+++ b/source/gameengine/Ketsji/KX_GameActuator.h
@@ -77,9 +77,13 @@ protected:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+
+ // Deprecated functions ----->
KX_PYMETHOD_DOC(KX_GameActuator,GetFile);
KX_PYMETHOD_DOC(KX_GameActuator,SetFile);
+ // <-----
}; /* end of class KX_GameActuator */
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp
index 95df9d51a26..bea0fcff2af 100644
--- a/source/gameengine/Ketsji/KX_GameObject.cpp
+++ b/source/gameengine/Ketsji/KX_GameObject.cpp
@@ -55,6 +55,7 @@ typedef unsigned long uint_ptr;
#include <stdio.h> // printf
#include "SG_Controller.h"
#include "KX_IPhysicsController.h"
+#include "PHY_IGraphicController.h"
#include "SG_Node.h"
#include "SG_Controller.h"
#include "KX_ClientObjectInfo.h"
@@ -64,6 +65,8 @@ typedef unsigned long uint_ptr;
#include "KX_PyMath.h"
#include "SCA_IActuator.h"
#include "SCA_ISensor.h"
+#include "SCA_IController.h"
+#include "NG_NetworkScene.h" //Needed for sendMessage()
#include "PyObjectPlus.h" /* python stuff */
@@ -72,6 +75,12 @@ typedef unsigned long uint_ptr;
#include "KX_SG_NodeRelationships.h"
+static MT_Point3 dummy_point= MT_Point3(0.0, 0.0, 0.0);
+static MT_Vector3 dummy_scaling = MT_Vector3(1.0, 1.0, 1.0);
+static MT_Matrix3x3 dummy_orientation = MT_Matrix3x3( 1.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0,
+ 0.0, 0.0, 1.0);
+
KX_GameObject::KX_GameObject(
void* sgReplicationInfo,
SG_Callbacks callbacks,
@@ -87,11 +96,14 @@ KX_GameObject::KX_GameObject(
m_bIsNegativeScaling(false),
m_bVisible(true),
m_bCulled(true),
+ m_bOccluder(false),
m_pPhysicsController1(NULL),
+ m_pGraphicController(NULL),
m_pPhysicsEnvironment(NULL),
m_xray(false),
m_pHitObject(NULL),
- m_isDeformable(false)
+ m_isDeformable(false),
+ m_attr_dict(NULL)
{
m_ignore_activity_culling = false;
m_pClient_info = new KX_ClientObjectInfo(this, KX_ClientObjectInfo::ACTOR);
@@ -129,9 +141,23 @@ KX_GameObject::~KX_GameObject()
}
m_pSGNode->SetSGClientObject(NULL);
}
+ if (m_pGraphicController)
+ {
+ delete m_pGraphicController;
+ }
+
+ if (m_attr_dict) {
+ PyDict_Clear(m_attr_dict); /* incase of circular refs or other weired cases */
+ Py_DECREF(m_attr_dict);
+ }
}
-
+KX_GameObject* KX_GameObject::GetClientObject(KX_ClientObjectInfo* info)
+{
+ if (!info)
+ return NULL;
+ return info->m_gameobject;
+}
CValue* KX_GameObject:: Calc(VALUE_OPERATOR op, CValue *val)
{
@@ -154,7 +180,7 @@ const STR_String & KX_GameObject::GetText()
-float KX_GameObject::GetNumber()
+double KX_GameObject::GetNumber()
{
return 0;
}
@@ -246,7 +272,7 @@ void KX_GameObject::SetParent(KX_Scene *scene, KX_GameObject* obj)
NodeSetLocalScale(scale1);
NodeSetLocalPosition(MT_Point3(newpos[0],newpos[1],newpos[2]));
NodeSetLocalOrientation(invori*NodeGetWorldOrientation());
- NodeUpdateGS(0.f,true);
+ NodeUpdateGS(0.f);
// object will now be a child, it must be removed from the parent list
CListValue* rootlist = scene->GetRootParentList();
if (rootlist->RemoveValue(this))
@@ -266,6 +292,7 @@ void KX_GameObject::SetParent(KX_Scene *scene, KX_GameObject* obj)
rootobj->m_pPhysicsController1->AddCompoundChild(m_pPhysicsController1);
}
}
+ // graphically, the object hasn't change place, no need to update m_pGraphicController
}
}
@@ -283,7 +310,7 @@ void KX_GameObject::RemoveParent(KX_Scene *scene)
// Remove us from our parent
GetSGNode()->DisconnectFromParent();
- NodeUpdateGS(0.f,true);
+ NodeUpdateGS(0.f);
// the object is now a root object, add it to the parentlist
CListValue* rootlist = scene->GetRootParentList();
if (!rootlist->SearchValue(this))
@@ -300,16 +327,21 @@ void KX_GameObject::RemoveParent(KX_Scene *scene)
}
m_pPhysicsController1->RestoreDynamics();
}
+ // graphically, the object hasn't change place, no need to update m_pGraphicController
}
}
void KX_GameObject::ProcessReplica(KX_GameObject* replica)
{
replica->m_pPhysicsController1 = NULL;
+ replica->m_pGraphicController = NULL;
replica->m_pSGNode = NULL;
replica->m_pClient_info = new KX_ClientObjectInfo(*m_pClient_info);
replica->m_pClient_info->m_gameobject = replica;
replica->m_state = 0;
+ if(m_attr_dict)
+ replica->m_attr_dict= PyDict_Copy(m_attr_dict);
+
}
@@ -345,11 +377,14 @@ void KX_GameObject::ApplyTorque(const MT_Vector3& torque,bool local)
void KX_GameObject::ApplyMovement(const MT_Vector3& dloc,bool local)
{
- if (m_pPhysicsController1) // (IsDynamic())
+ if (GetSGNode())
{
- m_pPhysicsController1->RelativeTranslate(dloc,local);
+ if (m_pPhysicsController1) // (IsDynamic())
+ {
+ m_pPhysicsController1->RelativeTranslate(dloc,local);
+ }
+ GetSGNode()->RelativeTranslate(dloc,GetSGNode()->GetSGParent(),local);
}
- GetSGNode()->RelativeTranslate(dloc,GetSGNode()->GetSGParent(),local);
}
@@ -357,11 +392,13 @@ void KX_GameObject::ApplyMovement(const MT_Vector3& dloc,bool local)
void KX_GameObject::ApplyRotation(const MT_Vector3& drot,bool local)
{
MT_Matrix3x3 rotmat(drot);
+
+ if (GetSGNode()) {
+ GetSGNode()->RelativeRotate(rotmat,local);
- GetSGNode()->RelativeRotate(rotmat,local);
-
- if (m_pPhysicsController1) { // (IsDynamic())
- m_pPhysicsController1->RelativeRotate(rotmat,local);
+ if (m_pPhysicsController1) { // (IsDynamic())
+ m_pPhysicsController1->RelativeRotate(rotmat,local);
+ }
}
}
@@ -374,16 +411,17 @@ double* KX_GameObject::GetOpenGLMatrix()
{
// todo: optimize and only update if necessary
double* fl = m_OpenGL_4x4Matrix.getPointer();
- MT_Transform trans;
+ if (GetSGNode()) {
+ MT_Transform trans;
- trans.setOrigin(GetSGNode()->GetWorldPosition());
- trans.setBasis(GetSGNode()->GetWorldOrientation());
+ trans.setOrigin(GetSGNode()->GetWorldPosition());
+ trans.setBasis(GetSGNode()->GetWorldOrientation());
- MT_Vector3 scaling = GetSGNode()->GetWorldScaling();
- m_bIsNegativeScaling = ((scaling[0] < 0.0) ^ (scaling[1] < 0.0) ^ (scaling[2] < 0.0)) ? true : false;
- trans.scale(scaling[0], scaling[1], scaling[2]);
- trans.getValue(fl);
-
+ MT_Vector3 scaling = GetSGNode()->GetWorldScaling();
+ m_bIsNegativeScaling = ((scaling[0] < 0.0) ^ (scaling[1] < 0.0) ^ (scaling[2] < 0.0)) ? true : false;
+ trans.scale(scaling[0], scaling[1], scaling[2]);
+ trans.getValue(fl);
+ }
return fl;
}
@@ -414,13 +452,15 @@ static void UpdateBuckets_recursive(SG_Node* node)
void KX_GameObject::UpdateBuckets( bool recursive )
{
- double* fl = GetOpenGLMatrix();
+ if (GetSGNode()) {
+ double* fl = GetOpenGLMatrixPtr()->getPointer();
- for (size_t i=0;i<m_meshes.size();i++)
- m_meshes[i]->UpdateBuckets(this, fl, m_bUseObjectColor, m_objectColor, m_bVisible, m_bCulled);
+ for (size_t i=0;i<m_meshes.size();i++)
+ m_meshes[i]->UpdateBuckets(this, fl, m_bUseObjectColor, m_objectColor, m_bVisible, m_bCulled);
- if (recursive) {
- UpdateBuckets_recursive(m_pSGNode);
+ if (recursive) {
+ UpdateBuckets_recursive(GetSGNode());
+ }
}
}
@@ -434,22 +474,18 @@ void KX_GameObject::RemoveMeshes()
m_meshes.clear();
}
-
-
-void KX_GameObject::UpdateNonDynas()
+void KX_GameObject::UpdateTransform()
{
if (m_pPhysicsController1)
- {
+ // only update the transform of static object, dynamic object are handled differently
+ // note that for bullet, this does not even update the transform of static object
+ // but merely sets there collision flag to "kinematic" because the synchronization is
+ // done differently during physics simulation
m_pPhysicsController1->SetSumoTransform(true);
- }
-}
-
-
+ if (m_pGraphicController)
+ // update the culling tree
+ m_pGraphicController->SetGraphicTransform();
-void KX_GameObject::UpdateTransform()
-{
- if (m_pPhysicsController1)
- m_pPhysicsController1->SetSumoTransform(false);
}
void KX_GameObject::UpdateTransformFunc(SG_IObject* node, void* gameobj, void* scene)
@@ -575,28 +611,43 @@ KX_GameObject::SetVisible(
bool recursive
)
{
- m_bVisible = v;
- if (recursive)
- setVisible_recursive(m_pSGNode, v);
+ if (GetSGNode()) {
+ m_bVisible = v;
+ if (recursive)
+ setVisible_recursive(GetSGNode(), v);
+ }
}
-bool
-KX_GameObject::GetCulled(
- void
- )
+static void setOccluder_recursive(SG_Node* node, bool v)
{
- return m_bCulled;
+ NodeList& children = node->GetSGChildren();
+
+ for (NodeList::iterator childit = children.begin();!(childit==children.end());++childit)
+ {
+ SG_Node* childnode = (*childit);
+ KX_GameObject *clientgameobj = static_cast<KX_GameObject*>( (*childit)->GetSGClientObject());
+ if (clientgameobj != NULL) // This is a GameObject
+ clientgameobj->SetOccluder(v, false);
+
+ // if the childobj is NULL then this may be an inverse parent link
+ // so a non recursive search should still look down this node.
+ setOccluder_recursive(childnode, v);
+ }
}
void
-KX_GameObject::SetCulled(
- bool c
+KX_GameObject::SetOccluder(
+ bool v,
+ bool recursive
)
{
- m_bCulled = c;
+ if (GetSGNode()) {
+ m_bOccluder = v;
+ if (recursive)
+ setOccluder_recursive(GetSGNode(), v);
+ }
}
-
void
KX_GameObject::SetLayer(
int l
@@ -764,6 +815,16 @@ MT_Scalar KX_GameObject::GetMass()
return 0.0;
}
+MT_Vector3 KX_GameObject::GetLocalInertia()
+{
+ MT_Vector3 local_inertia(0.0,0.0,0.0);
+ if (m_pPhysicsController1)
+ {
+ local_inertia = m_pPhysicsController1->GetLocalInertia();
+ }
+ return local_inertia;
+}
+
MT_Vector3 KX_GameObject::GetLinearVelocity(bool local)
{
MT_Vector3 velocity(0.0,0.0,0.0), locvel;
@@ -829,6 +890,7 @@ void KX_GameObject::NodeSetLocalPosition(const MT_Point3& trans)
}
GetSGNode()->SetLocalPosition(trans);
+
}
@@ -883,7 +945,9 @@ void KX_GameObject::NodeSetRelativeScale(const MT_Vector3& scale)
void KX_GameObject::NodeSetWorldPosition(const MT_Point3& trans)
{
- SG_Node* parent = m_pSGNode->GetSGParent();
+ if (!GetSGNode())
+ return;
+ SG_Node* parent = GetSGNode()->GetSGParent();
if (parent != NULL)
{
// Make sure the objects have some scale
@@ -908,7 +972,7 @@ void KX_GameObject::NodeSetWorldPosition(const MT_Point3& trans)
}
-void KX_GameObject::NodeUpdateGS(double time,bool bInitiator)
+void KX_GameObject::NodeUpdateGS(double time)
{
if (GetSGNode())
GetSGNode()->UpdateWorldData(time);
@@ -918,13 +982,9 @@ void KX_GameObject::NodeUpdateGS(double time,bool bInitiator)
const MT_Matrix3x3& KX_GameObject::NodeGetWorldOrientation() const
{
- static MT_Matrix3x3 defaultOrientation = MT_Matrix3x3( 1.0, 0.0, 0.0,
- 0.0, 1.0, 0.0,
- 0.0, 0.0, 1.0);
-
// check on valid node in case a python controller holds a reference to a deleted object
if (!GetSGNode())
- return defaultOrientation;
+ return dummy_orientation;
return GetSGNode()->GetWorldOrientation();
}
@@ -932,11 +992,9 @@ const MT_Matrix3x3& KX_GameObject::NodeGetWorldOrientation() const
const MT_Vector3& KX_GameObject::NodeGetWorldScaling() const
{
- static MT_Vector3 defaultScaling = MT_Vector3(1.0, 1.0, 1.0);
-
// check on valid node in case a python controller holds a reference to a deleted object
if (!GetSGNode())
- return defaultScaling;
+ return dummy_scaling;
return GetSGNode()->GetWorldScaling();
}
@@ -949,7 +1007,7 @@ const MT_Point3& KX_GameObject::NodeGetWorldPosition() const
if (GetSGNode())
return GetSGNode()->GetWorldPosition();
else
- return MT_Point3(0.0, 0.0, 0.0);
+ return dummy_point;
}
/* Suspend/ resume: for the dynamic behaviour, there is a simple
@@ -963,7 +1021,8 @@ void KX_GameObject::Resume(void)
{
if (m_suspended) {
SCA_IObject::Resume();
- GetPhysicsController()->RestoreDynamics();
+ if(GetPhysicsController())
+ GetPhysicsController()->RestoreDynamics();
m_suspended = false;
}
@@ -974,22 +1033,54 @@ void KX_GameObject::Suspend()
if ((!m_ignore_activity_culling)
&& (!m_suspended)) {
SCA_IObject::Suspend();
- GetPhysicsController()->SuspendDynamics();
+ if(GetPhysicsController())
+ GetPhysicsController()->SuspendDynamics();
m_suspended = true;
}
}
+static void walk_children(SG_Node* node, CListValue* list, bool recursive)
+{
+ if (!node)
+ return;
+ NodeList& children = node->GetSGChildren();
+ for (NodeList::iterator childit = children.begin();!(childit==children.end());++childit)
+ {
+ SG_Node* childnode = (*childit);
+ CValue* childobj = (CValue*)childnode->GetSGClientObject();
+ if (childobj != NULL) // This is a GameObject
+ {
+ // add to the list
+ list->Add(childobj->AddRef());
+ }
+
+ // if the childobj is NULL then this may be an inverse parent link
+ // so a non recursive search should still look down this node.
+ if (recursive || childobj==NULL) {
+ walk_children(childnode, list, recursive);
+ }
+ }
+}
+CListValue* KX_GameObject::GetChildren()
+{
+ CListValue* list = new CListValue();
+ walk_children(GetSGNode(), list, 0); /* GetSGNode() is always valid or it would have raised an exception before this */
+ return list;
+}
-/* ------- python stuff ---------------------------------------------------*/
-
+CListValue* KX_GameObject::GetChildrenRecursive()
+{
+ CListValue* list = new CListValue();
+ walk_children(GetSGNode(), list, 1);
+ return list;
+}
+/* ------- python stuff ---------------------------------------------------*/
PyMethodDef KX_GameObject::Methods[] = {
- {"getPosition", (PyCFunction) KX_GameObject::sPyGetPosition, METH_NOARGS},
- {"setPosition", (PyCFunction) KX_GameObject::sPySetPosition, METH_O},
{"setWorldPosition", (PyCFunction) KX_GameObject::sPySetWorldPosition, METH_O},
{"applyForce", (PyCFunction) KX_GameObject::sPyApplyForce, METH_VARARGS},
{"applyTorque", (PyCFunction) KX_GameObject::sPyApplyTorque, METH_VARARGS},
@@ -1000,14 +1091,7 @@ PyMethodDef KX_GameObject::Methods[] = {
{"getAngularVelocity", (PyCFunction) KX_GameObject::sPyGetAngularVelocity, METH_VARARGS},
{"setAngularVelocity", (PyCFunction) KX_GameObject::sPySetAngularVelocity, METH_VARARGS},
{"getVelocity", (PyCFunction) KX_GameObject::sPyGetVelocity, METH_VARARGS},
- {"getMass", (PyCFunction) KX_GameObject::sPyGetMass, METH_NOARGS},
{"getReactionForce", (PyCFunction) KX_GameObject::sPyGetReactionForce, METH_NOARGS},
- {"getOrientation", (PyCFunction) KX_GameObject::sPyGetOrientation, METH_NOARGS},
- {"setOrientation", (PyCFunction) KX_GameObject::sPySetOrientation, METH_O},
- {"getVisible",(PyCFunction) KX_GameObject::sPyGetVisible, METH_NOARGS},
- {"setVisible",(PyCFunction) KX_GameObject::sPySetVisible, METH_VARARGS},
- {"getState",(PyCFunction) KX_GameObject::sPyGetState, METH_NOARGS},
- {"setState",(PyCFunction) KX_GameObject::sPySetState, METH_O},
{"alignAxisToVect",(PyCFunction) KX_GameObject::sPyAlignAxisToVect, METH_VARARGS},
{"getAxisVect",(PyCFunction) KX_GameObject::sPyGetAxisVect, METH_O},
{"suspendDynamics", (PyCFunction)KX_GameObject::sPySuspendDynamics,METH_NOARGS},
@@ -1016,25 +1100,66 @@ PyMethodDef KX_GameObject::Methods[] = {
{"disableRigidBody", (PyCFunction)KX_GameObject::sPyDisableRigidBody,METH_NOARGS},
{"applyImpulse", (PyCFunction) KX_GameObject::sPyApplyImpulse, METH_VARARGS},
{"setCollisionMargin", (PyCFunction) KX_GameObject::sPySetCollisionMargin, METH_O},
- {"getParent", (PyCFunction)KX_GameObject::sPyGetParent,METH_NOARGS},
{"setParent", (PyCFunction)KX_GameObject::sPySetParent,METH_O},
+ {"setVisible",(PyCFunction) KX_GameObject::sPySetVisible, METH_VARARGS},
+ {"setOcclusion",(PyCFunction) KX_GameObject::sPySetOcclusion, METH_VARARGS},
{"removeParent", (PyCFunction)KX_GameObject::sPyRemoveParent,METH_NOARGS},
{"getChildren", (PyCFunction)KX_GameObject::sPyGetChildren,METH_NOARGS},
{"getChildrenRecursive", (PyCFunction)KX_GameObject::sPyGetChildrenRecursive,METH_NOARGS},
- {"getMesh", (PyCFunction)KX_GameObject::sPyGetMesh,METH_VARARGS},
{"getPhysicsId", (PyCFunction)KX_GameObject::sPyGetPhysicsId,METH_NOARGS},
{"getPropertyNames", (PyCFunction)KX_GameObject::sPyGetPropertyNames,METH_NOARGS},
{"replaceMesh",(PyCFunction) KX_GameObject::sPyReplaceMesh, METH_O},
{"endObject",(PyCFunction) KX_GameObject::sPyEndObject, METH_NOARGS},
+
KX_PYMETHODTABLE(KX_GameObject, rayCastTo),
KX_PYMETHODTABLE(KX_GameObject, rayCast),
KX_PYMETHODTABLE_O(KX_GameObject, getDistanceTo),
KX_PYMETHODTABLE_O(KX_GameObject, getVectTo),
+ KX_PYMETHODTABLE(KX_GameObject, sendMessage),
+
+ // deprecated
+ {"getPosition", (PyCFunction) KX_GameObject::sPyGetPosition, METH_NOARGS},
+ {"setPosition", (PyCFunction) KX_GameObject::sPySetPosition, METH_O},
+ {"getOrientation", (PyCFunction) KX_GameObject::sPyGetOrientation, METH_NOARGS},
+ {"setOrientation", (PyCFunction) KX_GameObject::sPySetOrientation, METH_O},
+ {"getState",(PyCFunction) KX_GameObject::sPyGetState, METH_NOARGS},
+ {"setState",(PyCFunction) KX_GameObject::sPySetState, METH_O},
+ {"getParent", (PyCFunction)KX_GameObject::sPyGetParent,METH_NOARGS},
+ {"getVisible",(PyCFunction) KX_GameObject::sPyGetVisible, METH_NOARGS},
+ {"getMass", (PyCFunction) KX_GameObject::sPyGetMass, METH_NOARGS},
+ {"getMesh", (PyCFunction)KX_GameObject::sPyGetMesh,METH_VARARGS},
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_GameObject::Attributes[] = {
- { NULL } //Sentinel
+ KX_PYATTRIBUTE_RO_FUNCTION("name", KX_GameObject, pyattr_get_name),
+ KX_PYATTRIBUTE_RO_FUNCTION("parent", KX_GameObject, pyattr_get_parent),
+ KX_PYATTRIBUTE_RW_FUNCTION("mass", KX_GameObject, pyattr_get_mass, pyattr_set_mass),
+ KX_PYATTRIBUTE_RW_FUNCTION("linVelocityMin", KX_GameObject, pyattr_get_lin_vel_min, pyattr_set_lin_vel_min),
+ KX_PYATTRIBUTE_RW_FUNCTION("linVelocityMax", KX_GameObject, pyattr_get_lin_vel_max, pyattr_set_lin_vel_max),
+ KX_PYATTRIBUTE_RW_FUNCTION("visible", KX_GameObject, pyattr_get_visible, pyattr_set_visible),
+ KX_PYATTRIBUTE_BOOL_RW ("occlusion", KX_GameObject, m_bOccluder),
+ KX_PYATTRIBUTE_RW_FUNCTION("position", KX_GameObject, pyattr_get_worldPosition, pyattr_set_localPosition),
+ KX_PYATTRIBUTE_RO_FUNCTION("localInertia", KX_GameObject, pyattr_get_localInertia),
+ KX_PYATTRIBUTE_RW_FUNCTION("orientation",KX_GameObject,pyattr_get_worldOrientation,pyattr_set_localOrientation),
+ KX_PYATTRIBUTE_RW_FUNCTION("scaling", KX_GameObject, pyattr_get_worldScaling, pyattr_set_localScaling),
+ KX_PYATTRIBUTE_RW_FUNCTION("timeOffset",KX_GameObject, pyattr_get_timeOffset,pyattr_set_timeOffset),
+ KX_PYATTRIBUTE_RW_FUNCTION("state", KX_GameObject, pyattr_get_state, pyattr_set_state),
+ KX_PYATTRIBUTE_RO_FUNCTION("meshes", KX_GameObject, pyattr_get_meshes),
+ KX_PYATTRIBUTE_RW_FUNCTION("localOrientation",KX_GameObject,pyattr_get_localOrientation,pyattr_set_localOrientation),
+ KX_PYATTRIBUTE_RO_FUNCTION("worldOrientation",KX_GameObject,pyattr_get_worldOrientation),
+ KX_PYATTRIBUTE_RW_FUNCTION("localPosition", KX_GameObject, pyattr_get_localPosition, pyattr_set_localPosition),
+ KX_PYATTRIBUTE_RW_FUNCTION("worldPosition", KX_GameObject, pyattr_get_worldPosition, pyattr_set_worldPosition),
+ KX_PYATTRIBUTE_RW_FUNCTION("localScaling", KX_GameObject, pyattr_get_localScaling, pyattr_set_localScaling),
+ KX_PYATTRIBUTE_RO_FUNCTION("worldScaling", KX_GameObject, pyattr_get_worldScaling),
+
+ KX_PYATTRIBUTE_RO_FUNCTION("__dict__", KX_GameObject, pyattr_get_dir_dict),
+
+ /* Experemental, dont rely on these yet */
+ KX_PYATTRIBUTE_RO_FUNCTION("sensors", KX_GameObject, pyattr_get_sensors),
+ KX_PYATTRIBUTE_RO_FUNCTION("controllers", KX_GameObject, pyattr_get_controllers),
+ KX_PYATTRIBUTE_RO_FUNCTION("actuators", KX_GameObject, pyattr_get_actuators),
+ {NULL} //Sentinel
};
@@ -1054,29 +1179,19 @@ bool KX_GameObject::ConvertPythonVectorArgs(PyObject* args,
}
*/
-PyObject* KX_GameObject::PyReplaceMesh(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PyReplaceMesh(PyObject* value)
{
KX_Scene *scene = KX_GetActiveScene();
- char* meshname;
- void* mesh_pt;
-
- meshname = PyString_AsString(value);
- if (meshname==NULL) {
- PyErr_SetString(PyExc_ValueError, "Expected a mesh name");
- return NULL;
- }
- mesh_pt = SCA_ILogicBrick::m_sCurrentLogicManager->GetMeshByName(STR_String(meshname));
+ RAS_MeshObject* new_mesh;
- if (mesh_pt==NULL) {
- PyErr_SetString(PyExc_ValueError, "The mesh name given does not exist");
+ if (!ConvertPythonToMesh(value, &new_mesh, false, "gameOb.replaceMesh(value): KX_GameObject"))
return NULL;
- }
- scene->ReplaceMesh(this, (class RAS_MeshObject*)mesh_pt);
+ scene->ReplaceMesh(this, new_mesh);
Py_RETURN_NONE;
}
-PyObject* KX_GameObject::PyEndObject(PyObject* self)
+PyObject* KX_GameObject::PyEndObject()
{
KX_Scene *scene = KX_GetActiveScene();
@@ -1087,34 +1202,183 @@ PyObject* KX_GameObject::PyEndObject(PyObject* self)
}
-PyObject* KX_GameObject::PyGetPosition(PyObject* self)
+PyObject* KX_GameObject::PyGetPosition()
{
+ ShowDeprecationWarning("getPosition()", "the position property");
return PyObjectFrom(NodeGetWorldPosition());
}
+Py_ssize_t KX_GameObject::Map_Len(PyObject* self_v)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(self_v);
+
+ if (self==NULL) /* not sure what to do here */
+ return 0;
+
+ Py_ssize_t len= self->GetPropertyCount();
+ if(self->m_attr_dict)
+ len += PyDict_Size(self->m_attr_dict);
+ return len;
+}
+
+
+PyObject *KX_GameObject::Map_GetItem(PyObject *self_v, PyObject *item)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(self_v);
+ const char *attr_str= PyString_AsString(item);
+ CValue* resultattr;
+ PyObject* pyconvert;
+
+ if (self==NULL) {
+ PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
+ /* first see if the attributes a string and try get the cvalue attribute */
+ if(attr_str && (resultattr=self->GetProperty(attr_str))) {
+ pyconvert = resultattr->ConvertValueToPython();
+ return pyconvert ? pyconvert:resultattr->GetProxy();
+ }
+ /* no CValue attribute, try get the python only m_attr_dict attribute */
+ else if (self->m_attr_dict && (pyconvert=PyDict_GetItem(self->m_attr_dict, item))) {
+
+ if (attr_str)
+ PyErr_Clear();
+ Py_INCREF(pyconvert);
+ return pyconvert;
+ }
+ else {
+ if(attr_str) PyErr_Format(PyExc_KeyError, "value = gameOb[key]: KX_GameObject, key \"%s\" does not exist", attr_str);
+ else PyErr_SetString(PyExc_KeyError, "value = gameOb[key]: KX_GameObject, key does not exist");
+ return NULL;
+ }
+
+}
+
+
+int KX_GameObject::Map_SetItem(PyObject *self_v, PyObject *key, PyObject *val)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>BGE_PROXY_REF(self_v);
+ const char *attr_str= PyString_AsString(key);
+ if(attr_str==NULL)
+ PyErr_Clear();
+
+ if (self==NULL) {
+ PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ return -1;
+ }
+
+ if (val==NULL) { /* del ob["key"] */
+ int del= 0;
+
+ /* try remove both just incase */
+ if(attr_str)
+ del |= (self->RemoveProperty(attr_str)==true) ? 1:0;
+
+ if(self->m_attr_dict)
+ del |= (PyDict_DelItem(self->m_attr_dict, key)==0) ? 1:0;
+
+ if (del==0) {
+ if(attr_str) PyErr_Format(PyExc_KeyError, "gameOb[key] = value: KX_GameObject, key \"%s\" could not be set", attr_str);
+ else PyErr_SetString(PyExc_KeyError, "gameOb[key] = value: KX_GameObject, key could not be set");
+ return -1;
+ }
+ else if (self->m_attr_dict) {
+ PyErr_Clear(); /* PyDict_DelItem sets an error when it fails */
+ }
+ }
+ else { /* ob["key"] = value */
+ int set= 0;
+
+ /* as CValue */
+ if(attr_str)
+ {
+ CValue* vallie = self->ConvertPythonToValue(val);
+
+ if(vallie)
+ {
+ CValue* oldprop = self->GetProperty(attr_str);
+
+ if (oldprop)
+ oldprop->SetValue(vallie);
+ else
+ self->SetProperty(attr_str, vallie);
+
+ vallie->Release();
+ set= 1;
+
+ /* try remove dict value to avoid double ups */
+ if (self->m_attr_dict){
+ if (PyDict_DelItem(self->m_attr_dict, key) != 0)
+ PyErr_Clear();
+ }
+ }
+ else {
+ PyErr_Clear();
+ }
+ }
+
+ if(set==0)
+ {
+ if (self->m_attr_dict==NULL) /* lazy init */
+ self->m_attr_dict= PyDict_New();
+
+
+ if(PyDict_SetItem(self->m_attr_dict, key, val)==0)
+ {
+ if(attr_str)
+ self->RemoveProperty(attr_str); /* overwrite the CValue if it exists */
+ set= 1;
+ }
+ else {
+ if(attr_str) PyErr_Format(PyExc_KeyError, "gameOb[key] = value: KX_GameObject, key \"%s\" not be added to internal dictionary", attr_str);
+ else PyErr_SetString(PyExc_KeyError, "gameOb[key] = value: KX_GameObject, key not be added to internal dictionary");
+ }
+ }
+
+ if(set==0)
+ return -1; /* pythons error value */
+
+ }
+
+ return 0; /* success */
+}
+
+
+PyMappingMethods KX_GameObject::Mapping = {
+ (lenfunc)KX_GameObject::Map_Len, /*inquiry mp_length */
+ (binaryfunc)KX_GameObject::Map_GetItem, /*binaryfunc mp_subscript */
+ (objobjargproc)KX_GameObject::Map_SetItem, /*objobjargproc mp_ass_subscript */
+};
+
PyTypeObject KX_GameObject::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_GameObject",
- sizeof(KX_GameObject),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,
+ &Mapping,
+ 0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
+
+
+
PyParentObject KX_GameObject::Parents[] = {
&KX_GameObject::Type,
&SCA_IObject::Type,
@@ -1122,181 +1386,448 @@ PyParentObject KX_GameObject::Parents[] = {
NULL
};
+PyObject* KX_GameObject::pyattr_get_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ return PyString_FromString(self->GetName().ReadPtr());
+}
+PyObject* KX_GameObject::pyattr_get_parent(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ KX_GameObject* parent = self->GetParent();
+ if (parent)
+ return parent->GetProxy();
+ Py_RETURN_NONE;
+}
+PyObject* KX_GameObject::pyattr_get_mass(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ KX_IPhysicsController *spc = self->GetPhysicsController();
+ return PyFloat_FromDouble(spc ? spc->GetMass() : 0.0f);
+}
-PyObject* KX_GameObject::_getattr(const char *attr)
+int KX_GameObject::pyattr_set_mass(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
- if (m_pPhysicsController1)
- {
- if (!strcmp(attr, "mass"))
- return PyFloat_FromDouble(m_pPhysicsController1->GetMass());
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ KX_IPhysicsController *spc = self->GetPhysicsController();
+ MT_Scalar val = PyFloat_AsDouble(value);
+ if (val < 0.0f) { /* also accounts for non float */
+ PyErr_SetString(PyExc_AttributeError, "gameOb.mass = float: KX_GameObject, expected a float zero or above");
+ return 1;
}
- if (!strcmp(attr, "parent"))
- {
- KX_GameObject* parent = GetParent();
- if (parent)
- return parent->AddRef();
- Py_RETURN_NONE;
+ if (spc)
+ spc->SetMass(val);
+
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_lin_vel_min(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ KX_IPhysicsController *spc = self->GetPhysicsController();
+ return PyFloat_FromDouble(spc ? spc->GetLinVelocityMax() : 0.0f);
+}
+
+int KX_GameObject::pyattr_set_lin_vel_min(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ KX_IPhysicsController *spc = self->GetPhysicsController();
+ MT_Scalar val = PyFloat_AsDouble(value);
+ if (val < 0.0f) { /* also accounts for non float */
+ PyErr_SetString(PyExc_AttributeError, "gameOb.linVelocityMin = float: KX_GameObject, expected a float zero or above");
+ return 1;
}
- if (!strcmp(attr, "visible"))
- return PyInt_FromLong(m_bVisible);
-
- if (!strcmp(attr, "position"))
- return PyObjectFrom(NodeGetWorldPosition());
-
- if (!strcmp(attr, "orientation"))
- return PyObjectFrom(NodeGetWorldOrientation());
+ if (spc)
+ spc->SetLinVelocityMin(val);
+
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_lin_vel_max(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ KX_IPhysicsController *spc = self->GetPhysicsController();
+ return PyFloat_FromDouble(spc ? spc->GetLinVelocityMax() : 0.0f);
+}
+
+int KX_GameObject::pyattr_set_lin_vel_max(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ KX_IPhysicsController *spc = self->GetPhysicsController();
+ MT_Scalar val = PyFloat_AsDouble(value);
+ if (val < 0.0f) { /* also accounts for non float */
+ PyErr_SetString(PyExc_AttributeError, "gameOb.linVelocityMax = float: KX_GameObject, expected a float zero or above");
+ return 1;
+ }
+
+ if (spc)
+ spc->SetLinVelocityMax(val);
+
+ return 0;
+}
+
+
+PyObject* KX_GameObject::pyattr_get_visible(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ return PyBool_FromLong(self->GetVisible());
+}
+
+int KX_GameObject::pyattr_set_visible(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ int param = PyObject_IsTrue( value );
+ if (param == -1) {
+ PyErr_SetString(PyExc_AttributeError, "gameOb.visible = bool: KX_GameObject, expected True or False");
+ return 1;
+ }
+
+ self->SetVisible(param, false);
+ self->UpdateBuckets(false);
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_worldPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ return PyObjectFrom(self->NodeGetWorldPosition());
+}
+
+int KX_GameObject::pyattr_set_worldPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ MT_Point3 pos;
+ if (!PyVecTo(value, pos))
+ return 1;
- if (!strcmp(attr, "scaling"))
- return PyObjectFrom(NodeGetWorldScaling());
-
- if (!strcmp(attr, "name"))
- return PyString_FromString(m_name.ReadPtr());
+ self->NodeSetWorldPosition(pos);
+ self->NodeUpdateGS(0.f);
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_localPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ if (self->GetSGNode())
+ return PyObjectFrom(self->GetSGNode()->GetLocalPosition());
+ else
+ return PyObjectFrom(dummy_point);
+}
+
+int KX_GameObject::pyattr_set_localPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ MT_Point3 pos;
+ if (!PyVecTo(value, pos))
+ return 1;
- if (!strcmp(attr, "timeOffset"))
+ self->NodeSetLocalPosition(pos);
+ self->NodeUpdateGS(0.f);
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_localInertia(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ if (self->GetPhysicsController())
{
- if (m_pSGNode->GetSGParent()->IsSlowParent()) {
- return PyFloat_FromDouble(static_cast<KX_SlowParentRelation *>(m_pSGNode->GetSGParent()->GetParentRelation())->GetTimeOffset());
- } else {
- return PyFloat_FromDouble(0.0);
- }
+ return PyObjectFrom(self->GetPhysicsController()->GetLocalInertia());
}
+ return Py_BuildValue("fff", 0.0f, 0.0f, 0.0f);
+}
+
+PyObject* KX_GameObject::pyattr_get_worldOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ return PyObjectFrom(self->NodeGetWorldOrientation());
+}
+
+PyObject* KX_GameObject::pyattr_get_localOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ if (self->GetSGNode())
+ return PyObjectFrom(self->GetSGNode()->GetLocalOrientation());
+ else
+ return PyObjectFrom(dummy_orientation);
+}
+
+int KX_GameObject::pyattr_set_localOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
-
- _getattr_up(SCA_IObject);
+ /* if value is not a sequence PyOrientationTo makes an error */
+ MT_Matrix3x3 rot;
+ if (!PyOrientationTo(value, rot, "gameOb.orientation = sequence: KX_GameObject, "))
+ return NULL;
+
+ self->NodeSetLocalOrientation(rot);
+ self->NodeUpdateGS(0.f);
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_worldScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ return PyObjectFrom(self->NodeGetWorldScaling());
+}
+
+PyObject* KX_GameObject::pyattr_get_localScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ if (self->GetSGNode())
+ return PyObjectFrom(self->GetSGNode()->GetLocalScale());
+ else
+ return PyObjectFrom(dummy_scaling);
+}
+
+int KX_GameObject::pyattr_set_localScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ MT_Vector3 scale;
+ if (!PyVecTo(value, scale))
+ return 1;
+
+ self->NodeSetLocalScale(scale);
+ self->NodeUpdateGS(0.f);
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_timeOffset(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ SG_Node* sg_parent;
+ if (self->GetSGNode() && (sg_parent = self->GetSGNode()->GetSGParent()) != NULL && sg_parent->IsSlowParent()) {
+ return PyFloat_FromDouble(static_cast<KX_SlowParentRelation *>(sg_parent->GetParentRelation())->GetTimeOffset());
+ } else {
+ return PyFloat_FromDouble(0.0);
+ }
+}
+
+int KX_GameObject::pyattr_set_timeOffset(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ if (self->GetSGNode()) {
+ MT_Scalar val = PyFloat_AsDouble(value);
+ SG_Node* sg_parent= self->GetSGNode()->GetSGParent();
+ if (val < 0.0f) { /* also accounts for non float */
+ PyErr_SetString(PyExc_AttributeError, "gameOb.timeOffset = float: KX_GameObject, expected a float zero or above");
+ return 1;
+ }
+ if (sg_parent && sg_parent->IsSlowParent())
+ static_cast<KX_SlowParentRelation *>(sg_parent->GetParentRelation())->SetTimeOffset(val);
+ }
+ return 0;
}
-int KX_GameObject::_setattr(const char *attr, PyObject *value) // _setattr method
+PyObject* KX_GameObject::pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ int state = 0;
+ state |= self->GetState();
+ return PyInt_FromLong(state);
+}
+
+int KX_GameObject::pyattr_set_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ int state_i = PyInt_AsLong(value);
+ unsigned int state = 0;
- if (!strcmp(attr, "parent")) {
- PyErr_SetString(PyExc_AttributeError, "attribute \"parent\" is read only\nUse setParent()");
+ if (state_i == -1 && PyErr_Occurred()) {
+ PyErr_SetString(PyExc_TypeError, "gameOb.state = int: KX_GameObject, expected an int bit field");
return 1;
}
-
- if (PyInt_Check(value))
+
+ state |= state_i;
+ if ((state & ((1<<30)-1)) == 0) {
+ PyErr_SetString(PyExc_AttributeError, "gameOb.state = int: KX_GameObject, state bitfield was not between 0 and 30 (1<<0 and 1<<29)");
+ return 1;
+ }
+ self->SetState(state);
+ return 0;
+}
+
+PyObject* KX_GameObject::pyattr_get_meshes(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ PyObject *meshes= PyList_New(self->m_meshes.size());
+ int i;
+
+ for(i=0; i < self->m_meshes.size(); i++)
{
- int val = PyInt_AsLong(value);
- if (!strcmp(attr, "visible"))
- {
- SetVisible(val != 0, false);
- UpdateBuckets(false);
- return 0;
- }
+ KX_MeshProxy* meshproxy = new KX_MeshProxy(self->m_meshes[i]);
+ PyList_SET_ITEM(meshes, i, meshproxy->GetProxy());
}
+
+ return meshes;
+}
- if (PyFloat_Check(value))
+/* experemental! */
+PyObject* KX_GameObject::pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ SCA_SensorList& sensors= self->GetSensors();
+ PyObject* resultlist = PyList_New(sensors.size());
+
+ for (unsigned int index=0;index<sensors.size();index++)
+ PyList_SET_ITEM(resultlist, index, sensors[index]->GetProxy());
+
+ return resultlist;
+}
+
+PyObject* KX_GameObject::pyattr_get_controllers(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ SCA_ControllerList& controllers= self->GetControllers();
+ PyObject* resultlist = PyList_New(controllers.size());
+
+ for (unsigned int index=0;index<controllers.size();index++)
+ PyList_SET_ITEM(resultlist, index, controllers[index]->GetProxy());
+
+ return resultlist;
+}
+
+PyObject* KX_GameObject::pyattr_get_actuators(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ SCA_ActuatorList& actuators= self->GetActuators();
+ PyObject* resultlist = PyList_New(actuators.size());
+
+ for (unsigned int index=0;index<actuators.size();index++)
+ PyList_SET_ITEM(resultlist, index, actuators[index]->GetProxy());
+
+ return resultlist;
+}
+
+/* __dict__ only for the purpose of giving useful dir() results */
+PyObject* KX_GameObject::pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_GameObject* self= static_cast<KX_GameObject*>(self_v);
+ PyObject *dict_str = PyString_FromString("__dict__");
+ PyObject *dict= py_getattr_dict(self->SCA_IObject::py_getattro(dict_str), Type.tp_dict);
+ Py_DECREF(dict_str);
+
+ if(dict==NULL)
+ return NULL;
+
+ /* Not super fast getting as a list then making into dict keys but its only for dir() */
+ PyObject *list= self->ConvertKeysToPython();
+ if(list)
{
- MT_Scalar val = PyFloat_AsDouble(value);
- if (!strcmp(attr, "timeOffset")) {
- if (m_pSGNode->GetSGParent() && m_pSGNode->GetSGParent()->IsSlowParent()) {
- static_cast<KX_SlowParentRelation *>(m_pSGNode->GetSGParent()->GetParentRelation())->SetTimeOffset(val);
- return 0;
- } else {
- return 0;
- }
- }
- if (!strcmp(attr, "mass")) {
- if (m_pPhysicsController1)
- m_pPhysicsController1->SetMass(val);
- return 0;
- }
+ int i;
+ for(i=0; i<PyList_Size(list); i++)
+ PyDict_SetItem(dict, PyList_GET_ITEM(list, i), Py_None);
}
+ else
+ PyErr_Clear();
+
+ Py_DECREF(list);
- if (PySequence_Check(value))
+ /* Add m_attr_dict if we have it */
+ if(self->m_attr_dict)
+ PyDict_Update(dict, self->m_attr_dict);
+
+ return dict;
+}
+
+/* We need these because the macros have a return in them */
+PyObject* KX_GameObject::py_getattro__internal(PyObject *attr)
+{
+ py_getattro_up(SCA_IObject);
+}
+
+int KX_GameObject::py_setattro__internal(PyObject *attr, PyObject *value) // py_setattro method
+{
+ py_setattro_up(SCA_IObject);
+}
+
+
+PyObject* KX_GameObject::py_getattro(PyObject *attr)
+{
+ PyObject *object= py_getattro__internal(attr);
+
+ if (object==NULL && m_attr_dict)
{
- if (!strcmp(attr, "orientation"))
- {
- MT_Matrix3x3 rot;
- if (PyObject_IsMT_Matrix(value, 3))
- {
- if (PyMatTo(value, rot))
- {
- NodeSetLocalOrientation(rot);
- NodeUpdateGS(0.f,true);
- return 0;
- }
- return 1;
- }
-
- if (PySequence_Size(value) == 4)
- {
- MT_Quaternion qrot;
- if (PyVecTo(value, qrot))
- {
- rot.setRotation(qrot);
- NodeSetLocalOrientation(rot);
- NodeUpdateGS(0.f,true);
- return 0;
- }
- return 1;
- }
+ /* backup the exception incase the attr doesnt exist in the dict either */
+ PyObject *err_type, *err_value, *err_tb;
+ PyErr_Fetch(&err_type, &err_value, &err_tb);
+
+ object= PyDict_GetItem(m_attr_dict, attr);
+ if (object) {
+ Py_INCREF(object);
- if (PySequence_Size(value) == 3)
- {
- MT_Vector3 erot;
- if (PyVecTo(value, erot))
- {
- rot.setEuler(erot);
- NodeSetLocalOrientation(rot);
- NodeUpdateGS(0.f,true);
- return 0;
- }
- return 1;
- }
- PyErr_SetString(PyExc_AttributeError, "could not set the orientation from a 3x3 matrix, quaternion or euler sequence");
- return 1;
+ PyErr_Clear();
+ Py_XDECREF( err_type );
+ Py_XDECREF( err_value );
+ Py_XDECREF( err_tb );
}
-
- if (!strcmp(attr, "position"))
- {
- MT_Point3 pos;
- if (PyVecTo(value, pos))
- {
- NodeSetLocalPosition(pos);
- NodeUpdateGS(0.f,true);
- return 0;
- }
- return 1;
+ else {
+ PyErr_Restore(err_type, err_value, err_tb); /* use the error from the parent function */
}
-
- if (!strcmp(attr, "scaling"))
- {
- MT_Vector3 scale;
- if (PyVecTo(value, scale))
- {
- NodeSetLocalScale(scale);
- NodeUpdateGS(0.f,true);
- return 0;
- }
- return 1;
+ }
+ return object;
+}
+
+int KX_GameObject::py_setattro(PyObject *attr, PyObject *value) // py_setattro method
+{
+ int ret;
+
+ ret= py_setattro__internal(attr, value);
+
+ if (ret==PY_SET_ATTR_SUCCESS) {
+ /* remove attribute in our own dict to avoid double ups */
+ /* NOTE: Annoying that we also do this for setting builtin attributes like mass and visibility :/ */
+ if (m_attr_dict) {
+ if (PyDict_DelItem(m_attr_dict, attr) != 0)
+ PyErr_Clear();
}
}
- if (PyString_Check(value))
- {
- if (!strcmp(attr, "name"))
- {
-#if 0 // was added in revision 2832, but never took into account Object name mappings from revision 2
- // unlikely anyone ever used this successfully , removing.
- m_name = PyString_AsString(value);
- return 0;
-#else
- PyErr_SetString(PyExc_AttributeError, "object name readonly");
- return 1;
-#endif
+ if (ret==PY_SET_ATTR_COERCE_FAIL) {
+ /* CValue attribute exists, remove CValue and add PyDict value */
+ RemoveProperty(STR_String(PyString_AsString(attr)));
+ ret= PY_SET_ATTR_MISSING;
+ }
+
+ if (ret==PY_SET_ATTR_MISSING) {
+ /* Lazy initialization */
+ if (m_attr_dict==NULL)
+ m_attr_dict = PyDict_New();
+
+ if (PyDict_SetItem(m_attr_dict, attr, value)==0) {
+ PyErr_Clear();
+ ret= PY_SET_ATTR_SUCCESS;
+ }
+ else {
+ PyErr_Format(PyExc_AttributeError, "gameOb.myAttr = value: KX_GameObject, failed assigning value to internal dictionary");
+ ret= PY_SET_ATTR_FAIL;
}
}
- /* Need to have parent settable here too */
+ return ret;
+}
+
+
+int KX_GameObject::py_delattro(PyObject *attr)
+{
+ char *attr_str= PyString_AsString(attr);
+
+ if (RemoveProperty(STR_String(attr_str))) // XXX - should call CValues instead but its only 2 lines here
+ return 0;
+
+ if (m_attr_dict && (PyDict_DelItem(m_attr_dict, attr) == 0))
+ return 0;
- return SCA_IObject::_setattr(attr, value);
+ PyErr_Format(PyExc_AttributeError, "del gameOb.myAttr: KX_GameObject, attribute \"%s\" dosnt exist", attr_str);
+ return 1;
}
-PyObject* KX_GameObject::PyApplyForce(PyObject* self, PyObject* args)
+
+PyObject* KX_GameObject::PyApplyForce(PyObject* args)
{
int local = 0;
PyObject* pyvect;
@@ -1311,7 +1842,7 @@ PyObject* KX_GameObject::PyApplyForce(PyObject* self, PyObject* args)
return NULL;
}
-PyObject* KX_GameObject::PyApplyTorque(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyApplyTorque(PyObject* args)
{
int local = 0;
PyObject* pyvect;
@@ -1326,7 +1857,7 @@ PyObject* KX_GameObject::PyApplyTorque(PyObject* self, PyObject* args)
return NULL;
}
-PyObject* KX_GameObject::PyApplyRotation(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyApplyRotation(PyObject* args)
{
int local = 0;
PyObject* pyvect;
@@ -1341,7 +1872,7 @@ PyObject* KX_GameObject::PyApplyRotation(PyObject* self, PyObject* args)
return NULL;
}
-PyObject* KX_GameObject::PyApplyMovement(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyApplyMovement(PyObject* args)
{
int local = 0;
PyObject* pyvect;
@@ -1356,7 +1887,7 @@ PyObject* KX_GameObject::PyApplyMovement(PyObject* self, PyObject* args)
return NULL;
}
-PyObject* KX_GameObject::PyGetLinearVelocity(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyGetLinearVelocity(PyObject* args)
{
// only can get the velocity if we have a physics object connected to us...
int local = 0;
@@ -1370,7 +1901,7 @@ PyObject* KX_GameObject::PyGetLinearVelocity(PyObject* self, PyObject* args)
}
}
-PyObject* KX_GameObject::PySetLinearVelocity(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PySetLinearVelocity(PyObject* args)
{
int local = 0;
PyObject* pyvect;
@@ -1385,7 +1916,7 @@ PyObject* KX_GameObject::PySetLinearVelocity(PyObject* self, PyObject* args)
return NULL;
}
-PyObject* KX_GameObject::PyGetAngularVelocity(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyGetAngularVelocity(PyObject* args)
{
// only can get the velocity if we have a physics object connected to us...
int local = 0;
@@ -1399,7 +1930,7 @@ PyObject* KX_GameObject::PyGetAngularVelocity(PyObject* self, PyObject* args)
}
}
-PyObject* KX_GameObject::PySetAngularVelocity(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PySetAngularVelocity(PyObject* args)
{
int local = 0;
PyObject* pyvect;
@@ -1414,7 +1945,7 @@ PyObject* KX_GameObject::PySetAngularVelocity(PyObject* self, PyObject* args)
return NULL;
}
-PyObject* KX_GameObject::PySetVisible(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PySetVisible(PyObject* args)
{
int visible, recursive = 0;
if (!PyArg_ParseTuple(args,"i|i:setVisible",&visible, &recursive))
@@ -1426,20 +1957,33 @@ PyObject* KX_GameObject::PySetVisible(PyObject* self, PyObject* args)
}
-PyObject* KX_GameObject::PyGetVisible(PyObject* self)
+PyObject* KX_GameObject::PySetOcclusion(PyObject* args)
{
+ int occlusion, recursive = 0;
+ if (!PyArg_ParseTuple(args,"i|i:setOcclusion",&occlusion, &recursive))
+ return NULL;
+
+ SetOccluder(occlusion ? true:false, recursive ? true:false);
+ Py_RETURN_NONE;
+}
+
+PyObject* KX_GameObject::PyGetVisible()
+{
+ ShowDeprecationWarning("getVisible()", "the visible property");
return PyInt_FromLong(m_bVisible);
}
-PyObject* KX_GameObject::PyGetState(PyObject* self)
+PyObject* KX_GameObject::PyGetState()
{
+ ShowDeprecationWarning("getState()", "the state property");
int state = 0;
state |= GetState();
return PyInt_FromLong(state);
}
-PyObject* KX_GameObject::PySetState(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PySetState(PyObject* value)
{
+ ShowDeprecationWarning("setState()", "the state property");
int state_i = PyInt_AsLong(value);
unsigned int state = 0;
@@ -1458,9 +2002,7 @@ PyObject* KX_GameObject::PySetState(PyObject* self, PyObject* value)
Py_RETURN_NONE;
}
-
-
-PyObject* KX_GameObject::PyGetVelocity(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyGetVelocity(PyObject* args)
{
// only can get the velocity if we have a physics object connected to us...
MT_Point3 point(0.0,0.0,0.0);
@@ -1486,110 +2028,89 @@ PyObject* KX_GameObject::PyGetVelocity(PyObject* self, PyObject* args)
-PyObject* KX_GameObject::PyGetMass(PyObject* self)
+PyObject* KX_GameObject::PyGetMass()
{
- return PyFloat_FromDouble(GetPhysicsController()->GetMass());
+ ShowDeprecationWarning("getMass()", "the mass property");
+ return PyFloat_FromDouble((GetPhysicsController() != NULL) ? GetPhysicsController()->GetMass() : 0.0f);
}
-
-
-PyObject* KX_GameObject::PyGetReactionForce(PyObject* self)
+PyObject* KX_GameObject::PyGetReactionForce()
{
// only can get the velocity if we have a physics object connected to us...
- return PyObjectFrom(GetPhysicsController()->getReactionForce());
+
+ // XXX - Currently not working with bullet intergration, see KX_BulletPhysicsController.cpp's getReactionForce
+ /*
+ if (GetPhysicsController())
+ return PyObjectFrom(GetPhysicsController()->getReactionForce());
+ return PyObjectFrom(dummy_point);
+ */
+
+ return Py_BuildValue("fff", 0.0f, 0.0f, 0.0f);
+
}
-PyObject* KX_GameObject::PyEnableRigidBody(PyObject* self)
+PyObject* KX_GameObject::PyEnableRigidBody()
{
- GetPhysicsController()->setRigidBody(true);
+ if(GetPhysicsController())
+ GetPhysicsController()->setRigidBody(true);
Py_RETURN_NONE;
}
-PyObject* KX_GameObject::PyDisableRigidBody(PyObject* self)
+PyObject* KX_GameObject::PyDisableRigidBody()
{
- GetPhysicsController()->setRigidBody(false);
+ if(GetPhysicsController())
+ GetPhysicsController()->setRigidBody(false);
Py_RETURN_NONE;
}
-PyObject* KX_GameObject::PyGetParent(PyObject* self)
+PyObject* KX_GameObject::PyGetParent()
{
+ ShowDeprecationWarning("getParent()", "the parent property");
KX_GameObject* parent = this->GetParent();
if (parent)
- return parent->AddRef();
+ return parent->GetProxy();
Py_RETURN_NONE;
}
-PyObject* KX_GameObject::PySetParent(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PySetParent(PyObject* value)
{
- if (!PyObject_TypeCheck(value, &KX_GameObject::Type)) {
- PyErr_SetString(PyExc_TypeError, "expected a KX_GameObject type");
+ KX_GameObject *obj;
+ if (!ConvertPythonToGameObject(value, &obj, false, "gameOb.setParent(value): KX_GameObject"))
return NULL;
- }
-
- // The object we want to set as parent
- CValue *m_ob = (CValue*)value;
- KX_GameObject *obj = ((KX_GameObject*)m_ob);
- KX_Scene *scene = KX_GetActiveScene();
- this->SetParent(scene, obj);
-
+ this->SetParent(KX_GetActiveScene(), obj);
Py_RETURN_NONE;
}
-PyObject* KX_GameObject::PyRemoveParent(PyObject* self)
+PyObject* KX_GameObject::PyRemoveParent()
{
KX_Scene *scene = KX_GetActiveScene();
this->RemoveParent(scene);
Py_RETURN_NONE;
}
-
-static void walk_children(SG_Node* node, CListValue* list, bool recursive)
-{
- NodeList& children = node->GetSGChildren();
-
- for (NodeList::iterator childit = children.begin();!(childit==children.end());++childit)
- {
- SG_Node* childnode = (*childit);
- CValue* childobj = (CValue*)childnode->GetSGClientObject();
- if (childobj != NULL) // This is a GameObject
- {
- // add to the list
- list->Add(childobj->AddRef());
- }
-
- // if the childobj is NULL then this may be an inverse parent link
- // so a non recursive search should still look down this node.
- if (recursive || childobj==NULL) {
- walk_children(childnode, list, recursive);
- }
- }
-}
-
-PyObject* KX_GameObject::PyGetChildren(PyObject* self)
+PyObject* KX_GameObject::PyGetChildren()
{
- CListValue* list = new CListValue();
- walk_children(m_pSGNode, list, 0);
- return list;
+ return GetChildren()->NewProxy(true);
}
-PyObject* KX_GameObject::PyGetChildrenRecursive(PyObject* self)
+PyObject* KX_GameObject::PyGetChildrenRecursive()
{
- CListValue* list = new CListValue();
- walk_children(m_pSGNode, list, 1);
- return list;
+ return GetChildrenRecursive()->NewProxy(true);
}
-PyObject* KX_GameObject::PyGetMesh(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyGetMesh(PyObject* args)
{
+ ShowDeprecationWarning("getMesh()", "the meshes property");
+
int mesh = 0;
if (!PyArg_ParseTuple(args, "|i:getMesh", &mesh))
@@ -1598,7 +2119,7 @@ PyObject* KX_GameObject::PyGetMesh(PyObject* self, PyObject* args)
if (((unsigned int)mesh < m_meshes.size()) && mesh >= 0)
{
KX_MeshProxy* meshproxy = new KX_MeshProxy(m_meshes[mesh]);
- return meshproxy;
+ return meshproxy->NewProxy(true); // XXX Todo Python own.
}
Py_RETURN_NONE;
@@ -1608,7 +2129,7 @@ PyObject* KX_GameObject::PyGetMesh(PyObject* self, PyObject* args)
-PyObject* KX_GameObject::PySetCollisionMargin(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PySetCollisionMargin(PyObject* value)
{
float collisionMargin = PyFloat_AsDouble(value);
@@ -1628,7 +2149,7 @@ PyObject* KX_GameObject::PySetCollisionMargin(PyObject* self, PyObject* value)
-PyObject* KX_GameObject::PyApplyImpulse(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyApplyImpulse(PyObject* args)
{
PyObject* pyattach;
PyObject* pyimpulse;
@@ -1655,7 +2176,7 @@ PyObject* KX_GameObject::PyApplyImpulse(PyObject* self, PyObject* args)
-PyObject* KX_GameObject::PySuspendDynamics(PyObject* self)
+PyObject* KX_GameObject::PySuspendDynamics()
{
SuspendDynamics();
Py_RETURN_NONE;
@@ -1663,7 +2184,7 @@ PyObject* KX_GameObject::PySuspendDynamics(PyObject* self)
-PyObject* KX_GameObject::PyRestoreDynamics(PyObject* self)
+PyObject* KX_GameObject::PyRestoreDynamics()
{
RestoreDynamics();
Py_RETURN_NONE;
@@ -1671,20 +2192,22 @@ PyObject* KX_GameObject::PyRestoreDynamics(PyObject* self)
-PyObject* KX_GameObject::PyGetOrientation(PyObject* self) //keywords
+PyObject* KX_GameObject::PyGetOrientation() //keywords
{
+ ShowDeprecationWarning("getOrientation()", "the orientation property");
return PyObjectFrom(NodeGetWorldOrientation());
}
-PyObject* KX_GameObject::PySetOrientation(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PySetOrientation(PyObject* value)
{
+ ShowDeprecationWarning("setOrientation()", "the orientation property");
MT_Matrix3x3 matrix;
if (PyObject_IsMT_Matrix(value, 3) && PyMatTo(value, matrix))
{
NodeSetLocalOrientation(matrix);
- NodeUpdateGS(0.f,true);
+ NodeUpdateGS(0.f);
Py_RETURN_NONE;
}
@@ -1693,13 +2216,13 @@ PyObject* KX_GameObject::PySetOrientation(PyObject* self, PyObject* value)
{
matrix.setRotation(quat);
NodeSetLocalOrientation(matrix);
- NodeUpdateGS(0.f,true);
+ NodeUpdateGS(0.f);
Py_RETURN_NONE;
}
return NULL;
}
-PyObject* KX_GameObject::PyAlignAxisToVect(PyObject* self, PyObject* args)
+PyObject* KX_GameObject::PyAlignAxisToVect(PyObject* args)
{
PyObject* pyvect;
int axis = 2; //z axis is the default
@@ -1714,14 +2237,14 @@ PyObject* KX_GameObject::PyAlignAxisToVect(PyObject* self, PyObject* args)
if (fac> 1.0) fac= 1.0;
AlignAxisToVect(vect,axis,fac);
- NodeUpdateGS(0.f,true);
+ NodeUpdateGS(0.f);
Py_RETURN_NONE;
}
}
return NULL;
}
-PyObject* KX_GameObject::PyGetAxisVect(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PyGetAxisVect(PyObject* value)
{
MT_Vector3 vect;
if (PyVecTo(value, vect))
@@ -1731,33 +2254,34 @@ PyObject* KX_GameObject::PyGetAxisVect(PyObject* self, PyObject* value)
return NULL;
}
-PyObject* KX_GameObject::PySetPosition(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PySetPosition(PyObject* value)
{
+ ShowDeprecationWarning("setPosition()", "the position property");
MT_Point3 pos;
if (PyVecTo(value, pos))
{
NodeSetLocalPosition(pos);
- NodeUpdateGS(0.f,true);
+ NodeUpdateGS(0.f);
Py_RETURN_NONE;
}
return NULL;
}
-PyObject* KX_GameObject::PySetWorldPosition(PyObject* self, PyObject* value)
+PyObject* KX_GameObject::PySetWorldPosition(PyObject* value)
{
MT_Point3 pos;
if (PyVecTo(value, pos))
{
NodeSetWorldPosition(pos);
- NodeUpdateGS(0.f,true);
+ NodeUpdateGS(0.f);
Py_RETURN_NONE;
}
return NULL;
}
-PyObject* KX_GameObject::PyGetPhysicsId(PyObject* self)
+PyObject* KX_GameObject::PyGetPhysicsId()
{
KX_IPhysicsController* ctrl = GetPhysicsController();
uint_ptr physid=0;
@@ -1768,9 +2292,19 @@ PyObject* KX_GameObject::PyGetPhysicsId(PyObject* self)
return PyInt_FromLong((long)physid);
}
-PyObject* KX_GameObject::PyGetPropertyNames(PyObject* self)
+PyObject* KX_GameObject::PyGetPropertyNames()
{
- return ConvertKeysToPython();
+ PyObject *list= ConvertKeysToPython();
+
+ if(m_attr_dict) {
+ PyObject *key, *value;
+ Py_ssize_t pos = 0;
+
+ while (PyDict_Next(m_attr_dict, &pos, &key, &value)) {
+ PyList_Append(list, key);
+ }
+ }
+ return list;
}
KX_PYMETHODDEF_DOC_O(KX_GameObject, getDistanceTo,
@@ -1784,7 +2318,7 @@ KX_PYMETHODDEF_DOC_O(KX_GameObject, getDistanceTo,
PyErr_Clear();
KX_GameObject *other;
- if (ConvertPythonToGameObject(value, &other, false))
+ if (ConvertPythonToGameObject(value, &other, false, "gameOb.getDistanceTo(value): KX_GameObject"))
{
return PyFloat_FromDouble(NodeGetWorldPosition().distance(other->NodeGetWorldPosition()));
}
@@ -1807,12 +2341,12 @@ KX_PYMETHODDEF_DOC_O(KX_GameObject, getVectTo,
PyErr_Clear();
KX_GameObject *other;
- if (ConvertPythonToGameObject(value, &other, false))
+ if (ConvertPythonToGameObject(value, &other, false, "")) /* error will be overwritten */
{
toPoint = other->NodeGetWorldPosition();
} else
{
- PyErr_SetString(PyExc_TypeError, "Expected a 3D Vector or GameObject type");
+ PyErr_SetString(PyExc_TypeError, "gameOb.getVectTo(other): KX_GameObject, expected a 3D Vector or KX_GameObject type");
return NULL;
}
}
@@ -1901,12 +2435,12 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCastTo,
KX_GameObject *other;
PyErr_Clear();
- if (ConvertPythonToGameObject(pyarg, &other, false))
+ if (ConvertPythonToGameObject(pyarg, &other, false, "")) /* error will be overwritten */
{
toPoint = other->NodeGetWorldPosition();
} else
{
- PyErr_SetString(PyExc_TypeError, "the first argument to rayCastTo must be a vector or a KX_GameObject");
+ PyErr_SetString(PyExc_TypeError, "gameOb.rayCastTo(other,dist,prop): KX_GameObject, the first argument to rayCastTo must be a vector or a KX_GameObject");
return NULL;
}
}
@@ -1935,7 +2469,7 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCastTo,
KX_RayCast::RayTest(pe, fromPoint, toPoint, callback);
if (m_pHitObject)
- return m_pHitObject->AddRef();
+ return m_pHitObject->GetProxy();
Py_RETURN_NONE;
}
@@ -1977,7 +2511,7 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
{
PyErr_Clear();
- if (ConvertPythonToGameObject(pyto, &other, false))
+ if (ConvertPythonToGameObject(pyto, &other, false, "")) /* error will be overwritten */
{
toPoint = other->NodeGetWorldPosition();
} else
@@ -1994,12 +2528,12 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
{
PyErr_Clear();
- if (ConvertPythonToGameObject(pyfrom, &other, false))
+ if (ConvertPythonToGameObject(pyfrom, &other, false, "")) /* error will be overwritten */
{
fromPoint = other->NodeGetWorldPosition();
} else
{
- PyErr_SetString(PyExc_TypeError, "the second optional argument to rayCast must be a vector or a KX_GameObject");
+ PyErr_SetString(PyExc_TypeError, "gameOb.rayCast(to,from,dist,prop,face,xray,poly): KX_GameObject, the second optional argument to rayCast must be a vector or a KX_GameObject");
return NULL;
}
}
@@ -2037,7 +2571,7 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
{
PyObject* returnValue = (poly) ? PyTuple_New(4) : PyTuple_New(3);
if (returnValue) { // unlikely this would ever fail, if it does python sets an error
- PyTuple_SET_ITEM(returnValue, 0, m_pHitObject->AddRef());
+ PyTuple_SET_ITEM(returnValue, 0, m_pHitObject->GetProxy());
PyTuple_SET_ITEM(returnValue, 1, PyObjectFrom(callback.m_hitPoint));
PyTuple_SET_ITEM(returnValue, 2, PyObjectFrom(callback.m_hitNormal));
if (poly)
@@ -2047,7 +2581,7 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
// if this field is set, then we can trust that m_hitPolygon is a valid polygon
RAS_Polygon* polygon = callback.m_hitMesh->GetPolygon(callback.m_hitPolygon);
KX_PolyProxy* polyproxy = new KX_PolyProxy(callback.m_hitMesh, polygon);
- PyTuple_SET_ITEM(returnValue, 3, polyproxy);
+ PyTuple_SET_ITEM(returnValue, 3, polyproxy->NewProxy(true));
}
else
{
@@ -2065,6 +2599,26 @@ KX_PYMETHODDEF_DOC(KX_GameObject, rayCast,
return Py_BuildValue("OOO", Py_None, Py_None, Py_None);
}
+KX_PYMETHODDEF_DOC_VARARGS(KX_GameObject, sendMessage,
+ "sendMessage(subject, [body, to])\n"
+"sends a message in same manner as a message actuator"
+"subject = Subject of the message (string)"
+"body = Message body (string)"
+"to = Name of object to send the message to")
+{
+ char* subject;
+ char* body = (char *)"";
+ char* to = (char *)"";
+ const STR_String& from = GetName();
+
+ if (!PyArg_ParseTuple(args, "s|sss:sendMessage", &subject, &body, &to))
+ return NULL;
+
+ KX_GetActiveScene()->GetNetworkScene()->SendMessage(to, from, subject, body);
+
+ Py_RETURN_NONE;
+}
+
/* ---------------------------------------------------------------------
* Some stuff taken from the header
* --------------------------------------------------------------------- */
@@ -2087,10 +2641,10 @@ void KX_GameObject::Relink(GEN_Map<GEN_HashedPtr, void*> *map_parameter)
}
}
-bool ConvertPythonToGameObject(PyObject * value, KX_GameObject **object, bool py_none_ok)
+bool ConvertPythonToGameObject(PyObject * value, KX_GameObject **object, bool py_none_ok, const char *error_prefix)
{
if (value==NULL) {
- PyErr_SetString(PyExc_TypeError, "Error in ConvertPythonToGameObject, python pointer NULL, should never happen");
+ PyErr_Format(PyExc_TypeError, "%s, python pointer NULL, should never happen", error_prefix);
*object = NULL;
return false;
}
@@ -2101,33 +2655,40 @@ bool ConvertPythonToGameObject(PyObject * value, KX_GameObject **object, bool py
if (py_none_ok) {
return true;
} else {
- PyErr_SetString(PyExc_TypeError, "Expected KX_GameObject or a string for a name of a KX_GameObject, None is invalid");
+ PyErr_Format(PyExc_TypeError, "%s, expected KX_GameObject or a KX_GameObject name, None is invalid", error_prefix);
return false;
}
}
if (PyString_Check(value)) {
- *object = (KX_GameObject *)SCA_ILogicBrick::m_sCurrentLogicManager->GetGameObjectByName(STR_String( PyString_AsString(value) ));
+ *object = (KX_GameObject*)SCA_ILogicBrick::m_sCurrentLogicManager->GetGameObjectByName(STR_String( PyString_AsString(value) ));
if (*object) {
return true;
} else {
- PyErr_SetString(PyExc_ValueError, "Requested name did not match any KX_GameObject");
+ PyErr_Format(PyExc_ValueError, "%s, requested name \"%s\" did not match any KX_GameObject in this scene", error_prefix, PyString_AsString(value));
return false;
}
}
if (PyObject_TypeCheck(value, &KX_GameObject::Type)) {
- *object = static_cast<KX_GameObject*>(value);
+ *object = static_cast<KX_GameObject*>BGE_PROXY_REF(value);
+
+ /* sets the error */
+ if (*object==NULL) {
+ PyErr_Format(PyExc_RuntimeError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
+ return false;
+ }
+
return true;
}
*object = NULL;
if (py_none_ok) {
- PyErr_SetString(PyExc_TypeError, "Expect a KX_GameObject, a string or None");
+ PyErr_Format(PyExc_TypeError, "%s, expect a KX_GameObject, a string or None", error_prefix);
} else {
- PyErr_SetString(PyExc_TypeError, "Expect a KX_GameObject or a string");
+ PyErr_Format(PyExc_TypeError, "%s, expect a KX_GameObject or a string", error_prefix);
}
return false;
diff --git a/source/gameengine/Ketsji/KX_GameObject.h b/source/gameengine/Ketsji/KX_GameObject.h
index 211c9b7ca7d..ec02dc17b75 100644
--- a/source/gameengine/Ketsji/KX_GameObject.h
+++ b/source/gameengine/Ketsji/KX_GameObject.h
@@ -51,15 +51,18 @@
#include "SCA_LogicManager.h" /* for ConvertPythonToGameObject to search object names */
#define KX_OB_DYNAMIC 1
-
//Forward declarations.
struct KX_ClientObjectInfo;
class KX_RayCast;
class RAS_MeshObject;
class KX_IPhysicsController;
+class PHY_IGraphicController;
class PHY_IPhysicsEnvironment;
struct Object;
+/* utility conversion function */
+bool ConvertPythonToGameObject(PyObject * value, KX_GameObject **object, bool py_none_ok, const char *error_prefix);
+
/**
* KX_GameObject is the main class for dynamic objects.
*/
@@ -86,8 +89,10 @@ protected:
// culled = while rendering, depending on camera
bool m_bVisible;
bool m_bCulled;
+ bool m_bOccluder;
KX_IPhysicsController* m_pPhysicsController1;
+ PHY_IGraphicController* m_pGraphicController;
// used for ray casting
PHY_IPhysicsEnvironment* m_pPhysicsEnvironment;
STR_String m_testPropName;
@@ -101,6 +106,28 @@ protected:
public:
bool m_isDeformable;
+ /**
+ * Helper function for modules that can't include KX_ClientObjectInfo.h
+ */
+ static KX_GameObject* GetClientObject(KX_ClientObjectInfo* info);
+
+ // Python attributes that wont convert into CValue
+ //
+ // there are 2 places attributes can be stored, in the CValue,
+ // where attributes are converted into BGE's CValue types
+ // these can be used with property actuators
+ //
+ // For the python API, For types that cannot be converted into CValues (lists, dicts, GameObjects)
+ // these will be put into "m_attr_dict", logic bricks cannot access them.
+ //
+ // rules for setting attributes.
+ //
+ // * there should NEVER be a CValue and a m_attr_dict attribute with matching names. get/sets make sure of this.
+ // * if CValue conversion fails, use a PyObject in "m_attr_dict"
+ // * when assigning a value, first see if it can be a CValue, if it can remove the "m_attr_dict" and set the CValue
+ //
+ PyObject* m_attr_dict;
+
virtual void /* This function should be virtual - derived classed override it */
Relink(
GEN_Map<GEN_HashedPtr, void*> *map
@@ -206,7 +233,7 @@ public:
/**
* Inherited from CValue -- does nothing!
*/
- float
+ double
GetNumber(
);
@@ -279,6 +306,12 @@ public:
MT_Scalar
GetMass();
+ /**
+ * Return the local inertia vector of the object
+ */
+ MT_Vector3
+ GetLocalInertia();
+
/**
* Return the angular velocity of the game object.
*/
@@ -351,6 +384,19 @@ public:
}
/**
+ * @return a pointer to the graphic controller owner by this class
+ */
+ PHY_IGraphicController* GetGraphicController()
+ {
+ return m_pGraphicController;
+ }
+
+ void SetGraphicController(PHY_IGraphicController* graphiccontroller)
+ {
+ m_pGraphicController = graphiccontroller;
+ }
+
+ /**
* @section Coordinate system manipulation functions
*/
@@ -367,8 +413,7 @@ public:
void
NodeUpdateGS(
- double time,
- bool bInitiator
+ double time
);
const
@@ -525,13 +570,6 @@ public:
static void UpdateTransformFunc(SG_IObject* node, void* gameobj, void* scene);
/**
- * Only update the transform if it's a non-dynamic object
- */
- void
- UpdateNonDynas(
- );
-
- /**
* Function to set IPO option at start of IPO
*/
void
@@ -665,20 +703,37 @@ public:
/**
* Was this object culled?
*/
- bool
+ inline bool
GetCulled(
void
- );
+ ) { return m_bCulled; }
/**
* Set culled flag of this object
*/
- void
+ inline void
SetCulled(
bool c
- );
+ ) { m_bCulled = c; }
+
+ /**
+ * Is this object an occluder?
+ */
+ inline bool
+ GetOccluder(
+ void
+ ) { return m_bOccluder; }
/**
+ * Set occluder flag of this object
+ */
+ void
+ SetOccluder(
+ bool v,
+ bool recursive
+ );
+
+ /**
* Change the layer of the object (when it is added in another layer
* than the original layer)
*/
@@ -752,14 +807,29 @@ public:
}
KX_ClientObjectInfo* getClientInfo() { return m_pClient_info; }
+
+ CListValue* GetChildren();
+ CListValue* GetChildrenRecursive();
+
/**
* @section Python interface functions.
*/
-
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value); // _setattr method
- virtual PyObject* _repr(void) { return PyString_FromString(GetName().ReadPtr()); }
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value); // py_setattro method
+ virtual int py_delattro(PyObject *attr);
+ virtual PyObject* py_repr(void)
+ {
+ return PyString_FromString(GetName().ReadPtr());
+ }
+
+
+ /* quite annoying that we need these but the bloody
+ * py_getattro_up and py_setattro_up macro's have a returns in them! */
+ PyObject* py_getattro__internal(PyObject *attr);
+ int py_setattro__internal(PyObject *attr, PyObject *value); // py_setattro method
+
+
KX_PYMETHOD_NOARGS(KX_GameObject,GetPosition);
KX_PYMETHOD_O(KX_GameObject,SetPosition);
KX_PYMETHOD_O(KX_GameObject,SetWorldPosition);
@@ -778,6 +848,7 @@ public:
KX_PYMETHOD_O(KX_GameObject,SetOrientation);
KX_PYMETHOD_NOARGS(KX_GameObject,GetVisible);
KX_PYMETHOD_VARARGS(KX_GameObject,SetVisible);
+ KX_PYMETHOD_VARARGS(KX_GameObject,SetOcclusion);
KX_PYMETHOD_NOARGS(KX_GameObject,GetState);
KX_PYMETHOD_O(KX_GameObject,SetState);
KX_PYMETHOD_VARARGS(KX_GameObject,AlignAxisToVect);
@@ -802,6 +873,50 @@ public:
KX_PYMETHOD_DOC(KX_GameObject,rayCast);
KX_PYMETHOD_DOC_O(KX_GameObject,getDistanceTo);
KX_PYMETHOD_DOC_O(KX_GameObject,getVectTo);
+ KX_PYMETHOD_DOC_VARARGS(KX_GameObject, sendMessage);
+ /* attributes */
+ static PyObject* pyattr_get_name(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_parent(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ static PyObject* pyattr_get_mass(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_mass(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_lin_vel_min(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_lin_vel_min(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_lin_vel_max(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_lin_vel_max(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_visible(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_visible(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_worldPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_worldPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_localPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_localPosition(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_localInertia(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_localInertia(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_worldOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_localOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_localOrientation(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_worldScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_localScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_localScaling(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_timeOffset(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_timeOffset(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_state(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_meshes(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ /* for dir(), python3 uses __dir__() */
+ static PyObject* pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ /* Experemental! */
+ static PyObject* pyattr_get_sensors(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_controllers(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_actuators(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ /* getitem/setitem */
+ static Py_ssize_t Map_Len(PyObject* self);
+ static PyMappingMethods Mapping;
+ static PyObject* Map_GetItem(PyObject *self_v, PyObject *item);
+ static int Map_SetItem(PyObject *self_v, PyObject *key, PyObject *val);
private :
@@ -820,8 +935,7 @@ private :
};
-/* utility conversion function */
-bool ConvertPythonToGameObject(PyObject * value, KX_GameObject **object, bool py_none_ok);
+
#endif //__KX_GAMEOBJECT
diff --git a/source/gameengine/Ketsji/KX_IPhysicsController.h b/source/gameengine/Ketsji/KX_IPhysicsController.h
index 13501f1fbbd..10b66da7b76 100644
--- a/source/gameengine/Ketsji/KX_IPhysicsController.h
+++ b/source/gameengine/Ketsji/KX_IPhysicsController.h
@@ -79,6 +79,13 @@ public:
virtual void setScaling(const MT_Vector3& scaling)=0;
virtual MT_Scalar GetMass()=0;
virtual void SetMass(MT_Scalar newmass)=0;
+
+ virtual float GetLinVelocityMin()=0;
+ virtual void SetLinVelocityMin(float newmass)=0;
+ virtual float GetLinVelocityMax()=0;
+ virtual void SetLinVelocityMax(float newmass)=0;
+
+ virtual MT_Vector3 GetLocalInertia()=0;
virtual MT_Vector3 getReactionForce()=0;
virtual void setRigidBody(bool rigid)=0;
virtual void AddCompoundChild(KX_IPhysicsController* child) = 0;
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.cpp b/source/gameengine/Ketsji/KX_IpoActuator.cpp
index 623a939bf62..f04e3c79a8e 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.cpp
+++ b/source/gameengine/Ketsji/KX_IpoActuator.cpp
@@ -84,7 +84,7 @@ KX_IpoActuator::KX_IpoActuator(SCA_IObject* gameobj,
m_ipo_as_force(ipo_as_force),
m_ipo_add(ipo_add),
m_ipo_local(ipo_local),
- m_type((IpoActType)acttype)
+ m_type(acttype)
{
m_starttime = -2.0*fabs(m_endframe - m_startframe) - 1.0;
m_bIpoPlaying = false;
@@ -190,7 +190,7 @@ bool KX_IpoActuator::Update(double curtime, bool frame)
}
}
- switch (m_type)
+ switch ((IpoActType)m_type)
{
case KX_ACT_IPO_PLAY:
@@ -383,7 +383,7 @@ bool KX_IpoActuator::Update(double curtime, bool frame)
return result;
}
-KX_IpoActuator::IpoActType KX_IpoActuator::string2mode(char* modename) {
+int KX_IpoActuator::string2mode(char* modename) {
IpoActType res = KX_ACT_IPO_NODEF;
if (modename == S_KX_ACT_IPO_PLAY_STRING) {
@@ -413,22 +413,22 @@ KX_IpoActuator::IpoActType KX_IpoActuator::string2mode(char* modename) {
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_IpoActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_IpoActuator",
- sizeof(KX_IpoActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_IpoActuator::Parents[] = {
@@ -441,6 +441,8 @@ PyParentObject KX_IpoActuator::Parents[] = {
PyMethodDef KX_IpoActuator::Methods[] = {
{"set", (PyCFunction) KX_IpoActuator::sPySet, METH_VARARGS, (PY_METHODCHAR)Set_doc},
+
+ // deprecated
{"setProperty", (PyCFunction) KX_IpoActuator::sPySetProperty, METH_VARARGS, (PY_METHODCHAR)SetProperty_doc},
{"setStart", (PyCFunction) KX_IpoActuator::sPySetStart, METH_VARARGS, (PY_METHODCHAR)SetStart_doc},
{"getStart", (PyCFunction) KX_IpoActuator::sPyGetStart, METH_NOARGS, (PY_METHODCHAR)GetStart_doc},
@@ -450,22 +452,35 @@ PyMethodDef KX_IpoActuator::Methods[] = {
{"getIpoAsForce", (PyCFunction) KX_IpoActuator::sPyGetIpoAsForce, METH_NOARGS, (PY_METHODCHAR)GetIpoAsForce_doc},
{"setIpoAdd", (PyCFunction) KX_IpoActuator::sPySetIpoAdd, METH_VARARGS, (PY_METHODCHAR)SetIpoAdd_doc},
{"getIpoAdd", (PyCFunction) KX_IpoActuator::sPyGetIpoAdd, METH_NOARGS, (PY_METHODCHAR)GetIpoAdd_doc},
- {"setType", (PyCFunction) KX_IpoActuator::sPySetType, METH_VARARGS, (PY_METHODCHAR)SetType_doc},
- {"getType", (PyCFunction) KX_IpoActuator::sPyGetType, METH_NOARGS, (PY_METHODCHAR)GetType_doc},
{"setForceIpoActsLocal", (PyCFunction) KX_IpoActuator::sPySetForceIpoActsLocal, METH_VARARGS, (PY_METHODCHAR)SetForceIpoActsLocal_doc},
{"getForceIpoActsLocal", (PyCFunction) KX_IpoActuator::sPyGetForceIpoActsLocal, METH_NOARGS, (PY_METHODCHAR)GetForceIpoActsLocal_doc},
+ {"setType", (PyCFunction) KX_IpoActuator::sPySetType, METH_VARARGS, (PY_METHODCHAR)SetType_doc},
+ {"getType", (PyCFunction) KX_IpoActuator::sPyGetType, METH_NOARGS, (PY_METHODCHAR)GetType_doc},
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_IpoActuator::Attributes[] = {
+ KX_PYATTRIBUTE_FLOAT_RW("startFrame", 0, 300000, KX_IpoActuator, m_startframe),
+ KX_PYATTRIBUTE_FLOAT_RW("endFrame", 0, 300000, KX_IpoActuator, m_endframe),
+ KX_PYATTRIBUTE_STRING_RW("propName", 0, 64, false, KX_IpoActuator, m_propname),
+ KX_PYATTRIBUTE_STRING_RW("framePropName", 0, 64, false, KX_IpoActuator, m_framepropname),
+ KX_PYATTRIBUTE_INT_RW("type", KX_ACT_IPO_NODEF+1, KX_ACT_IPO_MAX-1, true, KX_IpoActuator, m_type),
+ KX_PYATTRIBUTE_BOOL_RW("useIpoAsForce", KX_IpoActuator, m_ipo_as_force),
+ KX_PYATTRIBUTE_BOOL_RW("useIpoAdd", KX_IpoActuator, m_ipo_add),
+ KX_PYATTRIBUTE_BOOL_RW("useIpoLocal", KX_IpoActuator, m_ipo_local),
+ KX_PYATTRIBUTE_BOOL_RW("useChildren", KX_IpoActuator, m_recurse),
+
{ NULL } //Sentinel
};
-PyObject* KX_IpoActuator::_getattr(const char *attr) {
- _getattr_up(SCA_IActuator);
+PyObject* KX_IpoActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
}
-
+int KX_IpoActuator::py_setattro(PyObject *attr, PyObject *value) // py_setattro method
+{
+ py_setattro_up(SCA_IActuator);
+}
/* set --------------------------------------------------------------------- */
const char KX_IpoActuator::Set_doc[] =
@@ -475,17 +490,18 @@ const char KX_IpoActuator::Set_doc[] =
"\t - endframe : last frame to use (int)\n"
"\t - mode? : special mode (0=normal, 1=interpret location as force, 2=additive)"
"\tSet the properties of the actuator.\n";
-PyObject* KX_IpoActuator::PySet(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySet(PyObject* args) {
+
+ ShowDeprecationWarning("set()", "a number properties");
+
/* sets modes PLAY, PINGPONG, FLIPPER, LOOPSTOP, LOOPEND */
/* arg 1 = mode string, arg 2 = startframe, arg3 = stopframe, */
/* arg4 = force toggle */
char* mode;
int forceToggle;
- IpoActType modenum;
+ int modenum;
int startFrame, stopFrame;
- if(!PyArg_ParseTuple(args, "siii", &mode, &startFrame,
+ if(!PyArg_ParseTuple(args, "siii:set", &mode, &startFrame,
&stopFrame, &forceToggle)) {
return NULL;
}
@@ -515,13 +531,14 @@ const char KX_IpoActuator::SetProperty_doc[] =
"setProperty(propname)\n"
"\t - propname: name of the property (string)\n"
"\tSet the property to be used in FromProp mode.\n";
-PyObject* KX_IpoActuator::PySetProperty(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySetProperty(PyObject* args) {
+
+ ShowDeprecationWarning("setProperty()", "the propName property");
+
/* mode is implicit here, but not supported yet... */
/* args: property */
char *propertyName;
- if(!PyArg_ParseTuple(args, "s", &propertyName)) {
+ if(!PyArg_ParseTuple(args, "s:setProperty", &propertyName)) {
return NULL;
}
@@ -535,11 +552,12 @@ const char KX_IpoActuator::SetStart_doc[] =
"setStart(frame)\n"
"\t - frame: first frame to use (int)\n"
"\tSet the frame from which the ipo starts playing.\n";
-PyObject* KX_IpoActuator::PySetStart(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySetStart(PyObject* args) {
+
+ ShowDeprecationWarning("setStart()", "the startFrame property");
+
float startArg;
- if(!PyArg_ParseTuple(args, "f", &startArg)) {
+ if(!PyArg_ParseTuple(args, "f:setStart", &startArg)) {
return NULL;
}
@@ -551,7 +569,8 @@ PyObject* KX_IpoActuator::PySetStart(PyObject* self,
const char KX_IpoActuator::GetStart_doc[] =
"getStart()\n"
"\tReturns the frame from which the ipo starts playing.\n";
-PyObject* KX_IpoActuator::PyGetStart(PyObject* self) {
+PyObject* KX_IpoActuator::PyGetStart() {
+ ShowDeprecationWarning("getStart()", "the startFrame property");
return PyFloat_FromDouble(m_startframe);
}
@@ -560,11 +579,10 @@ const char KX_IpoActuator::SetEnd_doc[] =
"setEnd(frame)\n"
"\t - frame: last frame to use (int)\n"
"\tSet the frame at which the ipo stops playing.\n";
-PyObject* KX_IpoActuator::PySetEnd(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySetEnd(PyObject* args) {
+ ShowDeprecationWarning("setEnd()", "the endFrame property");
float endArg;
- if(!PyArg_ParseTuple(args, "f", &endArg)) {
+ if(!PyArg_ParseTuple(args, "f:setEnd", &endArg)) {
return NULL;
}
@@ -576,7 +594,8 @@ PyObject* KX_IpoActuator::PySetEnd(PyObject* self,
const char KX_IpoActuator::GetEnd_doc[] =
"getEnd()\n"
"\tReturns the frame at which the ipo stops playing.\n";
-PyObject* KX_IpoActuator::PyGetEnd(PyObject* self) {
+PyObject* KX_IpoActuator::PyGetEnd() {
+ ShowDeprecationWarning("getEnd()", "the endFrame property");
return PyFloat_FromDouble(m_endframe);
}
@@ -585,12 +604,11 @@ const char KX_IpoActuator::SetIpoAsForce_doc[] =
"setIpoAsForce(force?)\n"
"\t - force? : interpret this ipo as a force? (KX_TRUE, KX_FALSE)\n"
"\tSet whether to interpret the ipo as a force rather than a displacement.\n";
-PyObject* KX_IpoActuator::PySetIpoAsForce(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySetIpoAsForce(PyObject* args) {
+ ShowDeprecationWarning("setIpoAsForce()", "the useIpoAsForce property");
int boolArg;
- if (!PyArg_ParseTuple(args, "i", &boolArg)) {
+ if (!PyArg_ParseTuple(args, "i:setIpoAsForce", &boolArg)) {
return NULL;
}
@@ -604,7 +622,8 @@ PyObject* KX_IpoActuator::PySetIpoAsForce(PyObject* self,
const char KX_IpoActuator::GetIpoAsForce_doc[] =
"getIpoAsForce()\n"
"\tReturns whether to interpret the ipo as a force rather than a displacement.\n";
-PyObject* KX_IpoActuator::PyGetIpoAsForce(PyObject* self) {
+PyObject* KX_IpoActuator::PyGetIpoAsForce() {
+ ShowDeprecationWarning("getIpoAsForce()", "the useIpoAsForce property");
return BoolToPyArg(m_ipo_as_force);
}
@@ -613,12 +632,11 @@ const char KX_IpoActuator::SetIpoAdd_doc[] =
"setIpoAdd(add?)\n"
"\t - add? : add flag (KX_TRUE, KX_FALSE)\n"
"\tSet whether to interpret the ipo as additive rather than absolute.\n";
-PyObject* KX_IpoActuator::PySetIpoAdd(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySetIpoAdd(PyObject* args) {
+ ShowDeprecationWarning("setIpoAdd()", "the useIpoAdd property");
int boolArg;
- if (!PyArg_ParseTuple(args, "i", &boolArg)) {
+ if (!PyArg_ParseTuple(args, "i:setIpoAdd", &boolArg)) {
return NULL;
}
@@ -632,7 +650,8 @@ PyObject* KX_IpoActuator::PySetIpoAdd(PyObject* self,
const char KX_IpoActuator::GetIpoAdd_doc[] =
"getIpoAsAdd()\n"
"\tReturns whether to interpret the ipo as additive rather than absolute.\n";
-PyObject* KX_IpoActuator::PyGetIpoAdd(PyObject* self) {
+PyObject* KX_IpoActuator::PyGetIpoAdd() {
+ ShowDeprecationWarning("getIpoAdd()", "the useIpoAdd property");
return BoolToPyArg(m_ipo_add);
}
@@ -641,18 +660,17 @@ const char KX_IpoActuator::SetType_doc[] =
"setType(mode)\n"
"\t - mode: Play, PingPong, Flipper, LoopStop, LoopEnd or FromProp (string)\n"
"\tSet the operation mode of the actuator.\n";
-PyObject* KX_IpoActuator::PySetType(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySetType(PyObject* args) {
+ ShowDeprecationWarning("setType()", "the type property");
int typeArg;
- if (!PyArg_ParseTuple(args, "i", &typeArg)) {
+ if (!PyArg_ParseTuple(args, "i:setType", &typeArg)) {
return NULL;
}
if ( (typeArg > KX_ACT_IPO_NODEF)
- && (typeArg < KX_ACT_IPO_KEY2KEY) ) {
- m_type = (IpoActType) typeArg;
+ && (typeArg < KX_ACT_IPO_MAX) ) {
+ m_type = typeArg;
}
Py_RETURN_NONE;
@@ -661,7 +679,8 @@ PyObject* KX_IpoActuator::PySetType(PyObject* self,
const char KX_IpoActuator::GetType_doc[] =
"getType()\n"
"\tReturns the operation mode of the actuator.\n";
-PyObject* KX_IpoActuator::PyGetType(PyObject* self) {
+PyObject* KX_IpoActuator::PyGetType() {
+ ShowDeprecationWarning("getType()", "the type property");
return PyInt_FromLong(m_type);
}
@@ -672,12 +691,11 @@ const char KX_IpoActuator::SetForceIpoActsLocal_doc[] =
"\t coordinates? (KX_TRUE, KX_FALSE)\n"
"\tSet whether to apply the force in the object's local\n"
"\tcoordinates rather than the world global coordinates.\n";
-PyObject* KX_IpoActuator::PySetForceIpoActsLocal(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_IpoActuator::PySetForceIpoActsLocal(PyObject* args) {
+ ShowDeprecationWarning("setForceIpoActsLocal()", "the useIpoLocal property");
int boolArg;
- if (!PyArg_ParseTuple(args, "i", &boolArg)) {
+ if (!PyArg_ParseTuple(args, "i:setForceIpoActsLocal", &boolArg)) {
return NULL;
}
@@ -690,7 +708,8 @@ const char KX_IpoActuator::GetForceIpoActsLocal_doc[] =
"getForceIpoActsLocal()\n"
"\tReturn whether to apply the force in the object's local\n"
"\tcoordinates rather than the world global coordinates.\n";
-PyObject* KX_IpoActuator::PyGetForceIpoActsLocal(PyObject* self) {
+PyObject* KX_IpoActuator::PyGetForceIpoActsLocal() {
+ ShowDeprecationWarning("getForceIpoActsLocal()", "the useIpoLocal property");
return BoolToPyArg(m_ipo_local);
}
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.h b/source/gameengine/Ketsji/KX_IpoActuator.h
index 12e1835ab49..184ad5512de 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.h
+++ b/source/gameengine/Ketsji/KX_IpoActuator.h
@@ -108,9 +108,9 @@ public:
static STR_String S_KX_ACT_IPO_KEY2KEY_STRING;
static STR_String S_KX_ACT_IPO_FROM_PROP_STRING;
- IpoActType string2mode(char* modename);
+ int string2mode(char* modename);
- IpoActType m_type;
+ int m_type;
KX_IpoActuator(SCA_IObject* gameobj,
const STR_String& propname,
@@ -141,22 +141,24 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+
//KX_PYMETHOD_DOC
- KX_PYMETHOD_DOC(KX_IpoActuator,Set);
- KX_PYMETHOD_DOC(KX_IpoActuator,SetProperty);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,Set);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,SetProperty);
/* KX_PYMETHOD_DOC(KX_IpoActuator,SetKey2Key); */
- KX_PYMETHOD_DOC(KX_IpoActuator,SetStart);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,SetStart);
KX_PYMETHOD_DOC_NOARGS(KX_IpoActuator,GetStart);
- KX_PYMETHOD_DOC(KX_IpoActuator,SetEnd);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,SetEnd);
KX_PYMETHOD_DOC_NOARGS(KX_IpoActuator,GetEnd);
- KX_PYMETHOD_DOC(KX_IpoActuator,SetIpoAsForce);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,SetIpoAsForce);
KX_PYMETHOD_DOC_NOARGS(KX_IpoActuator,GetIpoAsForce);
- KX_PYMETHOD_DOC(KX_IpoActuator,SetIpoAdd);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,SetIpoAdd);
KX_PYMETHOD_DOC_NOARGS(KX_IpoActuator,GetIpoAdd);
- KX_PYMETHOD_DOC(KX_IpoActuator,SetType);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,SetType);
KX_PYMETHOD_DOC_NOARGS(KX_IpoActuator,GetType);
- KX_PYMETHOD_DOC(KX_IpoActuator,SetForceIpoActsLocal);
+ KX_PYMETHOD_DOC_VARARGS(KX_IpoActuator,SetForceIpoActsLocal);
KX_PYMETHOD_DOC_NOARGS(KX_IpoActuator,GetForceIpoActsLocal);
};
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 97b4213b8bd..83a2fa8a448 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -55,6 +55,7 @@
#include "KX_Scene.h"
#include "MT_CmMatrix4x4.h"
#include "KX_Camera.h"
+#include "KX_Dome.h"
#include "KX_Light.h"
#include "KX_PythonInit.h"
#include "KX_PyConstraintBinding.h"
@@ -144,6 +145,8 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_stereo(false),
m_curreye(0),
+ m_usedome(false),
+
m_logger(NULL),
// Set up timing info display variables
@@ -179,6 +182,8 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
KX_KetsjiEngine::~KX_KetsjiEngine()
{
delete m_logger;
+ if(m_usedome)
+ delete m_dome;
}
@@ -256,7 +261,129 @@ void KX_KetsjiEngine::SetSceneConverter(KX_ISceneConverter* sceneconverter)
m_sceneconverter = sceneconverter;
}
+void KX_KetsjiEngine::InitDome(float size, short res, short mode, short angle, float resbuf, struct Text* text)
+{
+ m_dome = new KX_Dome(m_canvas, m_rasterizer, m_rendertools,this, size, res, mode, angle, resbuf, text);
+ m_usedome = true;
+}
+
+void KX_KetsjiEngine::RenderDome()
+{
+ GLuint viewport[4]={0};
+ glGetIntegerv(GL_VIEWPORT,(GLint *)viewport);
+// unsigned int m_viewport[4] = {viewport[0], viewport[1], viewport[2], viewport[3]};
+
+ m_dome->SetViewPort(viewport);
+
+ KX_Scene* firstscene = *m_scenes.begin();
+ const RAS_FrameSettings &framesettings = firstscene->GetFramingType();
+
+ m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true);
+
+ // hiding mouse cursor each frame
+ // (came back when going out of focus and then back in again)
+ if (m_hideCursor)
+ m_canvas->SetMouseState(RAS_ICanvas::MOUSE_INVISIBLE);
+
+ // clear the entire game screen with the border color
+ // only once per frame
+
+ m_canvas->BeginDraw();
+
+ // BeginFrame() sets the actual drawing area. You can use a part of the window
+ if (!BeginFrame())
+ return;
+
+ KX_SceneList::iterator sceneit;
+ for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); sceneit++)
+ {
+ // do this only once per scene
+ (*sceneit)->UpdateMeshTransformations();
+ }
+
+ int n_renders=m_dome->GetNumberRenders();// usually 4 or 6
+ for (int i=0;i<n_renders;i++){
+ m_canvas->ClearBuffer(RAS_ICanvas::COLOR_BUFFER|RAS_ICanvas::DEPTH_BUFFER);
+ for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); sceneit++)
+ // for each scene, call the proceed functions
+ {
+ KX_Scene* scene = *sceneit;
+ KX_Camera* cam = scene->GetActiveCamera();
+
+ m_rendertools->BeginFrame(m_rasterizer);
+ // pass the scene's worldsettings to the rasterizer
+ SetWorldSettings(scene->GetWorldInfo());
+
+ // shadow buffers
+ if (i == 0){
+ RenderShadowBuffers(scene);
+ }
+ // Avoid drawing the scene with the active camera twice when it's viewport is enabled
+ if(cam && !cam->GetViewport())
+ {
+ if (scene->IsClearingZBuffer())
+ m_rasterizer->ClearDepthBuffer();
+
+ m_rendertools->SetAuxilaryClientInfo(scene);
+
+ // do the rendering
+ m_dome->RenderDomeFrame(scene,cam, i);
+ }
+
+ list<class KX_Camera*>* cameras = scene->GetCameras();
+
+ // Draw the scene once for each camera with an enabled viewport
+ list<KX_Camera*>::iterator it = cameras->begin();
+ while(it != cameras->end())
+ {
+ if((*it)->GetViewport())
+ {
+ if (scene->IsClearingZBuffer())
+ m_rasterizer->ClearDepthBuffer();
+
+ m_rendertools->SetAuxilaryClientInfo(scene);
+
+ // do the rendering
+ m_dome->RenderDomeFrame(scene, (*it),i);
+ }
+
+ it++;
+ }
+ }
+ m_dome->BindImages(i);
+ }
+
+// m_dome->Dome_PostRender(scene, cam, stereomode);
+ m_canvas->EndFrame();//XXX do we really need that?
+ m_canvas->SetViewPort(0, 0, m_canvas->GetWidth(), m_canvas->GetHeight());
+
+ if (m_overrideFrameColor) //XXX why do we want
+ {
+ // Do not use the framing bar color set in the Blender scenes
+ m_canvas->ClearColor(
+ m_overrideFrameColorR,
+ m_overrideFrameColorG,
+ m_overrideFrameColorB,
+ 1.0
+ );
+ }
+ else
+ {
+ // Use the framing bar color set in the Blender scenes
+ m_canvas->ClearColor(
+ framesettings.BarRed(),
+ framesettings.BarGreen(),
+ framesettings.BarBlue(),
+ 1.0
+ );
+ }
+
+ m_dome->Draw();
+
+ //run 2dfilters
+ EndFrame();
+}
/**
* Ketsji Init(), Initializes datastructures and converts data from
@@ -412,7 +539,7 @@ else
// Compute the number of logic frames to do each update (fixed tic bricks)
- int frames =int(deltatime*m_ticrate);
+ int frames =int(deltatime*m_ticrate+1e-6);
// if (frames>1)
// printf("****************************************");
// printf("dt = %f, deltatime = %f, frames = %d\n",dt, deltatime,frames);
@@ -465,12 +592,15 @@ else
m_logger->StartLog(tc_network, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_NETWORK);
scene->GetNetworkScene()->proceed(m_frameTime);
- m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(m_frameTime);
+ //m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ //SG_SetActiveStage(SG_STAGE_NETWORK_UPDATE);
+ //scene->UpdateParents(m_frameTime);
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_PHYSICS1);
// set Python hooks for each scene
PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment());
KX_SetActiveScene(scene);
@@ -479,31 +609,37 @@ else
// Update scenegraph after physics step. This maps physics calculations
// into node positions.
- m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(m_frameTime);
+ //m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ //SG_SetActiveStage(SG_STAGE_PHYSICS1_UPDATE);
+ //scene->UpdateParents(m_frameTime);
// Process sensors, and controllers
m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_CONTROLLER);
scene->LogicBeginFrame(m_frameTime);
// Scenegraph needs to be updated again, because Logic Controllers
// can affect the local matrices.
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_CONTROLLER_UPDATE);
scene->UpdateParents(m_frameTime);
// Process actuators
// Do some cleanup work for this logic frame
m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_ACTUATOR);
scene->LogicUpdateFrame(m_frameTime, true);
scene->LogicEndFrame();
// Actuators can affect the scenegraph
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_ACTUATOR_UPDATE);
scene->UpdateParents(m_frameTime);
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_PHYSICS2);
scene->GetPhysicsEnvironment()->beginFrame();
// Perform physics calculations on the scene. This can involve
@@ -511,6 +647,7 @@ else
scene->GetPhysicsEnvironment()->proceedDeltaTime(m_frameTime,1.0/m_ticrate);//m_deltatimerealDeltaTime);
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_PHYSICS2_UPDATE);
scene->UpdateParents(m_frameTime);
@@ -574,6 +711,7 @@ else
KX_SetActiveScene(scene);
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_PHYSICS1);
scene->UpdateParents(m_clockTime);
// Perform physics calculations on the scene. This can involve
@@ -583,6 +721,7 @@ else
// Update scenegraph after physics step. This maps physics calculations
// into node positions.
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_PHYSICS2);
scene->UpdateParents(m_clockTime);
// Do some cleanup work for this logic frame
@@ -591,6 +730,7 @@ else
// Actuators can affect the scenegraph
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_ACTUATOR);
scene->UpdateParents(m_clockTime);
scene->setSuspendedTime(0.0);
@@ -618,10 +758,15 @@ else
void KX_KetsjiEngine::Render()
{
+ if(m_usedome){
+ RenderDome();
+ return;
+ }
KX_Scene* firstscene = *m_scenes.begin();
const RAS_FrameSettings &framesettings = firstscene->GetFramingType();
m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_RENDER);
// hiding mouse cursor each frame
// (came back when going out of focus and then back in again)
@@ -672,6 +817,9 @@ void KX_KetsjiEngine::Render()
// pass the scene's worldsettings to the rasterizer
SetWorldSettings(scene->GetWorldInfo());
+ // do this only once per scene
+ scene->UpdateMeshTransformations();
+
// shadow buffers
RenderShadowBuffers(scene);
@@ -758,6 +906,9 @@ void KX_KetsjiEngine::Render()
}
} // if(m_rasterizer->Stereo())
+ // run the 2dfilters and motion blur once for all the scenes
+ PostRenderFrame();
+
EndFrame();
}
@@ -997,7 +1148,6 @@ void KX_KetsjiEngine::RenderShadowBuffers(KX_Scene *scene)
light->BindShadowBuffer(m_rasterizer, cam, camtrans);
/* update scene */
- scene->UpdateMeshTransformations();
scene->CalculateVisibleMeshes(m_rasterizer, cam, light->GetShadowLayer());
/* render */
@@ -1102,30 +1252,34 @@ void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam)
cam->GetCameraLocation(), cam->GetCameraOrientation());
cam->SetModelviewMatrix(viewmat);
- scene->UpdateMeshTransformations();
+ //redundant, already done in Render()
+ //scene->UpdateMeshTransformations();
// The following actually reschedules all vertices to be
// redrawn. There is a cache between the actual rescheduling
// and this call though. Visibility is imparted when this call
// runs through the individual objects.
+
+ m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_CULLING);
+
scene->CalculateVisibleMeshes(m_rasterizer,cam);
+ m_logger->StartLog(tc_rasterizer, m_kxsystem->GetTimeInSeconds(), true);
+ SG_SetActiveStage(SG_STAGE_RENDER);
+
scene->RenderBuckets(camtrans, m_rasterizer, m_rendertools);
if (scene->GetPhysicsEnvironment())
scene->GetPhysicsEnvironment()->debugDrawWorld();
m_rasterizer->FlushDebugLines();
-
- PostRenderFrame();
}
void KX_KetsjiEngine::PostRenderFrame()
{
- m_rendertools->PushMatrix();
m_rendertools->Render2DFilters(m_canvas);
m_rendertools->MotionBlur(m_rasterizer);
- m_rendertools->PopMatrix();
}
void KX_KetsjiEngine::StopEngine()
@@ -1166,15 +1320,17 @@ void KX_KetsjiEngine::AddScene(KX_Scene* scene)
void KX_KetsjiEngine::PostProcessScene(KX_Scene* scene)
{
bool override_camera = (m_overrideCam && (scene->GetName() == m_overrideSceneName));
-
- // if there is no activecamera, or the camera is being
- // overridden we need to construct a temporarily camera
+
+ SG_SetActiveStage(SG_STAGE_SCENE);
+
+ // if there is no activecamera, or the camera is being
+ // overridden we need to construct a temporarily camera
if (!scene->GetActiveCamera() || override_camera)
{
KX_Camera* activecam = NULL;
RAS_CameraData camdata = RAS_CameraData();
- activecam = new KX_Camera(scene,KX_Scene::m_callbacks,camdata, false);
+ activecam = new KX_Camera(scene,KX_Scene::m_callbacks,camdata);
activecam->SetName("__default__cam__");
// set transformation
@@ -1186,11 +1342,11 @@ void KX_KetsjiEngine::PostProcessScene(KX_Scene* scene)
activecam->NodeSetLocalPosition(camtrans.getOrigin());
activecam->NodeSetLocalOrientation(camtrans.getBasis());
- activecam->NodeUpdateGS(0,true);
+ activecam->NodeUpdateGS(0);
} else {
activecam->NodeSetLocalPosition(MT_Point3(0.0, 0.0, 0.0));
activecam->NodeSetLocalOrientation(MT_Vector3(0.0, 0.0, 0.0));
- activecam->NodeUpdateGS(0,true);
+ activecam->NodeUpdateGS(0);
}
scene->AddCamera(activecam);
@@ -1675,4 +1831,3 @@ void KX_KetsjiEngine::GetOverrideFrameColor(float& r, float& g, float& b) const
}
-
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.h b/source/gameengine/Ketsji/KX_KetsjiEngine.h
index 8516049f6d8..a8ccd6100d7 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.h
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.h
@@ -74,6 +74,7 @@ private:
PyObject* m_pythondictionary;
class SCA_IInputDevice* m_keyboarddevice;
class SCA_IInputDevice* m_mousedevice;
+ class KX_Dome* m_dome; // dome stereo mode
/** Lists of scenes scheduled to be removed at the end of the frame. */
std::set<STR_String> m_removingScenes;
@@ -208,6 +209,12 @@ public:
RAS_ICanvas* GetCanvas(){return m_canvas;};
RAS_IRenderTools* GetRenderTools(){return m_rendertools;};
+ /// Dome functions
+ void InitDome(float size, short res, short mode, short angle, float resbuf, struct Text* text);
+ void EndDome();
+ void RenderDome();
+ bool m_usedome;
+
///returns true if an update happened to indicate -> Render
bool NextFrame();
void Render();
@@ -234,6 +241,8 @@ public:
void GetSceneViewport(KX_Scene* scene, KX_Camera* cam, RAS_Rect& area, RAS_Rect& viewport);
void SetDrawType(int drawingtype);
+ int GetDrawType(){return m_drawingmode;};
+
void SetCameraZoom(float camzoom);
void EnableCameraOverride(const STR_String& forscene);
diff --git a/source/gameengine/Ketsji/KX_Light.cpp b/source/gameengine/Ketsji/KX_Light.cpp
index a2e93ecdd36..713838c88ec 100644
--- a/source/gameengine/Ketsji/KX_Light.cpp
+++ b/source/gameengine/Ketsji/KX_Light.cpp
@@ -57,6 +57,7 @@ KX_LightObject::KX_LightObject(void* sgReplicationInfo,SG_Callbacks callbacks,
{
m_lightobj = lightobj;
m_lightobj.m_worldmatrix = GetOpenGLMatrixPtr();
+ m_lightobj.m_scene = sgReplicationInfo;
m_rendertools->AddLight(&m_lightobj);
m_glsl = glsl;
m_blenderscene = ((KX_Scene*)sgReplicationInfo)->GetBlenderScene();
@@ -158,7 +159,7 @@ void KX_LightObject::BindShadowBuffer(RAS_IRasterizer *ras, KX_Camera *cam, MT_T
cam->NodeSetLocalPosition(camtrans.getOrigin());
cam->NodeSetLocalOrientation(camtrans.getBasis());
- cam->NodeUpdateGS(0,true);
+ cam->NodeUpdateGS(0);
/* setup rasterizer transformations */
ras->SetProjectionMatrix(projectionmat);
@@ -172,109 +173,114 @@ void KX_LightObject::UnbindShadowBuffer(RAS_IRasterizer *ras)
GPU_lamp_shadow_buffer_unbind(lamp);
}
-PyObject* KX_LightObject::_getattr(const char *attr)
+PyObject* KX_LightObject::py_getattro(PyObject *attr)
{
- if (!strcmp(attr, "layer"))
+ char *attr_str= PyString_AsString(attr);
+
+ if (!strcmp(attr_str, "layer"))
return PyInt_FromLong(m_lightobj.m_layer);
- if (!strcmp(attr, "energy"))
+ if (!strcmp(attr_str, "energy"))
return PyFloat_FromDouble(m_lightobj.m_energy);
- if (!strcmp(attr, "distance"))
+ if (!strcmp(attr_str, "distance"))
return PyFloat_FromDouble(m_lightobj.m_distance);
- if (!strcmp(attr, "colour") || !strcmp(attr, "color"))
+ if (!strcmp(attr_str, "colour") || !strcmp(attr_str, "color"))
return Py_BuildValue("[fff]", m_lightobj.m_red, m_lightobj.m_green, m_lightobj.m_blue);
- if (!strcmp(attr, "lin_attenuation"))
+ if (!strcmp(attr_str, "lin_attenuation"))
return PyFloat_FromDouble(m_lightobj.m_att1);
- if (!strcmp(attr, "quad_attenuation"))
+ if (!strcmp(attr_str, "quad_attenuation"))
return PyFloat_FromDouble(m_lightobj.m_att2);
- if (!strcmp(attr, "spotsize"))
+ if (!strcmp(attr_str, "spotsize"))
return PyFloat_FromDouble(m_lightobj.m_spotsize);
- if (!strcmp(attr, "spotblend"))
+ if (!strcmp(attr_str, "spotblend"))
return PyFloat_FromDouble(m_lightobj.m_spotblend);
- if (!strcmp(attr, "SPOT"))
+ if (!strcmp(attr_str, "SPOT"))
return PyInt_FromLong(RAS_LightObject::LIGHT_SPOT);
- if (!strcmp(attr, "SUN"))
+ if (!strcmp(attr_str, "SUN"))
return PyInt_FromLong(RAS_LightObject::LIGHT_SUN);
- if (!strcmp(attr, "NORMAL"))
+ if (!strcmp(attr_str, "NORMAL"))
return PyInt_FromLong(RAS_LightObject::LIGHT_NORMAL);
- if (!strcmp(attr, "type"))
+ if (!strcmp(attr_str, "type"))
return PyInt_FromLong(m_lightobj.m_type);
- _getattr_up(KX_GameObject);
+ py_getattro_up(KX_GameObject);
}
-int KX_LightObject::_setattr(const char *attr, PyObject *pyvalue)
-{
+
+int KX_LightObject::py_setattro(PyObject *attr, PyObject *pyvalue)
+{
+ char *attr_str= PyString_AsString(attr);
+
if (PyInt_Check(pyvalue))
{
int value = PyInt_AsLong(pyvalue);
- if (!strcmp(attr, "layer"))
+ if (!strcmp(attr_str, "layer"))
{
m_lightobj.m_layer = value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "type"))
+ if (!strcmp(attr_str, "type"))
{
if (value >= RAS_LightObject::LIGHT_SPOT && value <= RAS_LightObject::LIGHT_NORMAL)
m_lightobj.m_type = (RAS_LightObject::LightType) value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
}
- if (PyFloat_Check(pyvalue))
+ if (PyFloat_Check(pyvalue) || PyInt_Check(pyvalue))
{
float value = PyFloat_AsDouble(pyvalue);
- if (!strcmp(attr, "energy"))
+ if (!strcmp(attr_str, "energy"))
{
m_lightobj.m_energy = value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "distance"))
+ if (!strcmp(attr_str, "distance"))
{
m_lightobj.m_distance = value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "lin_attenuation"))
+ if (!strcmp(attr_str, "lin_attenuation"))
{
m_lightobj.m_att1 = value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "quad_attenuation"))
+ if (!strcmp(attr_str, "quad_attenuation"))
{
m_lightobj.m_att2 = value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "spotsize"))
+ if (!strcmp(attr_str, "spotsize"))
{
m_lightobj.m_spotsize = value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "spotblend"))
+ if (!strcmp(attr_str, "spotblend"))
{
m_lightobj.m_spotblend = value;
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
}
if (PySequence_Check(pyvalue))
{
- if (!strcmp(attr, "colour") || !strcmp(attr, "color"))
+ if (!strcmp(attr_str, "colour") || !strcmp(attr_str, "color"))
{
MT_Vector3 color;
if (PyVecTo(pyvalue, color))
@@ -282,19 +288,19 @@ int KX_LightObject::_setattr(const char *attr, PyObject *pyvalue)
m_lightobj.m_red = color[0];
m_lightobj.m_green = color[1];
m_lightobj.m_blue = color[2];
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- return 1;
+ return PY_SET_ATTR_FAIL;
}
}
- if (!strcmp(attr, "SPOT") || !strcmp(attr, "SUN") || !strcmp(attr, "NORMAL"))
+ if (!strcmp(attr_str, "SPOT") || !strcmp(attr_str, "SUN") || !strcmp(attr_str, "NORMAL"))
{
- PyErr_Format(PyExc_RuntimeError, "Attribute %s is read only.", attr);
- return 1;
+ PyErr_Format(PyExc_RuntimeError, "Attribute %s is read only.", attr_str);
+ return PY_SET_ATTR_FAIL;
}
- return KX_GameObject::_setattr(attr, pyvalue);
+ return KX_GameObject::py_setattro(attr, pyvalue);
}
PyMethodDef KX_LightObject::Methods[] = {
@@ -302,51 +308,41 @@ PyMethodDef KX_LightObject::Methods[] = {
};
PyAttributeDef KX_LightObject::Attributes[] = {
+ KX_PYATTRIBUTE_DUMMY("layer"),
+ KX_PYATTRIBUTE_DUMMY("energy"),
+ KX_PYATTRIBUTE_DUMMY("distance"),
+ KX_PYATTRIBUTE_DUMMY("colour"),
+ KX_PYATTRIBUTE_DUMMY("color"),
+ KX_PYATTRIBUTE_DUMMY("lin_attenuation"),
+ KX_PYATTRIBUTE_DUMMY("quad_attenuation"),
+ KX_PYATTRIBUTE_DUMMY("spotsize"),
+ KX_PYATTRIBUTE_DUMMY("spotblend"),
+ KX_PYATTRIBUTE_DUMMY("SPOT"),
+ KX_PYATTRIBUTE_DUMMY("SUN"),
+ KX_PYATTRIBUTE_DUMMY("NORMAL"),
+ KX_PYATTRIBUTE_DUMMY("type"),
{ NULL } //Sentinel
};
-char KX_LightObject::doc[] = "Module KX_LightObject\n\n"
-"Constants:\n"
-"\tSPOT\n"
-"\tSUN\n"
-"\tNORMAL\n"
-"Attributes:\n"
-"\ttype -> SPOT, SUN or NORMAL\n"
-"\t\tThe type of light.\n"
-"\tlayer -> integer bit field.\n"
-"\t\tThe layers this light applies to.\n"
-"\tenergy -> float.\n"
-"\t\tThe brightness of the light.\n"
-"\tdistance -> float.\n"
-"\t\tThe effect radius of the light.\n"
-"\tcolour -> list [r, g, b].\n"
-"\tcolor -> list [r, g, b].\n"
-"\t\tThe color of the light.\n"
-"\tlin_attenuation -> float.\n"
-"\t\tThe attenuation factor for the light.\n"
-"\tspotsize -> float.\n"
-"\t\tThe size of the spot.\n"
-"\tspotblend -> float.\n"
-"\t\tThe blend? of the spot.\n";
-
PyTypeObject KX_LightObject::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_LightObject",
- sizeof(KX_LightObject),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0, 0, 0, 0, 0, 0,
- doc
+ py_base_repr,
+ 0,0,
+ &KX_GameObject::Mapping,
+ 0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_LightObject::Parents[] = {
diff --git a/source/gameengine/Ketsji/KX_Light.h b/source/gameengine/Ketsji/KX_Light.h
index 47edd09b5b9..4559954c8d7 100644
--- a/source/gameengine/Ketsji/KX_Light.h
+++ b/source/gameengine/Ketsji/KX_Light.h
@@ -47,7 +47,6 @@ protected:
class RAS_IRenderTools* m_rendertools; //needed for registering and replication of lightobj
bool m_glsl;
Scene* m_blenderscene;
- static char doc[];
public:
KX_LightObject(void* sgReplicationInfo,SG_Callbacks callbacks,class RAS_IRenderTools* rendertools,const struct RAS_LightObject& lightobj, bool glsl, PyTypeObject *T = &Type);
@@ -63,8 +62,8 @@ public:
void UnbindShadowBuffer(class RAS_IRasterizer *ras);
void Update();
- virtual PyObject* _getattr(const char *attr); /* lens, near, far, projection_matrix */
- virtual int _setattr(const char *attr, PyObject *pyvalue);
+ virtual PyObject* py_getattro(PyObject *attr); /* lens, near, far, projection_matrix */
+ virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
virtual bool IsLight(void) { return true; }
};
diff --git a/source/gameengine/Ketsji/KX_MeshProxy.cpp b/source/gameengine/Ketsji/KX_MeshProxy.cpp
index a0c0a496c06..6be1da55ff8 100644
--- a/source/gameengine/Ketsji/KX_MeshProxy.cpp
+++ b/source/gameengine/Ketsji/KX_MeshProxy.cpp
@@ -46,22 +46,22 @@
#include "PyObjectPlus.h"
PyTypeObject KX_MeshProxy::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_MeshProxy",
- sizeof(KX_MeshProxy),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_MeshProxy::Parents[] = {
@@ -73,8 +73,11 @@ PyParentObject KX_MeshProxy::Parents[] = {
};
PyMethodDef KX_MeshProxy::Methods[] = {
+// Deprecated ----->
{"getNumMaterials", (PyCFunction)KX_MeshProxy::sPyGetNumMaterials,METH_VARARGS},
{"getNumPolygons", (PyCFunction)KX_MeshProxy::sPyGetNumPolygons,METH_NOARGS},
+// <-----
+
{"getMaterialName", (PyCFunction)KX_MeshProxy::sPyGetMaterialName,METH_VARARGS},
{"getTextureName", (PyCFunction)KX_MeshProxy::sPyGetTextureName,METH_VARARGS},
{"getVertexArrayLength", (PyCFunction)KX_MeshProxy::sPyGetVertexArrayLength,METH_VARARGS},
@@ -87,6 +90,10 @@ KX_PYMETHODTABLE(KX_MeshProxy, reinstancePhysicsMesh),
};
PyAttributeDef KX_MeshProxy::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("materials", KX_MeshProxy, pyattr_get_materials),
+ KX_PYATTRIBUTE_RO_FUNCTION("numPolygons", KX_MeshProxy, pyattr_get_numPolygons),
+ KX_PYATTRIBUTE_RO_FUNCTION("numMaterials", KX_MeshProxy, pyattr_get_numMaterials),
+
{ NULL } //Sentinel
};
@@ -96,35 +103,19 @@ void KX_MeshProxy::SetMeshModified(bool v)
}
-PyObject*
-KX_MeshProxy::_getattr(const char *attr)
+PyObject* KX_MeshProxy::py_getattro(PyObject *attr)
{
- if (!strcmp(attr, "materials"))
- {
- PyObject *materials = PyList_New(0);
- list<RAS_MeshMaterial>::iterator mit = m_meshobj->GetFirstMaterial();
- for(; mit != m_meshobj->GetLastMaterial(); ++mit)
- {
- RAS_IPolyMaterial *polymat = mit->m_bucket->GetPolyMaterial();
-
- if(polymat->GetFlag() & RAS_BLENDERMAT)
- {
- KX_BlenderMaterial *mat = static_cast<KX_BlenderMaterial*>(polymat);
- PyList_Append(materials, mat);
- }else
- {
- PyList_Append(materials, static_cast<KX_PolygonMaterial*>(polymat));
- }
- }
- return materials;
- }
- _getattr_up(SCA_IObject);
+ py_getattro_up(SCA_IObject);
}
+int KX_MeshProxy::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IObject);
+}
KX_MeshProxy::KX_MeshProxy(RAS_MeshObject* mesh)
- : m_meshobj(mesh)
+ : SCA_IObject(&Type), m_meshobj(mesh)
{
}
@@ -139,7 +130,7 @@ CValue* KX_MeshProxy::Calc(VALUE_OPERATOR op, CValue *val) { return NULL;}
CValue* KX_MeshProxy::CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val) { return NULL;}
const STR_String & KX_MeshProxy::GetText() {return m_meshobj->GetName();};
-float KX_MeshProxy::GetNumber() { return -1;}
+double KX_MeshProxy::GetNumber() { return -1;}
STR_String KX_MeshProxy::GetName() { return m_meshobj->GetName();}
void KX_MeshProxy::SetName(STR_String name) { };
CValue* KX_MeshProxy::GetReplica() { return NULL;}
@@ -148,28 +139,26 @@ void KX_MeshProxy::ReplicaSetName(STR_String name) {};
// stuff for python integration
-PyObject* KX_MeshProxy::PyGetNumMaterials(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_MeshProxy::PyGetNumMaterials(PyObject* args, PyObject* kwds)
{
int num = m_meshobj->NumMaterials();
+ ShowDeprecationWarning("getNumMaterials()", "the numMaterials property");
return PyInt_FromLong(num);
}
-PyObject* KX_MeshProxy::PyGetNumPolygons(PyObject* self)
+PyObject* KX_MeshProxy::PyGetNumPolygons()
{
int num = m_meshobj->NumPolygons();
+ ShowDeprecationWarning("getNumPolygons()", "the numPolygons property");
return PyInt_FromLong(num);
}
-PyObject* KX_MeshProxy::PyGetMaterialName(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_MeshProxy::PyGetMaterialName(PyObject* args, PyObject* kwds)
{
int matid= 1;
STR_String matname;
- if (PyArg_ParseTuple(args,"i",&matid))
+ if (PyArg_ParseTuple(args,"i:getMaterialName",&matid))
{
matname = m_meshobj->GetMaterialName(matid);
}
@@ -182,14 +171,12 @@ PyObject* KX_MeshProxy::PyGetMaterialName(PyObject* self,
}
-PyObject* KX_MeshProxy::PyGetTextureName(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_MeshProxy::PyGetTextureName(PyObject* args, PyObject* kwds)
{
int matid= 1;
STR_String matname;
- if (PyArg_ParseTuple(args,"i",&matid))
+ if (PyArg_ParseTuple(args,"i:getTextureName",&matid))
{
matname = m_meshobj->GetTextureName(matid);
}
@@ -201,45 +188,41 @@ PyObject* KX_MeshProxy::PyGetTextureName(PyObject* self,
}
-PyObject* KX_MeshProxy::PyGetVertexArrayLength(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_MeshProxy::PyGetVertexArrayLength(PyObject* args, PyObject* kwds)
{
- int matid= -1;
- int length = -1;
+ int matid= 0;
+ int length = 0;
- if (PyArg_ParseTuple(args,"i",&matid))
+ if (!PyArg_ParseTuple(args,"i:getVertexArrayLength",&matid))
+ return NULL;
+
+
+ RAS_MeshMaterial *mmat = m_meshobj->GetMeshMaterial(matid); /* can be NULL*/
+
+ if (mmat)
{
- RAS_MeshMaterial *mmat = m_meshobj->GetMeshMaterial(matid);
RAS_IPolyMaterial* mat = mmat->m_bucket->GetPolyMaterial();
-
if (mat)
length = m_meshobj->NumVertices(mat);
}
- else {
- return NULL;
- }
-
+
return PyInt_FromLong(length);
-
}
-PyObject* KX_MeshProxy::PyGetVertex(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_MeshProxy::PyGetVertex(PyObject* args, PyObject* kwds)
{
int vertexindex= 1;
int matindex= 1;
PyObject* vertexob = NULL;
- if (PyArg_ParseTuple(args,"ii",&matindex,&vertexindex))
+ if (PyArg_ParseTuple(args,"ii:getVertex",&matindex,&vertexindex))
{
RAS_TexVert* vertex = m_meshobj->GetVertex(matindex,vertexindex);
if (vertex)
{
- vertexob = new KX_VertexProxy(this, vertex);
+ vertexob = (new KX_VertexProxy(this, vertex))->NewProxy(true);
}
}
else {
@@ -250,24 +233,28 @@ PyObject* KX_MeshProxy::PyGetVertex(PyObject* self,
}
-PyObject* KX_MeshProxy::PyGetPolygon(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_MeshProxy::PyGetPolygon(PyObject* args, PyObject* kwds)
{
int polyindex= 1;
PyObject* polyob = NULL;
- if (!PyArg_ParseTuple(args,"i",&polyindex))
+ if (!PyArg_ParseTuple(args,"i:getPolygon",&polyindex))
+ return NULL;
+
+ if (polyindex<0 || polyindex >= m_meshobj->NumPolygons())
+ {
+ PyErr_SetString(PyExc_AttributeError, "mesh.getPolygon(int): KX_MeshProxy, invalid polygon index");
return NULL;
+ }
+
RAS_Polygon* polygon = m_meshobj->GetPolygon(polyindex);
if (polygon)
{
- polyob = new KX_PolyProxy(m_meshobj, polygon);
+ polyob = (new KX_PolyProxy(m_meshobj, polygon))->NewProxy(true);
}
- else
- {
- PyErr_SetString(PyExc_AttributeError, "Invalid polygon index");
+ else {
+ PyErr_SetString(PyExc_AttributeError, "mesh.getPolygon(int): KX_MeshProxy, polygon is NULL, unknown reason");
}
return polyob;
}
@@ -278,3 +265,97 @@ KX_PYMETHODDEF_DOC(KX_MeshProxy, reinstancePhysicsMesh,
//this needs to be reviewed, it is dependend on Sumo/Solid. Who is using this ?
Py_RETURN_NONE;//(KX_ReInstanceShapeFromMesh(m_meshobj)) ? Py_RETURN_TRUE : Py_RETURN_FALSE;
}
+
+PyObject* KX_MeshProxy::pyattr_get_materials(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_MeshProxy* self= static_cast<KX_MeshProxy*>(self_v);
+
+ int tot= self->m_meshobj->NumMaterials();
+ int i;
+
+ PyObject *materials = PyList_New( tot );
+
+ list<RAS_MeshMaterial>::iterator mit= self->m_meshobj->GetFirstMaterial();
+
+
+ for(i=0; i<tot; mit++, i++) {
+ RAS_IPolyMaterial *polymat = mit->m_bucket->GetPolyMaterial();
+
+ /* Why do we need to check for RAS_BLENDERMAT if both are cast to a (PyObject*)? - Campbell */
+ if(polymat->GetFlag() & RAS_BLENDERMAT)
+ {
+ KX_BlenderMaterial *mat = static_cast<KX_BlenderMaterial*>(polymat);
+ PyList_SET_ITEM(materials, i, mat->GetProxy());
+ }
+ else {
+ KX_PolygonMaterial *mat = static_cast<KX_PolygonMaterial*>(polymat);
+ PyList_SET_ITEM(materials, i, mat->GetProxy());
+ }
+ }
+ return materials;
+}
+
+PyObject * KX_MeshProxy::pyattr_get_numMaterials(void * selfv, const KX_PYATTRIBUTE_DEF * attrdef) {
+ KX_MeshProxy * self = static_cast<KX_MeshProxy *> (selfv);
+ return PyInt_FromLong(self->m_meshobj->NumMaterials());
+}
+
+PyObject * KX_MeshProxy::pyattr_get_numPolygons(void * selfv, const KX_PYATTRIBUTE_DEF * attrdef) {
+ KX_MeshProxy * self = static_cast<KX_MeshProxy *> (selfv);
+ return PyInt_FromLong(self->m_meshobj->NumPolygons());
+}
+
+/* a close copy of ConvertPythonToGameObject but for meshes */
+bool ConvertPythonToMesh(PyObject * value, RAS_MeshObject **object, bool py_none_ok, const char *error_prefix)
+{
+ if (value==NULL) {
+ PyErr_Format(PyExc_TypeError, "%s, python pointer NULL, should never happen", error_prefix);
+ *object = NULL;
+ return false;
+ }
+
+ if (value==Py_None) {
+ *object = NULL;
+
+ if (py_none_ok) {
+ return true;
+ } else {
+ PyErr_Format(PyExc_TypeError, "%s, expected KX_MeshProxy or a KX_MeshProxy name, None is invalid", error_prefix);
+ return false;
+ }
+ }
+
+ if (PyString_Check(value)) {
+ *object = (RAS_MeshObject*)SCA_ILogicBrick::m_sCurrentLogicManager->GetMeshByName(STR_String( PyString_AsString(value) ));
+
+ if (*object) {
+ return true;
+ } else {
+ PyErr_Format(PyExc_ValueError, "%s, requested name \"%s\" did not match any KX_MeshProxy in this scene", error_prefix, PyString_AsString(value));
+ return false;
+ }
+ }
+
+ if (PyObject_TypeCheck(value, &KX_MeshProxy::Type)) {
+ KX_MeshProxy *kx_mesh = static_cast<KX_MeshProxy*>BGE_PROXY_REF(value);
+
+ /* sets the error */
+ if (*object==NULL) {
+ PyErr_Format(PyExc_RuntimeError, "%s, " BGE_PROXY_ERROR_MSG, error_prefix);
+ return false;
+ }
+
+ *object = kx_mesh->GetMesh();
+ return true;
+ }
+
+ *object = NULL;
+
+ if (py_none_ok) {
+ PyErr_Format(PyExc_TypeError, "%s, expect a KX_MeshProxy, a string or None", error_prefix);
+ } else {
+ PyErr_Format(PyExc_TypeError, "%s, expect a KX_MeshProxy or a string", error_prefix);
+ }
+
+ return false;
+}
diff --git a/source/gameengine/Ketsji/KX_MeshProxy.h b/source/gameengine/Ketsji/KX_MeshProxy.h
index 34f60a54a3a..aeecefc09e6 100644
--- a/source/gameengine/Ketsji/KX_MeshProxy.h
+++ b/source/gameengine/Ketsji/KX_MeshProxy.h
@@ -31,6 +31,9 @@
#include "SCA_IObject.h"
+/* utility conversion function */
+bool ConvertPythonToMesh(PyObject * value, class RAS_MeshObject **object, bool py_none_ok, const char *error_prefix);
+
class KX_MeshProxy : public SCA_IObject
{
Py_Header;
@@ -46,24 +49,31 @@ public:
virtual CValue* Calc(VALUE_OPERATOR op, CValue *val) ;
virtual CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
virtual const STR_String & GetText();
- virtual float GetNumber();
+ virtual double GetNumber();
+ virtual RAS_MeshObject* GetMesh() { return m_meshobj; }
virtual STR_String GetName();
virtual void SetName(STR_String name); // Set the name of the value
virtual void ReplicaSetName(STR_String name);
virtual CValue* GetReplica();
// stuff for python integration
- virtual PyObject* _getattr(const char *attr);
- KX_PYMETHOD(KX_MeshProxy,GetNumMaterials);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
+
+ KX_PYMETHOD(KX_MeshProxy,GetNumMaterials); // Deprecated
KX_PYMETHOD(KX_MeshProxy,GetMaterialName);
KX_PYMETHOD(KX_MeshProxy,GetTextureName);
- KX_PYMETHOD_NOARGS(KX_MeshProxy,GetNumPolygons);
+ KX_PYMETHOD_NOARGS(KX_MeshProxy,GetNumPolygons); // Deprecated
// both take materialid (int)
KX_PYMETHOD(KX_MeshProxy,GetVertexArrayLength);
KX_PYMETHOD(KX_MeshProxy,GetVertex);
KX_PYMETHOD(KX_MeshProxy,GetPolygon);
KX_PYMETHOD_DOC(KX_MeshProxy, reinstancePhysicsMesh);
+
+ static PyObject* pyattr_get_materials(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject * pyattr_get_numMaterials(void * self, const KX_PYATTRIBUTE_DEF * attrdef);
+ static PyObject * pyattr_get_numPolygons(void * self, const KX_PYATTRIBUTE_DEF * attrdef);
};
#endif //__KX_MESHPROXY
diff --git a/source/gameengine/Ketsji/KX_MotionState.cpp b/source/gameengine/Ketsji/KX_MotionState.cpp
index 15f100af915..b4d58dccfdf 100644
--- a/source/gameengine/Ketsji/KX_MotionState.cpp
+++ b/source/gameengine/Ketsji/KX_MotionState.cpp
@@ -44,7 +44,7 @@ KX_MotionState::~KX_MotionState()
void KX_MotionState::getWorldPosition(float& posX,float& posY,float& posZ)
{
- MT_Point3 pos = m_node->GetWorldPosition();
+ const MT_Point3& pos = m_node->GetWorldPosition();
posX = pos[0];
posY = pos[1];
posZ = pos[2];
@@ -52,7 +52,7 @@ void KX_MotionState::getWorldPosition(float& posX,float& posY,float& posZ)
void KX_MotionState::getWorldScaling(float& scaleX,float& scaleY,float& scaleZ)
{
- MT_Vector3 scale = m_node->GetWorldScaling();
+ const MT_Vector3& scale = m_node->GetWorldScaling();
scaleX = scale[0];
scaleY = scale[1];
scaleZ = scale[2];
@@ -67,10 +67,16 @@ void KX_MotionState::getWorldOrientation(float& quatIma0,float& quatIma1,float&
quatReal = orn[3];
}
+void KX_MotionState::getWorldOrientation(float* ori)
+{
+ const MT_Matrix3x3& mat = m_node->GetWorldOrientation();
+ mat.getValue(ori);
+}
+
void KX_MotionState::setWorldPosition(float posX,float posY,float posZ)
{
m_node->SetLocalPosition(MT_Point3(posX,posY,posZ));
- m_node->SetWorldPosition(MT_Point3(posX,posY,posZ));
+ //m_node->SetWorldPosition(MT_Point3(posX,posY,posZ));
}
void KX_MotionState::setWorldOrientation(float quatIma0,float quatIma1,float quatIma2,float quatReal)
@@ -82,13 +88,15 @@ void KX_MotionState::setWorldOrientation(float quatIma0,float quatIma1,float qua
orn[3] = quatReal;
m_node->SetLocalOrientation(orn);
- m_node->SetWorldOrientation(orn);
+ //m_node->SetWorldOrientation(orn);
}
void KX_MotionState::calculateWorldTransformations()
{
- m_node->ComputeWorldTransforms(NULL);
+ //Not needed, will be done in KX_Scene::UpdateParents() after the physics simulation
+ //bool parentUpdated = false;
+ //m_node->ComputeWorldTransforms(NULL, parentUpdated);
}
diff --git a/source/gameengine/Ketsji/KX_MotionState.h b/source/gameengine/Ketsji/KX_MotionState.h
index c83af664817..7ba3ca2f85c 100644
--- a/source/gameengine/Ketsji/KX_MotionState.h
+++ b/source/gameengine/Ketsji/KX_MotionState.h
@@ -44,6 +44,7 @@ public:
virtual void getWorldOrientation(float& quatIma0,float& quatIma1,float& quatIma2,float& quatReal);
virtual void setWorldPosition(float posX,float posY,float posZ);
virtual void setWorldOrientation(float quatIma0,float quatIma1,float quatIma2,float quatReal);
+ virtual void getWorldOrientation(float* ori);
virtual void calculateWorldTransformations();
};
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
index 384034485e7..87b5c81392d 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
@@ -61,14 +61,12 @@ KX_MouseFocusSensor::KX_MouseFocusSensor(SCA_MouseManager* eventmgr,
int starty,
short int mousemode,
int focusmode,
- RAS_ICanvas* canvas,
KX_Scene* kxscene,
KX_KetsjiEngine *kxengine,
SCA_IObject* gameobj,
PyTypeObject* T)
: SCA_MouseSensor(eventmgr, startx, starty, mousemode, gameobj, T),
m_focusmode(focusmode),
- m_gp_canvas(canvas),
m_kxscene(kxscene),
m_kxengine(kxengine)
{
@@ -81,6 +79,11 @@ void KX_MouseFocusSensor::Init()
m_positive_event = false;
m_hitObject = 0;
m_reset = true;
+
+ m_hitPosition.setValue(0,0,0);
+ m_prevTargetPoint.setValue(0,0,0);
+ m_prevSourcePoint.setValue(0,0,0);
+ m_hitNormal.setValue(0,0,1);
}
bool KX_MouseFocusSensor::Evaluate(CValue* event)
@@ -150,12 +153,8 @@ bool KX_MouseFocusSensor::RayHit(KX_ClientObjectInfo* client_info, KX_RayCast* r
-bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
+bool KX_MouseFocusSensor::ParentObjectHasFocusCamera(KX_Camera *cam)
{
- m_hitObject = 0;
- m_hitPosition = MT_Vector3(0,0,0);
- m_hitNormal = MT_Vector3(1,0,0);
-
/* All screen handling in the gameengine is done by GL,
* specifically the model/view and projection parts. The viewport
* part is in the creator.
@@ -187,6 +186,7 @@ bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
* = 1.0 - 2(y_blender - y_lb)/height
*
* */
+
/* Because we don't want to worry about resize events, camera
* changes and all that crap, we just determine this over and
@@ -195,15 +195,18 @@ bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
* canvas, the test is irrelevant. The 1.0 makes sure the
* calculations don't bomb. Maybe we should explicitly guard for
* division by 0.0...*/
-
- KX_Camera* cam = m_kxscene->GetActiveCamera();
-
- /* get the scenes current viewport. we recompute it because there
- * may be multiple cameras and m_kxscene->GetSceneViewport() only
- * has the one that was last drawn */
-
+
RAS_Rect area, viewport;
m_kxengine->GetSceneViewport(m_kxscene, cam, area, viewport);
+
+ /* Check if the mouse is in the viewport */
+ if (( m_x < viewport.m_x2 && // less then right
+ m_x > viewport.m_x1 && // more then then left
+ m_y < viewport.m_y2 && // below top
+ m_y > viewport.m_y1) == 0) // above bottom
+ {
+ return false;
+ }
float height = float(viewport.m_y2 - viewport.m_y1 + 1);
float width = float(viewport.m_x2 - viewport.m_x1 + 1);
@@ -211,14 +214,13 @@ bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
float x_lb = float(viewport.m_x1);
float y_lb = float(viewport.m_y1);
+ MT_Vector4 frompoint;
+ MT_Vector4 topoint;
+
/* There's some strangeness I don't fully get here... These values
- * _should_ be wrong! */
+ * _should_ be wrong! - see from point Z values */
+
-
- /* old: */
- float nearclip = 0.0;
- float farclip = 1.0;
-
/* build the from and to point in normalized device coordinates
* Looks like normailized device coordinates are [-1,1] in x [-1,1] in y
* [0,-1] in z
@@ -226,18 +228,15 @@ bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
* The actual z coordinates used don't have to be exact just infront and
* behind of the near and far clip planes.
*/
- MT_Vector4 frompoint = MT_Vector4(
- (2 * (m_x-x_lb) / width) - 1.0,
- 1.0 - (2 * (m_y - y_lb) / height),
- nearclip,
- 1.0
- );
- MT_Vector4 topoint = MT_Vector4(
- (2 * (m_x-x_lb) / width) - 1.0,
- 1.0 - (2 * (m_y-y_lb) / height),
- farclip,
- 1.0
- );
+ frompoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
+ 1.0 - (2 * (m_y - y_lb) / height),
+ 0.0, /* nearclip, see above comments */
+ 1.0 );
+
+ topoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
+ 1.0 - (2 * (m_y-y_lb) / height),
+ 1.0, /* farclip, see above comments */
+ 1.0 );
/* camera to world */
MT_Transform wcs_camcs_tranform = cam->GetWorldToCamera();
@@ -260,31 +259,74 @@ bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
topoint = camcs_wcs_matrix * topoint;
/* from hom wcs to 3d wcs: */
- MT_Point3 frompoint3 = MT_Point3(frompoint[0]/frompoint[3],
- frompoint[1]/frompoint[3],
- frompoint[2]/frompoint[3]);
- MT_Point3 topoint3 = MT_Point3(topoint[0]/topoint[3],
- topoint[1]/topoint[3],
- topoint[2]/topoint[3]);
- m_prevTargetPoint = topoint3;
- m_prevSourcePoint = frompoint3;
+ m_prevSourcePoint.setValue( frompoint[0]/frompoint[3],
+ frompoint[1]/frompoint[3],
+ frompoint[2]/frompoint[3]);
+
+ m_prevTargetPoint.setValue( topoint[0]/topoint[3],
+ topoint[1]/topoint[3],
+ topoint[2]/topoint[3]);
/* 2. Get the object from PhysicsEnvironment */
/* Shoot! Beware that the first argument here is an
* ignore-object. We don't ignore anything... */
-
KX_IPhysicsController* physics_controller = cam->GetPhysicsController();
PHY_IPhysicsEnvironment* physics_environment = m_kxscene->GetPhysicsEnvironment();
- bool result = false;
-
KX_RayCast::Callback<KX_MouseFocusSensor> callback(this,physics_controller);
- KX_RayCast::RayTest(physics_environment, frompoint3, topoint3, callback);
+
+ KX_RayCast::RayTest(physics_environment, m_prevSourcePoint, m_prevTargetPoint, callback);
+
+ if (m_hitObject)
+ return true;
- result = (m_hitObject!=0);
+ return false;
+}
- return result;
+bool KX_MouseFocusSensor::ParentObjectHasFocus()
+{
+ m_hitObject = 0;
+ m_hitPosition.setValue(0,0,0);
+ m_hitNormal.setValue(1,0,0);
+
+ KX_Camera *cam= m_kxscene->GetActiveCamera();
+
+ if(ParentObjectHasFocusCamera(cam))
+ return true;
+
+ list<class KX_Camera*>* cameras = m_kxscene->GetCameras();
+ list<KX_Camera*>::iterator it = cameras->begin();
+
+ while(it != cameras->end())
+ {
+ if(((*it) != cam) && (*it)->GetViewport())
+ if (ParentObjectHasFocusCamera(*it))
+ return true;
+
+ it++;
+ }
+
+ return false;
+}
+
+const MT_Point3& KX_MouseFocusSensor::RaySource() const
+{
+ return m_prevSourcePoint;
+}
+
+const MT_Point3& KX_MouseFocusSensor::RayTarget() const
+{
+ return m_prevTargetPoint;
+}
+
+const MT_Point3& KX_MouseFocusSensor::HitPosition() const
+{
+ return m_hitPosition;
+}
+const MT_Vector3& KX_MouseFocusSensor::HitNormal() const
+{
+ return m_hitNormal;
}
/* ------------------------------------------------------------------------- */
@@ -293,22 +335,22 @@ bool KX_MouseFocusSensor::ParentObjectHasFocus(void)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_MouseFocusSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_MouseFocusSensor",
- sizeof(KX_MouseFocusSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_MouseFocusSensor::Parents[] = {
@@ -328,26 +370,33 @@ PyMethodDef KX_MouseFocusSensor::Methods[] = {
{"getHitNormal",(PyCFunction) KX_MouseFocusSensor::sPyGetHitNormal,METH_NOARGS, (PY_METHODCHAR)GetHitNormal_doc},
{"getRayDirection",(PyCFunction) KX_MouseFocusSensor::sPyGetRayDirection,METH_NOARGS, (PY_METHODCHAR)GetRayDirection_doc},
-
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_MouseFocusSensor::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("raySource", KX_MouseFocusSensor, pyattr_get_ray_source),
+ KX_PYATTRIBUTE_RO_FUNCTION("rayTarget", KX_MouseFocusSensor, pyattr_get_ray_target),
+ KX_PYATTRIBUTE_RO_FUNCTION("rayDirection", KX_MouseFocusSensor, pyattr_get_ray_direction),
+ KX_PYATTRIBUTE_RO_FUNCTION("hitObject", KX_MouseFocusSensor, pyattr_get_hit_object),
+ KX_PYATTRIBUTE_RO_FUNCTION("hitPosition", KX_MouseFocusSensor, pyattr_get_hit_position),
+ KX_PYATTRIBUTE_RO_FUNCTION("hitNormal", KX_MouseFocusSensor, pyattr_get_hit_normal),
{ NULL } //Sentinel
};
-PyObject* KX_MouseFocusSensor::_getattr(const char *attr) {
- _getattr_up(SCA_MouseSensor);
+PyObject* KX_MouseFocusSensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_MouseSensor);
}
const char KX_MouseFocusSensor::GetHitObject_doc[] =
"getHitObject()\n"
-"\tReturns the name of the object that was hit by this ray.\n";
-PyObject* KX_MouseFocusSensor::PyGetHitObject(PyObject* self)
+"\tReturns the object that was hit by this ray.\n";
+PyObject* KX_MouseFocusSensor::PyGetHitObject()
{
+ ShowDeprecationWarning("GetHitObject()", "the hitObject property");
+
if (m_hitObject)
- return m_hitObject->AddRef();
+ return m_hitObject->GetProxy();
Py_RETURN_NONE;
}
@@ -356,27 +405,33 @@ PyObject* KX_MouseFocusSensor::PyGetHitObject(PyObject* self)
const char KX_MouseFocusSensor::GetHitPosition_doc[] =
"getHitPosition()\n"
"\tReturns the position (in worldcoordinates) where the object was hit by this ray.\n";
-PyObject* KX_MouseFocusSensor::PyGetHitPosition(PyObject* self)
+PyObject* KX_MouseFocusSensor::PyGetHitPosition()
{
+ ShowDeprecationWarning("getHitPosition()", "the hitPosition property");
+
return PyObjectFrom(m_hitPosition);
}
const char KX_MouseFocusSensor::GetRayDirection_doc[] =
"getRayDirection()\n"
"\tReturns the direction from the ray (in worldcoordinates) .\n";
-PyObject* KX_MouseFocusSensor::PyGetRayDirection(PyObject* self)
+PyObject* KX_MouseFocusSensor::PyGetRayDirection()
{
-
+ ShowDeprecationWarning("getRayDirection()", "the rayDirection property");
+
MT_Vector3 dir = m_prevTargetPoint - m_prevSourcePoint;
- dir.normalize();
+ if(MT_fuzzyZero(dir)) dir.setValue(0,0,0);
+ else dir.normalize();
return PyObjectFrom(dir);
}
const char KX_MouseFocusSensor::GetHitNormal_doc[] =
"getHitNormal()\n"
-"\tReturns the normal (in worldcoordinates) of the object at the location where the object was hit by this ray.\n";
-PyObject* KX_MouseFocusSensor::PyGetHitNormal(PyObject* self)
+"\tReturns the normal (in worldcoordinates) at the point of collision where the object was hit by this ray.\n";
+PyObject* KX_MouseFocusSensor::PyGetHitNormal()
{
+ ShowDeprecationWarning("getHitNormal()", "the hitNormal property");
+
return PyObjectFrom(m_hitNormal);
}
@@ -386,7 +441,10 @@ const char KX_MouseFocusSensor::GetRayTarget_doc[] =
"getRayTarget()\n"
"\tReturns the target of the ray that seeks the focus object,\n"
"\tin worldcoordinates.";
-PyObject* KX_MouseFocusSensor::PyGetRayTarget(PyObject* self) {
+PyObject* KX_MouseFocusSensor::PyGetRayTarget()
+{
+ ShowDeprecationWarning("getRayTarget()", "the rayTarget property");
+
return PyObjectFrom(m_prevTargetPoint);
}
@@ -395,9 +453,58 @@ const char KX_MouseFocusSensor::GetRaySource_doc[] =
"getRaySource()\n"
"\tReturns the source of the ray that seeks the focus object,\n"
"\tin worldcoordinates.";
-PyObject* KX_MouseFocusSensor::PyGetRaySource(PyObject* self) {
+PyObject* KX_MouseFocusSensor::PyGetRaySource()
+{
+ ShowDeprecationWarning("getRaySource()", "the raySource property");
+
return PyObjectFrom(m_prevSourcePoint);
}
+/* Attributes */
+PyObject* KX_MouseFocusSensor::pyattr_get_ray_source(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_MouseFocusSensor* self= static_cast<KX_MouseFocusSensor*>(self_v);
+ return PyObjectFrom(self->RaySource());
+}
+
+PyObject* KX_MouseFocusSensor::pyattr_get_ray_target(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_MouseFocusSensor* self= static_cast<KX_MouseFocusSensor*>(self_v);
+ return PyObjectFrom(self->RayTarget());
+}
+
+PyObject* KX_MouseFocusSensor::pyattr_get_ray_direction(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_MouseFocusSensor* self= static_cast<KX_MouseFocusSensor*>(self_v);
+ MT_Vector3 dir = self->RayTarget() - self->RaySource();
+ if(MT_fuzzyZero(dir)) dir.setValue(0,0,0);
+ else dir.normalize();
+ return PyObjectFrom(dir);
+}
+
+PyObject* KX_MouseFocusSensor::pyattr_get_hit_object(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_MouseFocusSensor* self= static_cast<KX_MouseFocusSensor*>(self_v);
+
+ if(self->m_hitObject)
+ return self->m_hitObject->GetProxy();
+
+ Py_RETURN_NONE;
+}
+
+PyObject* KX_MouseFocusSensor::pyattr_get_hit_position(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_MouseFocusSensor* self= static_cast<KX_MouseFocusSensor*>(self_v);
+ return PyObjectFrom(self->HitPosition());
+}
+
+PyObject* KX_MouseFocusSensor::pyattr_get_hit_normal(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_MouseFocusSensor* self= static_cast<KX_MouseFocusSensor*>(self_v);
+ return PyObjectFrom(self->HitNormal());
+}
+
+
+
/* eof */
diff --git a/source/gameengine/Ketsji/KX_MouseFocusSensor.h b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
index 4979783032c..8de1f88c5c3 100644
--- a/source/gameengine/Ketsji/KX_MouseFocusSensor.h
+++ b/source/gameengine/Ketsji/KX_MouseFocusSensor.h
@@ -54,7 +54,6 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
int starty,
short int mousemode,
int focusmode,
- RAS_ICanvas* canvas,
KX_Scene* kxscene,
KX_KetsjiEngine* kxengine,
SCA_IObject* gameobj,
@@ -82,12 +81,15 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
bool RayHit(KX_ClientObjectInfo* client, KX_RayCast* result, void * const data);
bool NeedRayCast(KX_ClientObjectInfo* client) { return true; }
-
+ const MT_Point3& RaySource() const;
+ const MT_Point3& RayTarget() const;
+ const MT_Point3& HitPosition() const;
+ const MT_Vector3& HitNormal() const;
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetRayTarget);
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetRaySource);
@@ -97,6 +99,14 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetHitNormal);
KX_PYMETHOD_DOC_NOARGS(KX_MouseFocusSensor,GetRayDirection);
+ /* attributes */
+ static PyObject* pyattr_get_ray_source(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_ray_target(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_ray_direction(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_hit_object(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_hit_position(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_hit_normal(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
/* --------------------------------------------------------------------- */
SCA_IObject* m_hitObject;
@@ -116,9 +126,13 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
*/
bool m_positive_event;
+ /**
+ * Tests whether the object is in mouse focus for this camera
+ */
+ bool ParentObjectHasFocusCamera(KX_Camera *cam);
/**
- * Tests whether the object is in mouse focus in this frame.
+ * Tests whether the object is in mouse focus in this scene.
*/
bool ParentObjectHasFocus(void);
@@ -142,12 +156,6 @@ class KX_MouseFocusSensor : public SCA_MouseSensor
* the object was hit. */
MT_Vector3 m_hitNormal;
-
- /**
- * The active canvas. The size of this canvas determines a part of
- * the start position of the picking ray. */
- RAS_ICanvas* m_gp_canvas;
-
/**
* The KX scene that holds the camera. The camera position
* determines a part of the start location of the picking ray. */
diff --git a/source/gameengine/Ketsji/KX_NearSensor.cpp b/source/gameengine/Ketsji/KX_NearSensor.cpp
index 993a6b3d86c..0489b7090e9 100644
--- a/source/gameengine/Ketsji/KX_NearSensor.cpp
+++ b/source/gameengine/Ketsji/KX_NearSensor.cpp
@@ -127,13 +127,10 @@ CValue* KX_NearSensor::GetReplica()
}
}
- //static_cast<KX_TouchEventManager*>(m_eventmgr)->RegisterSensor(this);
- //todo: make sure replication works fine
- //>m_sumoObj = new SM_Object(DT_NewSphere(0.0),NULL,NULL,NULL);
- //replica->m_sumoObj->setMargin(m_Margin);
- //replica->m_sumoObj->setClientObject(replica->m_client_info);
-
- ((KX_GameObject*)replica->GetParent())->GetSGNode()->ComputeWorldTransforms(NULL);
+ //Wrong: the parent object could be a child, this code works only if it is a root parent.
+ //Anyway, at this stage, the parent object is already synchronized, nothing to do.
+ //bool parentUpdated = false;
+ //((KX_GameObject*)replica->GetParent())->GetSGNode()->ComputeWorldTransforms(NULL, parentUpdated);
replica->SynchronizeTransform();
return replica;
@@ -154,8 +151,10 @@ void KX_NearSensor::ReParent(SCA_IObject* parent)
client_info->m_sensors.push_back(this);
SCA_ISensor::ReParent(parent);
*/
- ((KX_GameObject*)GetParent())->GetSGNode()->ComputeWorldTransforms(NULL);
- SynchronizeTransform();
+ //Not needed, was done in GetReplica() already
+ //bool parentUpdated = false;
+ //((KX_GameObject*)GetParent())->GetSGNode()->ComputeWorldTransforms(NULL,parentUpdated);
+ //SynchronizeTransform();
SCA_ISensor::ReParent(parent);
}
@@ -287,22 +286,22 @@ bool KX_NearSensor::NewHandleCollision(void* obj1,void* obj2,const PHY_CollData
/* ------------------------------------------------------------------------- */
PyTypeObject KX_NearSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_NearSensor",
- sizeof(KX_NearSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -330,20 +329,12 @@ PyAttributeDef KX_NearSensor::Attributes[] = {
};
-PyObject* KX_NearSensor::_getattr(const char *attr)
+PyObject* KX_NearSensor::py_getattro(PyObject *attr)
{
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
-
- _getattr_up(KX_TouchSensor);
+ py_getattro_up(KX_TouchSensor);
}
-int KX_NearSensor::_setattr(const char *attr, PyObject* value)
+int KX_NearSensor::py_setattro(PyObject*attr, PyObject* value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
-
- return KX_TouchSensor::_setattr(attr, value);
+ py_setattro_up(KX_TouchSensor);
}
diff --git a/source/gameengine/Ketsji/KX_NearSensor.h b/source/gameengine/Ketsji/KX_NearSensor.h
index ee03992e734..26c5feb4e67 100644
--- a/source/gameengine/Ketsji/KX_NearSensor.h
+++ b/source/gameengine/Ketsji/KX_NearSensor.h
@@ -82,8 +82,8 @@ public:
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
//No methods
diff --git a/source/gameengine/Ketsji/KX_ObjectActuator.cpp b/source/gameengine/Ketsji/KX_ObjectActuator.cpp
index 0666261b470..861c5757971 100644
--- a/source/gameengine/Ketsji/KX_ObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ObjectActuator.cpp
@@ -277,22 +277,22 @@ bool KX_ObjectActuator::isValid(KX_ObjectActuator::KX_OBJECT_ACT_VEC_TYPE type)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_ObjectActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_ObjectActuator",
- sizeof(KX_ObjectActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_ObjectActuator::Parents[] = {
@@ -336,15 +336,15 @@ PyAttributeDef KX_ObjectActuator::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* KX_ObjectActuator::_getattr(const char *attr) {
- _getattr_up(SCA_IActuator);
+PyObject* KX_ObjectActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
};
/* 1. set ------------------------------------------------------------------ */
/* Removed! */
/* 2. getForce */
-PyObject* KX_ObjectActuator::PyGetForce(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetForce()
{
PyObject *retVal = PyList_New(4);
@@ -356,13 +356,11 @@ PyObject* KX_ObjectActuator::PyGetForce(PyObject* self)
return retVal;
}
/* 3. setForce */
-PyObject* KX_ObjectActuator::PySetForce(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetForce(PyObject* args)
{
float vecArg[3];
int bToggle = 0;
- if (!PyArg_ParseTuple(args, "fffi", &vecArg[0], &vecArg[1],
+ if (!PyArg_ParseTuple(args, "fffi:setForce", &vecArg[0], &vecArg[1],
&vecArg[2], &bToggle)) {
return NULL;
}
@@ -373,7 +371,7 @@ PyObject* KX_ObjectActuator::PySetForce(PyObject* self,
}
/* 4. getTorque */
-PyObject* KX_ObjectActuator::PyGetTorque(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetTorque()
{
PyObject *retVal = PyList_New(4);
@@ -385,13 +383,11 @@ PyObject* KX_ObjectActuator::PyGetTorque(PyObject* self)
return retVal;
}
/* 5. setTorque */
-PyObject* KX_ObjectActuator::PySetTorque(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetTorque(PyObject* args)
{
float vecArg[3];
int bToggle = 0;
- if (!PyArg_ParseTuple(args, "fffi", &vecArg[0], &vecArg[1],
+ if (!PyArg_ParseTuple(args, "fffi:setTorque", &vecArg[0], &vecArg[1],
&vecArg[2], &bToggle)) {
return NULL;
}
@@ -402,7 +398,7 @@ PyObject* KX_ObjectActuator::PySetTorque(PyObject* self,
}
/* 6. getDLoc */
-PyObject* KX_ObjectActuator::PyGetDLoc(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetDLoc()
{
PyObject *retVal = PyList_New(4);
@@ -414,13 +410,11 @@ PyObject* KX_ObjectActuator::PyGetDLoc(PyObject* self)
return retVal;
}
/* 7. setDLoc */
-PyObject* KX_ObjectActuator::PySetDLoc(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetDLoc(PyObject* args)
{
float vecArg[3];
int bToggle = 0;
- if(!PyArg_ParseTuple(args, "fffi", &vecArg[0], &vecArg[1],
+ if(!PyArg_ParseTuple(args, "fffi:setDLoc", &vecArg[0], &vecArg[1],
&vecArg[2], &bToggle)) {
return NULL;
}
@@ -431,7 +425,7 @@ PyObject* KX_ObjectActuator::PySetDLoc(PyObject* self,
}
/* 8. getDRot */
-PyObject* KX_ObjectActuator::PyGetDRot(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetDRot()
{
PyObject *retVal = PyList_New(4);
@@ -443,13 +437,11 @@ PyObject* KX_ObjectActuator::PyGetDRot(PyObject* self)
return retVal;
}
/* 9. setDRot */
-PyObject* KX_ObjectActuator::PySetDRot(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetDRot(PyObject* args)
{
float vecArg[3];
int bToggle = 0;
- if (!PyArg_ParseTuple(args, "fffi", &vecArg[0], &vecArg[1],
+ if (!PyArg_ParseTuple(args, "fffi:setDRot", &vecArg[0], &vecArg[1],
&vecArg[2], &bToggle)) {
return NULL;
}
@@ -460,7 +452,7 @@ PyObject* KX_ObjectActuator::PySetDRot(PyObject* self,
}
/* 10. getLinearVelocity */
-PyObject* KX_ObjectActuator::PyGetLinearVelocity(PyObject* self) {
+PyObject* KX_ObjectActuator::PyGetLinearVelocity() {
PyObject *retVal = PyList_New(4);
PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_linear_velocity[0]));
@@ -472,12 +464,10 @@ PyObject* KX_ObjectActuator::PyGetLinearVelocity(PyObject* self) {
}
/* 11. setLinearVelocity */
-PyObject* KX_ObjectActuator::PySetLinearVelocity(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ObjectActuator::PySetLinearVelocity(PyObject* args) {
float vecArg[3];
int bToggle = 0;
- if (!PyArg_ParseTuple(args, "fffi", &vecArg[0], &vecArg[1],
+ if (!PyArg_ParseTuple(args, "fffi:setLinearVelocity", &vecArg[0], &vecArg[1],
&vecArg[2], &bToggle)) {
return NULL;
}
@@ -489,7 +479,7 @@ PyObject* KX_ObjectActuator::PySetLinearVelocity(PyObject* self,
/* 12. getAngularVelocity */
-PyObject* KX_ObjectActuator::PyGetAngularVelocity(PyObject* self) {
+PyObject* KX_ObjectActuator::PyGetAngularVelocity() {
PyObject *retVal = PyList_New(4);
PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_angular_velocity[0]));
@@ -500,12 +490,10 @@ PyObject* KX_ObjectActuator::PyGetAngularVelocity(PyObject* self) {
return retVal;
}
/* 13. setAngularVelocity */
-PyObject* KX_ObjectActuator::PySetAngularVelocity(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ObjectActuator::PySetAngularVelocity(PyObject* args) {
float vecArg[3];
int bToggle = 0;
- if (!PyArg_ParseTuple(args, "fffi", &vecArg[0], &vecArg[1],
+ if (!PyArg_ParseTuple(args, "fffi:setAngularVelocity", &vecArg[0], &vecArg[1],
&vecArg[2], &bToggle)) {
return NULL;
}
@@ -516,11 +504,9 @@ PyObject* KX_ObjectActuator::PySetAngularVelocity(PyObject* self,
}
/* 13. setDamping */
-PyObject* KX_ObjectActuator::PySetDamping(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+PyObject* KX_ObjectActuator::PySetDamping(PyObject* args) {
int damping = 0;
- if (!PyArg_ParseTuple(args, "i", &damping) || damping < 0 || damping > 1000) {
+ if (!PyArg_ParseTuple(args, "i:setDamping", &damping) || damping < 0 || damping > 1000) {
return NULL;
}
m_damping = damping;
@@ -528,11 +514,11 @@ PyObject* KX_ObjectActuator::PySetDamping(PyObject* self,
}
/* 13. getVelocityDamping */
-PyObject* KX_ObjectActuator::PyGetDamping(PyObject* self) {
+PyObject* KX_ObjectActuator::PyGetDamping() {
return Py_BuildValue("i",m_damping);
}
/* 6. getForceLimitX */
-PyObject* KX_ObjectActuator::PyGetForceLimitX(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetForceLimitX()
{
PyObject *retVal = PyList_New(3);
@@ -543,13 +529,11 @@ PyObject* KX_ObjectActuator::PyGetForceLimitX(PyObject* self)
return retVal;
}
/* 7. setForceLimitX */
-PyObject* KX_ObjectActuator::PySetForceLimitX(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetForceLimitX(PyObject* args)
{
float vecArg[2];
int bToggle = 0;
- if(!PyArg_ParseTuple(args, "ffi", &vecArg[0], &vecArg[1], &bToggle)) {
+ if(!PyArg_ParseTuple(args, "ffi:setForceLimitX", &vecArg[0], &vecArg[1], &bToggle)) {
return NULL;
}
m_drot[0] = vecArg[0];
@@ -559,7 +543,7 @@ PyObject* KX_ObjectActuator::PySetForceLimitX(PyObject* self,
}
/* 6. getForceLimitY */
-PyObject* KX_ObjectActuator::PyGetForceLimitY(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetForceLimitY()
{
PyObject *retVal = PyList_New(3);
@@ -570,13 +554,11 @@ PyObject* KX_ObjectActuator::PyGetForceLimitY(PyObject* self)
return retVal;
}
/* 7. setForceLimitY */
-PyObject* KX_ObjectActuator::PySetForceLimitY(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetForceLimitY(PyObject* args)
{
float vecArg[2];
int bToggle = 0;
- if(!PyArg_ParseTuple(args, "ffi", &vecArg[0], &vecArg[1], &bToggle)) {
+ if(!PyArg_ParseTuple(args, "ffi:setForceLimitY", &vecArg[0], &vecArg[1], &bToggle)) {
return NULL;
}
m_drot[1] = vecArg[0];
@@ -586,7 +568,7 @@ PyObject* KX_ObjectActuator::PySetForceLimitY(PyObject* self,
}
/* 6. getForceLimitZ */
-PyObject* KX_ObjectActuator::PyGetForceLimitZ(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetForceLimitZ()
{
PyObject *retVal = PyList_New(3);
@@ -597,13 +579,11 @@ PyObject* KX_ObjectActuator::PyGetForceLimitZ(PyObject* self)
return retVal;
}
/* 7. setForceLimitZ */
-PyObject* KX_ObjectActuator::PySetForceLimitZ(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetForceLimitZ(PyObject* args)
{
float vecArg[2];
int bToggle = 0;
- if(!PyArg_ParseTuple(args, "ffi", &vecArg[0], &vecArg[1], &bToggle)) {
+ if(!PyArg_ParseTuple(args, "ffi:setForceLimitZ", &vecArg[0], &vecArg[1], &bToggle)) {
return NULL;
}
m_drot[2] = vecArg[0];
@@ -613,7 +593,7 @@ PyObject* KX_ObjectActuator::PySetForceLimitZ(PyObject* self,
}
/* 4. getPID */
-PyObject* KX_ObjectActuator::PyGetPID(PyObject* self)
+PyObject* KX_ObjectActuator::PyGetPID()
{
PyObject *retVal = PyList_New(3);
@@ -624,12 +604,10 @@ PyObject* KX_ObjectActuator::PyGetPID(PyObject* self)
return retVal;
}
/* 5. setPID */
-PyObject* KX_ObjectActuator::PySetPID(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_ObjectActuator::PySetPID(PyObject* args)
{
float vecArg[3];
- if (!PyArg_ParseTuple(args, "fff", &vecArg[0], &vecArg[1], &vecArg[2])) {
+ if (!PyArg_ParseTuple(args, "fff:setPID", &vecArg[0], &vecArg[1], &vecArg[2])) {
return NULL;
}
m_torque.setValue(vecArg);
diff --git a/source/gameengine/Ketsji/KX_ObjectActuator.h b/source/gameengine/Ketsji/KX_ObjectActuator.h
index 0331c67617c..a812942a0ae 100644
--- a/source/gameengine/Ketsji/KX_ObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_ObjectActuator.h
@@ -153,30 +153,30 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetForce);
- KX_PYMETHOD(KX_ObjectActuator,SetForce);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetForce);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetTorque);
- KX_PYMETHOD(KX_ObjectActuator,SetTorque);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetTorque);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetDLoc);
- KX_PYMETHOD(KX_ObjectActuator,SetDLoc);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetDLoc);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetDRot);
- KX_PYMETHOD(KX_ObjectActuator,SetDRot);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetDRot);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetLinearVelocity);
- KX_PYMETHOD(KX_ObjectActuator,SetLinearVelocity);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetLinearVelocity);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetAngularVelocity);
- KX_PYMETHOD(KX_ObjectActuator,SetAngularVelocity);
- KX_PYMETHOD(KX_ObjectActuator,SetDamping);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetAngularVelocity);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetDamping);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetDamping);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetForceLimitX);
- KX_PYMETHOD(KX_ObjectActuator,SetForceLimitX);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetForceLimitX);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetForceLimitY);
- KX_PYMETHOD(KX_ObjectActuator,SetForceLimitY);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetForceLimitY);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetForceLimitZ);
- KX_PYMETHOD(KX_ObjectActuator,SetForceLimitZ);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetForceLimitZ);
KX_PYMETHOD_NOARGS(KX_ObjectActuator,GetPID);
- KX_PYMETHOD(KX_ObjectActuator,SetPID);
+ KX_PYMETHOD_VARARGS(KX_ObjectActuator,SetPID);
};
#endif //__KX_OBJECTACTUATOR
diff --git a/source/gameengine/Ketsji/KX_OdePhysicsController.h b/source/gameengine/Ketsji/KX_OdePhysicsController.h
index e3b5336c0b5..21b7e632d83 100644
--- a/source/gameengine/Ketsji/KX_OdePhysicsController.h
+++ b/source/gameengine/Ketsji/KX_OdePhysicsController.h
@@ -82,6 +82,10 @@ public:
virtual SG_Controller* GetReplica(class SG_Node* destnode);
+ virtual float GetLinVelocityMin() { return ODEPhysicsController::GetLinVelocityMin(); }
+ virtual void SetLinVelocityMin(float val) { ODEPhysicsController::SetLinVelocityMin(val); }
+ virtual float GetLinVelocityMax() { return ODEPhysicsController::GetLinVelocityMax(); }
+ virtual void SetLinVelocityMax(float val) { ODEPhysicsController::SetLinVelocityMax(val); }
virtual void SetSumoTransform(bool nondynaonly);
// todo: remove next line !
diff --git a/source/gameengine/Ketsji/KX_ParentActuator.cpp b/source/gameengine/Ketsji/KX_ParentActuator.cpp
index 84d7ccb9c05..0093cf5f313 100644
--- a/source/gameengine/Ketsji/KX_ParentActuator.cpp
+++ b/source/gameengine/Ketsji/KX_ParentActuator.cpp
@@ -1,7 +1,7 @@
/**
* Set or remove an objects parent
*
- * $Id: SCA_ParentActuator.cpp 13932 2008-03-01 19:05:41Z ben2610 $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -139,22 +139,22 @@ bool KX_ParentActuator::Update()
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_ParentActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_ParentActuator",
- sizeof(KX_ParentActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_ParentActuator::Parents[] = {
@@ -166,59 +166,67 @@ PyParentObject KX_ParentActuator::Parents[] = {
};
PyMethodDef KX_ParentActuator::Methods[] = {
- // ---> deprecated (all)
- {"setObject", (PyCFunction) KX_ParentActuator::sPySetObject, METH_O, (PY_METHODCHAR)SetObject_doc},
- {"getObject", (PyCFunction) KX_ParentActuator::sPyGetObject, METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
+ // Deprecated ----->
+ {"setObject", (PyCFunction) KX_ParentActuator::sPySetObject, METH_O, (PY_METHODCHAR)SetObject_doc},
+ {"getObject", (PyCFunction) KX_ParentActuator::sPyGetObject, METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
+ // <-----
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_ParentActuator::Attributes[] = {
+ KX_PYATTRIBUTE_RW_FUNCTION("object", KX_ParentActuator, pyattr_get_object, pyattr_set_object),
{ NULL } //Sentinel
};
-PyObject* KX_ParentActuator::_getattr(const char *attr) {
-
- if (!strcmp(attr, "object")) {
- if (!m_ob) Py_RETURN_NONE;
- else return m_ob->AddRef();
- }
-
- _getattr_up(SCA_IActuator);
+PyObject* KX_ParentActuator::pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_ParentActuator* actuator = static_cast<KX_ParentActuator*>(self);
+ if (!actuator->m_ob)
+ Py_RETURN_NONE;
+ else
+ return actuator->m_ob->GetProxy();
}
-int KX_ParentActuator::_setattr(const char *attr, PyObject* value) {
-
- if (!strcmp(attr, "object")) {
- KX_GameObject *gameobj;
+int KX_ParentActuator::pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_ParentActuator* actuator = static_cast<KX_ParentActuator*>(self);
+ KX_GameObject *gameobj;
- if (!ConvertPythonToGameObject(value, &gameobj, true))
- return 1; // ConvertPythonToGameObject sets the error
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_ParentActuator"))
+ return 1; // ConvertPythonToGameObject sets the error
- if (m_ob != NULL)
- m_ob->UnregisterActuator(this);
+ if (actuator->m_ob != NULL)
+ actuator->m_ob->UnregisterActuator(actuator);
- m_ob = (SCA_IObject*)gameobj;
+ actuator->m_ob = (SCA_IObject*) gameobj;
- if (m_ob)
- m_ob->RegisterActuator(this);
+ if (actuator->m_ob)
+ actuator->m_ob->RegisterActuator(actuator);
- return 0;
- }
-
- return SCA_IActuator::_setattr(attr, value);
+ return 0;
+}
+
+
+PyObject* KX_ParentActuator::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_IActuator);
+}
+
+int KX_ParentActuator::py_setattro(PyObject *attr, PyObject* value) {
+ py_setattro_up(SCA_IActuator);
}
+/* Deprecated -----> */
/* 1. setObject */
const char KX_ParentActuator::SetObject_doc[] =
"setObject(object)\n"
"\t- object: KX_GameObject, string or None\n"
"\tSet the object to set as parent.\n";
-PyObject* KX_ParentActuator::PySetObject(PyObject* self, PyObject* value) {
+PyObject* KX_ParentActuator::PySetObject(PyObject* value) {
KX_GameObject *gameobj;
ShowDeprecationWarning("setObject()", "the object property");
- if (!ConvertPythonToGameObject(value, &gameobj, true))
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.setObject(value): KX_ParentActuator"))
return NULL; // ConvertPythonToGameObject sets the error
if (m_ob != NULL)
@@ -238,13 +246,13 @@ const char KX_ParentActuator::GetObject_doc[] =
"getObject(name_only = 1)\n"
"name_only - optional arg, when true will return the KX_GameObject rather then its name\n"
"\tReturns the object that is set to.\n";
-PyObject* KX_ParentActuator::PyGetObject(PyObject* self, PyObject* args)
+PyObject* KX_ParentActuator::PyGetObject(PyObject* args)
{
int ret_name_only = 1;
ShowDeprecationWarning("getObject()", "the object property");
- if (!PyArg_ParseTuple(args, "|i", &ret_name_only))
+ if (!PyArg_ParseTuple(args, "|i:getObject", &ret_name_only))
return NULL;
if (!m_ob)
@@ -253,7 +261,8 @@ PyObject* KX_ParentActuator::PyGetObject(PyObject* self, PyObject* args)
if (ret_name_only)
return PyString_FromString(m_ob->GetName());
else
- return m_ob->AddRef();
+ return m_ob->GetProxy();
}
+/* <----- */
/* eof */
diff --git a/source/gameengine/Ketsji/KX_ParentActuator.h b/source/gameengine/Ketsji/KX_ParentActuator.h
index c974001c0d0..f9f0b73b876 100644
--- a/source/gameengine/Ketsji/KX_ParentActuator.h
+++ b/source/gameengine/Ketsji/KX_ParentActuator.h
@@ -2,7 +2,7 @@
* Set or remove an objects parent
*
*
- * $Id: KX_ParentActuator.h 3271 2004-10-16 11:41:50Z kester $
+ * $Id$
*
* ***** BEGIN GPL LICENSE BLOCK *****
*
@@ -76,13 +76,17 @@ class KX_ParentActuator : public SCA_IActuator
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
- /* 1. setObject */
+ /* These are used to get and set m_ob */
+ static PyObject* pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
+ // Deprecated ----->
KX_PYMETHOD_DOC_O(KX_ParentActuator,SetObject);
- /* 2. getObject */
KX_PYMETHOD_DOC_VARARGS(KX_ParentActuator,GetObject);
+ // <-----
}; /* end of class KX_ParentActuator : public SCA_PropertyActuator */
diff --git a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
index 246c63feb21..fda639c09e0 100644
--- a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.cpp
@@ -51,12 +51,10 @@ KX_PhysicsObjectWrapper::~KX_PhysicsObjectWrapper()
}
-PyObject* KX_PhysicsObjectWrapper::PySetPosition(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_PhysicsObjectWrapper::PySetPosition(PyObject* args)
{
float x,y,z;
- if (PyArg_ParseTuple(args,"fff",&x,&y,&z))
+ if (PyArg_ParseTuple(args,"fff:setPosition",&x,&y,&z))
{
m_ctrl->setPosition(x,y,z);
}
@@ -67,13 +65,11 @@ PyObject* KX_PhysicsObjectWrapper::PySetPosition(PyObject* self,
}
-PyObject* KX_PhysicsObjectWrapper::PySetLinearVelocity(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_PhysicsObjectWrapper::PySetLinearVelocity(PyObject* args)
{
float x,y,z;
int local;
- if (PyArg_ParseTuple(args,"fffi",&x,&y,&z,&local))
+ if (PyArg_ParseTuple(args,"fffi:setLinearVelocity",&x,&y,&z,&local))
{
m_ctrl->SetLinearVelocity(x,y,z,local != 0);
}
@@ -83,13 +79,11 @@ PyObject* KX_PhysicsObjectWrapper::PySetLinearVelocity(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* KX_PhysicsObjectWrapper::PySetAngularVelocity(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_PhysicsObjectWrapper::PySetAngularVelocity(PyObject* args)
{
float x,y,z;
int local;
- if (PyArg_ParseTuple(args,"fffi",&x,&y,&z,&local))
+ if (PyArg_ParseTuple(args,"fffi:setAngularVelocity",&x,&y,&z,&local))
{
m_ctrl->SetAngularVelocity(x,y,z,local != 0);
}
@@ -99,12 +93,10 @@ PyObject* KX_PhysicsObjectWrapper::PySetAngularVelocity(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* KX_PhysicsObjectWrapper::PySetActive(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_PhysicsObjectWrapper::PySetActive(PyObject* args)
{
int active;
- if (PyArg_ParseTuple(args,"i",&active))
+ if (PyArg_ParseTuple(args,"i:setActive",&active))
{
m_ctrl->SetActive(active!=0);
}
@@ -115,26 +107,28 @@ PyObject* KX_PhysicsObjectWrapper::PySetActive(PyObject* self,
}
-
+PyAttributeDef KX_PhysicsObjectWrapper::Attributes[] = {
+ { NULL } //Sentinel
+};
//python specific stuff
PyTypeObject KX_PhysicsObjectWrapper::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_PhysicsObjectWrapper",
- sizeof(KX_PhysicsObjectWrapper),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_PhysicsObjectWrapper::Parents[] = {
@@ -142,13 +136,13 @@ PyParentObject KX_PhysicsObjectWrapper::Parents[] = {
NULL
};
-PyObject* KX_PhysicsObjectWrapper::_getattr(const char *attr)
+PyObject* KX_PhysicsObjectWrapper::py_getattro(PyObject *attr)
{
- _getattr_up(PyObjectPlus);
+ py_getattro_up(PyObjectPlus);
}
-int KX_PhysicsObjectWrapper::_setattr(const char *attr,PyObject *pyobj)
+int KX_PhysicsObjectWrapper::py_setattro(PyObject *attr,PyObject *pyobj)
{
int result = 1;
@@ -161,7 +155,7 @@ int KX_PhysicsObjectWrapper::_setattr(const char *attr,PyObject *pyobj)
result = 0;
}
if (result)
- result = PyObjectPlus::_setattr(attr,pyobj);
+ result = PyObjectPlus::py_setattro(attr,pyobj);
return result;
};
diff --git a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h
index 95560698896..7e10dc3ccf4 100644
--- a/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h
+++ b/source/gameengine/Ketsji/KX_PhysicsObjectWrapper.h
@@ -36,16 +36,16 @@ class KX_PhysicsObjectWrapper : public PyObjectPlus
{
Py_Header;
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
public:
KX_PhysicsObjectWrapper(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsEnvironment* physenv,PyTypeObject *T = &Type);
virtual ~KX_PhysicsObjectWrapper();
- KX_PYMETHOD(KX_PhysicsObjectWrapper , SetPosition);
- KX_PYMETHOD(KX_PhysicsObjectWrapper,SetLinearVelocity);
- KX_PYMETHOD(KX_PhysicsObjectWrapper,SetAngularVelocity);
- KX_PYMETHOD(KX_PhysicsObjectWrapper,SetActive);
+ KX_PYMETHOD_VARARGS(KX_PhysicsObjectWrapper,SetPosition);
+ KX_PYMETHOD_VARARGS(KX_PhysicsObjectWrapper,SetLinearVelocity);
+ KX_PYMETHOD_VARARGS(KX_PhysicsObjectWrapper,SetAngularVelocity);
+ KX_PYMETHOD_VARARGS(KX_PhysicsObjectWrapper,SetActive);
private:
class PHY_IPhysicsController* m_ctrl;
diff --git a/source/gameengine/Ketsji/KX_PolyProxy.cpp b/source/gameengine/Ketsji/KX_PolyProxy.cpp
index b4bdd77fb66..2e5dd72db0e 100644
--- a/source/gameengine/Ketsji/KX_PolyProxy.cpp
+++ b/source/gameengine/Ketsji/KX_PolyProxy.cpp
@@ -39,22 +39,22 @@
#include "KX_PyMath.h"
PyTypeObject KX_PolyProxy::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_PolyProxy",
- sizeof(KX_PolyProxy),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_PolyProxy::Parents[] = {
@@ -78,42 +78,52 @@ PyMethodDef KX_PolyProxy::Methods[] = {
};
PyAttributeDef KX_PolyProxy::Attributes[] = {
+ /* All dummy's so they come up in a dir() */
+ KX_PYATTRIBUTE_DUMMY("matname"),
+ KX_PYATTRIBUTE_DUMMY("texture"),
+ KX_PYATTRIBUTE_DUMMY("material"),
+ KX_PYATTRIBUTE_DUMMY("matid"),
+ KX_PYATTRIBUTE_DUMMY("v1"),
+ KX_PYATTRIBUTE_DUMMY("v2"),
+ KX_PYATTRIBUTE_DUMMY("v3"),
+ KX_PYATTRIBUTE_DUMMY("v4"),
+ KX_PYATTRIBUTE_DUMMY("visible"),
+ KX_PYATTRIBUTE_DUMMY("collide"),
{ NULL } //Sentinel
};
-PyObject* KX_PolyProxy::_getattr(const char *attr)
+PyObject* KX_PolyProxy::py_getattro(PyObject *attr)
{
- if (!strcmp(attr, "matname"))
+ char *attr_str= PyString_AsString(attr);
+ if (!strcmp(attr_str, "matname"))
{
return PyString_FromString(m_polygon->GetMaterial()->GetPolyMaterial()->GetMaterialName());
}
- if (!strcmp(attr, "texture"))
+ if (!strcmp(attr_str, "texture"))
{
return PyString_FromString(m_polygon->GetMaterial()->GetPolyMaterial()->GetTextureName());
}
- if (!strcmp(attr, "material"))
+ if (!strcmp(attr_str, "material"))
{
RAS_IPolyMaterial *polymat = m_polygon->GetMaterial()->GetPolyMaterial();
if(polymat->GetFlag() & RAS_BLENDERMAT)
{
KX_BlenderMaterial* mat = static_cast<KX_BlenderMaterial*>(polymat);
- Py_INCREF(mat);
- return mat;
+ return mat->GetProxy();
}
else
{
KX_PolygonMaterial* mat = static_cast<KX_PolygonMaterial*>(polymat);
- Py_INCREF(mat);
- return mat;
+ return mat->GetProxy();
}
}
- if (!strcmp(attr, "matid"))
+ if (!strcmp(attr_str, "matid"))
{
// we'll have to scan through the material bucket of the mes and compare with
// the one of the polygon
RAS_MaterialBucket* polyBucket = m_polygon->GetMaterial();
unsigned int matid;
- for (matid=0; matid<m_mesh->NumMaterials(); matid++)
+ for (matid=0; matid<(unsigned int)m_mesh->NumMaterials(); matid++)
{
RAS_MeshMaterial* meshMat = m_mesh->GetMeshMaterial(matid);
if (meshMat->m_bucket == polyBucket)
@@ -122,31 +132,31 @@ PyObject* KX_PolyProxy::_getattr(const char *attr)
}
return PyInt_FromLong(matid);
}
- if (!strcmp(attr, "v1"))
+ if (!strcmp(attr_str, "v1"))
{
return PyInt_FromLong(m_polygon->GetVertexOffset(0));
}
- if (!strcmp(attr, "v2"))
+ if (!strcmp(attr_str, "v2"))
{
return PyInt_FromLong(m_polygon->GetVertexOffset(1));
}
- if (!strcmp(attr, "v3"))
+ if (!strcmp(attr_str, "v3"))
{
return PyInt_FromLong(m_polygon->GetVertexOffset(2));
}
- if (!strcmp(attr, "v4"))
+ if (!strcmp(attr_str, "v4"))
{
return PyInt_FromLong(((m_polygon->VertexCount()>3)?m_polygon->GetVertexOffset(3):0));
}
- if (!strcmp(attr, "visible"))
+ if (!strcmp(attr_str, "visible"))
{
return PyInt_FromLong(m_polygon->IsVisible());
}
- if (!strcmp(attr, "collide"))
+ if (!strcmp(attr_str, "collide"))
{
return PyInt_FromLong(m_polygon->IsCollider());
}
- _getattr_up(SCA_IObject);
+ py_getattro_up(SCA_IObject);
}
KX_PolyProxy::KX_PolyProxy(const RAS_MeshObject*mesh, RAS_Polygon* polygon)
@@ -165,7 +175,7 @@ CValue* KX_PolyProxy::Calc(VALUE_OPERATOR, CValue *) { return NULL;}
CValue* KX_PolyProxy::CalcFinal(VALUE_DATA_TYPE, VALUE_OPERATOR, CValue *) { return NULL;}
STR_String sPolyName="polygone";
const STR_String & KX_PolyProxy::GetText() {return sPolyName;};
-float KX_PolyProxy::GetNumber() { return -1;}
+double KX_PolyProxy::GetNumber() { return -1;}
STR_String KX_PolyProxy::GetName() { return sPolyName;}
void KX_PolyProxy::SetName(STR_String) { };
CValue* KX_PolyProxy::GetReplica() { return NULL;}
@@ -179,7 +189,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getMaterialIndex,
{
RAS_MaterialBucket* polyBucket = m_polygon->GetMaterial();
unsigned int matid;
- for (matid=0; matid<m_mesh->NumMaterials(); matid++)
+ for (matid=0; matid<(unsigned int)m_mesh->NumMaterials(); matid++)
{
RAS_MeshMaterial* meshMat = m_mesh->GetMeshMaterial(matid);
if (meshMat->m_bucket == polyBucket)
@@ -226,13 +236,13 @@ KX_PYMETHODDEF_DOC(KX_PolyProxy, getVertexIndex,
"Note: getVertexIndex(3) on a triangle polygon returns 0\n")
{
int index;
- if (!PyArg_ParseTuple(args,"i",&index))
+ if (!PyArg_ParseTuple(args,"i:getVertexIndex",&index))
{
return NULL;
}
if (index < 0 || index > 3)
{
- PyErr_SetString(PyExc_AttributeError, "Valid range for index is 0-3");
+ PyErr_SetString(PyExc_AttributeError, "poly.getVertexIndex(int): KX_PolyProxy, expected an index between 0-3");
return NULL;
}
if (index < m_polygon->VertexCount())
@@ -246,7 +256,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getMesh,
"getMesh() : returns a mesh proxy\n")
{
KX_MeshProxy* meshproxy = new KX_MeshProxy((RAS_MeshObject*)m_mesh);
- return meshproxy;
+ return meshproxy->NewProxy(true);
}
KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getMaterial,
@@ -256,13 +266,11 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getMaterial,
if(polymat->GetFlag() & RAS_BLENDERMAT)
{
KX_BlenderMaterial* mat = static_cast<KX_BlenderMaterial*>(polymat);
- Py_INCREF(mat);
- return mat;
+ return mat->GetProxy();
}
else
{
KX_PolygonMaterial* mat = static_cast<KX_PolygonMaterial*>(polymat);
- Py_INCREF(mat);
- return mat;
+ return mat->GetProxy();
}
}
diff --git a/source/gameengine/Ketsji/KX_PolyProxy.h b/source/gameengine/Ketsji/KX_PolyProxy.h
index 9b548f9490d..275e65da810 100644
--- a/source/gameengine/Ketsji/KX_PolyProxy.h
+++ b/source/gameengine/Ketsji/KX_PolyProxy.h
@@ -45,7 +45,7 @@ public:
CValue* Calc(VALUE_OPERATOR op, CValue *val) ;
CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
const STR_String & GetText();
- float GetNumber();
+ double GetNumber();
STR_String GetName();
void SetName(STR_String name); // Set the name of the value
void ReplicaSetName(STR_String name);
@@ -53,7 +53,7 @@ public:
// stuff for python integration
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getMaterialIndex)
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getNumVertex)
diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
index bbaf697b168..46d04486cc6 100644
--- a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
@@ -98,8 +98,7 @@ bool KX_PolygonMaterial::Activate(RAS_IRasterizer* rasty, TCachingInfo& cachingI
{
PyObject *pyRasty = PyCObject_FromVoidPtr((void*)rasty, NULL); /* new reference */
PyObject *pyCachingInfo = PyCObject_FromVoidPtr((void*) &cachingInfo, NULL); /* new reference */
-
- PyObject *ret = PyObject_CallMethod(m_pymaterial, "activate", "(NNO)", pyRasty, pyCachingInfo, (PyObject*) this);
+ PyObject *ret = PyObject_CallMethod(m_pymaterial, "activate", "(NNO)", pyRasty, pyCachingInfo, (PyObject*) this->m_proxy);
if (ret)
{
bool value = PyInt_AsLong(ret);
@@ -109,6 +108,8 @@ bool KX_PolygonMaterial::Activate(RAS_IRasterizer* rasty, TCachingInfo& cachingI
else
{
PyErr_Print();
+ PyErr_Clear();
+ PySys_SetObject( (char *)"last_traceback", NULL);
}
}
else
@@ -181,181 +182,70 @@ PyMethodDef KX_PolygonMaterial::Methods[] = {
};
PyAttributeDef KX_PolygonMaterial::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("texture", KX_PolygonMaterial, pyattr_get_texture),
+ KX_PYATTRIBUTE_RO_FUNCTION("material", KX_PolygonMaterial, pyattr_get_material), /* should probably be .name ? */
+
+ KX_PYATTRIBUTE_INT_RW("tile", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_tile),
+ KX_PYATTRIBUTE_INT_RW("tilexrep", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_tilexrep),
+ KX_PYATTRIBUTE_INT_RW("tileyrep", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_tileyrep),
+ KX_PYATTRIBUTE_INT_RW("drawingmode", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_drawingmode),
+ KX_PYATTRIBUTE_INT_RW("lightlayer", INT_MIN, INT_MAX, true, KX_PolygonMaterial, m_lightlayer),
+
+ KX_PYATTRIBUTE_BOOL_RW("transparent", KX_PolygonMaterial, m_alpha),
+ KX_PYATTRIBUTE_BOOL_RW("zsort", KX_PolygonMaterial, m_zsort),
+
+ KX_PYATTRIBUTE_FLOAT_RW("shininess", 0.0f, 1000.0f, KX_PolygonMaterial, m_shininess),
+ KX_PYATTRIBUTE_FLOAT_RW("specularity", 0.0f, 1000.0f, KX_PolygonMaterial, m_specularity),
+
+ KX_PYATTRIBUTE_RW_FUNCTION("diffuse", KX_PolygonMaterial, pyattr_get_texture, pyattr_set_diffuse),
+ KX_PYATTRIBUTE_RW_FUNCTION("specular",KX_PolygonMaterial, pyattr_get_specular, pyattr_set_specular),
+
+ KX_PYATTRIBUTE_RO_FUNCTION("tface", KX_PolygonMaterial, pyattr_get_tface), /* How the heck is this even useful??? - Campbell */
+ KX_PYATTRIBUTE_RO_FUNCTION("gl_texture", KX_PolygonMaterial, pyattr_get_gl_texture), /* could be called 'bindcode' */
+
+ /* triangle used to be an attribute, removed for 2.49, nobody should be using it */
{ NULL } //Sentinel
};
PyTypeObject KX_PolygonMaterial::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_PolygonMaterial",
- sizeof(KX_PolygonMaterial),
+ sizeof(PyObjectPlus_Proxy),
+ 0,
+ py_base_dealloc,
+ 0,
0,
- PyDestructor,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0 //&cvalue_as_number,
+ 0,
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_PolygonMaterial::Parents[] = {
- &PyObjectPlus::Type,
&KX_PolygonMaterial::Type,
+ &PyObjectPlus::Type,
NULL
};
-PyObject* KX_PolygonMaterial::_getattr(const char *attr)
-{
- if (!strcmp(attr, "texture"))
- return PyString_FromString(m_texturename.ReadPtr());
- if (!strcmp(attr, "material"))
- return PyString_FromString(m_materialname.ReadPtr());
-
- if (!strcmp(attr, "tface"))
- return PyCObject_FromVoidPtr(m_tface, NULL);
-
- if (!strcmp(attr, "gl_texture"))
- {
- Image *ima = m_tface->tpage;
- int bind = 0;
- if (ima)
- bind = ima->bindcode;
-
- return PyInt_FromLong(bind);
- }
-
- if (!strcmp(attr, "tile"))
- return PyInt_FromLong(m_tile);
- if (!strcmp(attr, "tilexrep"))
- return PyInt_FromLong(m_tilexrep);
- if (!strcmp(attr, "tileyrep"))
- return PyInt_FromLong(m_tileyrep);
-
- if (!strcmp(attr, "drawingmode"))
- return PyInt_FromLong(m_drawingmode);
- if (!strcmp(attr, "transparent"))
- return PyInt_FromLong(m_alpha);
- if (!strcmp(attr, "zsort"))
- return PyInt_FromLong(m_zsort);
- if (!strcmp(attr, "lightlayer"))
- return PyInt_FromLong(m_lightlayer);
- if (!strcmp(attr, "triangle"))
- // deprecated, triangle/quads shouldn't have been a material property
- return 0;
-
- if (!strcmp(attr, "diffuse"))
- return PyObjectFrom(m_diffuse);
- if (!strcmp(attr, "shininess"))
- return PyFloat_FromDouble(m_shininess);
- if (!strcmp(attr, "specular"))
- return PyObjectFrom(m_specular);
- if (!strcmp(attr, "specularity"))
- return PyFloat_FromDouble(m_specularity);
-
- _getattr_up(PyObjectPlus);
+PyObject* KX_PolygonMaterial::py_getattro(PyObject *attr)
+{
+ py_getattro_up(PyObjectPlus);
}
-int KX_PolygonMaterial::_setattr(const char *attr, PyObject *pyvalue)
+int KX_PolygonMaterial::py_setattro(PyObject *attr, PyObject *value)
{
- if (PyFloat_Check(pyvalue))
- {
- float value = PyFloat_AsDouble(pyvalue);
- if (!strcmp(attr, "shininess"))
- {
- m_shininess = value;
- return 0;
- }
-
- if (!strcmp(attr, "specularity"))
- {
- m_specularity = value;
- return 0;
- }
- }
-
- if (PyInt_Check(pyvalue))
- {
- int value = PyInt_AsLong(pyvalue);
- if (!strcmp(attr, "tile"))
- {
- m_tile = value;
- return 0;
- }
-
- if (!strcmp(attr, "tilexrep"))
- {
- m_tilexrep = value;
- return 0;
- }
-
- if (!strcmp(attr, "tileyrep"))
- {
- m_tileyrep = value;
- return 0;
- }
-
- if (!strcmp(attr, "drawingmode"))
- {
- m_drawingmode = value;
- return 0;
- }
-
- if (!strcmp(attr, "transparent"))
- {
- m_alpha = value;
- return 0;
- }
-
- if (!strcmp(attr, "zsort"))
- {
- m_zsort = value;
- return 0;
- }
-
- if (!strcmp(attr, "lightlayer"))
- {
- m_lightlayer = value;
- return 0;
- }
-
- // This probably won't work...
- if (!strcmp(attr, "triangle"))
- {
- // deprecated, triangle/quads shouldn't have been a material property
- return 0;
- }
- }
-
- if (PySequence_Check(pyvalue))
- {
- if (PySequence_Size(pyvalue) == 3)
- {
- MT_Vector3 value;
- if (PyVecTo(pyvalue, value))
- {
- if (!strcmp(attr, "diffuse"))
- {
- m_diffuse = value;
- return 0;
- }
-
- if (!strcmp(attr, "specular"))
- {
- m_specular = value;
- return 0;
- }
- }
- }
- }
-
- return PyObjectPlus::_setattr(attr, pyvalue);
+ py_setattro_up(PyObjectPlus);
}
KX_PYMETHODDEF_DOC(KX_PolygonMaterial, setCustomMaterial, "setCustomMaterial(material)")
{
PyObject *material;
- if (PyArg_ParseTuple(args, "O", &material))
+ if (PyArg_ParseTuple(args, "O:setCustomMaterial", &material))
{
if (m_pymaterial) {
Py_DECREF(m_pymaterial);
@@ -371,7 +261,7 @@ KX_PYMETHODDEF_DOC(KX_PolygonMaterial, setCustomMaterial, "setCustomMaterial(mat
KX_PYMETHODDEF_DOC(KX_PolygonMaterial, updateTexture, "updateTexture(tface, rasty)")
{
PyObject *pyrasty, *pytface;
- if (PyArg_ParseTuple(args, "O!O!", &PyCObject_Type, &pytface, &PyCObject_Type, &pyrasty))
+ if (PyArg_ParseTuple(args, "O!O!:updateTexture", &PyCObject_Type, &pytface, &PyCObject_Type, &pyrasty))
{
MTFace *tface = (MTFace*) PyCObject_AsVoidPtr(pytface);
RAS_IRasterizer *rasty = (RAS_IRasterizer*) PyCObject_AsVoidPtr(pyrasty);
@@ -387,7 +277,7 @@ KX_PYMETHODDEF_DOC(KX_PolygonMaterial, updateTexture, "updateTexture(tface, rast
KX_PYMETHODDEF_DOC(KX_PolygonMaterial, setTexture, "setTexture(tface)")
{
PyObject *pytface;
- if (PyArg_ParseTuple(args, "O!", &PyCObject_Type, &pytface))
+ if (PyArg_ParseTuple(args, "O!:setTexture", &PyCObject_Type, &pytface))
{
MTFace *tface = (MTFace*) PyCObject_AsVoidPtr(pytface);
GPU_set_tpage(tface);
@@ -400,7 +290,7 @@ KX_PYMETHODDEF_DOC(KX_PolygonMaterial, setTexture, "setTexture(tface)")
KX_PYMETHODDEF_DOC(KX_PolygonMaterial, activate, "activate(rasty, cachingInfo)")
{
PyObject *pyrasty, *pyCachingInfo;
- if (PyArg_ParseTuple(args, "O!O!", &PyCObject_Type, &pyrasty, &PyCObject_Type, &pyCachingInfo))
+ if (PyArg_ParseTuple(args, "O!O!:activate", &PyCObject_Type, &pyrasty, &PyCObject_Type, &pyCachingInfo))
{
RAS_IRasterizer *rasty = static_cast<RAS_IRasterizer*>(PyCObject_AsVoidPtr(pyrasty));
TCachingInfo *cachingInfo = static_cast<TCachingInfo*>(PyCObject_AsVoidPtr(pyCachingInfo));
@@ -413,3 +303,69 @@ KX_PYMETHODDEF_DOC(KX_PolygonMaterial, activate, "activate(rasty, cachingInfo)")
return NULL;
}
+
+PyObject* KX_PolygonMaterial::pyattr_get_texture(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ return PyString_FromString(self->m_texturename.ReadPtr());
+}
+
+PyObject* KX_PolygonMaterial::pyattr_get_material(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ return PyString_FromString(self->m_materialname.ReadPtr());
+}
+
+/* this does not seem useful */
+PyObject* KX_PolygonMaterial::pyattr_get_tface(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ return PyCObject_FromVoidPtr(self->m_tface, NULL);
+}
+
+PyObject* KX_PolygonMaterial::pyattr_get_gl_texture(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ int bindcode= 0;
+ if (self->m_tface && self->m_tface->tpage)
+ bindcode= self->m_tface->tpage->bindcode;
+
+ return PyInt_FromLong(bindcode);
+}
+
+
+PyObject* KX_PolygonMaterial::pyattr_get_diffuse(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ return PyObjectFrom(self->m_diffuse);
+}
+
+int KX_PolygonMaterial::pyattr_set_diffuse(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ MT_Vector3 vec;
+
+ if (!PyVecTo(value, vec))
+ return -1;
+
+ self->m_diffuse= vec;
+ return 0;
+}
+
+PyObject* KX_PolygonMaterial::pyattr_get_specular(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ return PyObjectFrom(self->m_specular);
+}
+
+int KX_PolygonMaterial::pyattr_set_specular(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_PolygonMaterial* self= static_cast<KX_PolygonMaterial*>(self_v);
+ MT_Vector3 vec;
+
+ if (!PyVecTo(value, vec))
+ return -1;
+
+ self->m_specular= vec;
+ return 0;
+}
diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.h b/source/gameengine/Ketsji/KX_PolygonMaterial.h
index a3ef4ca51ef..9865a66e836 100644
--- a/source/gameengine/Ketsji/KX_PolygonMaterial.h
+++ b/source/gameengine/Ketsji/KX_PolygonMaterial.h
@@ -33,6 +33,7 @@
#include "RAS_MaterialBucket.h"
#include "RAS_IRasterizer.h"
+#include "DNA_ID.h"
struct MTFace;
struct Material;
@@ -115,8 +116,20 @@ public:
KX_PYMETHOD_DOC(KX_PolygonMaterial, setCustomMaterial);
KX_PYMETHOD_DOC(KX_PolygonMaterial, loadProgram);
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *pyvalue);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
+ virtual PyObject* py_repr(void) { return PyString_FromString(m_material ? ((ID *)m_material)->name+2 : ""); }
+
+ static PyObject* pyattr_get_texture(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_material(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ static PyObject* pyattr_get_tface(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_gl_texture(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ static PyObject* pyattr_get_diffuse(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_diffuse(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_specular(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_specular(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
};
#endif // __KX_POLYGONMATERIAL_H__
diff --git a/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp b/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
index fb37eded450..2c65c184a9c 100644
--- a/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
+++ b/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
@@ -381,7 +381,7 @@ static PyObject* gPyGetVehicleConstraint(PyObject* self,
if (vehicle)
{
KX_VehicleWrapper* pyWrapper = new KX_VehicleWrapper(vehicle,PHY_GetActiveEnvironment());
- return pyWrapper;
+ return pyWrapper->NewProxy(true);
}
}
@@ -440,7 +440,7 @@ static PyObject* gPyCreateConstraint(PyObject* self,
KX_ConstraintWrapper* wrap = new KX_ConstraintWrapper((enum PHY_ConstraintType)constrainttype,constraintid,PHY_GetActiveEnvironment());
- return wrap;
+ return wrap->NewProxy(true);
}
@@ -582,6 +582,7 @@ PyObject* initPythonConstraintBinding()
d = PyModule_GetDict(m);
ErrorObject = PyString_FromString("PhysicsConstraints.error");
PyDict_SetItemString(d, "error", ErrorObject);
+ Py_DECREF(ErrorObject);
// XXXX Add constants here
diff --git a/source/gameengine/Ketsji/KX_PyMath.cpp b/source/gameengine/Ketsji/KX_PyMath.cpp
index 92f18590a7e..0093a72808e 100644
--- a/source/gameengine/Ketsji/KX_PyMath.cpp
+++ b/source/gameengine/Ketsji/KX_PyMath.cpp
@@ -44,6 +44,7 @@
#include "ListValue.h"
#include "KX_Python.h"
+#include "KX_PyMath.h"
bool PyObject_IsMT_Matrix(PyObject *pymat, unsigned int rank)
{
@@ -74,6 +75,39 @@ bool PyObject_IsMT_Matrix(PyObject *pymat, unsigned int rank)
return false;
}
+bool PyOrientationTo(PyObject* pyval, MT_Matrix3x3 &mat, const char *error_prefix)
+{
+ MT_Matrix3x3 rot;
+ int size= PySequence_Size(pyval);
+
+ if (size == 4)
+ {
+ MT_Quaternion qrot;
+ if (PyVecTo(pyval, qrot))
+ {
+ rot.setRotation(qrot);
+ return true;
+ }
+ }
+ else if (size == 3) {
+ /* 3x3 matrix or euler */
+ MT_Vector3 erot;
+ if (PyVecTo(pyval, erot))
+ {
+ rot.setEuler(erot);
+ return true;
+ }
+ PyErr_Clear();
+
+ if (PyMatTo(pyval, rot))
+ {
+ return true;
+ }
+ }
+
+ PyErr_Format(PyExc_TypeError, "%s, could not set the orientation from a 3x3 matrix, quaternion or euler sequence", error_prefix);
+ return false;
+}
PyObject* PyObjectFrom(const MT_Matrix4x4 &mat)
{
@@ -93,7 +127,7 @@ PyObject* PyObjectFrom(const MT_Matrix4x4 &mat)
PyList_SET_ITEM(sublist, 0, PyFloat_FromDouble(mat[i][0]));
PyList_SET_ITEM(sublist, 1, PyFloat_FromDouble(mat[i][1]));
PyList_SET_ITEM(sublist, 2, PyFloat_FromDouble(mat[i][2]));
- PyList_SET_ITEM(sublist, 2, PyFloat_FromDouble(mat[i][3]));
+ PyList_SET_ITEM(sublist, 3, PyFloat_FromDouble(mat[i][3]));
PyList_SET_ITEM(list, i, sublist);
}
diff --git a/source/gameengine/Ketsji/KX_PyMath.h b/source/gameengine/Ketsji/KX_PyMath.h
index 39c9c358792..00f7c5cad93 100644
--- a/source/gameengine/Ketsji/KX_PyMath.h
+++ b/source/gameengine/Ketsji/KX_PyMath.h
@@ -92,18 +92,35 @@ bool PyMatTo(PyObject* pymat, T& mat)
}
/**
- * Converts a python list to a MT class.
+ * Converts a python sequence to a MT class.
*/
template<class T>
bool PyVecTo(PyObject* pyval, T& vec)
{
- if (PySequence_Check(pyval))
+
+ if(PyTuple_Check(pyval))
+ {
+ unsigned int numitems = PyTuple_GET_SIZE(pyval);
+ if (numitems != Size(vec)) {
+ PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", numitems, Size(vec));
+ return false;
+ }
+
+ for (unsigned int x = 0; x < numitems; x++)
+ vec[x] = PyFloat_AsDouble(PyTuple_GET_ITEM(pyval, x)); /* borrow ref */
+
+ if (PyErr_Occurred()) {
+ PyErr_SetString(PyExc_AttributeError, "one or more of the items in the sequence was not a float");
+ return false;
+ }
+
+ return true;
+ }
+ else if (PySequence_Check(pyval))
{
unsigned int numitems = PySequence_Size(pyval);
if (numitems != Size(vec)) {
- char err[128];
- sprintf(err, "error setting vector, %d args, should be %d", numitems, Size(vec));
- PyErr_SetString(PyExc_AttributeError, err);
+ PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", numitems, Size(vec));
return false;
}
@@ -122,14 +139,14 @@ bool PyVecTo(PyObject* pyval, T& vec)
return true;
} else
{
- char err[128];
- sprintf(err, "not a sequence type, expected a sequence of numbers size %d", Size(vec));
- PyErr_SetString(PyExc_AttributeError, err);
+ PyErr_Format(PyExc_AttributeError, "not a sequence type, expected a sequence of numbers size %d", Size(vec));
}
return false;
}
+bool PyOrientationTo(PyObject* pyval, MT_Matrix3x3 &mat, const char *error_prefix);
+
/**
* Converts an MT_Matrix4x4 to a python object.
*/
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index 965c4ed2ba3..ffcf7d7162e 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -48,33 +48,45 @@
#include "KX_KetsjiEngine.h"
#include "KX_RadarSensor.h"
+#include "KX_RaySensor.h"
+#include "KX_SCA_DynamicActuator.h"
#include "SCA_IInputDevice.h"
#include "SCA_PropertySensor.h"
#include "SCA_RandomActuator.h"
+#include "SCA_KeyboardSensor.h" /* IsPrintable, ToCharacter */
#include "KX_ConstraintActuator.h"
#include "KX_IpoActuator.h"
#include "KX_SoundActuator.h"
+#include "KX_StateActuator.h"
#include "BL_ActionActuator.h"
#include "RAS_IRasterizer.h"
#include "RAS_ICanvas.h"
#include "RAS_BucketManager.h"
+#include "RAS_2DFilterManager.h"
#include "MT_Vector3.h"
#include "MT_Point3.h"
#include "ListValue.h"
#include "KX_Scene.h"
#include "SND_DeviceManager.h"
+#include "NG_NetworkScene.h" //Needed for sendMessage()
+
#include "BL_Shader.h"
#include "KX_PyMath.h"
-#include "PyObjectPlus.h"
+#include "PyObjectPlus.h"
//XXX
#if 0
+
+#include "KX_PythonInitTypes.h"
+
extern "C" {
#include "Mathutils.h" // Blender.Mathutils module copied here so the blenderlayer can use.
+ #include "bpy_internal_import.h" /* from the blender python api, but we want to import text too! */
+ #include "BGL.h"
}
#endif
@@ -94,7 +106,7 @@ extern "C" {
#include "GPU_material.h"
static void setSandbox(TPythonSecurityLevel level);
-
+static void clearGameModules();
// 'local' copy of canvas ptr, for window height/width python scripts
static RAS_ICanvas* gp_Canvas = NULL;
@@ -111,9 +123,9 @@ void KX_RasterizerDrawDebugLine(const MT_Vector3& from,const MT_Vector3& to,cons
/* Macro for building the keyboard translation */
//#define KX_MACRO_addToDict(dict, name) PyDict_SetItemString(dict, #name, PyInt_FromLong(SCA_IInputDevice::KX_##name))
-#define KX_MACRO_addToDict(dict, name) PyDict_SetItemString(dict, #name, PyInt_FromLong(name))
+#define KX_MACRO_addToDict(dict, name) PyDict_SetItemString(dict, #name, item=PyInt_FromLong(name)); Py_DECREF(item)
/* For the defines for types from logic bricks, we do stuff explicitly... */
-#define KX_MACRO_addTypesToDict(dict, name, name2) PyDict_SetItemString(dict, #name, PyInt_FromLong(name2))
+#define KX_MACRO_addTypesToDict(dict, name, name2) PyDict_SetItemString(dict, #name, item=PyInt_FromLong(name2)); Py_DECREF(item)
// temporarily python stuff, will be put in another place later !
@@ -156,7 +168,7 @@ static PyObject* gPyExpandPath(PyObject*, PyObject* args)
char expanded[FILE_MAXDIR + FILE_MAXFILE];
char* filename;
- if (!PyArg_ParseTuple(args,"s",&filename))
+ if (!PyArg_ParseTuple(args,"s:ExpandPath",&filename))
return NULL;
BLI_strncpy(expanded, filename, FILE_MAXDIR + FILE_MAXFILE);
@@ -164,6 +176,28 @@ static PyObject* gPyExpandPath(PyObject*, PyObject* args)
return PyString_FromString(expanded);
}
+static char gPySendMessage_doc[] =
+"sendMessage(subject, [body, to, from])\n\
+sends a message in same manner as a message actuator\
+subject = Subject of the message\
+body = Message body\
+to = Name of object to send the message to\
+from = Name of object to sned the string from";
+
+static PyObject* gPySendMessage(PyObject*, PyObject* args)
+{
+ char* subject;
+ char* body = (char *)"";
+ char* to = (char *)"";
+ char* from = (char *)"";
+
+ if (!PyArg_ParseTuple(args, "s|sss:sendMessage", &subject, &body, &to, &from))
+ return NULL;
+
+ gp_KetsjiScene->GetNetworkScene()->SendMessage(to, from, subject, body);
+
+ Py_RETURN_NONE;
+}
static bool usedsp = false;
@@ -240,7 +274,7 @@ static PyObject* gPyStopDSP(PyObject*, PyObject* args)
static PyObject* gPySetLogicTicRate(PyObject*, PyObject* args)
{
float ticrate;
- if (!PyArg_ParseTuple(args, "f", &ticrate))
+ if (!PyArg_ParseTuple(args, "f:setLogicTicRate", &ticrate))
return NULL;
KX_KetsjiEngine::SetTicRate(ticrate);
@@ -255,7 +289,7 @@ static PyObject* gPyGetLogicTicRate(PyObject*)
static PyObject* gPySetPhysicsTicRate(PyObject*, PyObject* args)
{
float ticrate;
- if (!PyArg_ParseTuple(args, "f", &ticrate))
+ if (!PyArg_ParseTuple(args, "f:setPhysicsTicRate", &ticrate))
return NULL;
PHY_GetActiveEnvironment()->setFixedTimeStep(true,ticrate);
@@ -265,7 +299,7 @@ static PyObject* gPySetPhysicsTicRate(PyObject*, PyObject* args)
static PyObject* gPySetPhysicsDebug(PyObject*, PyObject* args)
{
int debugMode;
- if (!PyArg_ParseTuple(args, "i", &debugMode))
+ if (!PyArg_ParseTuple(args, "i:setPhysicsDebug", &debugMode))
return NULL;
PHY_GetActiveEnvironment()->setDebugMode(debugMode);
@@ -293,7 +327,7 @@ static PyObject* gPyGetBlendFileList(PyObject*, PyObject* args)
DIR *dp;
struct dirent *dirp;
- if (!PyArg_ParseTuple(args, "|s", &searchpath))
+ if (!PyArg_ParseTuple(args, "|s:getBlendFileList", &searchpath))
return NULL;
list = PyList_New(0);
@@ -329,8 +363,7 @@ static STR_String gPyGetCurrentScene_doc =
"Gets a reference to the current scene.\n";
static PyObject* gPyGetCurrentScene(PyObject* self)
{
- Py_INCREF(gp_KetsjiScene);
- return (PyObject*) gp_KetsjiScene;
+ return gp_KetsjiScene->GetProxy();
}
static STR_String gPyGetSceneList_doc =
@@ -339,7 +372,6 @@ static STR_String gPyGetSceneList_doc =
static PyObject* gPyGetSceneList(PyObject* self)
{
KX_KetsjiEngine* m_engine = KX_GetActiveEngine();
- //CListValue* list = new CListValue();
PyObject* list;
KX_SceneList* scenes = m_engine->CurrentScenes();
int numScenes = scenes->size();
@@ -350,13 +382,10 @@ static PyObject* gPyGetSceneList(PyObject* self)
for (i=0;i<numScenes;i++)
{
KX_Scene* scene = scenes->at(i);
- //list->Add(scene);
- PyList_SET_ITEM(list, i, scene);
- Py_INCREF(scene);
-
+ PyList_SET_ITEM(list, i, scene->GetProxy());
}
- return (PyObject*)list;
+ return list;
}
static PyObject *pyPrintExt(PyObject *,PyObject *,PyObject *)
@@ -433,6 +462,7 @@ static PyObject *pyPrintExt(PyObject *,PyObject *,PyObject *)
static struct PyMethodDef game_methods[] = {
{"expandPath", (PyCFunction)gPyExpandPath, METH_VARARGS, (PY_METHODCHAR)gPyExpandPath_doc},
+ {"sendMessage", (PyCFunction)gPySendMessage, METH_VARARGS, (PY_METHODCHAR)gPySendMessage_doc},
{"getCurrentController",
(PyCFunction) SCA_PythonController::sPyGetCurrentController,
METH_NOARGS, (PY_METHODCHAR)SCA_PythonController::sPyGetCurrentController__doc__},
@@ -478,7 +508,7 @@ bool gUseVisibilityTemp = false;
static PyObject* gPyEnableVisibility(PyObject*, PyObject* args)
{
int visible;
- if (!PyArg_ParseTuple(args,"i",&visible))
+ if (!PyArg_ParseTuple(args,"i:enableVisibility",&visible))
return NULL;
gUseVisibilityTemp = (visible != 0);
@@ -490,7 +520,7 @@ static PyObject* gPyEnableVisibility(PyObject*, PyObject* args)
static PyObject* gPyShowMouse(PyObject*, PyObject* args)
{
int visible;
- if (!PyArg_ParseTuple(args,"i",&visible))
+ if (!PyArg_ParseTuple(args,"i:showMouse",&visible))
return NULL;
if (visible)
@@ -511,7 +541,7 @@ static PyObject* gPyShowMouse(PyObject*, PyObject* args)
static PyObject* gPySetMousePosition(PyObject*, PyObject* args)
{
int x,y;
- if (!PyArg_ParseTuple(args,"ii",&x,&y))
+ if (!PyArg_ParseTuple(args,"ii:setMousePosition",&x,&y))
return NULL;
if (gp_Canvas)
@@ -523,11 +553,11 @@ static PyObject* gPySetMousePosition(PyObject*, PyObject* args)
static PyObject* gPySetEyeSeparation(PyObject*, PyObject* args)
{
float sep;
- if (!PyArg_ParseTuple(args, "f", &sep))
+ if (!PyArg_ParseTuple(args, "f:setEyeSeparation", &sep))
return NULL;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.setEyeSeparation(float), Rasterizer not available");
return NULL;
}
@@ -536,10 +566,10 @@ static PyObject* gPySetEyeSeparation(PyObject*, PyObject* args)
Py_RETURN_NONE;
}
-static PyObject* gPyGetEyeSeparation(PyObject*, PyObject*, PyObject*)
+static PyObject* gPyGetEyeSeparation(PyObject*)
{
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.getEyeSeparation(), Rasterizer not available");
return NULL;
}
@@ -549,11 +579,11 @@ static PyObject* gPyGetEyeSeparation(PyObject*, PyObject*, PyObject*)
static PyObject* gPySetFocalLength(PyObject*, PyObject* args)
{
float focus;
- if (!PyArg_ParseTuple(args, "f", &focus))
+ if (!PyArg_ParseTuple(args, "f:setFocalLength", &focus))
return NULL;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.setFocalLength(float), Rasterizer not available");
return NULL;
}
@@ -565,7 +595,7 @@ static PyObject* gPySetFocalLength(PyObject*, PyObject* args)
static PyObject* gPyGetFocalLength(PyObject*, PyObject*, PyObject*)
{
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.getFocalLength(), Rasterizer not available");
return NULL;
}
@@ -598,7 +628,7 @@ static PyObject* gPySetMistColor(PyObject*, PyObject* value)
return NULL;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.setMistColor(color), Rasterizer not available");
return NULL;
}
gp_Rasterizer->SetFogColor(vec[0], vec[1], vec[2]);
@@ -612,11 +642,11 @@ static PyObject* gPySetMistStart(PyObject*, PyObject* args)
{
float miststart;
- if (!PyArg_ParseTuple(args,"f",&miststart))
+ if (!PyArg_ParseTuple(args,"f:setMistStart",&miststart))
return NULL;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.setMistStart(float), Rasterizer not available");
return NULL;
}
@@ -631,11 +661,11 @@ static PyObject* gPySetMistEnd(PyObject*, PyObject* args)
{
float mistend;
- if (!PyArg_ParseTuple(args,"f",&mistend))
+ if (!PyArg_ParseTuple(args,"f:setMistEnd",&mistend))
return NULL;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.setMistEnd(float), Rasterizer not available");
return NULL;
}
@@ -653,7 +683,7 @@ static PyObject* gPySetAmbientColor(PyObject*, PyObject* value)
return NULL;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.setAmbientColor(color), Rasterizer not available");
return NULL;
}
gp_Rasterizer->SetAmbientColor(vec[0], vec[1], vec[2]);
@@ -667,7 +697,7 @@ static PyObject* gPySetAmbientColor(PyObject*, PyObject* value)
static PyObject* gPyMakeScreenshot(PyObject*, PyObject* args)
{
char* filename;
- if (!PyArg_ParseTuple(args,"s",&filename))
+ if (!PyArg_ParseTuple(args,"s:makeScreenshot",&filename))
return NULL;
if (gp_Canvas)
@@ -681,11 +711,11 @@ static PyObject* gPyMakeScreenshot(PyObject*, PyObject* args)
static PyObject* gPyEnableMotionBlur(PyObject*, PyObject* args)
{
float motionblurvalue;
- if (!PyArg_ParseTuple(args,"f",&motionblurvalue))
+ if (!PyArg_ParseTuple(args,"f:enableMotionBlur",&motionblurvalue))
return NULL;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.enableMotionBlur(float), Rasterizer not available");
return NULL;
}
@@ -697,7 +727,7 @@ static PyObject* gPyEnableMotionBlur(PyObject*, PyObject* args)
static PyObject* gPyDisableMotionBlur(PyObject*, PyObject* args)
{
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.disableMotionBlur(), Rasterizer not available");
return NULL;
}
@@ -731,13 +761,13 @@ static PyObject* gPySetGLSLMaterialSetting(PyObject*,
char *setting;
int enable, flag, fileflags;
- if (!PyArg_ParseTuple(args,"si",&setting,&enable))
+ if (!PyArg_ParseTuple(args,"si:setGLSLMaterialSetting",&setting,&enable))
return NULL;
flag = getGLSLSettingFlag(setting);
if (flag==-1) {
- PyErr_SetString(PyExc_ValueError, "glsl setting is not known");
+ PyErr_SetString(PyExc_ValueError, "Rasterizer.setGLSLMaterialSetting(string): glsl setting is not known");
return NULL;
}
@@ -772,13 +802,13 @@ static PyObject* gPyGetGLSLMaterialSetting(PyObject*,
char *setting;
int enabled = 0, flag;
- if (!PyArg_ParseTuple(args,"s",&setting))
+ if (!PyArg_ParseTuple(args,"s:getGLSLMaterialSetting",&setting))
return NULL;
flag = getGLSLSettingFlag(setting);
if (flag==-1) {
- PyErr_SetString(PyExc_ValueError, "glsl setting is not known");
+ PyErr_SetString(PyExc_ValueError, "Rasterizer.getGLSLMaterialSetting(string): glsl setting is not known");
return NULL;
}
@@ -796,7 +826,7 @@ static PyObject* gPySetMaterialType(PyObject*,
{
int flag, type;
- if (!PyArg_ParseTuple(args,"i",&type))
+ if (!PyArg_ParseTuple(args,"i:setMaterialType",&type))
return NULL;
if(type == KX_BLENDER_GLSL_MATERIAL)
@@ -806,7 +836,7 @@ static PyObject* gPySetMaterialType(PyObject*,
else if(type == KX_TEXFACE_MATERIAL)
flag = 0;
else {
- PyErr_SetString(PyExc_ValueError, "material type is not known");
+ PyErr_SetString(PyExc_ValueError, "Rasterizer.setMaterialType(int): material type is not known");
return NULL;
}
@@ -837,11 +867,11 @@ static PyObject* gPyDrawLine(PyObject*, PyObject* args)
PyObject* ob_color;
if (!gp_Rasterizer) {
- PyErr_SetString(PyExc_RuntimeError, "Rasterizer not available");
+ PyErr_SetString(PyExc_RuntimeError, "Rasterizer.drawLine(obFrom, obTo, color): Rasterizer not available");
return NULL;
}
- if (!PyArg_ParseTuple(args,"OOO",&ob_from,&ob_to,&ob_color))
+ if (!PyArg_ParseTuple(args,"OOO:drawLine",&ob_from,&ob_to,&ob_color))
return NULL;
MT_Vector3 from;
@@ -882,7 +912,7 @@ static struct PyMethodDef rasterizer_methods[] = {
{"setEyeSeparation", (PyCFunction) gPySetEyeSeparation, METH_VARARGS, "set the eye separation for stereo mode"},
- {"getEyeSeparation", (PyCFunction) gPyGetEyeSeparation, METH_VARARGS, "get the eye separation for stereo mode"},
+ {"getEyeSeparation", (PyCFunction) gPyGetEyeSeparation, METH_NOARGS, "get the eye separation for stereo mode"},
{"setFocalLength", (PyCFunction) gPySetFocalLength, METH_VARARGS, "set the focal length for stereo mode"},
{"getFocalLength", (PyCFunction) gPyGetFocalLength, METH_VARARGS, "get the focal length for stereo mode"},
{"setMaterialMode",(PyCFunction) gPySetMaterialType,
@@ -914,7 +944,8 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
{
PyObject* m;
PyObject* d;
-
+ PyObject* item; /* temp PyObject* storage */
+
gp_KetsjiEngine = engine;
gp_KetsjiScene = scene;
@@ -930,10 +961,12 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
// can be overwritten later for gameEngine instances that can load new blend files and re-initialize this module
// for now its safe to make sure it exists for other areas such as the web plugin
- PyDict_SetItemString(d, "globalDict", PyDict_New());
+
+ PyDict_SetItemString(d, "globalDict", item=PyDict_New()); Py_DECREF(item);
ErrorObject = PyString_FromString("GameLogic.error");
PyDict_SetItemString(d, "error", ErrorObject);
+ Py_DECREF(ErrorObject);
// XXXX Add constants here
/* To use logic bricks, we need some sort of constants. Here, we associate */
@@ -966,6 +999,12 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_ORIX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_ORIX);
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_ORIY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_ORIY);
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_ORIZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_ORIZ);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHPX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPX);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHPY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPY);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHPZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPZ);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHNX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNX);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHNY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNY);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHNZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNZ);
/* 4. Ipo actuator, simple part */
KX_MACRO_addTypesToDict(d, KX_IPOACT_PLAY, KX_IpoActuator::KX_ACT_IPO_PLAY);
@@ -973,6 +1012,7 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
KX_MACRO_addTypesToDict(d, KX_IPOACT_FLIPPER, KX_IpoActuator::KX_ACT_IPO_FLIPPER);
KX_MACRO_addTypesToDict(d, KX_IPOACT_LOOPSTOP, KX_IpoActuator::KX_ACT_IPO_LOOPSTOP);
KX_MACRO_addTypesToDict(d, KX_IPOACT_LOOPEND, KX_IpoActuator::KX_ACT_IPO_LOOPEND);
+ KX_MACRO_addTypesToDict(d, KX_IPOACT_FROM_PROP,KX_IpoActuator::KX_ACT_IPO_FROM_PROP);
/* 5. Random distribution types */
KX_MACRO_addTypesToDict(d, KX_RANDOMACT_BOOL_CONST, SCA_RandomActuator::KX_RANDOMACT_BOOL_CONST);
@@ -1072,6 +1112,66 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
KX_MACRO_addTypesToDict(d, KX_RADAR_AXIS_NEG_Y, KX_RadarSensor::KX_RADAR_AXIS_NEG_X);
KX_MACRO_addTypesToDict(d, KX_RADAR_AXIS_NEG_Z, KX_RadarSensor::KX_RADAR_AXIS_NEG_Z);
+ /* Ray Sensor */
+ KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_POS_X, KX_RaySensor::KX_RAY_AXIS_POS_X);
+ KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_POS_Y, KX_RaySensor::KX_RAY_AXIS_POS_Y);
+ KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_POS_Z, KX_RaySensor::KX_RAY_AXIS_POS_Z);
+ KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_NEG_X, KX_RaySensor::KX_RAY_AXIS_NEG_Y);
+ KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_NEG_Y, KX_RaySensor::KX_RAY_AXIS_NEG_X);
+ KX_MACRO_addTypesToDict(d, KX_RAY_AXIS_NEG_Z, KX_RaySensor::KX_RAY_AXIS_NEG_Z);
+
+ /* Dynamic actuator */
+ KX_MACRO_addTypesToDict(d, KX_DYN_RESTORE_DYNAMICS, KX_SCA_DynamicActuator::KX_DYN_RESTORE_DYNAMICS);
+ KX_MACRO_addTypesToDict(d, KX_DYN_DISABLE_DYNAMICS, KX_SCA_DynamicActuator::KX_DYN_DISABLE_DYNAMICS);
+ KX_MACRO_addTypesToDict(d, KX_DYN_ENABLE_RIGID_BODY, KX_SCA_DynamicActuator::KX_DYN_ENABLE_RIGID_BODY);
+ KX_MACRO_addTypesToDict(d, KX_DYN_DISABLE_RIGID_BODY, KX_SCA_DynamicActuator::KX_DYN_DISABLE_RIGID_BODY);
+ KX_MACRO_addTypesToDict(d, KX_DYN_SET_MASS, KX_SCA_DynamicActuator::KX_DYN_SET_MASS);
+
+ /* Input & Mouse Sensor */
+ KX_MACRO_addTypesToDict(d, KX_INPUT_NONE, SCA_InputEvent::KX_NO_INPUTSTATUS);
+ KX_MACRO_addTypesToDict(d, KX_INPUT_JUST_ACTIVATED, SCA_InputEvent::KX_JUSTACTIVATED);
+ KX_MACRO_addTypesToDict(d, KX_INPUT_ACTIVE, SCA_InputEvent::KX_ACTIVE);
+ KX_MACRO_addTypesToDict(d, KX_INPUT_JUST_RELEASED, SCA_InputEvent::KX_JUSTRELEASED);
+
+ KX_MACRO_addTypesToDict(d, KX_MOUSE_BUT_LEFT, SCA_IInputDevice::KX_LEFTMOUSE);
+ KX_MACRO_addTypesToDict(d, KX_MOUSE_BUT_MIDDLE, SCA_IInputDevice::KX_MIDDLEMOUSE);
+ KX_MACRO_addTypesToDict(d, KX_MOUSE_BUT_RIGHT, SCA_IInputDevice::KX_RIGHTMOUSE);
+
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_ENABLED, RAS_2DFilterManager::RAS_2DFILTER_ENABLED);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_DISABLED, RAS_2DFilterManager::RAS_2DFILTER_DISABLED);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_NOFILTER, RAS_2DFilterManager::RAS_2DFILTER_NOFILTER);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_MOTIONBLUR, RAS_2DFilterManager::RAS_2DFILTER_MOTIONBLUR);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_BLUR, RAS_2DFilterManager::RAS_2DFILTER_BLUR);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_SHARPEN, RAS_2DFilterManager::RAS_2DFILTER_SHARPEN);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_DILATION, RAS_2DFilterManager::RAS_2DFILTER_DILATION);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_EROSION, RAS_2DFilterManager::RAS_2DFILTER_EROSION);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_LAPLACIAN, RAS_2DFilterManager::RAS_2DFILTER_LAPLACIAN);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_SOBEL, RAS_2DFilterManager::RAS_2DFILTER_SOBEL);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_PREWITT, RAS_2DFilterManager::RAS_2DFILTER_PREWITT);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_GRAYSCALE, RAS_2DFilterManager::RAS_2DFILTER_GRAYSCALE);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_SEPIA, RAS_2DFilterManager::RAS_2DFILTER_SEPIA);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_INVERT, RAS_2DFilterManager::RAS_2DFILTER_INVERT);
+ KX_MACRO_addTypesToDict(d, RAS_2DFILTER_CUSTOMFILTER, RAS_2DFilterManager::RAS_2DFILTER_CUSTOMFILTER);
+
+ KX_MACRO_addTypesToDict(d, KX_SOUNDACT_PLAYSTOP, KX_SoundActuator::KX_SOUNDACT_PLAYSTOP);
+ KX_MACRO_addTypesToDict(d, KX_SOUNDACT_PLAYEND, KX_SoundActuator::KX_SOUNDACT_PLAYEND);
+ KX_MACRO_addTypesToDict(d, KX_SOUNDACT_LOOPSTOP, KX_SoundActuator::KX_SOUNDACT_LOOPSTOP);
+ KX_MACRO_addTypesToDict(d, KX_SOUNDACT_LOOPEND, KX_SoundActuator:: KX_SOUNDACT_LOOPEND);
+ KX_MACRO_addTypesToDict(d, KX_SOUNDACT_LOOPBIDIRECTIONAL, KX_SoundActuator::KX_SOUNDACT_LOOPBIDIRECTIONAL);
+ KX_MACRO_addTypesToDict(d, KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP, KX_SoundActuator::KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP);
+
+ KX_MACRO_addTypesToDict(d, KX_STATE_OP_CPY, KX_StateActuator::OP_CPY);
+ KX_MACRO_addTypesToDict(d, KX_STATE_OP_SET, KX_StateActuator::OP_SET);
+ KX_MACRO_addTypesToDict(d, KX_STATE_OP_CLR, KX_StateActuator::OP_CLR);
+ KX_MACRO_addTypesToDict(d, KX_STATE_OP_NEG, KX_StateActuator::OP_NEG);
+
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_NORMAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_NORMAL);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_MATERIAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_MATERIAL);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_PERMANENT, KX_ConstraintActuator::KX_ACT_CONSTRAINT_PERMANENT);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_DISTANCE, KX_ConstraintActuator::KX_ACT_CONSTRAINT_DISTANCE);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_LOCAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_LOCAL);
+ KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_DOROTFH, KX_ConstraintActuator::KX_ACT_CONSTRAINT_DOROTFH);
+
// Check for errors
if (PyErr_Occurred())
{
@@ -1090,11 +1190,6 @@ PyObject *KXpy_open(PyObject *self, PyObject *args) {
return NULL;
}
-PyObject *KXpy_reload(PyObject *self, PyObject *args) {
- PyErr_SetString(PyExc_RuntimeError, "Sandbox: reload() function disabled!\nGame Scripts should not use this function.");
- return NULL;
-}
-
PyObject *KXpy_file(PyObject *self, PyObject *args) {
PyErr_SetString(PyExc_RuntimeError, "Sandbox: file() function disabled!\nGame Scripts should not use this function.");
return NULL;
@@ -1113,6 +1208,7 @@ PyObject *KXpy_compile(PyObject *self, PyObject *args) {
PyObject *KXpy_import(PyObject *self, PyObject *args)
{
char *name;
+ int found;
PyObject *globals = NULL;
PyObject *locals = NULL;
PyObject *fromlist = NULL;
@@ -1142,16 +1238,48 @@ PyObject *KXpy_import(PyObject *self, PyObject *args)
/* quick hack for GamePython modules
TODO: register builtin modules properly by ExtendInittab */
if (!strcmp(name, "GameLogic") || !strcmp(name, "GameKeys") || !strcmp(name, "PhysicsConstraints") ||
- !strcmp(name, "Rasterizer") || !strcmp(name, "Mathutils")) {
+ !strcmp(name, "Rasterizer") || !strcmp(name, "Mathutils") || !strcmp(name, "BGL")) {
return PyImport_ImportModuleEx(name, globals, locals, fromlist);
}
-
- PyErr_Format(PyExc_ImportError,
- "Import of external Module %.20s not allowed.", name);
+
+ /* Import blender texts as python modules */
+ /* XXX 2.5
+ * m= bpy_text_import(name, &found);
+ if (m)
+ return m; */
+
+ if(found==0) /* if its found but could not import then it has its own error */
+ PyErr_Format(PyExc_ImportError, "Import of external Module %.20s not allowed.", name);
+
return NULL;
}
+PyObject *KXpy_reload(PyObject *self, PyObject *args) {
+
+ /* Used to be sandboxed, bettet to allow importing of internal text only */
+#if 0
+ PyErr_SetString(PyExc_RuntimeError, "Sandbox: reload() function disabled!\nGame Scripts should not use this function.");
+ return NULL;
+#endif
+ int found;
+ PyObject *module = NULL;
+ PyObject *newmodule = NULL;
+
+ /* check for a module arg */
+ if( !PyArg_ParseTuple( args, "O:bpy_reload_meth", &module ) )
+ return NULL;
+
+ /* XXX 2.5 newmodule= bpy_text_reimport( module, &found );
+ if (newmodule)
+ return newmodule; */
+
+ if (found==0) /* if its found but could not import then it has its own error */
+ PyErr_SetString(PyExc_ImportError, "reload(module): failed to reload from blenders internal text");
+
+ return newmodule;
+}
+
/* override python file type functions */
#if 0
static int
@@ -1184,18 +1312,18 @@ void setSandbox(TPythonSecurityLevel level)
{
PyObject *m = PyImport_AddModule("__builtin__");
PyObject *d = PyModule_GetDict(m);
-
+ PyObject *item;
switch (level) {
case psl_Highest:
//if (!g_security) {
//g_oldopen = PyDict_GetItemString(d, "open");
// functions we cant trust
- PyDict_SetItemString(d, "open", PyCFunction_New(meth_open, NULL));
- PyDict_SetItemString(d, "reload", PyCFunction_New(meth_reload, NULL));
- PyDict_SetItemString(d, "file", PyCFunction_New(meth_file, NULL));
- PyDict_SetItemString(d, "execfile", PyCFunction_New(meth_execfile, NULL));
- PyDict_SetItemString(d, "compile", PyCFunction_New(meth_compile, NULL));
+ PyDict_SetItemString(d, "open", item=PyCFunction_New(meth_open, NULL)); Py_DECREF(item);
+ PyDict_SetItemString(d, "reload", item=PyCFunction_New(meth_reload, NULL)); Py_DECREF(item);
+ PyDict_SetItemString(d, "file", item=PyCFunction_New(meth_file, NULL)); Py_DECREF(item);
+ PyDict_SetItemString(d, "execfile", item=PyCFunction_New(meth_execfile, NULL)); Py_DECREF(item);
+ PyDict_SetItemString(d, "compile", item=PyCFunction_New(meth_compile, NULL)); Py_DECREF(item);
// our own import
PyDict_SetItemString(d, "__import__", PyCFunction_New(meth_import, NULL));
@@ -1224,6 +1352,9 @@ void setSandbox(TPythonSecurityLevel level)
}
*/
default:
+ /* Allow importing internal text, from bpy_internal_import.py */
+ /* XXX 2.5 PyDict_SetItemString(d, "reload", item=PyCFunction_New(bpy_reload_meth, NULL)); Py_DECREF(item); */
+ /* XXX 2.5 PyDict_SetItemString(d, "__import__", item=PyCFunction_New(bpy_import_meth, NULL)); Py_DECREF(item); */
break;
}
}
@@ -1231,31 +1362,39 @@ void setSandbox(TPythonSecurityLevel level)
/**
* Python is not initialised.
*/
-PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecurityLevel level)
+PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecurityLevel level, Main *maggie, int argc, char** argv)
{
STR_String pname = progname;
Py_SetProgramName(pname.Ptr());
Py_NoSiteFlag=1;
Py_FrozenFlag=1;
Py_Initialize();
-
+
+ if(argv) /* browser plugins dont currently set this */
+ PySys_SetArgv(argc, argv);
+
//importBlenderModules()
setSandbox(level);
-
+ /* XXX 2.5 initPyTypes(); */
+
+ /* XXX 2.5 bpy_import_main_set(maggie); */
+
PyObject* moduleobj = PyImport_AddModule("__main__");
return PyModule_GetDict(moduleobj);
}
void exitGamePlayerPythonScripting()
{
+ //clearGameModules(); // were closing python anyway
Py_Finalize();
+ /* XXX 2.5 bpy_import_main_set(NULL); */
}
/**
* Python is already initialized.
*/
-PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLevel level)
+PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLevel level, Main *maggie)
{
STR_String pname = progname;
Py_SetProgramName(pname.Ptr());
@@ -1263,15 +1402,54 @@ PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLev
Py_FrozenFlag=1;
setSandbox(level);
+ /* XXX 2.5 initPyTypes(); */
+
+ /* XXX 2.5 bpy_import_main_set(maggie); */
+
+ /* run this to clear game modules and user modules which
+ * may contain references to in game data */
+ clearGameModules();
PyObject* moduleobj = PyImport_AddModule("__main__");
return PyModule_GetDict(moduleobj);
}
+static void clearModule(PyObject *modules, const char *name)
+{
+ PyObject *mod= PyDict_GetItemString(modules, name);
+
+ if (mod==NULL)
+ return;
+
+ PyDict_Clear(PyModule_GetDict(mod)); /* incase there are any circular refs */
+ PyDict_DelItemString(modules, name);
+}
+static void clearGameModules()
+{
+ /* Note, user modules could still reference these modules
+ * but since the dict's are cleared their members wont be accessible */
+
+ PyObject *modules= PySys_GetObject((char *)"modules");
+ clearModule(modules, "Expression");
+ clearModule(modules, "CValue");
+ clearModule(modules, "PhysicsConstraints");
+ clearModule(modules, "GameLogic");
+ clearModule(modules, "Rasterizer");
+ clearModule(modules, "GameKeys");
+ clearModule(modules, "VideoTexture");
+ clearModule(modules, "Mathutils");
+ clearModule(modules, "BGL");
+ PyErr_Clear(); // incase some of these were alredy removed.
+
+ /* clear user defined modules */
+ /* XXX 2.5 bpy_text_clear_modules(); */
+}
void exitGamePythonScripting()
{
+ clearGameModules();
+ /* XXX 2.5 bpy_import_main_set(NULL); */
}
@@ -1284,6 +1462,7 @@ PyObject* initRasterizer(RAS_IRasterizer* rasty,RAS_ICanvas* canvas)
PyObject* m;
PyObject* d;
+ PyObject* item;
// Create the module and add the functions
m = Py_InitModule4("Rasterizer", rasterizer_methods,
@@ -1294,6 +1473,7 @@ PyObject* initRasterizer(RAS_IRasterizer* rasty,RAS_ICanvas* canvas)
d = PyModule_GetDict(m);
ErrorObject = PyString_FromString("Rasterizer.error");
PyDict_SetItemString(d, "error", ErrorObject);
+ Py_DECREF(ErrorObject);
/* needed for get/setMaterialType */
KX_MACRO_addTypesToDict(d, KX_TEXFACE_MATERIAL, KX_TEXFACE_MATERIAL);
@@ -1322,7 +1502,7 @@ static char GameKeys_module_documentation[] =
;
static char gPyEventToString_doc[] =
-"Take a valid event from the GameKeys module or Keyboard Sensor and return a name"
+"EventToString(event) - Take a valid event from the GameKeys module or Keyboard Sensor and return a name"
;
static PyObject* gPyEventToString(PyObject*, PyObject* value)
@@ -1345,13 +1525,35 @@ static PyObject* gPyEventToString(PyObject*, PyObject* value)
PyErr_Clear(); // incase there was an error clearing
Py_DECREF(mod);
- if (!ret) PyErr_SetString(PyExc_ValueError, "expected a valid int keyboard event");
+ if (!ret) PyErr_SetString(PyExc_ValueError, "GameKeys.EventToString(int): expected a valid int keyboard event");
else Py_INCREF(ret);
return ret;
}
+static char gPyEventToCharacter_doc[] =
+"EventToCharacter(event, is_shift) - Take a valid event from the GameKeys module or Keyboard Sensor and return a character"
+;
+
+static PyObject* gPyEventToCharacter(PyObject*, PyObject* args)
+{
+ int event, shift;
+ if (!PyArg_ParseTuple(args,"ii:EventToCharacter", &event, &shift))
+ return NULL;
+
+ if(IsPrintable(event)) {
+ char ch[2] = {'\0', '\0'};
+ ch[0] = ToCharacter(event, (bool)shift);
+ return PyString_FromString(ch);
+ }
+ else {
+ return PyString_FromString("");
+ }
+}
+
+
static struct PyMethodDef gamekeys_methods[] = {
+ {"EventToCharacter", (PyCFunction)gPyEventToCharacter, METH_VARARGS, (PY_METHODCHAR)gPyEventToCharacter_doc},
{"EventToString", (PyCFunction)gPyEventToString, METH_O, (PY_METHODCHAR)gPyEventToString_doc},
{ NULL, (PyCFunction) NULL, 0, NULL }
};
@@ -1362,6 +1564,7 @@ PyObject* initGameKeys()
{
PyObject* m;
PyObject* d;
+ PyObject* item;
// Create the module and add the functions
m = Py_InitModule4("GameKeys", gamekeys_methods,
@@ -1486,7 +1689,6 @@ PyObject* initGameKeys()
KX_MACRO_addTypesToDict(d, PAGEDOWNKEY, SCA_IInputDevice::KX_PAGEDOWNKEY);
KX_MACRO_addTypesToDict(d, ENDKEY, SCA_IInputDevice::KX_ENDKEY);
-
// Check for errors
if (PyErr_Occurred())
{
@@ -1501,6 +1703,11 @@ PyObject* initMathutils()
return NULL; //XXX Mathutils_Init("Mathutils"); // Use as a top level module in BGE
}
+PyObject* initBGL()
+{
+ return NULL; // XXX 2.5 BGL_Init("BGL"); // Use as a top level module in BGE
+}
+
void KX_SetActiveScene(class KX_Scene* scene)
{
gp_KetsjiScene = scene;
diff --git a/source/gameengine/Ketsji/KX_PythonInit.h b/source/gameengine/Ketsji/KX_PythonInit.h
index 57ee0be9400..11360197b95 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.h
+++ b/source/gameengine/Ketsji/KX_PythonInit.h
@@ -43,11 +43,12 @@ extern bool gUseVisibilityTemp;
PyObject* initGameLogic(class KX_KetsjiEngine *engine, class KX_Scene* ketsjiscene);
PyObject* initGameKeys();
PyObject* initRasterizer(class RAS_IRasterizer* rasty,class RAS_ICanvas* canvas);
-PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecurityLevel level);
+PyObject* initGamePlayerPythonScripting(const STR_String& progname, TPythonSecurityLevel level, struct Main *maggie, int argc, char** argv);
PyObject* initMathutils();
+PyObject* initBGL();
PyObject* initVideoTexture(void);
void exitGamePlayerPythonScripting();
-PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLevel level);
+PyObject* initGamePythonScripting(const STR_String& progname, TPythonSecurityLevel level, struct Main *maggie);
void exitGamePythonScripting();
void setGamePythonPath(char *path);
diff --git a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
new file mode 100644
index 00000000000..dcd11b551a1
--- /dev/null
+++ b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp
@@ -0,0 +1,233 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+
+
+#ifndef _adr_py_init_types_h_ // only process once,
+#define _adr_py_init_types_h_ // even if multiply included
+
+/* Only for Class::Parents */
+#include "BL_BlenderShader.h"
+#include "BL_ShapeActionActuator.h"
+#include "KX_BlenderMaterial.h"
+#include "KX_CDActuator.h"
+#include "KX_CameraActuator.h"
+#include "KX_ConstraintActuator.h"
+#include "KX_ConstraintWrapper.h"
+#include "KX_GameActuator.h"
+#include "KX_Light.h"
+#include "KX_MeshProxy.h"
+#include "KX_MouseFocusSensor.h"
+#include "KX_NetworkMessageActuator.h"
+#include "KX_NetworkMessageSensor.h"
+#include "KX_ObjectActuator.h"
+#include "KX_ParentActuator.h"
+#include "KX_PhysicsObjectWrapper.h"
+#include "KX_PolyProxy.h"
+#include "KX_PolygonMaterial.h"
+#include "KX_SCA_AddObjectActuator.h"
+#include "KX_SCA_EndObjectActuator.h"
+#include "KX_SCA_ReplaceMeshActuator.h"
+#include "KX_SceneActuator.h"
+#include "KX_StateActuator.h"
+#include "KX_TrackToActuator.h"
+#include "KX_VehicleWrapper.h"
+#include "KX_VertexProxy.h"
+#include "SCA_2DFilterActuator.h"
+#include "SCA_ANDController.h"
+#include "SCA_ActuatorSensor.h"
+#include "SCA_AlwaysSensor.h"
+#include "SCA_DelaySensor.h"
+#include "SCA_JoystickSensor.h"
+#include "SCA_KeyboardSensor.h"
+#include "SCA_MouseSensor.h"
+#include "SCA_NANDController.h"
+#include "SCA_NORController.h"
+#include "SCA_ORController.h"
+#include "SCA_RandomSensor.h"
+#include "SCA_XNORController.h"
+#include "SCA_XORController.h"
+#include "KX_IpoActuator.h"
+#include "KX_NearSensor.h"
+#include "KX_RadarSensor.h"
+#include "KX_RaySensor.h"
+#include "KX_SCA_DynamicActuator.h"
+#include "KX_SoundActuator.h"
+#include "KX_TouchSensor.h"
+#include "KX_VisibilityActuator.h"
+#include "SCA_PropertySensor.h"
+#include "SCA_PythonController.h"
+#include "SCA_RandomActuator.h"
+
+
+void initPyObjectPlusType(PyTypeObject **parents)
+{
+ int i;
+
+ for (i=0; parents[i]; i++) {
+ if(PyType_Ready(parents[i]) < 0) {
+ /* This is very very unlikely */
+ printf("Error, pytype could not initialize, Blender may crash \"%s\"\n", parents[i]->tp_name);
+ return;
+ }
+
+#if 0
+ PyObject_Print(reinterpret_cast<PyObject *>parents[i], stderr, 0);
+ fprintf(stderr, "\n");
+ PyObject_Print(parents[i]->tp_dict, stderr, 0);
+ fprintf(stderr, "\n\n");
+#endif
+
+ }
+
+ PyObject *dict= NULL;
+
+ while(i) {
+ i--;
+
+ if (dict) {
+ PyDict_Update(parents[i]->tp_dict, dict);
+ }
+ dict= parents[i]->tp_dict;
+
+#if 1
+ PyObject_Print(reinterpret_cast<PyObject *>(parents[i]), stderr, 0);
+ fprintf(stderr, "\n");
+ PyObject_Print(parents[i]->tp_dict, stderr, 0);
+ fprintf(stderr, "\n\n");
+#endif
+
+ }
+}
+
+
+
+
+static void PyType_Ready_ADD(PyObject *dict, PyTypeObject *tp, PyAttributeDef *attributes)
+{
+ PyAttributeDef *attr;
+ PyObject *item;
+
+ PyType_Ready(tp);
+ PyDict_SetItemString(dict, tp->tp_name, reinterpret_cast<PyObject *>(tp));
+
+ /* store attr defs in the tp_dict for to avoid string lookups */
+ for(attr= attributes; attr->m_name; attr++) {
+ item= PyCObject_FromVoidPtr(attr, NULL);
+ PyDict_SetItemString(tp->tp_dict, attr->m_name, item);
+ Py_DECREF(item);
+ }
+
+}
+
+
+#define PyType_Ready_Attr(d, n) PyType_Ready_ADD(d, &n::Type, n::Attributes)
+
+void initPyTypes(void)
+{
+
+/*
+ initPyObjectPlusType(BL_ActionActuator::Parents);
+ .....
+*/
+
+ /* For now just do PyType_Ready */
+ PyObject *mod= PyModule_New("GameTypes");
+ PyObject *dict= PyModule_GetDict(mod);
+ PyDict_SetItemString(PySys_GetObject((char *)"modules"), (char *)"GameTypes", mod);
+ Py_DECREF(mod);
+
+ PyType_Ready_Attr(dict, BL_ActionActuator);
+ PyType_Ready_Attr(dict, BL_Shader);
+ PyType_Ready_Attr(dict, BL_ShapeActionActuator);
+ PyType_Ready_Attr(dict, CListValue);
+ PyType_Ready_Attr(dict, CValue);
+ PyType_Ready_Attr(dict, KX_BlenderMaterial);
+ PyType_Ready_Attr(dict, KX_CDActuator);
+ PyType_Ready_Attr(dict, KX_Camera);
+ PyType_Ready_Attr(dict, KX_CameraActuator);
+ PyType_Ready_Attr(dict, KX_ConstraintActuator);
+ PyType_Ready_Attr(dict, KX_ConstraintWrapper);
+ PyType_Ready_Attr(dict, KX_GameActuator);
+ PyType_Ready_Attr(dict, KX_GameObject);
+ PyType_Ready_Attr(dict, KX_IpoActuator);
+ PyType_Ready_Attr(dict, KX_LightObject);
+ PyType_Ready_Attr(dict, KX_MeshProxy);
+ PyType_Ready_Attr(dict, KX_MouseFocusSensor);
+ PyType_Ready_Attr(dict, KX_NearSensor);
+ PyType_Ready_Attr(dict, KX_NetworkMessageActuator);
+ PyType_Ready_Attr(dict, KX_NetworkMessageSensor);
+ PyType_Ready_Attr(dict, KX_ObjectActuator);
+ PyType_Ready_Attr(dict, KX_ParentActuator);
+ PyType_Ready_Attr(dict, KX_PhysicsObjectWrapper);
+ PyType_Ready_Attr(dict, KX_PolyProxy);
+ PyType_Ready_Attr(dict, KX_PolygonMaterial);
+ PyType_Ready_Attr(dict, KX_RadarSensor);
+ PyType_Ready_Attr(dict, KX_RaySensor);
+ PyType_Ready_Attr(dict, KX_SCA_AddObjectActuator);
+ PyType_Ready_Attr(dict, KX_SCA_DynamicActuator);
+ PyType_Ready_Attr(dict, KX_SCA_EndObjectActuator);
+ PyType_Ready_Attr(dict, KX_SCA_ReplaceMeshActuator);
+ PyType_Ready_Attr(dict, KX_Scene);
+ PyType_Ready_Attr(dict, KX_SceneActuator);
+ PyType_Ready_Attr(dict, KX_SoundActuator);
+ PyType_Ready_Attr(dict, KX_StateActuator);
+ PyType_Ready_Attr(dict, KX_TouchSensor);
+ PyType_Ready_Attr(dict, KX_TrackToActuator);
+ PyType_Ready_Attr(dict, KX_VehicleWrapper);
+ PyType_Ready_Attr(dict, KX_VertexProxy);
+ PyType_Ready_Attr(dict, KX_VisibilityActuator);
+ PyType_Ready_Attr(dict, PyObjectPlus);
+ PyType_Ready_Attr(dict, SCA_2DFilterActuator);
+ PyType_Ready_Attr(dict, SCA_ANDController);
+ PyType_Ready_Attr(dict, SCA_ActuatorSensor);
+ PyType_Ready_Attr(dict, SCA_AlwaysSensor);
+ PyType_Ready_Attr(dict, SCA_DelaySensor);
+ PyType_Ready_Attr(dict, SCA_ILogicBrick);
+ PyType_Ready_Attr(dict, SCA_IObject);
+ PyType_Ready_Attr(dict, SCA_ISensor);
+ PyType_Ready_Attr(dict, SCA_JoystickSensor);
+ PyType_Ready_Attr(dict, SCA_KeyboardSensor);
+ PyType_Ready_Attr(dict, SCA_MouseSensor);
+ PyType_Ready_Attr(dict, SCA_NANDController);
+ PyType_Ready_Attr(dict, SCA_NORController);
+ PyType_Ready_Attr(dict, SCA_ORController);
+ PyType_Ready_Attr(dict, SCA_PropertyActuator);
+ PyType_Ready_Attr(dict, SCA_PropertySensor);
+ PyType_Ready_Attr(dict, SCA_PythonController);
+ PyType_Ready_Attr(dict, SCA_RandomActuator);
+ PyType_Ready_Attr(dict, SCA_RandomSensor);
+ PyType_Ready_Attr(dict, SCA_XNORController);
+ PyType_Ready_Attr(dict, SCA_XORController);
+
+
+
+}
+
+#endif \ No newline at end of file
diff --git a/source/gameengine/Ketsji/KX_PythonInitTypes.h b/source/gameengine/Ketsji/KX_PythonInitTypes.h
new file mode 100644
index 00000000000..6da79be9301
--- /dev/null
+++ b/source/gameengine/Ketsji/KX_PythonInitTypes.h
@@ -0,0 +1,35 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): Campbell Barton
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef _adr_py_init_types_h_ // only process once,
+#define _adr_py_init_types_h_ // even if multiply included
+
+void initPyTypes(void);
+
+#endif
diff --git a/source/gameengine/Ketsji/KX_RadarSensor.cpp b/source/gameengine/Ketsji/KX_RadarSensor.cpp
index fa8998cd81d..8277e7ef19c 100644
--- a/source/gameengine/Ketsji/KX_RadarSensor.cpp
+++ b/source/gameengine/Ketsji/KX_RadarSensor.cpp
@@ -100,8 +100,9 @@ CValue* KX_RadarSensor::GetReplica()
//>m_sumoObj = new SM_Object(DT_NewCone(m_coneradius, m_coneheight),NULL,NULL,NULL);
//replica->m_sumoObj->setMargin(m_Margin);
//replica->m_sumoObj->setClientObject(replica->m_client_info);
-
- ((KX_GameObject*)replica->GetParent())->GetSGNode()->ComputeWorldTransforms(NULL);
+ //Wrong: see KX_TouchSensor
+ //bool parentUpdated = false;
+ //((KX_GameObject*)replica->GetParent())->GetSGNode()->ComputeWorldTransforms(NULL,parentUpdated);
replica->SynchronizeTransform();
return replica;
@@ -206,7 +207,7 @@ const char KX_RadarSensor::GetConeOrigin_doc[] =
"getConeOrigin()\n"
"\tReturns the origin of the cone with which to test. The origin\n"
"\tis in the middle of the cone.";
-PyObject* KX_RadarSensor::PyGetConeOrigin(PyObject* self) {
+PyObject* KX_RadarSensor::PyGetConeOrigin() {
ShowDeprecationWarning("getConeOrigin()", "the coneOrigin property");
PyObject *retVal = PyList_New(3);
@@ -222,7 +223,7 @@ PyObject* KX_RadarSensor::PyGetConeOrigin(PyObject* self) {
const char KX_RadarSensor::GetConeTarget_doc[] =
"getConeTarget()\n"
"\tReturns the center of the bottom face of the cone with which to test.\n";
-PyObject* KX_RadarSensor::PyGetConeTarget(PyObject* self) {
+PyObject* KX_RadarSensor::PyGetConeTarget() {
ShowDeprecationWarning("getConeTarget()", "the coneTarget property");
PyObject *retVal = PyList_New(3);
@@ -238,7 +239,7 @@ PyObject* KX_RadarSensor::PyGetConeTarget(PyObject* self) {
const char KX_RadarSensor::GetConeHeight_doc[] =
"getConeHeight()\n"
"\tReturns the height of the cone with which to test.\n";
-PyObject* KX_RadarSensor::PyGetConeHeight(PyObject* self) {
+PyObject* KX_RadarSensor::PyGetConeHeight() {
ShowDeprecationWarning("getConeHeight()", "the distance property");
@@ -250,22 +251,22 @@ PyObject* KX_RadarSensor::PyGetConeHeight(PyObject* self) {
/* Python Integration Hooks */
/* ------------------------------------------------------------------------- */
PyTypeObject KX_RadarSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_RadarSensor",
- sizeof(KX_RadarSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_RadarSensor::Parents[] = {
@@ -298,20 +299,12 @@ PyAttributeDef KX_RadarSensor::Attributes[] = {
{NULL} //Sentinel
};
-PyObject* KX_RadarSensor::_getattr(const char *attr)
+PyObject* KX_RadarSensor::py_getattro(PyObject *attr)
{
- PyObject* object = _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
-
- _getattr_up(KX_NearSensor);
+ py_getattro_up(KX_NearSensor);
}
-int KX_RadarSensor::_setattr(const char *attr, PyObject* value)
+int KX_RadarSensor::py_setattro(PyObject *attr, PyObject* value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
-
- return KX_NearSensor::_setattr(attr, value);
+ py_setattro_up(KX_NearSensor);
}
diff --git a/source/gameengine/Ketsji/KX_RadarSensor.h b/source/gameengine/Ketsji/KX_RadarSensor.h
index 6dfe0c42f5d..c3a941696ce 100644
--- a/source/gameengine/Ketsji/KX_RadarSensor.h
+++ b/source/gameengine/Ketsji/KX_RadarSensor.h
@@ -89,8 +89,8 @@ public:
KX_RADAR_AXIS_NEG_Z
};
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
//Deprecated ----->
KX_PYMETHOD_DOC_NOARGS(KX_RadarSensor,GetConeOrigin);
diff --git a/source/gameengine/Ketsji/KX_RayCast.cpp b/source/gameengine/Ketsji/KX_RayCast.cpp
index 974d4b992a6..8c7612bf663 100644
--- a/source/gameengine/Ketsji/KX_RayCast.cpp
+++ b/source/gameengine/Ketsji/KX_RayCast.cpp
@@ -56,12 +56,15 @@ void KX_RayCast::reportHit(PHY_RayCastResult* result)
bool KX_RayCast::RayTest(PHY_IPhysicsEnvironment* physics_environment, const MT_Point3& _frompoint, const MT_Point3& topoint, KX_RayCast& callback)
{
+ if(physics_environment==NULL) return false; /* prevents crashing in some cases */
+
// Loops over all physics objects between frompoint and topoint,
// calling callback.RayHit for each one.
//
// callback.RayHit should return true to stop looking, or false to continue.
//
// returns true if an object was found, false if not.
+
MT_Point3 frompoint(_frompoint);
const MT_Vector3 todir( (topoint - frompoint).safe_normalized() );
MT_Point3 prevpoint(_frompoint+todir*(-1.f));
diff --git a/source/gameengine/Ketsji/KX_RaySensor.cpp b/source/gameengine/Ketsji/KX_RaySensor.cpp
index ce12b983147..06c04dbf10d 100644
--- a/source/gameengine/Ketsji/KX_RaySensor.cpp
+++ b/source/gameengine/Ketsji/KX_RaySensor.cpp
@@ -136,8 +136,13 @@ bool KX_RaySensor::RayHit(KX_ClientObjectInfo* client, KX_RayCast* result, void
{
m_rayHit = true;
m_hitObject = hitKXObj;
- m_hitPosition = result->m_hitPoint;
- m_hitNormal = result->m_hitNormal;
+ m_hitPosition[0] = result->m_hitPoint[0];
+ m_hitPosition[1] = result->m_hitPoint[1];
+ m_hitPosition[2] = result->m_hitPoint[2];
+
+ m_hitNormal[0] = result->m_hitNormal[0];
+ m_hitNormal[1] = result->m_hitNormal[1];
+ m_hitNormal[2] = result->m_hitNormal[2];
}
// no multi-hit search yet
@@ -180,8 +185,13 @@ bool KX_RaySensor::Evaluate(CValue* event)
bool reset = m_reset && m_level;
m_rayHit = false;
m_hitObject = NULL;
- m_hitPosition.setValue(0,0,0);
- m_hitNormal.setValue(1,0,0);
+ m_hitPosition[0] = 0;
+ m_hitPosition[1] = 0;
+ m_hitPosition[2] = 0;
+
+ m_hitNormal[0] = 1;
+ m_hitNormal[1] = 0;
+ m_hitNormal[2] = 0;
KX_GameObject* obj = (KX_GameObject*)GetParent();
MT_Point3 frompoint = obj->NodeGetWorldPosition();
@@ -236,7 +246,9 @@ bool KX_RaySensor::Evaluate(CValue* event)
}
}
todir.normalize();
- m_rayDirection = todir;
+ m_rayDirection[0] = todir[0];
+ m_rayDirection[1] = todir[1];
+ m_rayDirection[2] = todir[2];
MT_Point3 topoint = frompoint + (m_distance) * todir;
PHY_IPhysicsEnvironment* pe = m_scene->GetPhysicsEnvironment();
@@ -309,22 +321,23 @@ bool KX_RaySensor::Evaluate(CValue* event)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_RaySensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_RaySensor",
- sizeof(KX_RaySensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
+
};
PyParentObject KX_RaySensor::Parents[] = {
@@ -336,25 +349,47 @@ PyParentObject KX_RaySensor::Parents[] = {
};
PyMethodDef KX_RaySensor::Methods[] = {
+ // Deprecated ----->
{"getHitObject",(PyCFunction) KX_RaySensor::sPyGetHitObject,METH_NOARGS, (PY_METHODCHAR)GetHitObject_doc},
{"getHitPosition",(PyCFunction) KX_RaySensor::sPyGetHitPosition,METH_NOARGS, (PY_METHODCHAR)GetHitPosition_doc},
{"getHitNormal",(PyCFunction) KX_RaySensor::sPyGetHitNormal,METH_NOARGS, (PY_METHODCHAR)GetHitNormal_doc},
{"getRayDirection",(PyCFunction) KX_RaySensor::sPyGetRayDirection,METH_NOARGS, (PY_METHODCHAR)GetRayDirection_doc},
+ // <-----
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_RaySensor::Attributes[] = {
+ KX_PYATTRIBUTE_BOOL_RW("useMaterial", KX_RaySensor, m_bFindMaterial),
+ KX_PYATTRIBUTE_BOOL_RW("useXRay", KX_RaySensor, m_bXRay),
+ KX_PYATTRIBUTE_FLOAT_RW("range", 0, 10000, KX_RaySensor, m_distance),
+ KX_PYATTRIBUTE_STRING_RW("property", 0, 100, false, KX_RaySensor, m_propertyname),
+ KX_PYATTRIBUTE_INT_RW("axis", 0, 5, true, KX_RaySensor, m_axis),
+ KX_PYATTRIBUTE_FLOAT_ARRAY_RO("hitPosition", KX_RaySensor, m_hitPosition, 3),
+ KX_PYATTRIBUTE_FLOAT_ARRAY_RO("rayDirection", KX_RaySensor, m_rayDirection, 3),
+ KX_PYATTRIBUTE_FLOAT_ARRAY_RO("hitNormal", KX_RaySensor, m_hitNormal, 3),
+ KX_PYATTRIBUTE_RO_FUNCTION("hitObject", KX_RaySensor, pyattr_get_hitobject),
{ NULL } //Sentinel
};
+PyObject* KX_RaySensor::pyattr_get_hitobject(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_RaySensor* self = static_cast<KX_RaySensor*>(self_v);
+ if (self->m_hitObject)
+ return self->m_hitObject->GetProxy();
+
+ Py_RETURN_NONE;
+}
+
+// Deprecated ----->
const char KX_RaySensor::GetHitObject_doc[] =
"getHitObject()\n"
"\tReturns the name of the object that was hit by this ray.\n";
-PyObject* KX_RaySensor::PyGetHitObject(PyObject* self)
+PyObject* KX_RaySensor::PyGetHitObject()
{
+ ShowDeprecationWarning("getHitObject()", "the hitObject property");
if (m_hitObject)
{
- return m_hitObject->AddRef();
+ return m_hitObject->GetProxy();
}
Py_RETURN_NONE;
}
@@ -363,29 +398,59 @@ PyObject* KX_RaySensor::PyGetHitObject(PyObject* self)
const char KX_RaySensor::GetHitPosition_doc[] =
"getHitPosition()\n"
"\tReturns the position (in worldcoordinates) where the object was hit by this ray.\n";
-PyObject* KX_RaySensor::PyGetHitPosition(PyObject* self)
+PyObject* KX_RaySensor::PyGetHitPosition()
{
- return PyObjectFrom(m_hitPosition);
+ ShowDeprecationWarning("getHitPosition()", "the hitPosition property");
+
+ PyObject *retVal = PyList_New(3);
+
+ PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_hitPosition[0]));
+ PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_hitPosition[1]));
+ PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_hitPosition[2]));
+
+ return retVal;
}
const char KX_RaySensor::GetRayDirection_doc[] =
"getRayDirection()\n"
"\tReturns the direction from the ray (in worldcoordinates) .\n";
-PyObject* KX_RaySensor::PyGetRayDirection(PyObject* self)
+PyObject* KX_RaySensor::PyGetRayDirection()
{
- return PyObjectFrom(m_rayDirection);
+ ShowDeprecationWarning("getRayDirection()", "the rayDirection property");
+
+ PyObject *retVal = PyList_New(3);
+
+ PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_rayDirection[0]));
+ PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_rayDirection[1]));
+ PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_rayDirection[2]));
+
+ return retVal;
}
const char KX_RaySensor::GetHitNormal_doc[] =
"getHitNormal()\n"
"\tReturns the normal (in worldcoordinates) of the object at the location where the object was hit by this ray.\n";
-PyObject* KX_RaySensor::PyGetHitNormal(PyObject* self)
+PyObject* KX_RaySensor::PyGetHitNormal()
{
- return PyObjectFrom(m_hitNormal);
+ ShowDeprecationWarning("getHitNormal()", "the hitNormal property");
+
+ PyObject *retVal = PyList_New(3);
+
+ PyList_SetItem(retVal, 0, PyFloat_FromDouble(m_hitNormal[0]));
+ PyList_SetItem(retVal, 1, PyFloat_FromDouble(m_hitNormal[1]));
+ PyList_SetItem(retVal, 2, PyFloat_FromDouble(m_hitNormal[2]));
+
+ return retVal;
}
-PyObject* KX_RaySensor::_getattr(const char *attr) {
- _getattr_up(SCA_ISensor);
+PyObject* KX_RaySensor::py_getattro(PyObject *attr) {
+ py_getattro_up(SCA_ISensor);
}
+
+int KX_RaySensor::py_setattro(PyObject *attr, PyObject *value) {
+ py_setattro_up(SCA_ISensor);
+}
+
+// <----- Deprecated
diff --git a/source/gameengine/Ketsji/KX_RaySensor.h b/source/gameengine/Ketsji/KX_RaySensor.h
index 09d8bc1369a..a5d7d15c60c 100644
--- a/source/gameengine/Ketsji/KX_RaySensor.h
+++ b/source/gameengine/Ketsji/KX_RaySensor.h
@@ -44,15 +44,15 @@ class KX_RaySensor : public SCA_ISensor
STR_String m_propertyname;
bool m_bFindMaterial;
bool m_bXRay;
- double m_distance;
+ float m_distance;
class KX_Scene* m_scene;
bool m_bTriggered;
int m_axis;
bool m_rayHit;
- MT_Point3 m_hitPosition;
+ float m_hitPosition[3];
SCA_IObject* m_hitObject;
- MT_Vector3 m_hitNormal;
- MT_Vector3 m_rayDirection;
+ float m_hitNormal[3];
+ float m_rayDirection[3];
public:
KX_RaySensor(class SCA_EventManager* eventmgr,
@@ -73,13 +73,31 @@ public:
bool RayHit(KX_ClientObjectInfo* client, KX_RayCast* result, void * const data);
bool NeedRayCast(KX_ClientObjectInfo* client);
+
+
+ //Python Interface
+ enum RayAxis {
+ KX_RAY_AXIS_POS_Y = 0,
+ KX_RAY_AXIS_POS_X,
+ KX_RAY_AXIS_POS_Z,
+ KX_RAY_AXIS_NEG_X,
+ KX_RAY_AXIS_NEG_Y,
+ KX_RAY_AXIS_NEG_Z
+ };
+
+
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+ // Deprecated ----->
KX_PYMETHOD_DOC_NOARGS(KX_RaySensor,GetHitObject);
KX_PYMETHOD_DOC_NOARGS(KX_RaySensor,GetHitPosition);
KX_PYMETHOD_DOC_NOARGS(KX_RaySensor,GetHitNormal);
KX_PYMETHOD_DOC_NOARGS(KX_RaySensor,GetRayDirection);
+ // <-----
- virtual PyObject* _getattr(const char *attr);
+ /* Attributes */
+ static PyObject* pyattr_get_hitobject(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
};
diff --git a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
index 68b704f4889..c45d89a2815 100644
--- a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.cpp
@@ -38,7 +38,6 @@
#include "SCA_IScene.h"
#include "KX_GameObject.h"
#include "KX_IPhysicsController.h"
-
#include "PyObjectPlus.h"
#ifdef HAVE_CONFIG_H
@@ -53,9 +52,9 @@ KX_SCA_AddObjectActuator::KX_SCA_AddObjectActuator(SCA_IObject *gameobj,
SCA_IObject *original,
int time,
SCA_IScene* scene,
- const MT_Vector3& linvel,
+ const float *linvel,
bool linv_local,
- const MT_Vector3& angvel,
+ const float *angvel,
bool angv_local,
PyTypeObject* T)
:
@@ -63,12 +62,16 @@ KX_SCA_AddObjectActuator::KX_SCA_AddObjectActuator(SCA_IObject *gameobj,
m_OriginalObject(original),
m_scene(scene),
- m_linear_velocity(linvel),
m_localLinvFlag(linv_local),
-
- m_angular_velocity(angvel),
m_localAngvFlag(angv_local)
{
+ m_linear_velocity[0] = linvel[0];
+ m_linear_velocity[1] = linvel[1];
+ m_linear_velocity[2] = linvel[2];
+ m_angular_velocity[0] = angvel[0];
+ m_angular_velocity[1] = angvel[1];
+ m_angular_velocity[2] = angvel[2];
+
if (m_OriginalObject)
m_OriginalObject->RegisterActuator(this);
@@ -163,31 +166,33 @@ void KX_SCA_AddObjectActuator::Relink(GEN_Map<GEN_HashedPtr, void*> *obj_map)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_SCA_AddObjectActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_SCA_AddObjectActuator",
- sizeof(KX_SCA_AddObjectActuator),
- 0,
- PyDestructor,
+ sizeof(PyObjectPlus_Proxy),
0,
- __getattr,
- __setattr,
- 0,
- __repr,
+ py_base_dealloc,
0,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_SCA_AddObjectActuator::Parents[] = {
+ &KX_SCA_AddObjectActuator::Type,
&SCA_IActuator::Type,
&SCA_ILogicBrick::Type,
&CValue::Type,
NULL
};
PyMethodDef KX_SCA_AddObjectActuator::Methods[] = {
+ // ---> deprecated
{"setTime", (PyCFunction) KX_SCA_AddObjectActuator::sPySetTime, METH_O, (PY_METHODCHAR)SetTime_doc},
{"getTime", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetTime, METH_NOARGS, (PY_METHODCHAR)GetTime_doc},
{"getLinearVelocity", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetLinearVelocity, METH_NOARGS, (PY_METHODCHAR)GetLinearVelocity_doc},
@@ -196,8 +201,6 @@ PyMethodDef KX_SCA_AddObjectActuator::Methods[] = {
{"setAngularVelocity", (PyCFunction) KX_SCA_AddObjectActuator::sPySetAngularVelocity, METH_VARARGS, (PY_METHODCHAR)SetAngularVelocity_doc},
{"getLastCreatedObject", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetLastCreatedObject, METH_NOARGS,"getLastCreatedObject() : get the object handle to the last created object\n"},
{"instantAddObject", (PyCFunction) KX_SCA_AddObjectActuator::sPyInstantAddObject, METH_NOARGS,"instantAddObject() : immediately add object without delay\n"},
-
- // ---> deprecated
{"setObject", (PyCFunction) KX_SCA_AddObjectActuator::sPySetObject, METH_O, (PY_METHODCHAR)SetObject_doc},
{"getObject", (PyCFunction) KX_SCA_AddObjectActuator::sPyGetObject, METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
@@ -205,42 +208,60 @@ PyMethodDef KX_SCA_AddObjectActuator::Methods[] = {
};
PyAttributeDef KX_SCA_AddObjectActuator::Attributes[] = {
+ KX_PYATTRIBUTE_RW_FUNCTION("object",KX_SCA_AddObjectActuator,pyattr_get_object,pyattr_set_object),
+ KX_PYATTRIBUTE_RO_FUNCTION("objectLastCreated",KX_SCA_AddObjectActuator,pyattr_get_objectLastCreated),
+ KX_PYATTRIBUTE_INT_RW("time",0,2000,true,KX_SCA_AddObjectActuator,m_timeProp),
+ KX_PYATTRIBUTE_FLOAT_ARRAY_RW("linearVelocity",-FLT_MAX,FLT_MAX,KX_SCA_AddObjectActuator,m_linear_velocity,3),
+ KX_PYATTRIBUTE_FLOAT_ARRAY_RW("angularVelocity",-FLT_MAX,FLT_MAX,KX_SCA_AddObjectActuator,m_angular_velocity,3),
{ NULL } //Sentinel
};
-PyObject* KX_SCA_AddObjectActuator::_getattr(const char *attr)
+PyObject* KX_SCA_AddObjectActuator::pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
{
- if (!strcmp(attr, "object")) {
- if (!m_OriginalObject) Py_RETURN_NONE;
- else return m_OriginalObject->AddRef();
- } else if (!strcmp(attr, "objectLastCreated")) {
- if (!m_OriginalObject) Py_RETURN_NONE;
- else return m_lastCreatedObject->AddRef();
- }
-
- _getattr_up(SCA_IActuator);
+ KX_SCA_AddObjectActuator* actuator = static_cast<KX_SCA_AddObjectActuator*>(self);
+ if (!actuator->m_OriginalObject)
+ Py_RETURN_NONE;
+ else
+ return actuator->m_OriginalObject->GetProxy();
}
-int KX_SCA_AddObjectActuator::_setattr(const char *attr, PyObject* value) {
-
- if (!strcmp(attr, "object")) {
- KX_GameObject *gameobj;
+int KX_SCA_AddObjectActuator::pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_SCA_AddObjectActuator* actuator = static_cast<KX_SCA_AddObjectActuator*>(self);
+ KX_GameObject *gameobj;
- if (!ConvertPythonToGameObject(value, &gameobj, true))
- return 1; // ConvertPythonToGameObject sets the error
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_SCA_AddObjectActuator"))
+ return 1; // ConvertPythonToGameObject sets the error
- if (m_OriginalObject != NULL)
- m_OriginalObject->UnregisterActuator(this);
+ if (actuator->m_OriginalObject != NULL)
+ actuator->m_OriginalObject->UnregisterActuator(actuator);
- m_OriginalObject = (SCA_IObject*)gameobj;
+ actuator->m_OriginalObject = (SCA_IObject*)gameobj;
- if (m_OriginalObject)
- m_OriginalObject->RegisterActuator(this);
+ if (actuator->m_OriginalObject)
+ actuator->m_OriginalObject->RegisterActuator(actuator);
- return 0;
- }
-
- return SCA_IActuator::_setattr(attr, value);
+ return 0;
+}
+
+PyObject* KX_SCA_AddObjectActuator::pyattr_get_objectLastCreated(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SCA_AddObjectActuator* actuator = static_cast<KX_SCA_AddObjectActuator*>(self);
+ if (!actuator->m_lastCreatedObject)
+ Py_RETURN_NONE;
+ else
+ return actuator->m_lastCreatedObject->GetProxy();
+}
+
+
+PyObject* KX_SCA_AddObjectActuator::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_IActuator);
+}
+
+int KX_SCA_AddObjectActuator::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IActuator);
}
/* 1. setObject */
@@ -249,13 +270,13 @@ const char KX_SCA_AddObjectActuator::SetObject_doc[] =
"\t- object: KX_GameObject, string or None\n"
"\tSets the object that will be added. There has to be an object\n"
"\tof this name. If not, this function does nothing.\n";
-PyObject* KX_SCA_AddObjectActuator::PySetObject(PyObject* self, PyObject* value)
+PyObject* KX_SCA_AddObjectActuator::PySetObject(PyObject* value)
{
KX_GameObject *gameobj;
ShowDeprecationWarning("setObject()", "the object property");
- if (!ConvertPythonToGameObject(value, &gameobj, true))
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.setObject(value): KX_SCA_AddObjectActuator"))
return NULL; // ConvertPythonToGameObject sets the error
if (m_OriginalObject != NULL)
@@ -278,8 +299,9 @@ const char KX_SCA_AddObjectActuator::SetTime_doc[] =
"\tIf the duration is negative, it is set to 0.\n";
-PyObject* KX_SCA_AddObjectActuator::PySetTime(PyObject* self, PyObject* value)
+PyObject* KX_SCA_AddObjectActuator::PySetTime(PyObject* value)
{
+ ShowDeprecationWarning("setTime()", "the time property");
int deltatime = PyInt_AsLong(value);
if (deltatime==-1 && PyErr_Occurred()) {
PyErr_SetString(PyExc_TypeError, "expected an int");
@@ -296,12 +318,13 @@ PyObject* KX_SCA_AddObjectActuator::PySetTime(PyObject* self, PyObject* value)
/* 3. getTime */
const char KX_SCA_AddObjectActuator::GetTime_doc[] =
-"GetTime()\n"
+"getTime()\n"
"\tReturns the lifetime of the object that will be added.\n";
-PyObject* KX_SCA_AddObjectActuator::PyGetTime(PyObject* self)
+PyObject* KX_SCA_AddObjectActuator::PyGetTime()
{
+ ShowDeprecationWarning("getTime()", "the time property");
return PyInt_FromLong(m_timeProp);
}
@@ -311,13 +334,13 @@ const char KX_SCA_AddObjectActuator::GetObject_doc[] =
"getObject(name_only = 1)\n"
"name_only - optional arg, when true will return the KX_GameObject rather then its name\n"
"\tReturns the name of the object that will be added.\n";
-PyObject* KX_SCA_AddObjectActuator::PyGetObject(PyObject* self, PyObject* args)
+PyObject* KX_SCA_AddObjectActuator::PyGetObject(PyObject* args)
{
int ret_name_only = 1;
ShowDeprecationWarning("getObject()", "the object property");
- if (!PyArg_ParseTuple(args, "|i", &ret_name_only))
+ if (!PyArg_ParseTuple(args, "|i:getObject", &ret_name_only))
return NULL;
if (!m_OriginalObject)
@@ -326,7 +349,7 @@ PyObject* KX_SCA_AddObjectActuator::PyGetObject(PyObject* self, PyObject* args)
if (ret_name_only)
return PyString_FromString(m_OriginalObject->GetName());
else
- return m_OriginalObject->AddRef();
+ return m_OriginalObject->GetProxy();
}
@@ -337,8 +360,9 @@ const char KX_SCA_AddObjectActuator::GetLinearVelocity_doc[] =
"\tReturns the linear velocity that will be assigned to \n"
"\tthe created object.\n";
-PyObject* KX_SCA_AddObjectActuator::PyGetLinearVelocity(PyObject* self)
+PyObject* KX_SCA_AddObjectActuator::PyGetLinearVelocity()
{
+ ShowDeprecationWarning("getLinearVelocity()", "the linearVelocity property");
PyObject *retVal = PyList_New(3);
PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_linear_velocity[0]));
@@ -359,14 +383,17 @@ const char KX_SCA_AddObjectActuator::SetLinearVelocity_doc[] =
"\t- local: bool\n"
"\tAssign this velocity to the created object. \n";
-PyObject* KX_SCA_AddObjectActuator::PySetLinearVelocity(PyObject* self, PyObject* args)
+PyObject* KX_SCA_AddObjectActuator::PySetLinearVelocity(PyObject* args)
{
+ ShowDeprecationWarning("setLinearVelocity()", "the linearVelocity property");
float vecArg[3];
- if (!PyArg_ParseTuple(args, "fff", &vecArg[0], &vecArg[1], &vecArg[2]))
+ if (!PyArg_ParseTuple(args, "fff:setLinearVelocity", &vecArg[0], &vecArg[1], &vecArg[2]))
return NULL;
- m_linear_velocity.setValue(vecArg);
+ m_linear_velocity[0] = vecArg[0];
+ m_linear_velocity[1] = vecArg[1];
+ m_linear_velocity[2] = vecArg[2];
Py_RETURN_NONE;
}
@@ -376,8 +403,9 @@ const char KX_SCA_AddObjectActuator::GetAngularVelocity_doc[] =
"\tReturns the angular velocity that will be assigned to \n"
"\tthe created object.\n";
-PyObject* KX_SCA_AddObjectActuator::PyGetAngularVelocity(PyObject* self)
+PyObject* KX_SCA_AddObjectActuator::PyGetAngularVelocity()
{
+ ShowDeprecationWarning("getAngularVelocity()", "the angularVelocity property");
PyObject *retVal = PyList_New(3);
PyList_SET_ITEM(retVal, 0, PyFloat_FromDouble(m_angular_velocity[0]));
@@ -398,14 +426,17 @@ const char KX_SCA_AddObjectActuator::SetAngularVelocity_doc[] =
"\t- local: bool\n"
"\tAssign this angular velocity to the created object. \n";
-PyObject* KX_SCA_AddObjectActuator::PySetAngularVelocity(PyObject* self, PyObject* args)
+PyObject* KX_SCA_AddObjectActuator::PySetAngularVelocity(PyObject* args)
{
+ ShowDeprecationWarning("setAngularVelocity()", "the angularVelocity property");
float vecArg[3];
- if (!PyArg_ParseTuple(args, "fff", &vecArg[0], &vecArg[1], &vecArg[2]))
+ if (!PyArg_ParseTuple(args, "fff:setAngularVelocity", &vecArg[0], &vecArg[1], &vecArg[2]))
return NULL;
- m_angular_velocity.setValue(vecArg);
+ m_angular_velocity[0] = vecArg[0];
+ m_angular_velocity[1] = vecArg[1];
+ m_angular_velocity[2] = vecArg[2];
Py_RETURN_NONE;
}
@@ -417,7 +448,7 @@ void KX_SCA_AddObjectActuator::InstantAddObject()
// Now it needs to be added to the current scene.
SCA_IObject* replica = m_scene->AddReplicaObject(m_OriginalObject,GetParent(),m_timeProp );
KX_GameObject * game_obj = static_cast<KX_GameObject *>(replica);
- game_obj->setLinearVelocity(m_linear_velocity,m_localLinvFlag);
+ game_obj->setLinearVelocity(m_linear_velocity ,m_localLinvFlag);
game_obj->setAngularVelocity(m_angular_velocity,m_localAngvFlag);
game_obj->ResolveCombinedVelocities(m_linear_velocity, m_angular_velocity, m_localLinvFlag, m_localAngvFlag);
@@ -436,7 +467,7 @@ void KX_SCA_AddObjectActuator::InstantAddObject()
}
}
-PyObject* KX_SCA_AddObjectActuator::PyInstantAddObject(PyObject* self)
+PyObject* KX_SCA_AddObjectActuator::PyInstantAddObject()
{
InstantAddObject();
@@ -451,16 +482,16 @@ const char KX_SCA_AddObjectActuator::GetLastCreatedObject_doc[] =
"\tReturn the last created object. \n";
-PyObject* KX_SCA_AddObjectActuator::PyGetLastCreatedObject(PyObject* self)
+PyObject* KX_SCA_AddObjectActuator::PyGetLastCreatedObject()
{
+ ShowDeprecationWarning("getLastCreatedObject()", "the objectLastCreated property");
SCA_IObject* result = this->GetLastCreatedObject();
// if result->GetSGNode() is NULL
// it means the object has ended, The BGE python api crashes in many places if the object is returned.
if (result && (static_cast<KX_GameObject *>(result))->GetSGNode())
{
- result->AddRef();
- return result;
+ return result->GetProxy();
}
// don't return NULL to python anymore, it gives trouble in the scripts
Py_RETURN_NONE;
diff --git a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
index 18298cbcb0c..4ece5a6d83b 100644
--- a/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_AddObjectActuator.h
@@ -59,12 +59,12 @@ class KX_SCA_AddObjectActuator : public SCA_IActuator
SCA_IScene* m_scene;
/// Linear velocity upon creation of the object.
- MT_Vector3 m_linear_velocity;
+ float m_linear_velocity[3];
/// Apply the velocity locally
bool m_localLinvFlag;
/// Angular velocity upon creation of the object.
- MT_Vector3 m_angular_velocity;
+ float m_angular_velocity[3];
/// Apply the velocity locally
bool m_localAngvFlag;
@@ -85,9 +85,9 @@ public:
SCA_IObject *original,
int time,
SCA_IScene* scene,
- const MT_Vector3& linvel,
+ const float *linvel,
bool linv_local,
- const MT_Vector3& angvel,
+ const float *angvel,
bool angv_local,
PyTypeObject* T=&Type
);
@@ -110,8 +110,8 @@ public:
virtual bool
Update();
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
SCA_IObject*
GetLastCreatedObject(
@@ -140,6 +140,9 @@ public:
/* 10. instantAddObject*/
KX_PYMETHOD_DOC_NOARGS(KX_SCA_AddObjectActuator,InstantAddObject);
+ static PyObject* pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static PyObject* pyattr_get_objectLastCreated(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
}; /* end of class KX_SCA_AddObjectActuator : public KX_EditObjectActuator */
diff --git a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
index 394bb667728..83dfdc2484c 100644
--- a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.cpp
@@ -49,25 +49,23 @@
PyTypeObject
-KX_SCA_DynamicActuator::
-
-Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+KX_SCA_DynamicActuator::Type = {
+ PyObject_HEAD_INIT(NULL)
0,
"KX_SCA_DynamicActuator",
- sizeof(KX_SCA_DynamicActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0,
- __repr,
- 0,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_SCA_DynamicActuator::Parents[] = {
@@ -80,21 +78,28 @@ PyParentObject KX_SCA_DynamicActuator::Parents[] = {
PyMethodDef KX_SCA_DynamicActuator::Methods[] = {
+ // ---> deprecated
KX_PYMETHODTABLE(KX_SCA_DynamicActuator, setOperation),
KX_PYMETHODTABLE(KX_SCA_DynamicActuator, getOperation),
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_SCA_DynamicActuator::Attributes[] = {
+ KX_PYATTRIBUTE_SHORT_RW("operation",0,4,false,KX_SCA_DynamicActuator,m_dyn_operation),
+ KX_PYATTRIBUTE_FLOAT_RW("mass",0.0,FLT_MAX,KX_SCA_DynamicActuator,m_setmass),
{ NULL } //Sentinel
};
-PyObject* KX_SCA_DynamicActuator::_getattr(const char *attr)
+PyObject* KX_SCA_DynamicActuator::py_getattro(PyObject *attr)
{
- _getattr_up(SCA_IActuator);
+ py_getattro_up(SCA_IActuator);
}
+int KX_SCA_DynamicActuator::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IActuator);
+}
/* 1. setOperation */
@@ -107,9 +112,10 @@ KX_PYMETHODDEF_DOC(KX_SCA_DynamicActuator, setOperation,
"\t 3 = disable rigid body\n"
"Change the dynamic status of the parent object.\n")
{
+ ShowDeprecationWarning("setOperation()", "the operation property");
int dyn_operation;
- if (!PyArg_ParseTuple(args, "i", &dyn_operation))
+ if (!PyArg_ParseTuple(args, "i:setOperation", &dyn_operation))
{
return NULL;
}
@@ -126,6 +132,7 @@ KX_PYMETHODDEF_DOC(KX_SCA_DynamicActuator, getOperation,
"Returns the operation type of this actuator.\n"
)
{
+ ShowDeprecationWarning("getOperation()", "the operation property");
return PyInt_FromLong((long)m_dyn_operation);
}
diff --git a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
index a82cddd66a7..99855124bdb 100644
--- a/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_DynamicActuator.h
@@ -64,7 +64,18 @@ class KX_SCA_DynamicActuator : public SCA_IActuator
virtual bool
Update();
- virtual PyObject* _getattr(const char *attr);
+ //Python Interface
+ enum DynamicOperation {
+ KX_DYN_RESTORE_DYNAMICS = 0,
+ KX_DYN_DISABLE_DYNAMICS,
+ KX_DYN_ENABLE_RIGID_BODY,
+ KX_DYN_DISABLE_RIGID_BODY,
+ KX_DYN_SET_MASS,
+ };
+
+
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. setOperation */
KX_PYMETHOD_DOC(KX_SCA_DynamicActuator,setOperation);
diff --git a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
index 9268a1df5f0..3b42577810e 100644
--- a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.cpp
@@ -94,22 +94,22 @@ CValue* KX_SCA_EndObjectActuator::GetReplica()
/* ------------------------------------------------------------------------- */
PyTypeObject KX_SCA_EndObjectActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_SCA_EndObjectActuator",
- sizeof(KX_SCA_EndObjectActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -131,9 +131,9 @@ PyAttributeDef KX_SCA_EndObjectActuator::Attributes[] = {
{ NULL } //Sentinel
};
-PyObject* KX_SCA_EndObjectActuator::_getattr(const char *attr)
+PyObject* KX_SCA_EndObjectActuator::py_getattro(PyObject *attr)
{
- _getattr_up(SCA_IActuator);
+ py_getattro_up(SCA_IActuator);
}
/* eof */
diff --git a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
index 12118743f0a..2940246f443 100644
--- a/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_EndObjectActuator.h
@@ -64,7 +64,7 @@ class KX_SCA_EndObjectActuator : public SCA_IActuator
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
}; /* end of class KX_EditObjectActuator : public SCA_PropertyActuator */
diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
index 502990b2b27..38f8d581d55 100644
--- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.cpp
@@ -36,6 +36,7 @@
// Please look here for revision history.
#include "KX_SCA_ReplaceMeshActuator.h"
+#include "KX_MeshProxy.h"
#include "PyObjectPlus.h"
@@ -51,28 +52,27 @@
PyTypeObject
-KX_SCA_ReplaceMeshActuator::
-
-Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+KX_SCA_ReplaceMeshActuator::Type = {
+ PyObject_HEAD_INIT(NULL)
0,
"KX_SCA_ReplaceMeshActuator",
- sizeof(KX_SCA_ReplaceMeshActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0,
- __repr,
- 0,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_SCA_ReplaceMeshActuator::Parents[] = {
+ &KX_SCA_ReplaceMeshActuator::Type,
&SCA_IActuator::Type,
&SCA_ILogicBrick::Type,
&CValue::Type,
@@ -82,23 +82,48 @@ PyParentObject KX_SCA_ReplaceMeshActuator::Parents[] = {
PyMethodDef KX_SCA_ReplaceMeshActuator::Methods[] = {
- {"setMesh", (PyCFunction) KX_SCA_ReplaceMeshActuator::sPySetMesh, METH_O, (PY_METHODCHAR)SetMesh_doc},
-
KX_PYMETHODTABLE(KX_SCA_ReplaceMeshActuator, instantReplaceMesh),
+ // Deprecated ----->
+ {"setMesh", (PyCFunction) KX_SCA_ReplaceMeshActuator::sPySetMesh, METH_O, (PY_METHODCHAR)SetMesh_doc},
KX_PYMETHODTABLE(KX_SCA_ReplaceMeshActuator, getMesh),
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_SCA_ReplaceMeshActuator::Attributes[] = {
+ KX_PYATTRIBUTE_RW_FUNCTION("mesh", KX_SCA_ReplaceMeshActuator, pyattr_get_mesh, pyattr_set_mesh),
{ NULL } //Sentinel
};
-PyObject* KX_SCA_ReplaceMeshActuator::_getattr(const char *attr)
+PyObject* KX_SCA_ReplaceMeshActuator::py_getattro(PyObject *attr)
{
- _getattr_up(SCA_IActuator);
+ py_getattro_up(SCA_IActuator);
}
+int KX_SCA_ReplaceMeshActuator::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IActuator);
+}
+
+PyObject* KX_SCA_ReplaceMeshActuator::pyattr_get_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SCA_ReplaceMeshActuator* actuator = static_cast<KX_SCA_ReplaceMeshActuator*>(self);
+ if (!actuator->m_mesh)
+ Py_RETURN_NONE;
+ KX_MeshProxy* meshproxy = new KX_MeshProxy(actuator->m_mesh);
+ return meshproxy->NewProxy(true);
+}
+int KX_SCA_ReplaceMeshActuator::pyattr_set_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_SCA_ReplaceMeshActuator* actuator = static_cast<KX_SCA_ReplaceMeshActuator*>(self);
+ RAS_MeshObject* new_mesh;
+
+ if (!ConvertPythonToMesh(value, &new_mesh, true, "actuator.mesh = value: KX_SCA_ReplaceMeshActuator"))
+ return 1;
+
+ actuator->m_mesh = new_mesh;
+ return 0;
+}
/* 1. setMesh */
const char KX_SCA_ReplaceMeshActuator::SetMesh_doc[] =
@@ -106,25 +131,15 @@ const char KX_SCA_ReplaceMeshActuator::SetMesh_doc[] =
"\t- name: string or None\n"
"\tSet the mesh that will be substituted for the current one.\n";
-PyObject* KX_SCA_ReplaceMeshActuator::PySetMesh(PyObject* self, PyObject* value)
+PyObject* KX_SCA_ReplaceMeshActuator::PySetMesh(PyObject* value)
{
- if (value == Py_None) {
- m_mesh = NULL;
- } else {
- char* meshname = PyString_AsString(value);
- if (!meshname) {
- PyErr_SetString(PyExc_ValueError, "Expected the name of a mesh or None");
- return NULL;
- }
- void* mesh = SCA_ILogicBrick::m_sCurrentLogicManager->GetMeshByName(STR_String(meshname));
-
- if (mesh==NULL) {
- PyErr_SetString(PyExc_ValueError, "The mesh name given does not exist");
- return NULL;
- }
- m_mesh= (class RAS_MeshObject*)mesh;
- }
+ ShowDeprecationWarning("setMesh()", "the mesh property");
+ RAS_MeshObject* new_mesh;
+
+ if (!ConvertPythonToMesh(value, &new_mesh, true, "actuator.mesh = value: KX_SCA_ReplaceMeshActuator"))
+ return NULL;
+ m_mesh = new_mesh;
Py_RETURN_NONE;
}
@@ -133,6 +148,7 @@ KX_PYMETHODDEF_DOC(KX_SCA_ReplaceMeshActuator, getMesh,
"Returns the name of the mesh to be substituted.\n"
)
{
+ ShowDeprecationWarning("getMesh()", "the mesh property");
if (!m_mesh)
Py_RETURN_NONE;
diff --git a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
index 0ba60650683..7a18df2356d 100644
--- a/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
+++ b/source/gameengine/Ketsji/KX_SCA_ReplaceMeshActuator.h
@@ -69,9 +69,14 @@ class KX_SCA_ReplaceMeshActuator : public SCA_IActuator
virtual bool
Update();
- virtual PyObject* _getattr(const char *attr);
void InstantReplaceMesh();
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
+
+ static PyObject* pyattr_get_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_mesh(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
/* 1. setMesh */
KX_PYMETHOD_DOC_O(KX_SCA_ReplaceMeshActuator,SetMesh);
KX_PYMETHOD_DOC(KX_SCA_ReplaceMeshActuator,getMesh);
diff --git a/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp b/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp
index 151270cbd68..0e7571031e8 100644
--- a/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp
+++ b/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp
@@ -57,7 +57,8 @@ New(Bone* bone
KX_BoneParentRelation::
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
){
MT_assert(child != NULL);
@@ -67,6 +68,8 @@ UpdateChildCoordinates(
const MT_Vector3 & child_scale = child->GetLocalScale();
const MT_Point3 & child_pos = child->GetLocalPosition();
const MT_Matrix3x3 & child_rotation = child->GetLocalOrientation();
+ // we don't know if the armature has been updated or not, assume yes
+ parentUpdated = true;
// the childs world locations which we will update.
@@ -122,7 +125,7 @@ UpdateChildCoordinates(
else {
child->SetWorldFromLocalTransform();
}
-
+ child->SetModified(false);
return valid_parent_transform;
}
diff --git a/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.h b/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.h
index 2a19d8a1784..c9baf228855 100644
--- a/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.h
+++ b/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.h
@@ -82,7 +82,8 @@ public :
bool
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
);
/**
diff --git a/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp b/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp
index 0729ec8a902..c3b0c21c8e0 100644
--- a/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp
+++ b/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp
@@ -51,13 +51,20 @@ New(
KX_NormalParentRelation::
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
){
MT_assert(child != NULL);
+ if (!parentUpdated && !child->IsModified())
+ return false;
+
+ parentUpdated = true;
+
if (parent==NULL) { /* Simple case */
child->SetWorldFromLocalTransform();
- return false;
+ child->SetModified(false);
+ return true; //false;
}
else {
// the childs world locations which we will update.
@@ -68,6 +75,7 @@ UpdateChildCoordinates(
child->SetWorldScale(p_world_scale * child->GetLocalScale());
child->SetWorldOrientation(p_world_rotation * child->GetLocalOrientation());
child->SetWorldPosition(p_world_pos + p_world_scale * (p_world_rotation * child->GetLocalPosition()));
+ child->SetModified(false);
return true;
}
}
@@ -112,10 +120,15 @@ New(
KX_VertexParentRelation::
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
){
MT_assert(child != NULL);
+
+ if (!parentUpdated && !child->IsModified())
+ return false;
+
child->SetWorldScale(child->GetLocalScale());
if (parent)
@@ -124,7 +137,8 @@ UpdateChildCoordinates(
child->SetWorldPosition(child->GetLocalPosition());
child->SetWorldOrientation(child->GetLocalOrientation());
- return parent != NULL;
+ child->SetModified(false);
+ return true; //parent != NULL;
}
/**
@@ -172,10 +186,14 @@ New(
KX_SlowParentRelation::
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
){
MT_assert(child != NULL);
+ // the child will move even if the parent is not
+ parentUpdated = true;
+
const MT_Vector3 & child_scale = child->GetLocalScale();
const MT_Point3 & child_pos = child->GetLocalPosition();
const MT_Matrix3x3 & child_rotation = child->GetLocalOrientation();
@@ -217,23 +235,12 @@ UpdateChildCoordinates(
// now 'interpolate' the normal coordinates with the last
// world coordinates to get the new world coordinates.
- // problem 1:
- // The child world scale needs to be initialized in some way for this
- // to make sense
- // problem 2:
- // This is way of doing interpolation is nonsense
-
- int i;
-
MT_Scalar weight = MT_Scalar(1)/(m_relax + 1);
- for (i=0;i <3 ;i++) {
- child_w_scale[i] = (m_relax * child_w_scale[i] + child_n_scale[i]) * weight;
- child_w_pos[i] = (m_relax * child_w_pos[i] + child_n_pos[i]) * weight;
- child_w_rotation[0][i] = (m_relax * child_w_rotation[0][i] + child_n_rotation[0][i]) * weight;
- child_w_rotation[1][i] = (m_relax * child_w_rotation[1][i] + child_n_rotation[1][i]) * weight;
- child_w_rotation[2][i] = (m_relax * child_w_rotation[2][i] + child_n_rotation[2][i]) * weight;
- }
-
+ child_w_scale = (m_relax * child_w_scale + child_n_scale) * weight;
+ child_w_pos = (m_relax * child_w_pos + child_n_pos) * weight;
+ // for rotation we must go through quaternion
+ MT_Quaternion child_w_quat = child_w_rotation.getRotation().slerp(child_n_rotation.getRotation(), weight);
+ child_w_rotation.setRotation(child_w_quat);
//FIXME: update physics controller.
} else {
child_w_scale = child_n_scale;
@@ -252,8 +259,9 @@ UpdateChildCoordinates(
child->SetWorldScale(child_w_scale);
child->SetWorldPosition(child_w_pos);
child->SetWorldOrientation(child_w_rotation);
+ child->SetModified(false);
- return parent != NULL;
+ return true; //parent != NULL;
}
/**
diff --git a/source/gameengine/Ketsji/KX_SG_NodeRelationships.h b/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
index faa650106c8..d8fb9211f21 100644
--- a/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
+++ b/source/gameengine/Ketsji/KX_SG_NodeRelationships.h
@@ -71,7 +71,8 @@ public :
bool
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
);
/**
@@ -115,7 +116,8 @@ public :
bool
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
);
/**
@@ -166,7 +168,8 @@ public :
bool
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
);
/**
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index 0fded15f1a1..aa7bd65f240 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -32,7 +32,6 @@
#pragma warning (disable : 4786)
#endif //WIN32
-
#include "KX_Scene.h"
#include "MT_assert.h"
@@ -77,7 +76,9 @@
#include "NG_NetworkScene.h"
#include "PHY_IPhysicsEnvironment.h"
#include "KX_IPhysicsController.h"
+#include "PHY_IGraphicController.h"
#include "KX_BlenderSceneConverter.h"
+#include "KX_MotionState.h"
#include "BL_ShapeDeformer.h"
#include "BL_DeformableGameObject.h"
@@ -90,6 +91,8 @@
#include "CcdPhysicsController.h"
#endif
+#include "KX_Light.h"
+
void* KX_SceneReplicationFunc(SG_IObject* node,void* gameobj,void* scene)
{
KX_GameObject* replica = ((KX_Scene*)scene)->AddNodeReplicaObject(node,(KX_GameObject*)gameobj);
@@ -134,6 +137,8 @@ KX_Scene::KX_Scene(class SCA_IInputDevice* keyboarddevice,
m_suspendedtime = 0.0;
m_suspendeddelta = 0.0;
+ m_dbvt_culling = false;
+ m_dbvt_occlusion_res = 0;
m_activity_culling = false;
m_suspend = false;
m_isclearingZbuffer = true;
@@ -191,7 +196,7 @@ KX_Scene::KX_Scene(class SCA_IInputDevice* keyboarddevice,
m_canvasDesignWidth = 0;
m_canvasDesignHeight = 0;
- m_attrlist = PyDict_New(); /* new ref */
+ m_attr_dict = PyDict_New(); /* new ref */
}
@@ -245,7 +250,8 @@ KX_Scene::~KX_Scene()
{
delete m_bucketmanager;
}
- //Py_DECREF(m_attrlist);
+ PyDict_Clear(m_attr_dict);
+ Py_DECREF(m_attr_dict);
}
void KX_Scene::SetProjectionMatrix(MT_CmMatrix4x4& pmat)
@@ -408,6 +414,13 @@ void KX_Scene::RemoveNodeDestructObject(class SG_IObject* node,class CValue* gam
// will in any case be deleted. This ensures that the object will not try to use the node
// when it is finally deleted (see KX_GameObject destructor)
orgobj->SetSGNode(NULL);
+ PHY_IGraphicController* ctrl = orgobj->GetGraphicController();
+ if (ctrl)
+ {
+ // a graphic controller is set, we must delete it as the node will be deleted
+ delete ctrl;
+ orgobj->SetGraphicController(NULL);
+ }
}
if (node)
delete node;
@@ -486,7 +499,14 @@ KX_GameObject* KX_Scene::AddNodeReplicaObject(class SG_IObject* node, class CVal
replicanode->AddSGController(replicacontroller);
}
}
-
+ // replicate graphic controller
+ if (orgobj->GetGraphicController())
+ {
+ PHY_IMotionState* motionstate = new KX_MotionState(newobj->GetSGNode());
+ PHY_IGraphicController* newctrl = orgobj->GetGraphicController()->GetReplica(motionstate);
+ newctrl->setNewClientInfo(newobj->getClientInfo());
+ newobj->SetGraphicController(newctrl);
+ }
return newobj;
}
@@ -698,9 +718,9 @@ void KX_Scene::DupliGroupRecurse(CValue* obj, int level)
MT_Matrix3x3 newori = groupobj->NodeGetWorldOrientation() * gameobj->NodeGetWorldOrientation();
replica->NodeSetLocalOrientation(newori);
-
+ MT_Point3 offset(group->dupli_ofs);
MT_Point3 newpos = groupobj->NodeGetWorldPosition() +
- newscale*(groupobj->NodeGetWorldOrientation() * gameobj->NodeGetWorldPosition());
+ newscale*(groupobj->NodeGetWorldOrientation() * (gameobj->NodeGetWorldPosition()-offset));
replica->NodeSetLocalPosition(newpos);
replica->GetSGNode()->UpdateWorldData(0);
@@ -725,6 +745,12 @@ void KX_Scene::DupliGroupRecurse(CValue* obj, int level)
(*git)->Relink(&m_map_gameobject_to_replica);
// add the object in the layer of the parent
(*git)->SetLayer(groupobj->GetLayer());
+ // If the object was a light, we need to update it's RAS_LightObject as well
+ if ((*git)->IsLight())
+ {
+ KX_LightObject* lightobj = static_cast<KX_LightObject*>(*git);
+ lightobj->GetLightData()->m_layer = groupobj->GetLayer();
+ }
}
// replicate crosslinks etc. between logic bricks
@@ -793,6 +819,24 @@ SCA_IObject* KX_Scene::AddReplicaObject(class CValue* originalobject,
replica->GetSGNode()->AddChild(childreplicanode);
}
+ // At this stage all the objects in the hierarchy have been duplicated,
+ // we can update the scenegraph, we need it for the duplication of logic
+ MT_Point3 newpos = ((KX_GameObject*) parentobject)->NodeGetWorldPosition();
+ replica->NodeSetLocalPosition(newpos);
+
+ MT_Matrix3x3 newori = ((KX_GameObject*) parentobject)->NodeGetWorldOrientation();
+ replica->NodeSetLocalOrientation(newori);
+
+ // get the rootnode's scale
+ MT_Vector3 newscale = parentobj->GetSGNode()->GetRootSGParent()->GetLocalScale();
+
+ // set the replica's relative scale with the rootnode's scale
+ replica->NodeSetRelativeScale(newscale);
+
+ replica->GetSGNode()->UpdateWorldData(0);
+ replica->GetSGNode()->SetBBox(originalobj->GetSGNode()->BBox());
+ replica->GetSGNode()->SetRadius(originalobj->GetSGNode()->Radius());
+
// now replicate logic
vector<KX_GameObject*>::iterator git;
for (git = m_logicHierarchicalGameObjects.begin();!(git==m_logicHierarchicalGameObjects.end());++git)
@@ -807,6 +851,12 @@ SCA_IObject* KX_Scene::AddReplicaObject(class CValue* originalobject,
(*git)->Relink(&m_map_gameobject_to_replica);
// add the object in the layer of the parent
(*git)->SetLayer(parentobj->GetLayer());
+ // If the object was a light, we need to update it's RAS_LightObject as well
+ if ((*git)->IsLight())
+ {
+ KX_LightObject* lightobj = static_cast<KX_LightObject*>(*git);
+ lightobj->GetLightData()->m_layer = parentobj->GetLayer();
+ }
}
// replicate crosslinks etc. between logic bricks
@@ -815,21 +865,6 @@ SCA_IObject* KX_Scene::AddReplicaObject(class CValue* originalobject,
ReplicateLogic((*git));
}
- MT_Point3 newpos = ((KX_GameObject*) parentobject)->NodeGetWorldPosition();
- replica->NodeSetLocalPosition(newpos);
-
- MT_Matrix3x3 newori = ((KX_GameObject*) parentobject)->NodeGetWorldOrientation();
- replica->NodeSetLocalOrientation(newori);
-
- // get the rootnode's scale
- MT_Vector3 newscale = parentobj->GetSGNode()->GetRootSGParent()->GetLocalScale();
-
- // set the replica's relative scale with the rootnode's scale
- replica->NodeSetRelativeScale(newscale);
-
- replica->GetSGNode()->UpdateWorldData(0);
- replica->GetSGNode()->SetBBox(originalobj->GetSGNode()->BBox());
- replica->GetSGNode()->SetRadius(originalobj->GetSGNode()->Radius());
// check if there are objects with dupligroup in the hierarchy
vector<KX_GameObject*> duplilist;
for (git = m_logicHierarchicalGameObjects.begin();!(git==m_logicHierarchicalGameObjects.end());++git)
@@ -937,7 +972,7 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
newobj->RemoveMeshes();
ret = 1;
- if (m_lightlist->RemoveValue(newobj)) // TODO - use newobj->IsLight() test when its merged in from apricot. - Campbell
+ if (newobj->IsLight() && m_lightlist->RemoveValue(newobj))
ret = newobj->Release();
if (m_objectlist->RemoveValue(newobj))
ret = newobj->Release();
@@ -963,6 +998,7 @@ int KX_Scene::NewRemoveObject(class CValue* gameobj)
if (m_sceneConverter)
m_sceneConverter->UnregisterGameObject(newobj);
// return value will be 0 if the object is actually deleted (all reference gone)
+
return ret;
}
@@ -1164,7 +1200,6 @@ void KX_Scene::UpdateMeshTransformations()
{
KX_GameObject* gameobj = (KX_GameObject*)m_objectlist->GetValue(i);
gameobj->GetOpenGLMatrix();
-// gameobj->UpdateNonDynas();
}
}
@@ -1299,21 +1334,47 @@ void KX_Scene::MarkVisible(RAS_IRasterizer* rasty, KX_GameObject* gameobj,KX_Cam
}
}
+void KX_Scene::PhysicsCullingCallback(KX_ClientObjectInfo* objectInfo, void* cullingInfo)
+{
+ KX_GameObject* gameobj = objectInfo->m_gameobject;
+ if (!gameobj->GetVisible())
+ // ideally, invisible objects should be removed from the culling tree temporarily
+ return;
+ if(((CullingInfo*)cullingInfo)->m_layer && !(gameobj->GetLayer() & ((CullingInfo*)cullingInfo)->m_layer))
+ // used for shadow: object is not in shadow layer
+ return;
+
+ // make object visible
+ gameobj->SetCulled(false);
+ gameobj->UpdateBuckets(false);
+}
+
void KX_Scene::CalculateVisibleMeshes(RAS_IRasterizer* rasty,KX_Camera* cam, int layer)
{
-// FIXME: When tree is operational
-#if 1
- // do this incrementally in the future
- for (int i = 0; i < m_objectlist->GetCount(); i++)
+ bool dbvt_culling = false;
+ if (m_dbvt_culling)
{
- MarkVisible(rasty, static_cast<KX_GameObject*>(m_objectlist->GetValue(i)), cam, layer);
+ // test culling through Bullet
+ PHY__Vector4 planes[6];
+ // get the clip planes
+ MT_Vector4* cplanes = cam->GetNormalizedClipPlanes();
+ // and convert
+ planes[0].setValue(cplanes[4].getValue()); // near
+ planes[1].setValue(cplanes[5].getValue()); // far
+ planes[2].setValue(cplanes[0].getValue()); // left
+ planes[3].setValue(cplanes[1].getValue()); // right
+ planes[4].setValue(cplanes[2].getValue()); // top
+ planes[5].setValue(cplanes[3].getValue()); // bottom
+ CullingInfo info(layer);
+ dbvt_culling = m_physicsEnvironment->cullingTest(PhysicsCullingCallback,&info,planes,5,m_dbvt_occlusion_res);
+ }
+ if (!dbvt_culling) {
+ // the physics engine couldn't help us, do it the hard way
+ for (int i = 0; i < m_objectlist->GetCount(); i++)
+ {
+ MarkVisible(rasty, static_cast<KX_GameObject*>(m_objectlist->GetValue(i)), cam, layer);
+ }
}
-#else
- if (cam->GetFrustumCulling())
- MarkVisible(m_objecttree, rasty, cam, layer);
- else
- MarkSubTreeVisible(m_objecttree, rasty, true, cam, layer);
-#endif
}
// logic stuff
@@ -1394,7 +1455,7 @@ void KX_Scene::UpdateParents(double curtime)
for (int i=0; i<GetRootParentList()->GetCount(); i++)
{
KX_GameObject* parentobj = (KX_GameObject*)GetRootParentList()->GetValue(i);
- parentobj->NodeUpdateGS(curtime,true);
+ parentobj->NodeUpdateGS(curtime);
}
}
@@ -1518,22 +1579,22 @@ double KX_Scene::getSuspendedDelta()
//Python
PyTypeObject KX_Scene::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_Scene",
- sizeof(KX_Scene),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0, 0, 0, 0, 0, 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_Scene::Parents[] = {
@@ -1551,52 +1612,102 @@ PyMethodDef KX_Scene::Methods[] = {
{NULL,NULL} //Sentinel
};
+PyObject* KX_Scene::pyattr_get_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self= static_cast<KX_Scene*>(self_v);
+ return PyString_FromString(self->GetName().ReadPtr());
+}
+
+PyObject* KX_Scene::pyattr_get_objects(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self= static_cast<KX_Scene*>(self_v);
+ return self->GetObjectList()->GetProxy();
+}
+
+PyObject* KX_Scene::pyattr_get_active_camera(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self= static_cast<KX_Scene*>(self_v);
+ return self->GetActiveCamera()->GetProxy();
+}
+
+/* __dict__ only for the purpose of giving useful dir() results */
+PyObject* KX_Scene::pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_Scene* self= static_cast<KX_Scene*>(self_v);
+ /* Useually done by py_getattro_up but in this case we want to include m_attr_dict dict */
+ PyObject *dict_str= PyString_FromString("__dict__");
+ PyObject *dict= py_getattr_dict(self->PyObjectPlus::py_getattro(dict_str), Type.tp_dict);
+ Py_DECREF(dict_str);
+
+ PyDict_Update(dict, self->m_attr_dict);
+ return dict;
+}
+
PyAttributeDef KX_Scene::Attributes[] = {
+ KX_PYATTRIBUTE_RO_FUNCTION("name", KX_Scene, pyattr_get_name),
+ KX_PYATTRIBUTE_RO_FUNCTION("objects", KX_Scene, pyattr_get_objects),
+ KX_PYATTRIBUTE_RO_FUNCTION("active_camera", KX_Scene, pyattr_get_active_camera),
+ KX_PYATTRIBUTE_BOOL_RO("suspended", KX_Scene, m_suspend),
+ KX_PYATTRIBUTE_BOOL_RO("activity_culling", KX_Scene, m_activity_culling),
+ KX_PYATTRIBUTE_FLOAT_RW("activity_culling_radius", 0.5f, FLT_MAX, KX_Scene, m_activity_box_radius),
+ KX_PYATTRIBUTE_BOOL_RO("dbvt_culling", KX_Scene, m_dbvt_culling),
+ KX_PYATTRIBUTE_RO_FUNCTION("__dict__", KX_Scene, pyattr_get_dir_dict),
{ NULL } //Sentinel
};
-PyObject* KX_Scene::_getattr(const char *attr)
+
+PyObject* KX_Scene::py_getattro__internal(PyObject *attr)
+{
+ py_getattro_up(PyObjectPlus);
+}
+
+int KX_Scene::py_setattro__internal(PyObject *attr, PyObject *pyvalue)
{
- if (!strcmp(attr, "name"))
- return PyString_FromString(GetName());
-
- if (!strcmp(attr, "objects"))
- return (PyObject*) m_objectlist->AddRef();
-
- if (!strcmp(attr, "active_camera"))
- return (PyObject*) GetActiveCamera()->AddRef();
-
- if (!strcmp(attr, "suspended"))
- return PyInt_FromLong(m_suspend);
-
- if (!strcmp(attr, "activity_culling"))
- return PyInt_FromLong(m_activity_culling);
-
- if (!strcmp(attr, "activity_culling_radius"))
- return PyFloat_FromDouble(m_activity_box_radius);
+ return PyObjectPlus::py_setattro(attr, pyvalue);
+}
+
+PyObject* KX_Scene::py_getattro(PyObject *attr)
+{
+ PyObject *object = py_getattro__internal(attr);
- PyObject* value = PyDict_GetItemString(m_attrlist, attr);
- if (value)
+ if (object==NULL)
{
- Py_INCREF(value);
- return value;
+ PyErr_Clear();
+ object = PyDict_GetItem(m_attr_dict, attr);
+ if(object) {
+ Py_INCREF(object);
+ }
+ else {
+ PyErr_Format(PyExc_AttributeError, "value = scene.myAttr: KX_Scene, attribute \"%s\" not found", PyString_AsString(attr));
+ }
}
- _getattr_up(PyObjectPlus);
+ return object;
}
-int KX_Scene::_delattr(const char *attr)
+
+int KX_Scene::py_setattro(PyObject *attr, PyObject *value)
{
- PyDict_DelItemString(m_attrlist, attr);
- return 0;
+ int ret= py_setattro__internal(attr, value);
+
+ if (ret==PY_SET_ATTR_MISSING) {
+ if (PyDict_SetItem(m_attr_dict, attr, value)==0) {
+ PyErr_Clear();
+ ret= PY_SET_ATTR_SUCCESS;
+ }
+ else {
+ PyErr_SetString(PyExc_AttributeError, "scene.UserAttr = value: KX_Scenes, failed assigning value to internal dictionary");
+ ret= PY_SET_ATTR_FAIL;
+ }
+ }
+
+ return ret;
}
-int KX_Scene::_setattr(const char *attr, PyObject *pyvalue)
+int KX_Scene::py_delattro(PyObject *attr)
{
- if (!PyDict_SetItemString(m_attrlist, attr, pyvalue))
- return 0;
-
- return PyObjectPlus::_setattr(attr, pyvalue);
+ PyDict_DelItem(m_attr_dict, attr);
+ return 0;
}
KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getLightList,
@@ -1604,7 +1715,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getLightList,
"Returns a list of all lights in the scene.\n"
)
{
- return (PyObject*) m_lightlist->AddRef();
+ return m_lightlist->GetProxy();
}
KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getObjectList,
@@ -1613,7 +1724,7 @@ KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getObjectList,
)
{
// ShowDeprecationWarning("getObjectList()", "the objects property"); // XXX Grr, why doesnt this work?
- return (PyObject*) m_objectlist->AddRef();
+ return m_objectlist->GetProxy();
}
KX_PYMETHODDEF_DOC_NOARGS(KX_Scene, getName,
@@ -1633,15 +1744,14 @@ KX_PYMETHODDEF_DOC(KX_Scene, addObject,
int time = 0;
- if (!PyArg_ParseTuple(args, "OO|i", &pyob, &pyother, &time))
+ if (!PyArg_ParseTuple(args, "OO|i:addObject", &pyob, &pyother, &time))
return NULL;
- if (!ConvertPythonToGameObject(pyob, &ob, false)
- || !ConvertPythonToGameObject(pyother, &other, false))
+ if ( !ConvertPythonToGameObject(pyob, &ob, false, "scene.addObject(object, other, time): KX_Scene (first argument)") ||
+ !ConvertPythonToGameObject(pyother, &other, false, "scene.addObject(object, other, time): KX_Scene (second argument)") )
return NULL;
SCA_IObject* replica = AddReplicaObject((SCA_IObject*)ob, other, time);
- replica->AddRef();
- return replica;
+ return replica->GetProxy();
} \ No newline at end of file
diff --git a/source/gameengine/Ketsji/KX_Scene.h b/source/gameengine/Ketsji/KX_Scene.h
index 962db1a9b96..a06c66ec5dd 100644
--- a/source/gameengine/Ketsji/KX_Scene.h
+++ b/source/gameengine/Ketsji/KX_Scene.h
@@ -85,6 +85,8 @@ class RAS_IRenderTools;
class SCA_JoystickManager;
class btCollisionShape;
class KX_BlenderSceneConverter;
+struct KX_ClientObjectInfo;
+
/**
* The KX_Scene holds all data for an independent scene. It relates
* KX_Objects to the specific objects in the modules.
@@ -92,6 +94,12 @@ class KX_BlenderSceneConverter;
class KX_Scene : public PyObjectPlus, public SCA_IScene
{
Py_Header;
+
+ struct CullingInfo {
+ int m_layer;
+ CullingInfo(int layer) : m_layer(layer) {}
+ };
+
protected:
RAS_BucketManager* m_bucketmanager;
CListValue* m_tempObjectList;
@@ -252,6 +260,16 @@ protected:
bool m_activity_culling;
/**
+ * Toggle to enable or disable culling via DBVT broadphase of Bullet.
+ */
+ bool m_dbvt_culling;
+
+ /**
+ * Occlusion culling resolution
+ */
+ int m_dbvt_occlusion_res;
+
+ /**
* The framing settings used by this scene
*/
@@ -269,6 +287,7 @@ protected:
void MarkVisible(SG_Tree *node, RAS_IRasterizer* rasty, KX_Camera*cam,int layer=0);
void MarkSubTreeVisible(SG_Tree *node, RAS_IRasterizer* rasty, bool visible, KX_Camera*cam,int layer=0);
void MarkVisible(RAS_IRasterizer* rasty, KX_GameObject* gameobj, KX_Camera*cam, int layer=0);
+ static void PhysicsCullingCallback(KX_ClientObjectInfo* objectInfo, void* cullingInfo);
double m_suspendedtime;
double m_suspendeddelta;
@@ -276,7 +295,7 @@ protected:
/**
* This stores anything from python
*/
- PyObject* m_attrlist;
+ PyObject* m_attr_dict;
struct Scene* m_blenderScene;
@@ -530,6 +549,11 @@ public:
bool IsSuspended();
bool IsClearingZBuffer();
void EnableZBufferClearing(bool isclearingZbuffer);
+ // use of DBVT tree for camera culling
+ void SetDbvtCulling(bool b) { m_dbvt_culling = b; };
+ bool GetDbvtCulling() { return m_dbvt_culling; };
+ void SetDbvtOcclusionRes(int i) { m_dbvt_occlusion_res = i; };
+ int GetDbvtOcclusionRes() { return m_dbvt_occlusion_res; };
void SetSceneConverter(class KX_BlenderSceneConverter* sceneConverter);
@@ -565,11 +589,22 @@ public:
KX_PYMETHOD_DOC(KX_Scene, setSceneViewport);
*/
- virtual PyObject* _getattr(const char *attr); /* name, active_camera, gravity, suspended, viewport, framing, activity_culling, activity_culling_radius */
- virtual int _setattr(const char *attr, PyObject *pyvalue);
- virtual int _delattr(const char *attr);
- virtual PyObject* _repr(void) { return PyString_FromString(GetName().ReadPtr()); }
+ /* attributes */
+ static PyObject* pyattr_get_name(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_objects(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_active_camera(void* self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+ /* for dir(), python3 uses __dir__() */
+ static PyObject* pyattr_get_dir_dict(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+
+ virtual PyObject* py_getattro(PyObject *attr); /* name, active_camera, gravity, suspended, viewport, framing, activity_culling, activity_culling_radius */
+ virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
+ virtual int py_delattro(PyObject *attr);
+ virtual PyObject* py_repr(void) { return PyString_FromString(GetName().ReadPtr()); }
+ PyObject* py_getattro__internal(PyObject *attr);
+ int py_setattro__internal(PyObject *attr, PyObject *pyvalue);
/**
* Sets the time the scene was suspended
diff --git a/source/gameengine/Ketsji/KX_SceneActuator.cpp b/source/gameengine/Ketsji/KX_SceneActuator.cpp
index 1cad4e21352..f54d8542260 100644
--- a/source/gameengine/Ketsji/KX_SceneActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SceneActuator.cpp
@@ -226,22 +226,22 @@ KX_Scene* KX_SceneActuator::FindScene(char * sceneName)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_SceneActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_SceneActuator",
- sizeof(KX_SceneActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -259,24 +259,93 @@ PyParentObject KX_SceneActuator::Parents[] =
PyMethodDef KX_SceneActuator::Methods[] =
{
+ //Deprecated functions ------>
{"setUseRestart", (PyCFunction) KX_SceneActuator::sPySetUseRestart, METH_VARARGS, (PY_METHODCHAR)SetUseRestart_doc},
{"setScene", (PyCFunction) KX_SceneActuator::sPySetScene, METH_VARARGS, (PY_METHODCHAR)SetScene_doc},
{"setCamera", (PyCFunction) KX_SceneActuator::sPySetCamera, METH_VARARGS, (PY_METHODCHAR)SetCamera_doc},
- {"getUseRestart", (PyCFunction) KX_SceneActuator::sPyGetUseRestart, METH_VARARGS, (PY_METHODCHAR)GetUseRestart_doc},
- {"getScene", (PyCFunction) KX_SceneActuator::sPyGetScene, METH_VARARGS, (PY_METHODCHAR)GetScene_doc},
- {"getCamera", (PyCFunction) KX_SceneActuator::sPyGetCamera, METH_VARARGS, (PY_METHODCHAR)GetCamera_doc},
+ {"getUseRestart", (PyCFunction) KX_SceneActuator::sPyGetUseRestart, METH_NOARGS, (PY_METHODCHAR)GetUseRestart_doc},
+ {"getScene", (PyCFunction) KX_SceneActuator::sPyGetScene, METH_NOARGS, (PY_METHODCHAR)GetScene_doc},
+ {"getCamera", (PyCFunction) KX_SceneActuator::sPyGetCamera, METH_NOARGS, (PY_METHODCHAR)GetCamera_doc},
+ //<----- Deprecated
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_SceneActuator::Attributes[] = {
+ KX_PYATTRIBUTE_STRING_RW("scene",0,32,true,KX_SceneActuator,m_nextSceneName),
+ KX_PYATTRIBUTE_RW_FUNCTION("camera",KX_SceneActuator,pyattr_get_camera,pyattr_set_camera),
{ NULL } //Sentinel
};
-PyObject* KX_SceneActuator::_getattr(const char *attr)
+PyObject* KX_SceneActuator::py_getattro(PyObject *attr)
{
- _getattr_up(SCA_IActuator);
+ py_getattro_up(SCA_IActuator);
}
+int KX_SceneActuator::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_IActuator);
+}
+
+PyObject* KX_SceneActuator::pyattr_get_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SceneActuator* actuator = static_cast<KX_SceneActuator*>(self);
+ if (!actuator->m_camera)
+ Py_RETURN_NONE;
+
+ return actuator->m_camera->GetProxy();
+}
+
+int KX_SceneActuator::pyattr_set_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_SceneActuator* actuator = static_cast<KX_SceneActuator*>(self);
+ KX_Camera *camOb;
+
+ if(value==Py_None)
+ {
+ if (actuator->m_camera)
+ actuator->m_camera->UnregisterActuator(actuator);
+
+ actuator->m_camera= NULL;
+ return 0;
+ }
+
+ if (PyObject_TypeCheck(value, &KX_Camera::Type))
+ {
+ KX_Camera *camOb= static_cast<KX_Camera*>BGE_PROXY_REF(value);
+
+ if(camOb==NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ return 1;
+ }
+
+ if (actuator->m_camera)
+ actuator->m_camera->UnregisterActuator(actuator);
+
+ actuator->m_camera = camOb;
+ actuator->m_camera->RegisterActuator(actuator);
+ return 0;
+ }
+
+ if (PyString_Check(value))
+ {
+ char *camName = PyString_AsString(value);
+
+ camOb = actuator->FindCamera(camName);
+ if (camOb)
+ {
+ if (actuator->m_camera)
+ actuator->m_camera->UnregisterActuator(actuator);
+ actuator->m_camera = camOb;
+ actuator->m_camera->RegisterActuator(actuator);
+ return 0;
+ }
+ PyErr_SetString(PyExc_TypeError, "not a valid camera name");
+ return 1;
+ }
+ PyErr_SetString(PyExc_TypeError, "expected a string or a camera object reference");
+ return 1;
+}
/* 2. setUseRestart--------------------------------------------------------- */
@@ -284,13 +353,12 @@ const char KX_SceneActuator::SetUseRestart_doc[] =
"setUseRestart(flag)\n"
"\t- flag: 0 or 1.\n"
"\tSet flag to 1 to restart the scene.\n" ;
-PyObject* KX_SceneActuator::PySetUseRestart(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_SceneActuator::PySetUseRestart(PyObject* args)
{
+ ShowDeprecationWarning("setUseRestart()", "(no replacement)");
int boolArg;
- if (!PyArg_ParseTuple(args, "i", &boolArg))
+ if (!PyArg_ParseTuple(args, "i:setUseRestart", &boolArg))
{
return NULL;
}
@@ -306,10 +374,9 @@ PyObject* KX_SceneActuator::PySetUseRestart(PyObject* self,
const char KX_SceneActuator::GetUseRestart_doc[] =
"getUseRestart()\n"
"\tReturn whether the scene will be restarted.\n" ;
-PyObject* KX_SceneActuator::PyGetUseRestart(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_SceneActuator::PyGetUseRestart()
{
+ ShowDeprecationWarning("getUseRestart()", "(no replacement)");
return PyInt_FromLong(!(m_restart == 0));
}
@@ -320,14 +387,13 @@ const char KX_SceneActuator::SetScene_doc[] =
"setScene(scene)\n"
"\t- scene: string\n"
"\tSet the name of scene the actuator will switch to.\n" ;
-PyObject* KX_SceneActuator::PySetScene(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_SceneActuator::PySetScene(PyObject* args)
{
+ ShowDeprecationWarning("setScene()", "the scene property");
/* one argument: a scene, ignore the rest */
char *scene_name;
- if(!PyArg_ParseTuple(args, "s", &scene_name))
+ if(!PyArg_ParseTuple(args, "s:setScene", &scene_name))
{
return NULL;
}
@@ -344,10 +410,9 @@ PyObject* KX_SceneActuator::PySetScene(PyObject* self,
const char KX_SceneActuator::GetScene_doc[] =
"getScene()\n"
"\tReturn the name of the scene the actuator wants to switch to.\n" ;
-PyObject* KX_SceneActuator::PyGetScene(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_SceneActuator::PyGetScene()
{
+ ShowDeprecationWarning("getScene()", "the scene property");
return PyString_FromString(m_nextSceneName);
}
@@ -358,25 +423,34 @@ const char KX_SceneActuator::SetCamera_doc[] =
"setCamera(camera)\n"
"\t- camera: string\n"
"\tSet the camera to switch to.\n" ;
-PyObject* KX_SceneActuator::PySetCamera(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_SceneActuator::PySetCamera(PyObject* args)
{
+ ShowDeprecationWarning("setCamera()", "the camera property");
PyObject *cam;
- if (PyArg_ParseTuple(args, "O!", &KX_Camera::Type, &cam))
+ if (PyArg_ParseTuple(args, "O!:setCamera", &KX_Camera::Type, &cam))
{
+ KX_Camera *new_camera;
+
+ new_camera = static_cast<KX_Camera*>BGE_PROXY_REF(cam);
+ if(new_camera==NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, BGE_PROXY_ERROR_MSG);
+ return NULL;
+ }
+
if (m_camera)
m_camera->UnregisterActuator(this);
- m_camera = (KX_Camera*) cam;
- if (m_camera)
- m_camera->RegisterActuator(this);
+
+ m_camera= new_camera;
+
+ m_camera->RegisterActuator(this);
Py_RETURN_NONE;
}
PyErr_Clear();
/* one argument: a scene, ignore the rest */
char *camName;
- if(!PyArg_ParseTuple(args, "s", &camName))
+ if(!PyArg_ParseTuple(args, "s:setCamera", &camName))
{
return NULL;
}
@@ -399,10 +473,14 @@ PyObject* KX_SceneActuator::PySetCamera(PyObject* self,
const char KX_SceneActuator::GetCamera_doc[] =
"getCamera()\n"
"\tReturn the name of the camera to switch to.\n" ;
-PyObject* KX_SceneActuator::PyGetCamera(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_SceneActuator::PyGetCamera()
{
- return PyString_FromString(m_camera->GetName());
+ ShowDeprecationWarning("getCamera()", "the camera property");
+ if (m_camera) {
+ return PyString_FromString(m_camera->GetName());
+ }
+ else {
+ Py_RETURN_NONE;
+ }
}
/* eof */
diff --git a/source/gameengine/Ketsji/KX_SceneActuator.h b/source/gameengine/Ketsji/KX_SceneActuator.h
index af11af955bf..803c5106a60 100644
--- a/source/gameengine/Ketsji/KX_SceneActuator.h
+++ b/source/gameengine/Ketsji/KX_SceneActuator.h
@@ -92,24 +92,28 @@ class KX_SceneActuator : public SCA_IActuator
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
/* 1. set */
/* Removed */
/* 2. setUseRestart: */
- KX_PYMETHOD_DOC(KX_SceneActuator,SetUseRestart);
+ KX_PYMETHOD_DOC_VARARGS(KX_SceneActuator,SetUseRestart);
/* 3. getUseRestart: */
- KX_PYMETHOD_DOC(KX_SceneActuator,GetUseRestart);
+ KX_PYMETHOD_DOC_NOARGS(KX_SceneActuator,GetUseRestart);
/* 4. setScene: */
- KX_PYMETHOD_DOC(KX_SceneActuator,SetScene);
+ KX_PYMETHOD_DOC_VARARGS(KX_SceneActuator,SetScene);
/* 5. getScene: */
- KX_PYMETHOD_DOC(KX_SceneActuator,GetScene);
+ KX_PYMETHOD_DOC_NOARGS(KX_SceneActuator,GetScene);
/* 6. setCamera: */
- KX_PYMETHOD_DOC(KX_SceneActuator,SetCamera);
+ KX_PYMETHOD_DOC_VARARGS(KX_SceneActuator,SetCamera);
/* 7. getCamera: */
- KX_PYMETHOD_DOC(KX_SceneActuator,GetCamera);
+ KX_PYMETHOD_DOC_NOARGS(KX_SceneActuator,GetCamera);
+ static PyObject* pyattr_get_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_camera(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
}; /* end of class KXSceneActuator */
#endif
diff --git a/source/gameengine/Ketsji/KX_SoundActuator.cpp b/source/gameengine/Ketsji/KX_SoundActuator.cpp
index 6de1d67bfdb..412be497c5a 100644
--- a/source/gameengine/Ketsji/KX_SoundActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SoundActuator.cpp
@@ -35,6 +35,7 @@
#include "KX_GameObject.h"
#include "SND_SoundObject.h"
#include "SND_Scene.h" // needed for replication
+#include "KX_PyMath.h" // needed for PyObjectFrom()
#include <iostream>
#ifdef HAVE_CONFIG_H
@@ -233,22 +234,22 @@ void KX_SoundActuator::setSoundObject(class SND_SoundObject* soundobject)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_SoundActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_SoundActuator",
- sizeof(KX_SoundActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -264,104 +265,328 @@ PyParentObject KX_SoundActuator::Parents[] = {
PyMethodDef KX_SoundActuator::Methods[] = {
+ // Deprecated ----->
{"setFilename", (PyCFunction) KX_SoundActuator::sPySetFilename, METH_VARARGS,NULL},
- {"getFilename", (PyCFunction) KX_SoundActuator::sPyGetFilename, METH_VARARGS,NULL},
- {"startSound",(PyCFunction) KX_SoundActuator::sPyStartSound,METH_VARARGS,NULL},
- {"pauseSound",(PyCFunction) KX_SoundActuator::sPyPauseSound,METH_VARARGS,NULL},
- {"stopSound",(PyCFunction) KX_SoundActuator::sPyStopSound,METH_VARARGS,NULL},
+ {"getFilename", (PyCFunction) KX_SoundActuator::sPyGetFilename, METH_NOARGS,NULL},
{"setGain",(PyCFunction) KX_SoundActuator::sPySetGain,METH_VARARGS,NULL},
- {"getGain",(PyCFunction) KX_SoundActuator::sPyGetGain,METH_VARARGS,NULL},
+ {"getGain",(PyCFunction) KX_SoundActuator::sPyGetGain,METH_NOARGS,NULL},
{"setPitch",(PyCFunction) KX_SoundActuator::sPySetPitch,METH_VARARGS,NULL},
- {"getPitch",(PyCFunction) KX_SoundActuator::sPyGetPitch,METH_VARARGS,NULL},
+ {"getPitch",(PyCFunction) KX_SoundActuator::sPyGetPitch,METH_NOARGS,NULL},
{"setRollOffFactor",(PyCFunction) KX_SoundActuator::sPySetRollOffFactor,METH_VARARGS,NULL},
- {"getRollOffFactor",(PyCFunction) KX_SoundActuator::sPyGetRollOffFactor,METH_VARARGS,NULL},
+ {"getRollOffFactor",(PyCFunction) KX_SoundActuator::sPyGetRollOffFactor,METH_NOARGS,NULL},
{"setLooping",(PyCFunction) KX_SoundActuator::sPySetLooping,METH_VARARGS,NULL},
- {"getLooping",(PyCFunction) KX_SoundActuator::sPyGetLooping,METH_VARARGS,NULL},
+ {"getLooping",(PyCFunction) KX_SoundActuator::sPyGetLooping,METH_NOARGS,NULL},
{"setPosition",(PyCFunction) KX_SoundActuator::sPySetPosition,METH_VARARGS,NULL},
{"setVelocity",(PyCFunction) KX_SoundActuator::sPySetVelocity,METH_VARARGS,NULL},
{"setOrientation",(PyCFunction) KX_SoundActuator::sPySetOrientation,METH_VARARGS,NULL},
{"setType",(PyCFunction) KX_SoundActuator::sPySetType,METH_VARARGS,NULL},
- {"getType",(PyCFunction) KX_SoundActuator::sPyGetType,METH_VARARGS,NULL},
+ {"getType",(PyCFunction) KX_SoundActuator::sPyGetType,METH_NOARGS,NULL},
+ // <-----
+
+ KX_PYMETHODTABLE_NOARGS(KX_SoundActuator, startSound),
+ KX_PYMETHODTABLE_NOARGS(KX_SoundActuator, pauseSound),
+ KX_PYMETHODTABLE_NOARGS(KX_SoundActuator, stopSound),
{NULL,NULL,NULL,NULL} //Sentinel
};
PyAttributeDef KX_SoundActuator::Attributes[] = {
+ KX_PYATTRIBUTE_RW_FUNCTION("filename", KX_SoundActuator, pyattr_get_filename, pyattr_set_filename),
+ KX_PYATTRIBUTE_RW_FUNCTION("volume", KX_SoundActuator, pyattr_get_gain, pyattr_set_gain),
+ KX_PYATTRIBUTE_RW_FUNCTION("pitch", KX_SoundActuator, pyattr_get_pitch, pyattr_set_pitch),
+ KX_PYATTRIBUTE_RW_FUNCTION("rollOffFactor", KX_SoundActuator, pyattr_get_rollOffFactor, pyattr_set_rollOffFactor),
+ KX_PYATTRIBUTE_RW_FUNCTION("looping", KX_SoundActuator, pyattr_get_looping, pyattr_set_looping),
+ KX_PYATTRIBUTE_RW_FUNCTION("position", KX_SoundActuator, pyattr_get_position, pyattr_set_position),
+ KX_PYATTRIBUTE_RW_FUNCTION("velocity", KX_SoundActuator, pyattr_get_velocity, pyattr_set_velocity),
+ KX_PYATTRIBUTE_RW_FUNCTION("orientation", KX_SoundActuator, pyattr_get_orientation, pyattr_set_orientation),
+ KX_PYATTRIBUTE_ENUM_RW("type",KX_SoundActuator::KX_SOUNDACT_NODEF+1,KX_SoundActuator::KX_SOUNDACT_MAX-1,false,KX_SoundActuator,m_type),
{ NULL } //Sentinel
};
-PyObject* KX_SoundActuator::_getattr(const char *attr)
+/* Methods ----------------------------------------------------------------- */
+KX_PYMETHODDEF_DOC_NOARGS(KX_SoundActuator, startSound,
+"startSound()\n"
+"\tStarts the sound.\n")
{
- _getattr_up(SCA_IActuator);
-}
-
-
+ if (m_soundObject)
+ // This has no effect if the actuator is not active.
+ // To start the sound you must activate the actuator.
+ // This function is to restart the sound.
+ m_soundObject->StartSound();
+ Py_RETURN_NONE;
+}
-PyObject* KX_SoundActuator::PySetFilename(PyObject* self, PyObject* args, PyObject* kwds)
+KX_PYMETHODDEF_DOC_NOARGS(KX_SoundActuator, pauseSound,
+"pauseSound()\n"
+"\tPauses the sound.\n")
{
- char *soundName = NULL;
- // void *soundPointer = NULL; /*unused*/
-
- if (!PyArg_ParseTuple(args, "s", &soundName))
- return NULL;
+ if (m_soundObject)
+ // unfortunately, openal does not implement pause correctly, it is equivalent to a stop
+ m_soundObject->PauseSound();
+ Py_RETURN_NONE;
+}
+KX_PYMETHODDEF_DOC_NOARGS(KX_SoundActuator, stopSound,
+"stopSound()\n"
+"\tStops the sound.\n")
+{
+ if (m_soundObject)
+ m_soundObject->StopSound();
Py_RETURN_NONE;
}
+/* Atribute setting and getting -------------------------------------------- */
+PyObject* KX_SoundActuator::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_IActuator);
+}
+int KX_SoundActuator::py_setattro(PyObject *attr, PyObject* value) {
+ py_setattro_up(SCA_IActuator);
+}
-PyObject* KX_SoundActuator::PyGetFilename(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::pyattr_get_filename(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
{
- if (!m_soundObject)
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ if (!actuator->m_soundObject)
{
return PyString_FromString("");
}
- STR_String objectname = m_soundObject->GetObjectName();
+ STR_String objectname = actuator->m_soundObject->GetObjectName();
char* name = objectname.Ptr();
if (!name) {
- PyErr_SetString(PyExc_RuntimeError, "Unable to get sound filename");
+ PyErr_SetString(PyExc_RuntimeError, "value = actuator.filename: KX_SoundActuator, unable to get sound filename");
return NULL;
} else
return PyString_FromString(name);
}
+PyObject* KX_SoundActuator::pyattr_get_gain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ float gain = (actuator->m_soundObject) ? actuator->m_soundObject->GetGain() : 1.0f;
+ PyObject* result = PyFloat_FromDouble(gain);
+
+ return result;
+}
-PyObject* KX_SoundActuator::PyStartSound(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::pyattr_get_pitch(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
{
- if (m_soundObject)
- // This has no effect if the actuator is not active.
- // To start the sound you must activate the actuator.
- // This function is to restart the sound.
- m_soundObject->StartSound();
- Py_RETURN_NONE;
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ float pitch = (actuator->m_soundObject) ? actuator->m_soundObject->GetPitch() : 1.0;
+ PyObject* result = PyFloat_FromDouble(pitch);
+
+ return result;
+}
+
+PyObject* KX_SoundActuator::pyattr_get_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ float rollofffactor = (actuator->m_soundObject) ? actuator->m_soundObject->GetRollOffFactor() : 1.0;
+ PyObject* result = PyFloat_FromDouble(rollofffactor);
+
+ return result;
+}
+
+PyObject* KX_SoundActuator::pyattr_get_looping(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ int looping = (actuator->m_soundObject) ? actuator->m_soundObject->GetLoopMode() : (int)SND_LOOP_OFF;
+ PyObject* result = PyInt_FromLong(looping);
+
+ return result;
+}
+
+PyObject* KX_SoundActuator::pyattr_get_position(void * self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ MT_Vector3 pos(0.0, 0.0, 0.0);
+
+ if (actuator->m_soundObject)
+ pos = actuator->m_soundObject->GetPosition();
+
+ PyObject * result = PyObjectFrom(pos);
+ return result;
+}
+
+PyObject* KX_SoundActuator::pyattr_get_velocity(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ MT_Vector3 vel;
+
+ if (actuator->m_soundObject)
+ vel = actuator->m_soundObject->GetVelocity();
+
+ PyObject * result = PyObjectFrom(vel);
+ return result;
+}
+
+PyObject* KX_SoundActuator::pyattr_get_orientation(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ MT_Matrix3x3 ori;
+
+ if (actuator->m_soundObject)
+ ori = actuator->m_soundObject->GetOrientation();
+
+ PyObject * result = PyObjectFrom(ori);
+ return result;
+}
+
+int KX_SoundActuator::pyattr_set_filename(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ char *soundName = NULL;
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator*> (self);
+ // void *soundPointer = NULL; /*unused*/
+
+ if (!PyArg_Parse(value, "s", &soundName))
+ return 1;
+
+ if (actuator->m_soundObject) {
+ actuator->m_soundObject->SetObjectName(soundName);
+ }
+
+ return 0;
+}
+
+
+int KX_SoundActuator::pyattr_set_gain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ float gain = 1.0;
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ if (!PyArg_Parse(value, "f", &gain))
+ return 1;
+
+ if (actuator->m_soundObject)
+ actuator->m_soundObject->SetGain(gain);
+
+ return 0;
}
+int KX_SoundActuator::pyattr_set_pitch(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ float pitch = 1.0;
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ if (!PyArg_Parse(value, "f", &pitch))
+ return 1;
+
+ if (actuator->m_soundObject)
+ actuator->m_soundObject->SetPitch(pitch);
+
+ return 0;
+}
+int KX_SoundActuator::pyattr_set_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ float rollofffactor = 1.0;
+ if (!PyArg_Parse(value, "f", &rollofffactor))
+ return 1;
+
+ if (actuator->m_soundObject)
+ actuator->m_soundObject->SetRollOffFactor(rollofffactor);
-PyObject* KX_SoundActuator::PyPauseSound(PyObject* self, PyObject* args, PyObject* kwds)
+ return 0;
+}
+
+int KX_SoundActuator::pyattr_set_looping(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
- if (m_soundObject)
- // unfortunately, openal does not implement pause correctly, it is equivalent to a stop
- m_soundObject->PauseSound();
- Py_RETURN_NONE;
-}
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+ int looping = 1;
+ if (!PyArg_Parse(value, "i", &looping))
+ return 1;
+
+ if (actuator->m_soundObject)
+ actuator->m_soundObject->SetLoopMode(looping);
+
+ return 0;
+}
+int KX_SoundActuator::pyattr_set_position(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ float pos[3];
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
-PyObject* KX_SoundActuator::PyStopSound(PyObject* self, PyObject* args, PyObject* kwds)
+ if (!PyArg_ParseTuple(value, "fff", &pos[0], &pos[1], &pos[2]))
+ return 1;
+
+ if (actuator->m_soundObject)
+ actuator->m_soundObject->SetPosition(MT_Vector3(pos));
+
+ return 0;
+}
+
+int KX_SoundActuator::pyattr_set_velocity(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
- if (m_soundObject)
- m_soundObject->StopSound();
- Py_RETURN_NONE;
+ float vel[3];
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+
+
+ if (!PyArg_ParseTuple(value, "fff", &vel[0], &vel[1], &vel[2]))
+ return 1;
+
+ if (actuator->m_soundObject)
+ actuator->m_soundObject->SetVelocity(MT_Vector3(vel));
+
+ return 0;
+
+}
+
+int KX_SoundActuator::pyattr_set_orientation(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+
+ MT_Matrix3x3 rot;
+ KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
+
+ /* if value is not a sequence PyOrientationTo makes an error */
+ if (!PyOrientationTo(value, rot, "actuator.orientation = value: KX_SoundActuator"))
+ return NULL;
+
+ if (!actuator->m_soundObject)
+ return 0; /* Since not having m_soundObject didn't do anything in the old version,
+ * it probably should be kept that way */
+
+ actuator->m_soundObject->SetOrientation(rot);
+ return 0;
}
+// Deprecated ----->
+PyObject* KX_SoundActuator::PySetFilename(PyObject* args)
+{
+ char *soundName = NULL;
+ ShowDeprecationWarning("setFilename()", "the filename property");
+ // void *soundPointer = NULL; /*unused*/
+
+ if (!PyArg_ParseTuple(args, "s", &soundName))
+ return NULL;
+ Py_RETURN_NONE;
+}
-PyObject* KX_SoundActuator::PySetGain(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PyGetFilename()
{
+ ShowDeprecationWarning("getFilename()", "the filename property");
+ if (!m_soundObject)
+ {
+ return PyString_FromString("");
+ }
+ STR_String objectname = m_soundObject->GetObjectName();
+ char* name = objectname.Ptr();
+
+ if (!name) {
+ PyErr_SetString(PyExc_RuntimeError, "Unable to get sound filename");
+ return NULL;
+ } else
+ return PyString_FromString(name);
+}
+
+PyObject* KX_SoundActuator::PySetGain(PyObject* args)
+{
+ ShowDeprecationWarning("setGain()", "the volume property");
float gain = 1.0;
- if (!PyArg_ParseTuple(args, "f", &gain))
+ if (!PyArg_ParseTuple(args, "f:setGain", &gain))
return NULL;
if (m_soundObject)
@@ -372,8 +597,9 @@ PyObject* KX_SoundActuator::PySetGain(PyObject* self, PyObject* args, PyObject*
-PyObject* KX_SoundActuator::PyGetGain(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PyGetGain()
{
+ ShowDeprecationWarning("getGain()", "the volume property");
float gain = (m_soundObject) ? m_soundObject->GetGain() : 1.0f;
PyObject* result = PyFloat_FromDouble(gain);
@@ -382,10 +608,11 @@ PyObject* KX_SoundActuator::PyGetGain(PyObject* self, PyObject* args, PyObject*
-PyObject* KX_SoundActuator::PySetPitch(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PySetPitch(PyObject* args)
{
+ ShowDeprecationWarning("setPitch()", "the pitch property");
float pitch = 1.0;
- if (!PyArg_ParseTuple(args, "f", &pitch))
+ if (!PyArg_ParseTuple(args, "f:setPitch", &pitch))
return NULL;
if (m_soundObject)
@@ -396,8 +623,9 @@ PyObject* KX_SoundActuator::PySetPitch(PyObject* self, PyObject* args, PyObject*
-PyObject* KX_SoundActuator::PyGetPitch(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PyGetPitch()
{
+ ShowDeprecationWarning("getPitch()", "the pitch property");
float pitch = (m_soundObject) ? m_soundObject->GetPitch() : 1.0;
PyObject* result = PyFloat_FromDouble(pitch);
@@ -406,10 +634,11 @@ PyObject* KX_SoundActuator::PyGetPitch(PyObject* self, PyObject* args, PyObject*
-PyObject* KX_SoundActuator::PySetRollOffFactor(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PySetRollOffFactor(PyObject* args)
{
+ ShowDeprecationWarning("setRollOffFactor()", "the rollOffFactor property");
float rollofffactor = 1.0;
- if (!PyArg_ParseTuple(args, "f", &rollofffactor))
+ if (!PyArg_ParseTuple(args, "f:setRollOffFactor", &rollofffactor))
return NULL;
if (m_soundObject)
@@ -420,8 +649,9 @@ PyObject* KX_SoundActuator::PySetRollOffFactor(PyObject* self, PyObject* args, P
-PyObject* KX_SoundActuator::PyGetRollOffFactor(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PyGetRollOffFactor()
{
+ ShowDeprecationWarning("getRollOffFactor()", "the rollOffFactor property");
float rollofffactor = (m_soundObject) ? m_soundObject->GetRollOffFactor() : 1.0;
PyObject* result = PyFloat_FromDouble(rollofffactor);
@@ -430,10 +660,11 @@ PyObject* KX_SoundActuator::PyGetRollOffFactor(PyObject* self, PyObject* args, P
-PyObject* KX_SoundActuator::PySetLooping(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PySetLooping(PyObject* args)
{
+ ShowDeprecationWarning("setLooping()", "the looping property");
bool looping = 1;
- if (!PyArg_ParseTuple(args, "i", &looping))
+ if (!PyArg_ParseTuple(args, "i:setLooping", &looping))
return NULL;
if (m_soundObject)
@@ -444,8 +675,9 @@ PyObject* KX_SoundActuator::PySetLooping(PyObject* self, PyObject* args, PyObjec
-PyObject* KX_SoundActuator::PyGetLooping(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PyGetLooping()
{
+ ShowDeprecationWarning("getLooping()", "the looping property");
int looping = (m_soundObject) ? m_soundObject->GetLoopMode() : (int)SND_LOOP_OFF;
PyObject* result = PyInt_FromLong(looping);
@@ -454,14 +686,15 @@ PyObject* KX_SoundActuator::PyGetLooping(PyObject* self, PyObject* args, PyObjec
-PyObject* KX_SoundActuator::PySetPosition(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PySetPosition(PyObject* args)
{
MT_Point3 pos;
+ ShowDeprecationWarning("setPosition()", "the position property");
pos[0] = 0.0;
pos[1] = 0.0;
pos[2] = 0.0;
- if (!PyArg_ParseTuple(args, "fff", &pos[0], &pos[1], &pos[2]))
+ if (!PyArg_ParseTuple(args, "fff:setPosition", &pos[0], &pos[1], &pos[2]))
return NULL;
if (m_soundObject)
@@ -472,14 +705,15 @@ PyObject* KX_SoundActuator::PySetPosition(PyObject* self, PyObject* args, PyObje
-PyObject* KX_SoundActuator::PySetVelocity(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PySetVelocity(PyObject* args)
{
MT_Vector3 vel;
+ ShowDeprecationWarning("setVelocity()", "the velocity property");
vel[0] = 0.0;
vel[1] = 0.0;
vel[2] = 0.0;
- if (!PyArg_ParseTuple(args, "fff", &vel[0], &vel[1], &vel[2]))
+ if (!PyArg_ParseTuple(args, "fff:setVelocity", &vel[0], &vel[1], &vel[2]))
return NULL;
if (m_soundObject)
@@ -490,9 +724,10 @@ PyObject* KX_SoundActuator::PySetVelocity(PyObject* self, PyObject* args, PyObje
-PyObject* KX_SoundActuator::PySetOrientation(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PySetOrientation(PyObject* args)
{
MT_Matrix3x3 ori;
+ ShowDeprecationWarning("setOrientation()", "the orientation property");
ori[0][0] = 1.0;
ori[0][1] = 0.0;
ori[0][2] = 0.0;
@@ -503,7 +738,7 @@ PyObject* KX_SoundActuator::PySetOrientation(PyObject* self, PyObject* args, PyO
ori[2][1] = 0.0;
ori[2][2] = 1.0;
- if (!PyArg_ParseTuple(args, "fffffffff", &ori[0][0], &ori[0][1], &ori[0][2], &ori[1][0], &ori[1][1], &ori[1][2], &ori[2][0], &ori[2][1], &ori[2][2]))
+ if (!PyArg_ParseTuple(args, "fffffffff:setOrientation", &ori[0][0], &ori[0][1], &ori[0][2], &ori[1][0], &ori[1][1], &ori[1][2], &ori[2][0], &ori[2][1], &ori[2][2]))
return NULL;
if (m_soundObject)
@@ -512,11 +747,12 @@ PyObject* KX_SoundActuator::PySetOrientation(PyObject* self, PyObject* args, PyO
Py_RETURN_NONE;
}
-PyObject* KX_SoundActuator::PySetType(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PySetType(PyObject* args)
{
int typeArg;
+ ShowDeprecationWarning("setType()", "the type property");
- if (!PyArg_ParseTuple(args, "i", &typeArg)) {
+ if (!PyArg_ParseTuple(args, "i:setType", &typeArg)) {
return NULL;
}
@@ -528,10 +764,10 @@ PyObject* KX_SoundActuator::PySetType(PyObject* self, PyObject* args, PyObject*
Py_RETURN_NONE;
}
-PyObject* KX_SoundActuator::PyGetType(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_SoundActuator::PyGetType()
{
+ ShowDeprecationWarning("getType()", "the type property");
return PyInt_FromLong(m_type);
}
-
-
+// <-----
diff --git a/source/gameengine/Ketsji/KX_SoundActuator.h b/source/gameengine/Ketsji/KX_SoundActuator.h
index 68d5b792729..d5e678bbecd 100644
--- a/source/gameengine/Ketsji/KX_SoundActuator.h
+++ b/source/gameengine/Ketsji/KX_SoundActuator.h
@@ -80,26 +80,51 @@ public:
/* Python interface --------------------------------------------------- */
/* -------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
-
- KX_PYMETHOD(KX_SoundActuator,SetFilename);
- KX_PYMETHOD(KX_SoundActuator,GetFilename);
- KX_PYMETHOD(KX_SoundActuator,StartSound);
- KX_PYMETHOD(KX_SoundActuator,PauseSound);
- KX_PYMETHOD(KX_SoundActuator,StopSound);
- KX_PYMETHOD(KX_SoundActuator,SetGain);
- KX_PYMETHOD(KX_SoundActuator,GetGain);
- KX_PYMETHOD(KX_SoundActuator,SetPitch);
- KX_PYMETHOD(KX_SoundActuator,GetPitch);
- KX_PYMETHOD(KX_SoundActuator,SetRollOffFactor);
- KX_PYMETHOD(KX_SoundActuator,GetRollOffFactor);
- KX_PYMETHOD(KX_SoundActuator,SetLooping);
- KX_PYMETHOD(KX_SoundActuator,GetLooping);
- KX_PYMETHOD(KX_SoundActuator,SetPosition);
- KX_PYMETHOD(KX_SoundActuator,SetVelocity);
- KX_PYMETHOD(KX_SoundActuator,SetOrientation);
- KX_PYMETHOD(KX_SoundActuator,SetType);
- KX_PYMETHOD(KX_SoundActuator,GetType);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
+
+ KX_PYMETHOD_DOC_NOARGS(KX_SoundActuator, startSound);
+ KX_PYMETHOD_DOC_NOARGS(KX_SoundActuator, pauseSound);
+ KX_PYMETHOD_DOC_NOARGS(KX_SoundActuator, stopSound);
+
+ static int pyattr_set_filename(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_gain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_pitch(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_looping(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_position(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_velocity(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_orientation(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_type(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
+ static PyObject* pyattr_get_filename(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_gain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_pitch(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_looping(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_position(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_velocity(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_orientation(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_type(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+
+ // Deprecated ----->
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetFilename);
+ KX_PYMETHOD_NOARGS(KX_SoundActuator,GetFilename);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetGain);
+ KX_PYMETHOD_NOARGS(KX_SoundActuator,GetGain);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetPitch);
+ KX_PYMETHOD_NOARGS(KX_SoundActuator,GetPitch);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetRollOffFactor);
+ KX_PYMETHOD_NOARGS(KX_SoundActuator,GetRollOffFactor);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetLooping);
+ KX_PYMETHOD_NOARGS(KX_SoundActuator,GetLooping);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetPosition);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetVelocity);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetOrientation);
+ KX_PYMETHOD_VARARGS(KX_SoundActuator,SetType);
+ KX_PYMETHOD_NOARGS(KX_SoundActuator,GetType);
+ // <-----
+
};
#endif //__KX_SOUNDACTUATOR
diff --git a/source/gameengine/Ketsji/KX_StateActuator.cpp b/source/gameengine/Ketsji/KX_StateActuator.cpp
index 0de4da79bd8..976e7ea5204 100644
--- a/source/gameengine/Ketsji/KX_StateActuator.cpp
+++ b/source/gameengine/Ketsji/KX_StateActuator.cpp
@@ -108,24 +108,23 @@ KX_StateActuator::Update()
/* Integration hooks ------------------------------------------------------- */
-PyTypeObject
-KX_StateActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+PyTypeObject KX_StateActuator::Type = {
+ PyObject_HEAD_INIT(NULL)
0,
"KX_StateActuator",
- sizeof(KX_StateActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject
@@ -139,22 +138,30 @@ KX_StateActuator::Parents[] = {
PyMethodDef
KX_StateActuator::Methods[] = {
+ // deprecated -->
{"setOperation", (PyCFunction) KX_StateActuator::sPySetOperation,
METH_VARARGS, (PY_METHODCHAR)SetOperation_doc},
{"setMask", (PyCFunction) KX_StateActuator::sPySetMask,
METH_VARARGS, (PY_METHODCHAR)SetMask_doc},
+ // <--
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_StateActuator::Attributes[] = {
+ KX_PYATTRIBUTE_INT_RW("operation",KX_StateActuator::OP_NOP+1,KX_StateActuator::OP_COUNT-1,false,KX_StateActuator,m_operation),
+ KX_PYATTRIBUTE_INT_RW("mask",0,0x3FFFFFFF,false,KX_StateActuator,m_mask),
{ NULL } //Sentinel
};
-PyObject* KX_StateActuator::_getattr(const char *attr)
+PyObject* KX_StateActuator::py_getattro(PyObject *attr)
{
- _getattr_up(SCA_IActuator);
+ py_getattro_up(SCA_IActuator);
};
+int KX_StateActuator::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IActuator);
+}
/* set operation ---------------------------------------------------------- */
@@ -166,12 +173,11 @@ KX_StateActuator::SetOperation_doc[] =
"\tUse setMask() to specify the bits that will be modified.\n";
PyObject*
-KX_StateActuator::PySetOperation(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+KX_StateActuator::PySetOperation(PyObject* args) {
+ ShowDeprecationWarning("setOperation()", "the operation property");
int oper;
- if(!PyArg_ParseTuple(args, "i", &oper)) {
+ if(!PyArg_ParseTuple(args, "i:setOperation", &oper)) {
return NULL;
}
@@ -191,12 +197,11 @@ KX_StateActuator::SetMask_doc[] =
"\twhich copies the value to the object state.\n";
PyObject*
-KX_StateActuator::PySetMask(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+KX_StateActuator::PySetMask(PyObject* args) {
+ ShowDeprecationWarning("setMask()", "the mask property");
int mask;
- if(!PyArg_ParseTuple(args, "i", &mask)) {
+ if(!PyArg_ParseTuple(args, "i:setMask", &mask)) {
return NULL;
}
diff --git a/source/gameengine/Ketsji/KX_StateActuator.h b/source/gameengine/Ketsji/KX_StateActuator.h
index 023b8993d7c..4a64894259d 100644
--- a/source/gameengine/Ketsji/KX_StateActuator.h
+++ b/source/gameengine/Ketsji/KX_StateActuator.h
@@ -39,13 +39,15 @@ class KX_StateActuator : public SCA_IActuator
/** Make visible? */
enum {
+ OP_NOP = -1,
OP_CPY = 0,
OP_SET,
OP_CLR,
- OP_NEG
+ OP_NEG,
+ OP_COUNT
};
int m_operation;
- unsigned int m_mask;
+ int m_mask;
public:
@@ -73,10 +75,11 @@ class KX_StateActuator : public SCA_IActuator
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
//KX_PYMETHOD_DOC
- KX_PYMETHOD_DOC(KX_StateActuator,SetOperation);
- KX_PYMETHOD_DOC(KX_StateActuator,SetMask);
+ KX_PYMETHOD_DOC_VARARGS(KX_StateActuator,SetOperation);
+ KX_PYMETHOD_DOC_VARARGS(KX_StateActuator,SetMask);
};
#endif
diff --git a/source/gameengine/Ketsji/KX_SumoPhysicsController.cpp b/source/gameengine/Ketsji/KX_SumoPhysicsController.cpp
index 7631ee05b0b..fc053f05e63 100644
--- a/source/gameengine/Ketsji/KX_SumoPhysicsController.cpp
+++ b/source/gameengine/Ketsji/KX_SumoPhysicsController.cpp
@@ -209,6 +209,11 @@ void KX_SumoPhysicsController::SetMass(MT_Scalar newmass)
{
}
+MT_Vector3 KX_SumoPhysicsController::GetLocalInertia()
+{
+ return MT_Vector3(0.f, 0.f, 0.f); // \todo
+}
+
MT_Scalar KX_SumoPhysicsController::GetRadius()
{
return SumoPhysicsController::GetRadius();
diff --git a/source/gameengine/Ketsji/KX_SumoPhysicsController.h b/source/gameengine/Ketsji/KX_SumoPhysicsController.h
index 46c8ba6df45..083d89896f6 100644
--- a/source/gameengine/Ketsji/KX_SumoPhysicsController.h
+++ b/source/gameengine/Ketsji/KX_SumoPhysicsController.h
@@ -88,10 +88,15 @@ public:
virtual void setScaling(const MT_Vector3& scaling);
virtual MT_Scalar GetMass();
virtual void SetMass(MT_Scalar newmass);
+ virtual MT_Vector3 GetLocalInertia();
virtual MT_Scalar GetRadius();
virtual MT_Vector3 getReactionForce();
virtual void setRigidBody(bool rigid);
+ virtual float GetLinVelocityMin() { return SumoPhysicsController::GetLinVelocityMin(); }
+ virtual void SetLinVelocityMin(float val) { SumoPhysicsController::SetLinVelocityMin(val); }
+ virtual float GetLinVelocityMax() { return SumoPhysicsController::GetLinVelocityMax(); }
+ virtual void SetLinVelocityMax(float val) { SumoPhysicsController::SetLinVelocityMax(val); }
virtual SG_Controller* GetReplica(class SG_Node* destnode);
diff --git a/source/gameengine/Ketsji/KX_TouchSensor.cpp b/source/gameengine/Ketsji/KX_TouchSensor.cpp
index 705b54edd37..5a6e8e6f501 100644
--- a/source/gameengine/Ketsji/KX_TouchSensor.cpp
+++ b/source/gameengine/Ketsji/KX_TouchSensor.cpp
@@ -242,22 +242,22 @@ bool KX_TouchSensor::NewHandleCollision(void*object1,void*object2,const PHY_Coll
/* ------------------------------------------------------------------------- */
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_TouchSensor::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_TouchSensor",
- sizeof(KX_TouchSensor),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_TouchSensor::Parents[] = {
@@ -286,34 +286,19 @@ PyAttributeDef KX_TouchSensor::Attributes[] = {
KX_PYATTRIBUTE_STRING_RW("property",0,100,false,KX_TouchSensor,m_touchedpropname),
KX_PYATTRIBUTE_BOOL_RW("useMaterial",KX_TouchSensor,m_bFindMaterial),
KX_PYATTRIBUTE_BOOL_RW("pulseCollisions",KX_TouchSensor,m_bTouchPulse),
- KX_PYATTRIBUTE_DUMMY("objectHit"),
- KX_PYATTRIBUTE_DUMMY("objectHitList"),
+ KX_PYATTRIBUTE_RO_FUNCTION("objectHit", KX_TouchSensor, pyattr_get_object_hit),
+ KX_PYATTRIBUTE_RO_FUNCTION("objectHitList", KX_TouchSensor, pyattr_get_object_hit_list),
{ NULL } //Sentinel
};
-PyObject* KX_TouchSensor::_getattr(const char *attr)
-{
- if (!strcmp(attr, "objectHit")) {
- if (m_hitObject) return m_hitObject->AddRef();
- else Py_RETURN_NONE;
- }
- if (!strcmp(attr, "objectHitList")) {
- return m_colliders->AddRef();
- }
-
- PyObject* object= _getattr_self(Attributes, this, attr);
- if (object != NULL)
- return object;
- _getattr_up(SCA_ISensor);
+PyObject* KX_TouchSensor::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_ISensor);
}
-int KX_TouchSensor::_setattr(const char *attr, PyObject *value)
+int KX_TouchSensor::py_setattro(PyObject *attr, PyObject *value)
{
- int ret = _setattr_self(Attributes, this, attr, value);
- if (ret >= 0)
- return ret;
-
- return SCA_ISensor::_setattr(attr, value);
+ py_setattro_up(SCA_ISensor);
}
/* Python API */
@@ -325,7 +310,7 @@ const char KX_TouchSensor::SetProperty_doc[] =
"\tSet the property or material to collide with. Use\n"
"\tsetTouchMaterial() to switch between properties and\n"
"\tmaterials.";
-PyObject* KX_TouchSensor::PySetProperty(PyObject* self, PyObject* value)
+PyObject* KX_TouchSensor::PySetProperty(PyObject* value)
{
ShowDeprecationWarning("setProperty()", "the propertyName property");
char *nameArg= PyString_AsString(value);
@@ -343,21 +328,21 @@ const char KX_TouchSensor::GetProperty_doc[] =
"\tReturns the property or material to collide with. Use\n"
"\tgetTouchMaterial() to find out whether this sensor\n"
"\tlooks for properties or materials.";
-PyObject* KX_TouchSensor::PyGetProperty(PyObject* self) {
+PyObject* KX_TouchSensor::PyGetProperty() {
return PyString_FromString(m_touchedpropname);
}
const char KX_TouchSensor::GetHitObject_doc[] =
"getHitObject()\n"
;
-PyObject* KX_TouchSensor::PyGetHitObject(PyObject* self)
+PyObject* KX_TouchSensor::PyGetHitObject()
{
ShowDeprecationWarning("getHitObject()", "the objectHit property");
/* to do: do Py_IncRef if the object is already known in Python */
/* otherwise, this leaks memory */
if (m_hitObject)
{
- return m_hitObject->AddRef();
+ return m_hitObject->GetProxy();
}
Py_RETURN_NONE;
}
@@ -366,12 +351,12 @@ const char KX_TouchSensor::GetHitObjectList_doc[] =
"getHitObjectList()\n"
"\tReturn a list of the objects this object collided with,\n"
"\tbut only those matching the property/material condition.\n";
-PyObject* KX_TouchSensor::PyGetHitObjectList(PyObject* self)
+PyObject* KX_TouchSensor::PyGetHitObjectList()
{
ShowDeprecationWarning("getHitObjectList()", "the objectHitList property");
/* to do: do Py_IncRef if the object is already known in Python */
/* otherwise, this leaks memory */ /* Edit, this seems ok and not to leak memory - Campbell */
- return m_colliders->AddRef();
+ return m_colliders->GetProxy();
}
/*getTouchMaterial and setTouchMaterial were never added to the api,
@@ -382,9 +367,9 @@ const char KX_TouchSensor::GetTouchMaterial_doc[] =
"getTouchMaterial()\n"
"\tReturns KX_TRUE if this sensor looks for a specific material,\n"
"\tKX_FALSE if it looks for a specific property.\n" ;
-PyObject* KX_TouchSensor::PyGetTouchMaterial(PyObject* self)
+PyObject* KX_TouchSensor::PyGetTouchMaterial()
{
- ShowDeprecationWarning("getTouchMaterial()", "the materialCheck property");
+ ShowDeprecationWarning("getTouchMaterial()", "the useMaterial property");
return PyInt_FromLong(m_bFindMaterial);
}
@@ -395,8 +380,9 @@ const char KX_TouchSensor::SetTouchMaterial_doc[] =
"\t- flag: KX_TRUE or KX_FALSE.\n"
"\tSet flag to KX_TRUE to switch on positive pulse mode,\n"
"\tKX_FALSE to switch off positive pulse mode.\n" ;
-PyObject* KX_TouchSensor::PySetTouchMaterial(PyObject* self, PyObject *value)
+PyObject* KX_TouchSensor::PySetTouchMaterial(PyObject *value)
{
+ ShowDeprecationWarning("setTouchMaterial()", "the useMaterial property");
int pulseArg = PyInt_AsLong(value);
if(pulseArg ==-1 && PyErr_Occurred()) {
@@ -410,4 +396,21 @@ PyObject* KX_TouchSensor::PySetTouchMaterial(PyObject* self, PyObject *value)
}
#endif
+PyObject* KX_TouchSensor::pyattr_get_object_hit(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_TouchSensor* self= static_cast<KX_TouchSensor*>(self_v);
+
+ if (self->m_hitObject)
+ return self->m_hitObject->GetProxy();
+ else
+ Py_RETURN_NONE;
+}
+
+PyObject* KX_TouchSensor::pyattr_get_object_hit_list(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_TouchSensor* self= static_cast<KX_TouchSensor*>(self_v);
+ return self->m_colliders->GetProxy();
+}
+
+
/* eof */
diff --git a/source/gameengine/Ketsji/KX_TouchSensor.h b/source/gameengine/Ketsji/KX_TouchSensor.h
index 18ce9406a9b..15ef653c1b2 100644
--- a/source/gameengine/Ketsji/KX_TouchSensor.h
+++ b/source/gameengine/Ketsji/KX_TouchSensor.h
@@ -120,8 +120,8 @@ public:
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
//Deprecated ----->
/* 1. setProperty */
@@ -140,6 +140,10 @@ public:
#endif
//<-----
+ static PyObject* pyattr_get_object_hit(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_object_hit_list(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
+
};
#endif //__KX_TOUCHSENSOR
diff --git a/source/gameengine/Ketsji/KX_TrackToActuator.cpp b/source/gameengine/Ketsji/KX_TrackToActuator.cpp
index 8637bc92d39..fbf43de6cf4 100644
--- a/source/gameengine/Ketsji/KX_TrackToActuator.cpp
+++ b/source/gameengine/Ketsji/KX_TrackToActuator.cpp
@@ -402,7 +402,7 @@ bool KX_TrackToActuator::Update(double curtime, bool frame)
// set the models tranformation properties
curobj->NodeSetLocalOrientation(mat);
curobj->NodeSetLocalPosition(localpos);
- curobj->UpdateTransform();
+ //curobj->UpdateTransform();
}
else
{
@@ -425,22 +425,22 @@ bool KX_TrackToActuator::Update(double curtime, bool frame)
/* Integration hooks ------------------------------------------------------- */
PyTypeObject KX_TrackToActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_TrackToActuator",
- sizeof(KX_TrackToActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
@@ -456,12 +456,11 @@ PyParentObject KX_TrackToActuator::Parents[] = {
PyMethodDef KX_TrackToActuator::Methods[] = {
+ // ---> deprecated
{"setTime", (PyCFunction) KX_TrackToActuator::sPySetTime, METH_VARARGS, (PY_METHODCHAR)SetTime_doc},
- {"getTime", (PyCFunction) KX_TrackToActuator::sPyGetTime, METH_VARARGS, (PY_METHODCHAR)GetTime_doc},
+ {"getTime", (PyCFunction) KX_TrackToActuator::sPyGetTime, METH_NOARGS, (PY_METHODCHAR)GetTime_doc},
{"setUse3D", (PyCFunction) KX_TrackToActuator::sPySetUse3D, METH_VARARGS, (PY_METHODCHAR)SetUse3D_doc},
- {"getUse3D", (PyCFunction) KX_TrackToActuator::sPyGetUse3D, METH_VARARGS, (PY_METHODCHAR)GetUse3D_doc},
-
- // ---> deprecated
+ {"getUse3D", (PyCFunction) KX_TrackToActuator::sPyGetUse3D, METH_NOARGS, (PY_METHODCHAR)GetUse3D_doc},
{"setObject", (PyCFunction) KX_TrackToActuator::sPySetObject, METH_O, (PY_METHODCHAR)SetObject_doc},
{"getObject", (PyCFunction) KX_TrackToActuator::sPyGetObject, METH_VARARGS, (PY_METHODCHAR)GetObject_doc},
@@ -469,40 +468,50 @@ PyMethodDef KX_TrackToActuator::Methods[] = {
};
PyAttributeDef KX_TrackToActuator::Attributes[] = {
+ KX_PYATTRIBUTE_INT_RW("time",0,1000,true,KX_TrackToActuator,m_time),
+ KX_PYATTRIBUTE_BOOL_RW("use3D",KX_TrackToActuator,m_allow3D),
+ KX_PYATTRIBUTE_RW_FUNCTION("object", KX_TrackToActuator, pyattr_get_object, pyattr_set_object),
+
{ NULL } //Sentinel
};
-
-PyObject* KX_TrackToActuator::_getattr(const char *attr)
+PyObject* KX_TrackToActuator::pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
{
- if (!strcmp(attr, "object")) {
- if (!m_object) Py_RETURN_NONE;
- else return m_object->AddRef();
- }
-
- _getattr_up(SCA_IActuator);
+ KX_TrackToActuator* actuator = static_cast<KX_TrackToActuator*>(self);
+ if (!actuator->m_object)
+ Py_RETURN_NONE;
+ else
+ return actuator->m_object->GetProxy();
}
-int KX_TrackToActuator::_setattr(const char *attr, PyObject* value)
+int KX_TrackToActuator::pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
- if (!strcmp(attr, "object")) {
- KX_GameObject *gameobj;
+ KX_TrackToActuator* actuator = static_cast<KX_TrackToActuator*>(self);
+ KX_GameObject *gameobj;
- if (!ConvertPythonToGameObject(value, &gameobj, true))
- return 1; // ConvertPythonToGameObject sets the error
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.object = value: KX_TrackToActuator"))
+ return 1; // ConvertPythonToGameObject sets the error
- if (m_object != NULL)
- m_object->UnregisterActuator(this);
+ if (actuator->m_object != NULL)
+ actuator->m_object->UnregisterActuator(actuator);
- m_object = (SCA_IObject*)gameobj;
+ actuator->m_object = (SCA_IObject*) gameobj;
- if (m_object)
- m_object->RegisterActuator(this);
+ if (actuator->m_object)
+ actuator->m_object->RegisterActuator(actuator);
- return 0;
- }
-
- return SCA_IActuator::_setattr(attr, value);
+ return 0;
+}
+
+
+PyObject* KX_TrackToActuator::py_getattro(PyObject *attr)
+{
+ py_getattro_up(SCA_IActuator);
+}
+
+int KX_TrackToActuator::py_setattro(PyObject *attr, PyObject* value)
+{
+ py_setattro_up(SCA_IActuator);
}
/* 1. setObject */
@@ -510,13 +519,13 @@ const char KX_TrackToActuator::SetObject_doc[] =
"setObject(object)\n"
"\t- object: KX_GameObject, string or None\n"
"\tSet the object to track with the parent of this actuator.\n";
-PyObject* KX_TrackToActuator::PySetObject(PyObject* self, PyObject* value)
+PyObject* KX_TrackToActuator::PySetObject(PyObject* value)
{
KX_GameObject *gameobj;
ShowDeprecationWarning("setObject()", "the object property");
- if (!ConvertPythonToGameObject(value, &gameobj, true))
+ if (!ConvertPythonToGameObject(value, &gameobj, true, "actuator.setObject(value): KX_TrackToActuator"))
return NULL; // ConvertPythonToGameObject sets the error
if (m_object != NULL)
@@ -536,13 +545,13 @@ const char KX_TrackToActuator::GetObject_doc[] =
"getObject(name_only = 1)\n"
"name_only - optional arg, when true will return the KX_GameObject rather then its name\n"
"\tReturns the object to track with the parent of this actuator\n";
-PyObject* KX_TrackToActuator::PyGetObject(PyObject* self, PyObject* args)
+PyObject* KX_TrackToActuator::PyGetObject(PyObject* args)
{
int ret_name_only = 1;
ShowDeprecationWarning("getObject()", "the object property");
- if (!PyArg_ParseTuple(args, "|i", &ret_name_only))
+ if (!PyArg_ParseTuple(args, "|i:getObject", &ret_name_only))
return NULL;
if (!m_object)
@@ -551,7 +560,7 @@ PyObject* KX_TrackToActuator::PyGetObject(PyObject* self, PyObject* args)
if (ret_name_only)
return PyString_FromString(m_object->GetName());
else
- return m_object->AddRef();
+ return m_object->GetProxy();
}
@@ -561,11 +570,12 @@ const char KX_TrackToActuator::SetTime_doc[] =
"setTime(time)\n"
"\t- time: integer\n"
"\tSet the time in frames with which to delay the tracking motion.\n";
-PyObject* KX_TrackToActuator::PySetTime(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_TrackToActuator::PySetTime(PyObject* args)
{
+ ShowDeprecationWarning("setTime()", "the timer property");
int timeArg;
- if (!PyArg_ParseTuple(args, "i", &timeArg))
+ if (!PyArg_ParseTuple(args, "i:setTime", &timeArg))
{
return NULL;
}
@@ -582,8 +592,9 @@ const char KX_TrackToActuator::GetTime_doc[] =
"getTime()\n"
"\t- time: integer\n"
"\tReturn the time in frames with which the tracking motion is delayed.\n";
-PyObject* KX_TrackToActuator::PyGetTime(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_TrackToActuator::PyGetTime()
{
+ ShowDeprecationWarning("getTime()", "the timer property");
return PyInt_FromLong(m_time);
}
@@ -593,8 +604,9 @@ PyObject* KX_TrackToActuator::PyGetTime(PyObject* self, PyObject* args, PyObject
const char KX_TrackToActuator::GetUse3D_doc[] =
"getUse3D()\n"
"\tReturns 1 if the motion is allowed to extend in the z-direction.\n";
-PyObject* KX_TrackToActuator::PyGetUse3D(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_TrackToActuator::PyGetUse3D()
{
+ ShowDeprecationWarning("setTime()", "the use3D property");
return PyInt_FromLong(!(m_allow3D == 0));
}
@@ -606,11 +618,12 @@ const char KX_TrackToActuator::SetUse3D_doc[] =
"\t- value: 0 or 1\n"
"\tSet to 1 to allow the tracking motion to extend in the z-direction,\n"
"\tset to 0 to lock the tracking motion to the x-y plane.\n";
-PyObject* KX_TrackToActuator::PySetUse3D(PyObject* self, PyObject* args, PyObject* kwds)
+PyObject* KX_TrackToActuator::PySetUse3D(PyObject* args)
{
+ ShowDeprecationWarning("setTime()", "the use3D property");
int boolArg;
- if (!PyArg_ParseTuple(args, "i", &boolArg)) {
+ if (!PyArg_ParseTuple(args, "i:setUse3D", &boolArg)) {
return NULL;
}
diff --git a/source/gameengine/Ketsji/KX_TrackToActuator.h b/source/gameengine/Ketsji/KX_TrackToActuator.h
index 392e55402f1..99505f93cfe 100644
--- a/source/gameengine/Ketsji/KX_TrackToActuator.h
+++ b/source/gameengine/Ketsji/KX_TrackToActuator.h
@@ -72,21 +72,25 @@ class KX_TrackToActuator : public SCA_IActuator
virtual bool Update(double curtime, bool frame);
/* Python part */
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject* value);
-
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject* value);
+
+ /* These are used to get and set m_ob */
+ static PyObject* pyattr_get_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_object(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
/* 1. setObject */
KX_PYMETHOD_DOC_O(KX_TrackToActuator,SetObject);
/* 2. getObject */
KX_PYMETHOD_DOC_VARARGS(KX_TrackToActuator,GetObject);
/* 3. setTime */
- KX_PYMETHOD_DOC(KX_TrackToActuator,SetTime);
+ KX_PYMETHOD_DOC_VARARGS(KX_TrackToActuator,SetTime);
/* 4. getTime */
- KX_PYMETHOD_DOC(KX_TrackToActuator,GetTime);
+ KX_PYMETHOD_DOC_NOARGS(KX_TrackToActuator,GetTime);
/* 5. getUse3D */
- KX_PYMETHOD_DOC(KX_TrackToActuator,GetUse3D);
+ KX_PYMETHOD_DOC_NOARGS(KX_TrackToActuator,GetUse3D);
/* 6. setUse3D */
- KX_PYMETHOD_DOC(KX_TrackToActuator,SetUse3D);
+ KX_PYMETHOD_DOC_VARARGS(KX_TrackToActuator,SetUse3D);
}; /* end of class KX_TrackToActuator : public KX_EditObjectActuator */
diff --git a/source/gameengine/Ketsji/KX_VehicleWrapper.cpp b/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
index 8d5af1b9216..1a6fb196db5 100644
--- a/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_VehicleWrapper.cpp
@@ -35,9 +35,7 @@ KX_VehicleWrapper::~KX_VehicleWrapper()
}
-PyObject* KX_VehicleWrapper::PyAddWheel(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyAddWheel(PyObject* args)
{
PyObject* pylistPos,*pylistDir,*pylistAxleDir;
@@ -46,14 +44,18 @@ PyObject* KX_VehicleWrapper::PyAddWheel(PyObject* self,
int hasSteering;
- if (PyArg_ParseTuple(args,"OOOOffi",&wheelGameObject,&pylistPos,&pylistDir,&pylistAxleDir,&suspensionRestLength,&wheelRadius,&hasSteering))
+ if (PyArg_ParseTuple(args,"OOOOffi:addWheel",&wheelGameObject,&pylistPos,&pylistDir,&pylistAxleDir,&suspensionRestLength,&wheelRadius,&hasSteering))
{
- KX_GameObject* gameOb = (KX_GameObject*) wheelGameObject;
+ KX_GameObject *gameOb;
+ if (!ConvertPythonToGameObject(wheelGameObject, &gameOb, false, "vehicle.addWheel(...): KX_VehicleWrapper (first argument)"))
+ return NULL;
+
if (gameOb->GetSGNode())
{
PHY_IMotionState* motionState = new KX_MotionState(gameOb->GetSGNode());
-
+
+ /* TODO - no error checking here! - bad juju */
MT_Vector3 attachPos,attachDir,attachAxle;
PyVecTo(pylistPos,attachPos);
PyVecTo(pylistDir,attachDir);
@@ -82,14 +84,12 @@ PyObject* KX_VehicleWrapper::PyAddWheel(PyObject* self,
-PyObject* KX_VehicleWrapper::PyGetWheelPosition(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyGetWheelPosition(PyObject* args)
{
int wheelIndex;
- if (PyArg_ParseTuple(args,"i",&wheelIndex))
+ if (PyArg_ParseTuple(args,"i:getWheelPosition",&wheelIndex))
{
float position[3];
m_vehicle->GetWheelPosition(wheelIndex,position[0],position[1],position[2]);
@@ -99,24 +99,20 @@ PyObject* KX_VehicleWrapper::PyGetWheelPosition(PyObject* self,
return NULL;
}
-PyObject* KX_VehicleWrapper::PyGetWheelRotation(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyGetWheelRotation(PyObject* args)
{
int wheelIndex;
- if (PyArg_ParseTuple(args,"i",&wheelIndex))
+ if (PyArg_ParseTuple(args,"i:getWheelRotation",&wheelIndex))
{
return PyFloat_FromDouble(m_vehicle->GetWheelRotation(wheelIndex));
}
return NULL;
}
-PyObject* KX_VehicleWrapper::PyGetWheelOrientationQuaternion(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyGetWheelOrientationQuaternion(PyObject* args)
{
int wheelIndex;
- if (PyArg_ParseTuple(args,"i",&wheelIndex))
+ if (PyArg_ParseTuple(args,"i:getWheelOrientationQuaternion",&wheelIndex))
{
float orn[4];
m_vehicle->GetWheelOrientationQuaternion(wheelIndex,orn[0],orn[1],orn[2],orn[3]);
@@ -129,31 +125,25 @@ PyObject* KX_VehicleWrapper::PyGetWheelOrientationQuaternion(PyObject* self,
}
-PyObject* KX_VehicleWrapper::PyGetNumWheels(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyGetNumWheels(PyObject* args)
{
return PyInt_FromLong(m_vehicle->GetNumWheels());
}
-PyObject* KX_VehicleWrapper::PyGetConstraintId(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyGetConstraintId(PyObject* args)
{
return PyInt_FromLong(m_vehicle->GetUserConstraintId());
}
-PyObject* KX_VehicleWrapper::PyApplyEngineForce(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyApplyEngineForce(PyObject* args)
{
float force;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&force,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:applyEngineForce",&force,&wheelIndex))
{
force *= -1.f;//someone reverse some conventions inside Bullet (axle winding)
m_vehicle->ApplyEngineForce(force,wheelIndex);
@@ -164,14 +154,12 @@ PyObject* KX_VehicleWrapper::PyApplyEngineForce(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* KX_VehicleWrapper::PySetTyreFriction(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PySetTyreFriction(PyObject* args)
{
float wheelFriction;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&wheelFriction,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:setTyreFriction",&wheelFriction,&wheelIndex))
{
m_vehicle->SetWheelFriction(wheelFriction,wheelIndex);
}
@@ -181,14 +169,12 @@ PyObject* KX_VehicleWrapper::PySetTyreFriction(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* KX_VehicleWrapper::PySetSuspensionStiffness(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PySetSuspensionStiffness(PyObject* args)
{
float suspensionStiffness;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&suspensionStiffness,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:setSuspensionStiffness",&suspensionStiffness,&wheelIndex))
{
m_vehicle->SetSuspensionStiffness(suspensionStiffness,wheelIndex);
}
@@ -198,14 +184,12 @@ PyObject* KX_VehicleWrapper::PySetSuspensionStiffness(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* KX_VehicleWrapper::PySetSuspensionDamping(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PySetSuspensionDamping(PyObject* args)
{
float suspensionDamping;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&suspensionDamping,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:setSuspensionDamping",&suspensionDamping,&wheelIndex))
{
m_vehicle->SetSuspensionDamping(suspensionDamping,wheelIndex);
} else {
@@ -214,14 +198,12 @@ PyObject* KX_VehicleWrapper::PySetSuspensionDamping(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* KX_VehicleWrapper::PySetSuspensionCompression(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PySetSuspensionCompression(PyObject* args)
{
float suspensionCompression;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&suspensionCompression,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:setSuspensionCompression",&suspensionCompression,&wheelIndex))
{
m_vehicle->SetSuspensionCompression(suspensionCompression,wheelIndex);
} else {
@@ -230,14 +212,12 @@ PyObject* KX_VehicleWrapper::PySetSuspensionCompression(PyObject* self,
Py_RETURN_NONE;
}
-PyObject* KX_VehicleWrapper::PySetRollInfluence(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PySetRollInfluence(PyObject* args)
{
float rollInfluence;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&rollInfluence,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:setRollInfluence",&rollInfluence,&wheelIndex))
{
m_vehicle->SetRollInfluence(rollInfluence,wheelIndex);
}
@@ -248,14 +228,12 @@ PyObject* KX_VehicleWrapper::PySetRollInfluence(PyObject* self,
}
-PyObject* KX_VehicleWrapper::PyApplyBraking(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyApplyBraking(PyObject* args)
{
float braking;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&braking,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:applyBraking",&braking,&wheelIndex))
{
m_vehicle->ApplyBraking(braking,wheelIndex);
}
@@ -268,14 +246,12 @@ PyObject* KX_VehicleWrapper::PyApplyBraking(PyObject* self,
-PyObject* KX_VehicleWrapper::PySetSteeringValue(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PySetSteeringValue(PyObject* args)
{
float steeringValue;
int wheelIndex;
- if (PyArg_ParseTuple(args,"fi",&steeringValue,&wheelIndex))
+ if (PyArg_ParseTuple(args,"fi:setSteeringValue",&steeringValue,&wheelIndex))
{
m_vehicle->SetSteeringValue(steeringValue,wheelIndex);
}
@@ -286,9 +262,7 @@ PyObject* KX_VehicleWrapper::PySetSteeringValue(PyObject* self,
}
-PyObject* KX_VehicleWrapper::PyGetConstraintType(PyObject* self,
- PyObject* args,
- PyObject* kwds)
+PyObject* KX_VehicleWrapper::PyGetConstraintType(PyObject* args)
{
return PyInt_FromLong(m_vehicle->GetUserConstraintType());
}
@@ -299,38 +273,39 @@ PyObject* KX_VehicleWrapper::PyGetConstraintType(PyObject* self,
//python specific stuff
PyTypeObject KX_VehicleWrapper::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_VehicleWrapper",
- sizeof(KX_VehicleWrapper),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_VehicleWrapper::Parents[] = {
&KX_VehicleWrapper::Type,
+ &PyObjectPlus::Type,
NULL
};
-PyObject* KX_VehicleWrapper::_getattr(const char *attr)
+PyObject* KX_VehicleWrapper::py_getattro(PyObject *attr)
{
//here you can search for existing data members (like mass,friction etc.)
- _getattr_up(PyObjectPlus);
+ py_getattro_up(PyObjectPlus);
}
-int KX_VehicleWrapper::_setattr(const char *attr,PyObject* pyobj)
+int KX_VehicleWrapper::py_setattro(PyObject *attr,PyObject* pyobj)
{
-
+ /* TODO - strange setattr, needs updating */
PyTypeObject* type = pyobj->ob_type;
int result = 1;
@@ -352,7 +327,7 @@ int KX_VehicleWrapper::_setattr(const char *attr,PyObject* pyobj)
result = 0;
}
if (result)
- result = PyObjectPlus::_setattr(attr,pyobj);
+ result = PyObjectPlus::py_setattro(attr,pyobj);
return result;
};
diff --git a/source/gameengine/Ketsji/KX_VehicleWrapper.h b/source/gameengine/Ketsji/KX_VehicleWrapper.h
index cad926ce85a..de7fe75cfba 100644
--- a/source/gameengine/Ketsji/KX_VehicleWrapper.h
+++ b/source/gameengine/Ketsji/KX_VehicleWrapper.h
@@ -12,8 +12,8 @@ class PHY_IMotionState;
class KX_VehicleWrapper : public PyObjectPlus
{
Py_Header;
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *value);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
std::vector<PHY_IMotionState*> m_motionStates;
@@ -23,31 +23,31 @@ public:
int getConstraintId();
- KX_PYMETHOD(KX_VehicleWrapper,AddWheel);
- KX_PYMETHOD(KX_VehicleWrapper,GetNumWheels);
- KX_PYMETHOD(KX_VehicleWrapper,GetWheelOrientationQuaternion);
- KX_PYMETHOD(KX_VehicleWrapper,GetWheelRotation);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,AddWheel);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,GetNumWheels);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,GetWheelOrientationQuaternion);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,GetWheelRotation);
- KX_PYMETHOD(KX_VehicleWrapper,GetWheelPosition);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,GetWheelPosition);
- KX_PYMETHOD(KX_VehicleWrapper,GetConstraintId);
- KX_PYMETHOD(KX_VehicleWrapper,GetConstraintType);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,GetConstraintId);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,GetConstraintType);
- KX_PYMETHOD(KX_VehicleWrapper,SetSteeringValue);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,SetSteeringValue);
- KX_PYMETHOD(KX_VehicleWrapper,ApplyEngineForce);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,ApplyEngineForce);
- KX_PYMETHOD(KX_VehicleWrapper,ApplyBraking);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,ApplyBraking);
- KX_PYMETHOD(KX_VehicleWrapper,SetTyreFriction);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,SetTyreFriction);
- KX_PYMETHOD(KX_VehicleWrapper,SetSuspensionStiffness);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,SetSuspensionStiffness);
- KX_PYMETHOD(KX_VehicleWrapper,SetSuspensionDamping);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,SetSuspensionDamping);
- KX_PYMETHOD(KX_VehicleWrapper,SetSuspensionCompression);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,SetSuspensionCompression);
- KX_PYMETHOD(KX_VehicleWrapper,SetRollInfluence);
+ KX_PYMETHOD_VARARGS(KX_VehicleWrapper,SetRollInfluence);
private:
diff --git a/source/gameengine/Ketsji/KX_VertexProxy.cpp b/source/gameengine/Ketsji/KX_VertexProxy.cpp
index da0e3dbdd8d..88f63334285 100644
--- a/source/gameengine/Ketsji/KX_VertexProxy.cpp
+++ b/source/gameengine/Ketsji/KX_VertexProxy.cpp
@@ -37,22 +37,22 @@
#include "KX_PyMath.h"
PyTypeObject KX_VertexProxy::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+ PyObject_HEAD_INIT(NULL)
0,
"KX_VertexProxy",
- sizeof(KX_VertexProxy),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
};
PyParentObject KX_VertexProxy::Parents[] = {
@@ -79,47 +79,71 @@ PyMethodDef KX_VertexProxy::Methods[] = {
};
PyAttributeDef KX_VertexProxy::Attributes[] = {
+
+ KX_PYATTRIBUTE_DUMMY("x"),
+ KX_PYATTRIBUTE_DUMMY("y"),
+ KX_PYATTRIBUTE_DUMMY("z"),
+
+ KX_PYATTRIBUTE_DUMMY("r"),
+ KX_PYATTRIBUTE_DUMMY("g"),
+ KX_PYATTRIBUTE_DUMMY("b"),
+ KX_PYATTRIBUTE_DUMMY("a"),
+
+ KX_PYATTRIBUTE_DUMMY("u"),
+ KX_PYATTRIBUTE_DUMMY("v"),
+
+ KX_PYATTRIBUTE_DUMMY("u2"),
+ KX_PYATTRIBUTE_DUMMY("v2"),
+
+ KX_PYATTRIBUTE_DUMMY("XYZ"),
+ KX_PYATTRIBUTE_DUMMY("UV"),
+
+ KX_PYATTRIBUTE_DUMMY("color"),
+ KX_PYATTRIBUTE_DUMMY("colour"),
+
+ KX_PYATTRIBUTE_DUMMY("normal"),
+
{ NULL } //Sentinel
};
PyObject*
-KX_VertexProxy::_getattr(const char *attr)
+KX_VertexProxy::py_getattro(PyObject *attr)
{
-
- if (attr[1]=='\0') { // Group single letters
+ char *attr_str= PyString_AsString(attr);
+ if (attr_str[1]=='\0') { // Group single letters
// pos
- if (attr[0]=='x')
+ if (attr_str[0]=='x')
return PyFloat_FromDouble(m_vertex->getXYZ()[0]);
- if (attr[0]=='y')
+ if (attr_str[0]=='y')
return PyFloat_FromDouble(m_vertex->getXYZ()[1]);
- if (attr[0]=='z')
+ if (attr_str[0]=='z')
return PyFloat_FromDouble(m_vertex->getXYZ()[2]);
// Col
- if (attr[0]=='r')
+ if (attr_str[0]=='r')
return PyFloat_FromDouble(m_vertex->getRGBA()[0]/255.0);
- if (attr[0]=='g')
+ if (attr_str[0]=='g')
return PyFloat_FromDouble(m_vertex->getRGBA()[1]/255.0);
- if (attr[0]=='b')
+ if (attr_str[0]=='b')
return PyFloat_FromDouble(m_vertex->getRGBA()[2]/255.0);
- if (attr[0]=='a')
+ if (attr_str[0]=='a')
return PyFloat_FromDouble(m_vertex->getRGBA()[3]/255.0);
// UV
- if (attr[0]=='u')
+ if (attr_str[0]=='u')
return PyFloat_FromDouble(m_vertex->getUV1()[0]);
- if (attr[0]=='v')
+ if (attr_str[0]=='v')
return PyFloat_FromDouble(m_vertex->getUV1()[1]);
}
- if (!strcmp(attr, "XYZ"))
+ if (!strcmp(attr_str, "XYZ"))
return PyObjectFrom(MT_Vector3(m_vertex->getXYZ()));
- if (!strcmp(attr, "UV"))
+ if (!strcmp(attr_str, "UV"))
return PyObjectFrom(MT_Point2(m_vertex->getUV1()));
- if (!strcmp(attr, "color") || !strcmp(attr, "colour"))
+ if (!strcmp(attr_str, "color") || !strcmp(attr_str, "colour"))
{
const unsigned char *colp = m_vertex->getRGBA();
MT_Vector4 color(colp[0], colp[1], colp[2], colp[3]);
@@ -127,64 +151,65 @@ KX_VertexProxy::_getattr(const char *attr)
return PyObjectFrom(color);
}
- if (!strcmp(attr, "normal"))
+ if (!strcmp(attr_str, "normal"))
{
return PyObjectFrom(MT_Vector3(m_vertex->getNormal()));
}
- _getattr_up(SCA_IObject);
+ py_getattro_up(SCA_IObject);
}
-int KX_VertexProxy::_setattr(const char *attr, PyObject *pyvalue)
+int KX_VertexProxy::py_setattro(PyObject *attr, PyObject *pyvalue)
{
+ char *attr_str= PyString_AsString(attr);
if (PySequence_Check(pyvalue))
{
- if (!strcmp(attr, "XYZ"))
+ if (!strcmp(attr_str, "XYZ"))
{
MT_Point3 vec;
if (PyVecTo(pyvalue, vec))
{
m_vertex->SetXYZ(vec);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- return 1;
+ return PY_SET_ATTR_FAIL;
}
- if (!strcmp(attr, "UV"))
+ if (!strcmp(attr_str, "UV"))
{
MT_Point2 vec;
if (PyVecTo(pyvalue, vec))
{
m_vertex->SetUV(vec);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- return 1;
+ return PY_SET_ATTR_FAIL;
}
- if (!strcmp(attr, "color") || !strcmp(attr, "colour"))
+ if (!strcmp(attr_str, "color") || !strcmp(attr_str, "colour"))
{
MT_Vector4 vec;
if (PyVecTo(pyvalue, vec))
{
m_vertex->SetRGBA(vec);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- return 1;
+ return PY_SET_ATTR_FAIL;
}
- if (!strcmp(attr, "normal"))
+ if (!strcmp(attr_str, "normal"))
{
MT_Vector3 vec;
if (PyVecTo(pyvalue, vec))
{
m_vertex->SetNormal(vec);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- return 1;
+ return PY_SET_ATTR_FAIL;
}
}
@@ -193,51 +218,51 @@ int KX_VertexProxy::_setattr(const char *attr, PyObject *pyvalue)
float val = PyFloat_AsDouble(pyvalue);
// pos
MT_Point3 pos(m_vertex->getXYZ());
- if (!strcmp(attr, "x"))
+ if (!strcmp(attr_str, "x"))
{
pos.x() = val;
m_vertex->SetXYZ(pos);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "y"))
+ if (!strcmp(attr_str, "y"))
{
pos.y() = val;
m_vertex->SetXYZ(pos);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "z"))
+ if (!strcmp(attr_str, "z"))
{
pos.z() = val;
m_vertex->SetXYZ(pos);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
// uv
MT_Point2 uv = m_vertex->getUV1();
- if (!strcmp(attr, "u"))
+ if (!strcmp(attr_str, "u"))
{
uv[0] = val;
m_vertex->SetUV(uv);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "v"))
+ if (!strcmp(attr_str, "v"))
{
uv[1] = val;
m_vertex->SetUV(uv);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
// uv
MT_Point2 uv2 = m_vertex->getUV2();
- if (!strcmp(attr, "u2"))
+ if (!strcmp(attr_str, "u2"))
{
uv[0] = val;
m_vertex->SetUV2(uv);
@@ -245,49 +270,49 @@ int KX_VertexProxy::_setattr(const char *attr, PyObject *pyvalue)
return 0;
}
- if (!strcmp(attr, "v2"))
+ if (!strcmp(attr_str, "v2"))
{
uv[1] = val;
m_vertex->SetUV2(uv);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
// col
unsigned int icol = *((const unsigned int *)m_vertex->getRGBA());
unsigned char *cp = (unsigned char*) &icol;
val *= 255.0;
- if (!strcmp(attr, "r"))
+ if (!strcmp(attr_str, "r"))
{
cp[0] = (unsigned char) val;
m_vertex->SetRGBA(icol);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "g"))
+ if (!strcmp(attr_str, "g"))
{
cp[1] = (unsigned char) val;
m_vertex->SetRGBA(icol);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "b"))
+ if (!strcmp(attr_str, "b"))
{
cp[2] = (unsigned char) val;
m_vertex->SetRGBA(icol);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr, "a"))
+ if (!strcmp(attr_str, "a"))
{
cp[3] = (unsigned char) val;
m_vertex->SetRGBA(icol);
m_mesh->SetMeshModified(true);
- return 0;
+ return PY_SET_ATTR_SUCCESS;
}
}
- return SCA_IObject::_setattr(attr, pyvalue);
+ return SCA_IObject::py_setattro(attr, pyvalue);
}
KX_VertexProxy::KX_VertexProxy(KX_MeshProxy*mesh, RAS_TexVert* vertex)
@@ -307,7 +332,7 @@ CValue* KX_VertexProxy::Calc(VALUE_OPERATOR, CValue *) { return NULL;}
CValue* KX_VertexProxy::CalcFinal(VALUE_DATA_TYPE, VALUE_OPERATOR, CValue *) { return NULL;}
STR_String sVertexName="vertex";
const STR_String & KX_VertexProxy::GetText() {return sVertexName;};
-float KX_VertexProxy::GetNumber() { return -1;}
+double KX_VertexProxy::GetNumber() { return -1;}
STR_String KX_VertexProxy::GetName() { return sVertexName;}
void KX_VertexProxy::SetName(STR_String) { };
CValue* KX_VertexProxy::GetReplica() { return NULL;}
@@ -316,12 +341,12 @@ void KX_VertexProxy::ReplicaSetName(STR_String) {};
// stuff for python integration
-PyObject* KX_VertexProxy::PyGetXYZ(PyObject*)
+PyObject* KX_VertexProxy::PyGetXYZ()
{
return PyObjectFrom(MT_Point3(m_vertex->getXYZ()));
}
-PyObject* KX_VertexProxy::PySetXYZ(PyObject*, PyObject* value)
+PyObject* KX_VertexProxy::PySetXYZ(PyObject* value)
{
MT_Point3 vec;
if (!PyVecTo(value, vec))
@@ -332,12 +357,12 @@ PyObject* KX_VertexProxy::PySetXYZ(PyObject*, PyObject* value)
Py_RETURN_NONE;
}
-PyObject* KX_VertexProxy::PyGetNormal(PyObject*)
+PyObject* KX_VertexProxy::PyGetNormal()
{
return PyObjectFrom(MT_Vector3(m_vertex->getNormal()));
}
-PyObject* KX_VertexProxy::PySetNormal(PyObject*, PyObject* value)
+PyObject* KX_VertexProxy::PySetNormal(PyObject* value)
{
MT_Vector3 vec;
if (!PyVecTo(value, vec))
@@ -349,13 +374,13 @@ PyObject* KX_VertexProxy::PySetNormal(PyObject*, PyObject* value)
}
-PyObject* KX_VertexProxy::PyGetRGBA(PyObject*)
+PyObject* KX_VertexProxy::PyGetRGBA()
{
int *rgba = (int *) m_vertex->getRGBA();
return PyInt_FromLong(*rgba);
}
-PyObject* KX_VertexProxy::PySetRGBA(PyObject*, PyObject* value)
+PyObject* KX_VertexProxy::PySetRGBA(PyObject* value)
{
if PyInt_Check(value) {
int rgba = PyInt_AsLong(value);
@@ -373,17 +398,17 @@ PyObject* KX_VertexProxy::PySetRGBA(PyObject*, PyObject* value)
}
}
- PyErr_SetString(PyExc_TypeError, "expected a 4D vector or an int");
+ PyErr_SetString(PyExc_TypeError, "vert.setRGBA(value): KX_VertexProxy, expected a 4D vector or an int");
return NULL;
}
-PyObject* KX_VertexProxy::PyGetUV(PyObject*)
+PyObject* KX_VertexProxy::PyGetUV()
{
return PyObjectFrom(MT_Vector2(m_vertex->getUV1()));
}
-PyObject* KX_VertexProxy::PySetUV(PyObject*, PyObject* value)
+PyObject* KX_VertexProxy::PySetUV(PyObject* value)
{
MT_Point2 vec;
if (!PyVecTo(value, vec))
@@ -394,12 +419,12 @@ PyObject* KX_VertexProxy::PySetUV(PyObject*, PyObject* value)
Py_RETURN_NONE;
}
-PyObject* KX_VertexProxy::PyGetUV2(PyObject*)
+PyObject* KX_VertexProxy::PyGetUV2()
{
return PyObjectFrom(MT_Vector2(m_vertex->getUV2()));
}
-PyObject* KX_VertexProxy::PySetUV2(PyObject*, PyObject* args)
+PyObject* KX_VertexProxy::PySetUV2(PyObject* args)
{
MT_Point2 vec;
unsigned int unit=0;
diff --git a/source/gameengine/Ketsji/KX_VertexProxy.h b/source/gameengine/Ketsji/KX_VertexProxy.h
index 28196075904..67a15d96768 100644
--- a/source/gameengine/Ketsji/KX_VertexProxy.h
+++ b/source/gameengine/Ketsji/KX_VertexProxy.h
@@ -46,7 +46,7 @@ public:
CValue* Calc(VALUE_OPERATOR op, CValue *val) ;
CValue* CalcFinal(VALUE_DATA_TYPE dtype, VALUE_OPERATOR op, CValue *val);
const STR_String & GetText();
- float GetNumber();
+ double GetNumber();
STR_String GetName();
void SetName(STR_String name); // Set the name of the value
void ReplicaSetName(STR_String name);
@@ -54,8 +54,8 @@ public:
// stuff for python integration
- virtual PyObject* _getattr(const char *attr);
- virtual int _setattr(const char *attr, PyObject *pyvalue);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *pyvalue);
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetXYZ);
KX_PYMETHOD_O(KX_VertexProxy,SetXYZ);
diff --git a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
index 0ec280080bd..ba59d0d3d47 100644
--- a/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
+++ b/source/gameengine/Ketsji/KX_VisibilityActuator.cpp
@@ -38,11 +38,13 @@
KX_VisibilityActuator::KX_VisibilityActuator(
SCA_IObject* gameobj,
bool visible,
+ bool occlusion,
bool recursive,
PyTypeObject* T
)
: SCA_IActuator(gameobj,T),
m_visible(visible),
+ m_occlusion(occlusion),
m_recursive(recursive)
{
// intentionally empty
@@ -78,6 +80,7 @@ KX_VisibilityActuator::Update()
KX_GameObject *obj = (KX_GameObject*) GetParent();
obj->SetVisible(m_visible, m_recursive);
+ obj->SetOccluder(m_occlusion, m_recursive);
obj->UpdateBuckets(m_recursive);
return false;
@@ -90,24 +93,24 @@ KX_VisibilityActuator::Update()
/* Integration hooks ------------------------------------------------------- */
-PyTypeObject
-KX_VisibilityActuator::Type = {
- PyObject_HEAD_INIT(&PyType_Type)
+PyTypeObject KX_VisibilityActuator::Type = {
+ PyObject_HEAD_INIT(NULL)
0,
"KX_VisibilityActuator",
- sizeof(KX_VisibilityActuator),
+ sizeof(PyObjectPlus_Proxy),
0,
- PyDestructor,
+ py_base_dealloc,
0,
- __getattr,
- __setattr,
- 0, //&MyPyCompare,
- __repr,
- 0, //&cvalue_as_number,
0,
0,
0,
- 0
+ py_base_repr,
+ 0,0,0,0,0,0,
+ py_base_getattro,
+ py_base_setattro,
+ 0,0,0,0,0,0,0,0,0,
+ Methods
+
};
PyParentObject
@@ -121,20 +124,29 @@ KX_VisibilityActuator::Parents[] = {
PyMethodDef
KX_VisibilityActuator::Methods[] = {
- {"set", (PyCFunction) KX_VisibilityActuator::sPySetVisible,
- METH_VARARGS, (PY_METHODCHAR)SetVisible_doc},
+ // Deprecated ----->
+ {"set", (PyCFunction) KX_VisibilityActuator::sPySetVisible, METH_VARARGS,
+ (PY_METHODCHAR) SetVisible_doc},
+ // <-----
{NULL,NULL} //Sentinel
};
PyAttributeDef KX_VisibilityActuator::Attributes[] = {
+ KX_PYATTRIBUTE_BOOL_RW("visibility", KX_VisibilityActuator, m_visible),
+ KX_PYATTRIBUTE_BOOL_RW("occlusion", KX_VisibilityActuator, m_occlusion),
+ KX_PYATTRIBUTE_BOOL_RW("recursion", KX_VisibilityActuator, m_recursive),
{ NULL } //Sentinel
};
-PyObject* KX_VisibilityActuator::_getattr(const char *attr)
+PyObject* KX_VisibilityActuator::py_getattro(PyObject *attr)
{
- _getattr_up(SCA_IActuator);
-};
+ py_getattro_up(SCA_IActuator);
+}
+int KX_VisibilityActuator::py_setattro(PyObject *attr, PyObject *value)
+{
+ py_setattro_up(SCA_IActuator);
+}
/* set visibility ---------------------------------------------------------- */
@@ -145,12 +157,11 @@ KX_VisibilityActuator::SetVisible_doc[] =
"\tSet the properties of the actuator.\n";
PyObject*
-KX_VisibilityActuator::PySetVisible(PyObject* self,
- PyObject* args,
- PyObject* kwds) {
+KX_VisibilityActuator::PySetVisible(PyObject* args) {
int vis;
+ ShowDeprecationWarning("SetVisible()", "the visible property");
- if(!PyArg_ParseTuple(args, "i", &vis)) {
+ if(!PyArg_ParseTuple(args, "i:setVisible", &vis)) {
return NULL;
}
diff --git a/source/gameengine/Ketsji/KX_VisibilityActuator.h b/source/gameengine/Ketsji/KX_VisibilityActuator.h
index 323280de8cb..04633bce665 100644
--- a/source/gameengine/Ketsji/KX_VisibilityActuator.h
+++ b/source/gameengine/Ketsji/KX_VisibilityActuator.h
@@ -39,6 +39,7 @@ class KX_VisibilityActuator : public SCA_IActuator
/** Make visible? */
bool m_visible;
+ bool m_occlusion;
bool m_recursive;
public:
@@ -46,6 +47,7 @@ class KX_VisibilityActuator : public SCA_IActuator
KX_VisibilityActuator(
SCA_IObject* gameobj,
bool visible,
+ bool occlusion,
bool recursive,
PyTypeObject* T=&Type
);
@@ -67,9 +69,13 @@ class KX_VisibilityActuator : public SCA_IActuator
/* Python interface ---------------------------------------------------- */
/* --------------------------------------------------------------------- */
- virtual PyObject* _getattr(const char *attr);
- //KX_PYMETHOD_DOC
- KX_PYMETHOD_DOC(KX_VisibilityActuator,SetVisible);
+ virtual PyObject* py_getattro(PyObject *attr);
+ virtual int py_setattro(PyObject *attr, PyObject *value);
+
+ // Deprecated ----->
+ KX_PYMETHOD_DOC_VARARGS(KX_VisibilityActuator,SetVisible);
+ // <-----
+
};
diff --git a/source/gameengine/Ketsji/SConscript b/source/gameengine/Ketsji/SConscript
index 950c82b2795..0e888edd43b 100644
--- a/source/gameengine/Ketsji/SConscript
+++ b/source/gameengine/Ketsji/SConscript
@@ -6,7 +6,7 @@ Import ('env')
sources = env.Glob('*.cpp')
defs = ''
-#XXX
+# XXX 2.5
# Mathutils C files.
#sources.extend([\
# '#source/blender/python/api2_2x/Mathutils.c',\
@@ -18,8 +18,17 @@ defs = ''
# '#source/blender/python/api2_2x/quat.c',\
# '#source/blender/python/api2_2x/vector.c',\
#])
+#
+#sources.extend([\
+# '#source/blender/python/api2_2x/bpy_internal_import.c'
+#])
+#
+#
+#sources.extend([\
+# '#source/blender/python/api2_2x/BGL.c'
+#])
-incs = '. #source/blender/python/api2_2x' # Only for Mathutils! - no other deps
+incs = '. #source/blender/python/api2_2x' # Only for Mathutils! and bpy_internal_import.h, be very careful
incs += ' #source/kernel/gen_system #intern/string #intern/guardedalloc'
incs += ' #source/gameengine/Rasterizer/RAS_OpenGLRasterizer #intern/bmfont'
diff --git a/source/gameengine/Network/NG_NetworkScene.h b/source/gameengine/Network/NG_NetworkScene.h
index 58de9cf6af2..fc6367c3526 100644
--- a/source/gameengine/Network/NG_NetworkScene.h
+++ b/source/gameengine/Network/NG_NetworkScene.h
@@ -34,6 +34,11 @@
#include "STR_HashedString.h"
#include <vector>
+//MSVC defines SendMessage as a win api function, even though we aren't using it
+#ifdef SendMessage
+ #undef SendMessage
+#endif
+
class NG_NetworkDeviceInterface;
class NG_NetworkScene
diff --git a/source/gameengine/Physics/BlOde/OdePhysicsController.h b/source/gameengine/Physics/BlOde/OdePhysicsController.h
index 925f5b6686a..e97afdb68c3 100644
--- a/source/gameengine/Physics/BlOde/OdePhysicsController.h
+++ b/source/gameengine/Physics/BlOde/OdePhysicsController.h
@@ -124,6 +124,10 @@ public:
float getFriction() { return m_friction;}
float getRestitution() { return m_restitution;}
+ float GetLinVelocityMin() const { return 0.f; }
+ void SetLinVelocityMin(float val) { }
+ float GetLinVelocityMax() const { return 0.f; }
+ void SetLinVelocityMax(float val) { }
private:
diff --git a/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h b/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h
index dcc87d614c0..2e4709cf420 100644
--- a/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h
+++ b/source/gameengine/Physics/BlOde/OdePhysicsEnvironment.h
@@ -55,6 +55,7 @@ public:
virtual void removeConstraint(void * constraintid);
virtual PHY_IPhysicsController* rayTest(PHY_IRayCastFilterCallback &filterCallback,float fromX,float fromY,float fromZ, float toX,float toY,float toZ);
+ virtual bool cullingTest(PHY_CullingCallback callback, void* userData, PHY__Vector4* planes, int nplanes, int occlusionRes) { return false; }
//gamelogic callbacks
diff --git a/source/gameengine/Physics/Bullet/CMakeLists.txt b/source/gameengine/Physics/Bullet/CMakeLists.txt
index 6c733786caf..ec2cdede683 100644
--- a/source/gameengine/Physics/Bullet/CMakeLists.txt
+++ b/source/gameengine/Physics/Bullet/CMakeLists.txt
@@ -24,16 +24,24 @@
#
# ***** END GPL LICENSE BLOCK *****
-SET(SRC CcdPhysicsEnvironment.cpp CcdPhysicsController.cpp)
+SET(SRC CcdPhysicsEnvironment.cpp CcdPhysicsController.cpp CcdGraphicController.cpp)
SET(INC
.
../common
../../../../extern/bullet2/src
+ ../../../../extern/glew/include
../../../../intern/moto/include
../../../kernel/gen_system
../../../../intern/string
+ ../../../../intern/SoundSystem
../../Rasterizer
+ ../../Ketsji
+ ../../Expressions
+ ../../GameLogic
+ ../../SceneGraph
+ ../../../../source/blender/makesdna
+ ${PYTHON_INC}
)
BLENDERLIB(bf_bullet "${SRC}" "${INC}")
diff --git a/source/gameengine/Physics/Bullet/CcdGraphicController.cpp b/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
new file mode 100644
index 00000000000..caf18fd28ba
--- /dev/null
+++ b/source/gameengine/Physics/Bullet/CcdGraphicController.cpp
@@ -0,0 +1,112 @@
+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+#include "CcdPhysicsEnvironment.h"
+#include "CcdGraphicController.h"
+#include "btBulletDynamicsCommon.h"
+#include "MT_Point3.h"
+
+
+CcdGraphicController::CcdGraphicController (CcdPhysicsEnvironment* phyEnv, PHY_IMotionState* motionState) :
+ m_localAabbMin(0.f, 0.f, 0.f),
+ m_localAabbMax(0.f, 0.f, 0.f),
+ m_motionState(motionState),
+ m_phyEnv(phyEnv),
+ m_handle(NULL),
+ m_newClientInfo(NULL)
+{
+}
+
+CcdGraphicController::~CcdGraphicController()
+{
+ if (m_phyEnv)
+ m_phyEnv->removeCcdGraphicController(this);
+
+ if (m_motionState)
+ delete m_motionState;
+}
+
+void CcdGraphicController::setLocalAabb(const btVector3& aabbMin,const btVector3& aabbMax)
+{
+ m_localAabbMin = aabbMin;
+ m_localAabbMax = aabbMax;
+ SetGraphicTransform();
+}
+
+void CcdGraphicController::setLocalAabb(const MT_Point3& aabbMin,const MT_Point3& aabbMax)
+{
+ m_localAabbMin = btVector3(aabbMin[0],aabbMin[1],aabbMin[2]);
+ m_localAabbMax = btVector3(aabbMax[0],aabbMax[1],aabbMax[2]);
+ SetGraphicTransform();
+}
+
+
+void CcdGraphicController::getAabb(btVector3& aabbMin, btVector3& aabbMax)
+{
+ btVector3 pos;
+ btVector3 scale;
+ float ori[12];
+ m_motionState->getWorldPosition(pos.m_floats[0],pos.m_floats[1],pos.m_floats[2]);
+ m_motionState->getWorldScaling(scale.m_floats[0],scale.m_floats[1],scale.m_floats[2]);
+ m_motionState->getWorldOrientation(ori);
+ btMatrix3x3 rot(ori[0], ori[4], ori[8],
+ ori[1], ori[5], ori[9],
+ ori[2], ori[6], ori[10]);
+
+ btVector3 localAabbMin = m_localAabbMin;
+ btVector3 localAabbMax = m_localAabbMax;
+ btVector3 tmpAabbMin = m_localAabbMin * scale;
+ btVector3 tmpAabbMax = m_localAabbMax * scale;
+
+ localAabbMin[0] = (scale.getX() >= 0.) ? tmpAabbMin[0] : tmpAabbMax[0];
+ localAabbMin[1] = (scale.getY() >= 0.) ? tmpAabbMin[1] : tmpAabbMax[1];
+ localAabbMin[2] = (scale.getZ() >= 0.) ? tmpAabbMin[2] : tmpAabbMax[2];
+ localAabbMax[0] = (scale.getX() <= 0.) ? tmpAabbMin[0] : tmpAabbMax[0];
+ localAabbMax[1] = (scale.getY() <= 0.) ? tmpAabbMin[1] : tmpAabbMax[1];
+ localAabbMax[2] = (scale.getZ() <= 0.) ? tmpAabbMin[2] : tmpAabbMax[2];
+
+ btVector3 localHalfExtents = btScalar(0.5)*(localAabbMax-localAabbMin);
+ btVector3 localCenter = btScalar(0.5)*(localAabbMax+localAabbMin);
+
+ btMatrix3x3 abs_b = rot.absolute();
+ btVector3 center = rot*localCenter + pos;
+ btVector3 extent = abs_b*localHalfExtents;
+ aabbMin = center - extent;
+ aabbMax = center + extent;
+}
+
+bool CcdGraphicController::SetGraphicTransform()
+{
+ if (!m_handle)
+ return false;
+ btVector3 aabbMin;
+ btVector3 aabbMax;
+ getAabb(aabbMin, aabbMax);
+ // update Aabb in broadphase
+ m_phyEnv->getCullingTree()->setAabb(m_handle,aabbMin,aabbMax,NULL);
+ return true;
+}
+
+PHY_IGraphicController* CcdGraphicController::GetReplica(class PHY_IMotionState* motionState)
+{
+ CcdGraphicController* replica = new CcdGraphicController(*this);
+ replica->m_motionState = motionState;
+ replica->m_newClientInfo = NULL;
+ replica->m_handle = NULL;
+ m_phyEnv->addCcdGraphicController(replica);
+ return replica;
+}
+
+
diff --git a/source/gameengine/Physics/Bullet/CcdGraphicController.h b/source/gameengine/Physics/Bullet/CcdGraphicController.h
new file mode 100644
index 00000000000..8faa0944313
--- /dev/null
+++ b/source/gameengine/Physics/Bullet/CcdGraphicController.h
@@ -0,0 +1,74 @@
+/*
+Bullet Continuous Collision Detection and Physics Library
+Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
+
+This software is provided 'as-is', without any express or implied warranty.
+In no event will the authors be held liable for any damages arising from the use of this software.
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it freely,
+subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+*/
+
+
+#ifndef BULLET2_GRAPHICCONTROLLER_H
+#define BULLET2_GRAPHICCONTROLLER_H
+
+#include "PHY_IGraphicController.h"
+
+#include "btBulletDynamicsCommon.h"
+#include "LinearMath/btTransform.h"
+
+#include "PHY_IMotionState.h"
+#include "MT_Point3.h"
+
+class CcdPhysicsEnvironment;
+class btCollisionObject;
+
+///CcdGraphicController is a graphic object that supports view frustrum culling and occlusion
+class CcdGraphicController : public PHY_IGraphicController
+{
+public:
+ CcdGraphicController(CcdPhysicsEnvironment* phyEnv, PHY_IMotionState* motionState);
+
+ virtual ~CcdGraphicController();
+
+ void setLocalAabb(const btVector3& aabbMin,const btVector3& aabbMax);
+ void setLocalAabb(const MT_Point3& aabbMin,const MT_Point3& aabbMax);
+
+ PHY_IMotionState* GetMotionState() { return m_motionState; }
+ void getAabb(btVector3& aabbMin, btVector3& aabbMax);
+
+ virtual void setBroadphaseHandle(btBroadphaseProxy* handle) { m_handle = handle; }
+ virtual btBroadphaseProxy* getBroadphaseHandle() { return m_handle; }
+
+ ////////////////////////////////////
+ // PHY_IGraphicController interface
+ ////////////////////////////////////
+
+ /**
+ * Updates the Aabb based on the motion state
+ */
+ virtual bool SetGraphicTransform();
+
+ // client info for culling
+ virtual void* getNewClientInfo() { return m_newClientInfo; }
+ virtual void setNewClientInfo(void* clientinfo) { m_newClientInfo = clientinfo; }
+ virtual PHY_IGraphicController* GetReplica(class PHY_IMotionState* motionstate);
+
+private:
+ // unscaled aabb corner
+ btVector3 m_localAabbMin;
+ btVector3 m_localAabbMax;
+
+ PHY_IMotionState* m_motionState;
+ CcdPhysicsEnvironment* m_phyEnv;
+ btBroadphaseProxy* m_handle;
+ void* m_newClientInfo;
+
+};
+
+#endif //BULLET2_PHYSICSCONTROLLER_H
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
index eecdea55349..0b9da8f46d3 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
@@ -16,6 +16,9 @@ subject to the following restrictions:
#include "CcdPhysicsController.h"
#include "btBulletDynamicsCommon.h"
#include "BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h"
+
+#include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h"
+
#include "PHY_IMotionState.h"
#include "CcdPhysicsEnvironment.h"
#include "RAS_MeshObject.h"
@@ -24,10 +27,14 @@ subject to the following restrictions:
#include "BulletSoftBody/btSoftBodyHelpers.h"
#include "LinearMath/btConvexHull.h"
#include "BulletCollision/Gimpact/btGImpactShape.h"
+#include "BulletCollision/Gimpact/btGImpactShape.h"
#include "BulletSoftBody/btSoftRigidDynamicsWorld.h"
+#include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
+
class BP_Proxy;
///todo: fill all the empty CcdPhysicsController methods, hook them up to the btRigidBody class
@@ -577,7 +584,19 @@ bool CcdPhysicsController::SynchronizeMotionStates(float time)
if (body && !body->isStaticObject())
{
-
+
+ if ((m_cci.m_clamp_vel_max>0.0) || (m_cci.m_clamp_vel_min>0.0))
+ {
+ const btVector3& linvel = body->getLinearVelocity();
+ float len= linvel.length();
+
+ if((m_cci.m_clamp_vel_max>0.0) && (len > m_cci.m_clamp_vel_max))
+ body->setLinearVelocity(linvel * (m_cci.m_clamp_vel_max / len));
+
+ else if ((m_cci.m_clamp_vel_min>0.0) && btFuzzyZero(len)==0 && (len < m_cci.m_clamp_vel_min))
+ body->setLinearVelocity(linvel * (m_cci.m_clamp_vel_min / len));
+ }
+
const btVector3& worldPos = body->getCenterOfMassPosition();
m_MotionState->setWorldPosition(worldPos[0],worldPos[1],worldPos[2]);
@@ -1238,6 +1257,22 @@ void DefaultMotionState::getWorldOrientation(float& quatIma0,float& quatIma1,flo
quatReal = m_worldTransform.getRotation()[3];
}
+void DefaultMotionState::getWorldOrientation(float* ori)
+{
+ *ori++ = m_worldTransform.getBasis()[0].x();
+ *ori++ = m_worldTransform.getBasis()[1].x();
+ *ori++ = m_worldTransform.getBasis()[1].x();
+ *ori++ = 0.f;
+ *ori++ = m_worldTransform.getBasis()[0].y();
+ *ori++ = m_worldTransform.getBasis()[1].y();
+ *ori++ = m_worldTransform.getBasis()[1].y();
+ *ori++ = 0.f;
+ *ori++ = m_worldTransform.getBasis()[0].z();
+ *ori++ = m_worldTransform.getBasis()[1].z();
+ *ori++ = m_worldTransform.getBasis()[1].z();
+ *ori++ = 0.f;
+}
+
void DefaultMotionState::setWorldPosition(float posX,float posY,float posZ)
{
btVector3 pos(posX,posY,posZ);
@@ -1272,123 +1307,212 @@ CcdShapeConstructionInfo* CcdShapeConstructionInfo::FindMesh(RAS_MeshObject* mes
bool CcdShapeConstructionInfo::SetMesh(RAS_MeshObject* meshobj, bool polytope,bool useGimpact)
{
+ int numpolys;
+
m_useGimpact = useGimpact;
// assume no shape information
// no support for dynamic change of shape yet
assert(IsUnused());
m_shapeType = PHY_SHAPE_NONE;
- m_vertexArray.clear();
- m_polygonIndexArray.clear();
m_meshObject = NULL;
- if (!meshobj)
- return false;
-
- // Mesh has no polygons!
- int numpolys = meshobj->NumPolygons();
- if (!numpolys)
- {
+ // No mesh object or mesh has no polys
+ if (!meshobj || meshobj->HasColliderPolygon()==false) {
+ m_vertexArray.clear();
+ m_polygonIndexArray.clear();
+ m_triFaceArray.clear();
return false;
}
- // check that we have at least one colliding polygon
- int numvalidpolys = 0;
+ numpolys = meshobj->NumPolygons();
- for (int p=0; p<numpolys; p++)
- {
- RAS_Polygon* poly = meshobj->GetPolygon(p);
+ m_shapeType = (polytope) ? PHY_SHAPE_POLYTOPE : PHY_SHAPE_MESH;
- // only add polygons that have the collisionflag set
- if (poly->IsCollider())
+ /* Convert blender geometry into bullet mesh, need these vars for mapping */
+ vector<bool> vert_tag_array(meshobj->GetMesh()->totvert, false);
+ unsigned int tot_bt_verts= 0;
+ unsigned int orig_index;
+ int i;
+
+ if (polytope)
+ {
+ // Tag verts we're using
+ for (int p2=0; p2<numpolys; p2++)
{
- numvalidpolys++;
- break;
- }
- }
+ RAS_Polygon* poly= meshobj->GetPolygon(p2);
- // No collision polygons
- if (numvalidpolys < 1)
- return false;
+ // only add polygons that have the collision flag set
+ if (poly->IsCollider())
+ {
+ for(i=0; i<poly->VertexCount(); i++) {
+ orig_index= poly->GetVertex(i)->getOrigIndex();
+ if (vert_tag_array[orig_index]==false)
+ {
+ vert_tag_array[orig_index]= true;
+ tot_bt_verts++;
+ }
+ }
+ }
+ }
- m_shapeType = (polytope) ? PHY_SHAPE_POLYTOPE : PHY_SHAPE_MESH;
+ m_vertexArray.resize(tot_bt_verts);
- numvalidpolys = 0;
+ btVector3 *bt= &m_vertexArray[0];
- for (int p2=0; p2<numpolys; p2++)
- {
- RAS_Polygon* poly = meshobj->GetPolygon(p2);
+ for (int p2=0; p2<numpolys; p2++)
+ {
+ RAS_Polygon* poly= meshobj->GetPolygon(p2);
- // only add polygons that have the collisionflag set
- if (poly->IsCollider())
- {
- //Bullet can raycast any shape, so
- if (polytope)
+ // only add polygons that have the collisionflag set
+ if (poly->IsCollider())
{
- for (int i=0;i<poly->VertexCount();i++)
- {
- const float* vtx = poly->GetVertex(i)->getXYZ();
- btVector3 point(vtx[0],vtx[1],vtx[2]);
- //avoid duplicates (could better directly use vertex offsets, rather than a vertex compare)
- bool found = false;
- for (int j=0;j<m_vertexArray.size();j++)
+ for(i=0; i<poly->VertexCount(); i++) {
+ RAS_TexVert *v= poly->GetVertex(i);
+ orig_index= v->getOrigIndex();
+
+ if (vert_tag_array[orig_index]==true)
{
- if (m_vertexArray[j]==point)
- {
- found = true;
- break;
- }
- }
- if (!found)
- m_vertexArray.push_back(point);
+ const float* vtx = v->getXYZ();
+ vert_tag_array[orig_index]= false;
- numvalidpolys++;
+ bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
+ bt++;
+ }
}
- } else
+ }
+ }
+ }
+ else {
+ unsigned int tot_bt_tris= 0;
+ vector<int> vert_remap_array(meshobj->GetMesh()->totvert, 0);
+
+ // Tag verts we're using
+ for (int p2=0; p2<numpolys; p2++)
+ {
+ RAS_Polygon* poly= meshobj->GetPolygon(p2);
+
+ // only add polygons that have the collision flag set
+ if (poly->IsCollider())
{
- {
- const float* vtx = poly->GetVertex(2)->getXYZ();
- btVector3 vertex0(vtx[0],vtx[1],vtx[2]);
+ for(i=0; i<poly->VertexCount(); i++) {
+ orig_index= poly->GetVertex(i)->getOrigIndex();
+ if (vert_tag_array[orig_index]==false)
+ {
+ vert_tag_array[orig_index]= true;
+ vert_remap_array[orig_index]= tot_bt_verts;
+ tot_bt_verts++;
+ }
+ }
+
+ tot_bt_tris += (i==4 ? 2:1); /* a quad or a tri */
+ }
+ }
- vtx = poly->GetVertex(1)->getXYZ();
- btVector3 vertex1(vtx[0],vtx[1],vtx[2]);
+ m_vertexArray.resize(tot_bt_verts);
+ m_polygonIndexArray.resize(tot_bt_tris);
+ m_triFaceArray.resize(tot_bt_tris*3);
- vtx = poly->GetVertex(0)->getXYZ();
- btVector3 vertex2(vtx[0],vtx[1],vtx[2]);
+ btVector3 *bt= &m_vertexArray[0];
+ int *poly_index_pt= &m_polygonIndexArray[0];
+ int *tri_pt= &m_triFaceArray[0];
- m_vertexArray.push_back(vertex0);
- m_vertexArray.push_back(vertex1);
- m_vertexArray.push_back(vertex2);
- m_polygonIndexArray.push_back(p2);
- numvalidpolys++;
+
+ for (int p2=0; p2<numpolys; p2++)
+ {
+ RAS_Polygon* poly= meshobj->GetPolygon(p2);
+
+ // only add polygons that have the collisionflag set
+ if (poly->IsCollider())
+ {
+ RAS_TexVert *v1= poly->GetVertex(0);
+ RAS_TexVert *v2= poly->GetVertex(1);
+ RAS_TexVert *v3= poly->GetVertex(2);
+ int i1= v1->getOrigIndex();
+ int i2= v2->getOrigIndex();
+ int i3= v3->getOrigIndex();
+ const float* vtx;
+
+ // the face indicies
+ tri_pt[0]= vert_remap_array[i1];
+ tri_pt[1]= vert_remap_array[i2];
+ tri_pt[2]= vert_remap_array[i3];
+ tri_pt= tri_pt+3;
+
+ // m_polygonIndexArray
+ *poly_index_pt= p2;
+ poly_index_pt++;
+
+ // the vertex location
+ if (vert_tag_array[i1]==true) { /* *** v1 *** */
+ vert_tag_array[i1]= false;
+ vtx = v1->getXYZ();
+ bt->setX(vtx[0]); bt->setY( vtx[1]); bt->setZ(vtx[2]);
+ bt++;
+ }
+ if (vert_tag_array[i2]==true) { /* *** v2 *** */
+ vert_tag_array[i2]= false;
+ vtx = v2->getXYZ();
+ bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
+ bt++;
}
- if (poly->VertexCount() == 4)
+ if (vert_tag_array[i3]==true) { /* *** v3 *** */
+ vert_tag_array[i3]= false;
+ vtx = v3->getXYZ();
+ bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
+ bt++;
+ }
+
+ if (poly->VertexCount()==4)
{
- const float* vtx = poly->GetVertex(3)->getXYZ();
- btVector3 vertex0(vtx[0],vtx[1],vtx[2]);
+ RAS_TexVert *v4= poly->GetVertex(3);
+ int i4= v4->getOrigIndex();
+
+ tri_pt[0]= vert_remap_array[i1];
+ tri_pt[1]= vert_remap_array[i3];
+ tri_pt[2]= vert_remap_array[i4];
+ tri_pt= tri_pt+3;
+
+ // m_polygonIndexArray
+ *poly_index_pt= p2;
+ poly_index_pt++;
+
+ // the vertex location
+ if (vert_tag_array[i4]==true) { /* *** v4 *** */
+ vert_tag_array[i4]= false;
+ vtx = v4->getXYZ();
+ bt->setX(vtx[0]); bt->setY(vtx[1]); bt->setZ(vtx[2]);
+ bt++;
+ }
+ }
+ }
+ }
- vtx = poly->GetVertex(2)->getXYZ();
- btVector3 vertex1(vtx[0],vtx[1],vtx[2]);
- vtx = poly->GetVertex(0)->getXYZ();
- btVector3 vertex2(vtx[0],vtx[1],vtx[2]);
+ /* If this ever gets confusing, print out an OBJ file for debugging */
+#if 0
+ printf("# vert count %d\n", m_vertexArray.size());
+ for(i=0; i<m_vertexArray.size(); i+=1) {
+ printf("v %.6f %.6f %.6f\n", m_vertexArray[i].x(), m_vertexArray[i].y(), m_vertexArray[i].z());
+ }
- m_vertexArray.push_back(vertex0);
- m_vertexArray.push_back(vertex1);
- m_vertexArray.push_back(vertex2);
- m_polygonIndexArray.push_back(p2);
- numvalidpolys++;
- }
- }
+ printf("# face count %d\n", m_triFaceArray.size());
+ for(i=0; i<m_triFaceArray.size(); i+=3) {
+ printf("f %d %d %d\n", m_triFaceArray[i]+1, m_triFaceArray[i+1]+1, m_triFaceArray[i+2]+1);
}
+#endif
+
}
- if (!numvalidpolys)
+#if 0
+ if (validpolys==false)
{
// should not happen
m_shapeType = PHY_SHAPE_NONE;
return false;
}
+#endif
+
m_meshObject = meshobj;
if (!polytope)
{
@@ -1413,7 +1537,6 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
{
btCollisionShape* collisionShape = 0;
btTriangleMeshShape* concaveShape = 0;
- btTriangleMesh* collisionMeshData = 0;
btCompoundShape* compoundShape = 0;
CcdShapeConstructionInfo* nextShapeInfo;
@@ -1454,18 +1577,17 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
// One possible optimization is to use directly the btBvhTriangleMeshShape when the scale is 1,1,1
// and btScaledBvhTriangleMeshShape otherwise.
if (m_useGimpact)
- {
- collisionMeshData = new btTriangleMesh();
-
- bool removeDuplicateVertices=true;
-
- // m_vertexArray is necessarily a multiple of 3
- for (int i=0;i<m_vertexArray.size(); i+=3 )
- {
- collisionMeshData->addTriangle(m_vertexArray[i+2],m_vertexArray[i+1],m_vertexArray[i],removeDuplicateVertices);
- }
+ {
+ btTriangleIndexVertexArray* indexVertexArrays = new btTriangleIndexVertexArray(
+ m_polygonIndexArray.size(),
+ &m_triFaceArray[0],
+ 3*sizeof(int),
+ m_vertexArray.size(),
+ (btScalar*) &m_vertexArray[0].x(),
+ sizeof(btVector3)
+ );
- btGImpactMeshShape* gimpactShape = new btGImpactMeshShape(collisionMeshData);
+ btGImpactMeshShape* gimpactShape = new btGImpactMeshShape(indexVertexArrays);
collisionShape = gimpactShape;
gimpactShape->updateBound();
@@ -1474,17 +1596,39 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape()
{
if (!m_unscaledShape)
{
- collisionMeshData = new btTriangleMesh(true,false);
- collisionMeshData->m_weldingThreshold = m_weldingThreshold;
+
+ btTriangleIndexVertexArray* indexVertexArrays = 0;
- bool removeDuplicateVertices=true;
- // m_vertexArray is necessarily a multiple of 3
- for (int i=0;i<m_vertexArray.size(); i+=3 )
+ ///enable welding, only for the objects that need it (such as soft bodies)
+ if (0.f != m_weldingThreshold1)
{
- collisionMeshData->addTriangle(m_vertexArray[i+2],m_vertexArray[i+1],m_vertexArray[i],removeDuplicateVertices);
+ btTriangleMesh* collisionMeshData = new btTriangleMesh(true,false);
+ collisionMeshData->m_weldingThreshold = m_weldingThreshold1;
+ bool removeDuplicateVertices=true;
+ // m_vertexArray not in multiple of 3 anymore, use m_triFaceArray
+ for(int i=0; i<m_triFaceArray.size(); i+=3) {
+ collisionMeshData->addTriangle(
+ m_vertexArray[m_triFaceArray[i]],
+ m_vertexArray[m_triFaceArray[i+1]],
+ m_vertexArray[m_triFaceArray[i+2]],
+ removeDuplicateVertices
+ );
+ }
+ indexVertexArrays = collisionMeshData;
+
+ } else
+ {
+ indexVertexArrays = new btTriangleIndexVertexArray(
+ m_polygonIndexArray.size(),
+ &m_triFaceArray[0],
+ 3*sizeof(int),
+ m_vertexArray.size(),
+ (btScalar*) &m_vertexArray[0].x(),
+ sizeof(btVector3));
}
+
// this shape will be shared and not deleted until shapeInfo is deleted
- m_unscaledShape = new btBvhTriangleMeshShape( collisionMeshData, true );
+ m_unscaledShape = new btBvhTriangleMeshShape( indexVertexArrays, true );
m_unscaledShape->recalcLocalAabb();
}
collisionShape = new btScaledBvhTriangleMeshShape(m_unscaledShape, btVector3(1.0f,1.0f,1.0f));
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
index deb3c0880e9..4510bbddf65 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
@@ -72,7 +72,7 @@ public:
m_meshObject(NULL),
m_unscaledShape(NULL),
m_useGimpact(false),
- m_weldingThreshold(0.f),
+ m_weldingThreshold1(0.f),
m_shapeProxy(NULL)
{
m_childTrans.setIdentity();
@@ -107,7 +107,7 @@ public:
}
CcdShapeConstructionInfo* GetChildShape(int i)
{
- if (i < 0 || i >= m_shapeArray.size())
+ if (i < 0 || i >= (int)m_shapeArray.size())
return NULL;
return m_shapeArray.at(i);
@@ -116,7 +116,7 @@ public:
{
if (shapeInfo == NULL)
return -1;
- for (int i=0; i<m_shapeArray.size(); i++)
+ for (int i=0; i<(int)m_shapeArray.size(); i++)
{
CcdShapeConstructionInfo* childInfo = m_shapeArray.at(i);
if ((userData == NULL || userData == childInfo->m_userData) &&
@@ -130,10 +130,10 @@ public:
bool RemoveChildShape(int i)
{
- if (i < 0 || i >= m_shapeArray.size())
+ if (i < 0 || i >= (int)m_shapeArray.size())
return false;
m_shapeArray.at(i)->Release();
- if (i < m_shapeArray.size()-1)
+ if (i < (int)m_shapeArray.size()-1)
m_shapeArray[i] = m_shapeArray.back();
m_shapeArray.pop_back();
return true;
@@ -167,14 +167,17 @@ public:
std::vector<int> m_polygonIndexArray; // Contains the array of polygon index in the
// original mesh that correspond to shape triangles.
// only set for concave mesh shape.
+
+ std::vector<int> m_triFaceArray; // Contains an array of triplets of face indicies
+ // quads turn into 2 tris
- void setVertexWeldingThreshold(float threshold)
+ void setVertexWeldingThreshold1(float threshold)
{
- m_weldingThreshold = threshold;
+ m_weldingThreshold1 = threshold;
}
- float getVertexWeldingThreshold() const
+ float getVertexWeldingThreshold1() const
{
- return m_weldingThreshold;
+ return m_weldingThreshold1;
}
protected:
static std::map<RAS_MeshObject*, CcdShapeConstructionInfo*> m_meshShapeMap;
@@ -185,7 +188,7 @@ protected:
// the actual shape is of type btScaledBvhTriangleMeshShape
std::vector<CcdShapeConstructionInfo*> m_shapeArray; // for compound shapes
bool m_useGimpact; //use gimpact for concave dynamic/moving collision detection
- float m_weldingThreshold; //welding closeby vertices together can improve softbody stability etc.
+ float m_weldingThreshold1; //welding closeby vertices together can improve softbody stability etc.
CcdShapeConstructionInfo* m_shapeProxy; // only used for PHY_SHAPE_PROXY, pointer to actual shape info
};
@@ -211,6 +214,8 @@ struct CcdConstructionInfo
m_gravity(0,0,0),
m_scaling(1.f,1.f,1.f),
m_mass(0.f),
+ m_clamp_vel_min(-1.f),
+ m_clamp_vel_max(-1.f),
m_restitution(0.1f),
m_friction(0.5f),
m_linearDamping(0.1f),
@@ -236,6 +241,8 @@ struct CcdConstructionInfo
btVector3 m_gravity;
btVector3 m_scaling;
btScalar m_mass;
+ btScalar m_clamp_vel_min;
+ btScalar m_clamp_vel_max;
btScalar m_restitution;
btScalar m_friction;
btScalar m_linearDamping;
@@ -476,7 +483,24 @@ class CcdPhysicsController : public PHY_IPhysicsController
}
m_cci.m_radius = margin;
}
-
+
+ // velocity clamping
+ virtual void SetLinVelocityMin(float val)
+ {
+ m_cci.m_clamp_vel_min= val;
+ }
+ virtual float GetLinVelocityMin() const
+ {
+ return m_cci.m_clamp_vel_min;
+ }
+ virtual void SetLinVelocityMax(float val)
+ {
+ m_cci.m_clamp_vel_max= val;
+ }
+ virtual float GetLinVelocityMax() const
+ {
+ return m_cci.m_clamp_vel_max;
+ }
bool wantsSleeping();
@@ -541,6 +565,7 @@ class DefaultMotionState : public PHY_IMotionState
virtual void setWorldPosition(float posX,float posY,float posZ);
virtual void setWorldOrientation(float quatIma0,float quatIma1,float quatIma2,float quatReal);
+ virtual void getWorldOrientation(float* ori);
virtual void calculateWorldTransformations();
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index dd21e58bd68..3e1e0294321 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -18,6 +18,7 @@ subject to the following restrictions:
#include "CcdPhysicsEnvironment.h"
#include "CcdPhysicsController.h"
+#include "CcdGraphicController.h"
#include <algorithm>
#include "btBulletDynamicsCommon.h"
@@ -32,6 +33,10 @@ subject to the following restrictions:
#include "PHY_IMotionState.h"
+#include "KX_GameObject.h"
+#include "RAS_MeshObject.h"
+#include "RAS_Polygon.h"
+#include "RAS_TexVert.h"
#define CCD_CONSTRAINT_DISABLE_LINKED_COLLISION 0x80
@@ -46,7 +51,9 @@ btRaycastVehicle::btVehicleTuning gTuning;
#endif //NEW_BULLET_VEHICLE_SUPPORT
#include "LinearMath/btAabbUtil2.h"
-
+#include "MT_Matrix4x4.h"
+#include "MT_Vector3.h"
+#include "GL/glew.h"
#ifdef WIN32
void DrawRasterizerLine(const float* from,const float* to,int color);
@@ -316,8 +323,10 @@ static void DrawAabb(btIDebugDraw* debugDrawer,const btVector3& from,const btVec
-CcdPhysicsEnvironment::CcdPhysicsEnvironment(btDispatcher* dispatcher,btOverlappingPairCache* pairCache)
-:m_numIterations(10),
+CcdPhysicsEnvironment::CcdPhysicsEnvironment(bool useDbvtCulling,btDispatcher* dispatcher,btOverlappingPairCache* pairCache)
+:m_cullingCache(NULL),
+m_cullingTree(NULL),
+m_numIterations(10),
m_scalingPropagated(false),
m_numTimeSubSteps(1),
m_ccdMode(0),
@@ -350,6 +359,11 @@ m_ownDispatcher(NULL)
//m_broadphase = new btAxisSweep3(btVector3(-1000,-1000,-1000),btVector3(1000,1000,1000));
//m_broadphase = new btSimpleBroadphase();
m_broadphase = new btDbvtBroadphase();
+ // avoid any collision in the culling tree
+ if (useDbvtCulling) {
+ m_cullingCache = new btNullPairCache();
+ m_cullingTree = new btDbvtBroadphase(m_cullingCache);
+ }
m_filterCallback = new CcdOverlapFilterCallBack(this);
m_broadphase->getOverlappingPairCache()->setOverlapFilterCallback(m_filterCallback);
@@ -364,7 +378,6 @@ m_ownDispatcher(NULL)
m_gravity = btVector3(0.f,-10.f,0.f);
m_dynamicsWorld->setGravity(m_gravity);
-
}
void CcdPhysicsEnvironment::addCcdPhysicsController(CcdPhysicsController* ctrl)
@@ -558,6 +571,41 @@ void CcdPhysicsEnvironment::refreshCcdPhysicsController(CcdPhysicsController* ct
}
}
+void CcdPhysicsEnvironment::addCcdGraphicController(CcdGraphicController* ctrl)
+{
+ if (m_cullingTree)
+ {
+ btVector3 minAabb;
+ btVector3 maxAabb;
+ ctrl->getAabb(minAabb, maxAabb);
+
+ ctrl->setBroadphaseHandle(m_cullingTree->createProxy(
+ minAabb,
+ maxAabb,
+ INVALID_SHAPE_PROXYTYPE, // this parameter is not used
+ ctrl,
+ 0, // this object does not collision with anything
+ 0,
+ NULL, // dispatcher => this parameter is not used
+ 0));
+
+ assert(ctrl->getBroadphaseHandle());
+ }
+}
+
+void CcdPhysicsEnvironment::removeCcdGraphicController(CcdGraphicController* ctrl)
+{
+ if (m_cullingTree)
+ {
+ btBroadphaseProxy* bp = ctrl->getBroadphaseHandle();
+ if (bp)
+ {
+ m_cullingTree->destroyProxy(bp,NULL);
+ ctrl->setBroadphaseHandle(0);
+ }
+ }
+}
+
void CcdPhysicsEnvironment::beginFrame()
{
@@ -593,10 +641,10 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
(*it)->SynchronizeMotionStates(timeStep);
}
- for (it=m_controllers.begin(); it!=m_controllers.end(); it++)
- {
- (*it)->SynchronizeMotionStates(timeStep);
- }
+ //for (it=m_controllers.begin(); it!=m_controllers.end(); it++)
+ //{
+ // (*it)->SynchronizeMotionStates(timeStep);
+ //}
for (i=0;i<m_wrapperVehicles.size();i++)
{
@@ -618,9 +666,10 @@ class ClosestRayResultCallbackNotMe : public btCollisionWorld::ClosestRayResultC
public:
ClosestRayResultCallbackNotMe(const btVector3& rayFromWorld,const btVector3& rayToWorld,btCollisionObject* owner,btCollisionObject* parent)
:btCollisionWorld::ClosestRayResultCallback(rayFromWorld,rayToWorld),
- m_owner(owner)
+ m_owner(owner),
+ m_parent(parent)
{
-
+
}
virtual bool needsCollision(btBroadphaseProxy* proxy0) const
@@ -668,7 +717,7 @@ void CcdPhysicsEnvironment::processFhSprings(double curTime,float timeStep)
//btVector3 rayToWorld = rayFromWorld + body->getCenterOfMassTransform().getBasis() * rayDirLocal;
//ray always points down the z axis in world space...
btVector3 rayToWorld = rayFromWorld + rayDirLocal;
-
+
ClosestRayResultCallbackNotMe resultCallback(rayFromWorld,rayToWorld,body,parentBody);
m_dynamicsWorld->rayTest(rayFromWorld,rayToWorld,resultCallback);
@@ -1146,7 +1195,578 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IRayCastFilterCallbac
return result.m_controller;
}
+// Handles occlusion culling.
+// The implementation is based on the CDTestFramework
+struct OcclusionBuffer
+{
+ struct WriteOCL
+ {
+ static inline bool Process(btScalar& q,btScalar v) { if(q<v) q=v;return(false); }
+ static inline void Occlusion(bool& flag) { flag = true; }
+ };
+ struct QueryOCL
+ {
+ static inline bool Process(btScalar& q,btScalar v) { return(q<=v); }
+ static inline void Occlusion(bool& flag) { }
+ };
+ btScalar* m_buffer;
+ size_t m_bufferSize;
+ bool m_initialized;
+ bool m_occlusion;
+ int m_sizes[2];
+ btScalar m_scales[2];
+ btScalar m_offsets[2];
+ btScalar m_wtc[16]; // world to clip transform
+ btScalar m_mtc[16]; // model to clip transform
+ // constructor: size=largest dimension of the buffer.
+ // Buffer size depends on aspect ratio
+ OcclusionBuffer()
+ {
+ m_initialized=false;
+ m_occlusion = false;
+ m_buffer == NULL;
+ m_bufferSize = 0;
+ }
+ // multiplication of column major matrices: m=m1*m2
+ template<typename T1, typename T2>
+ void CMmat4mul(btScalar* m, const T1* m1, const T2* m2)
+ {
+ m[ 0] = btScalar(m1[ 0]*m2[ 0]+m1[ 4]*m2[ 1]+m1[ 8]*m2[ 2]+m1[12]*m2[ 3]);
+ m[ 1] = btScalar(m1[ 1]*m2[ 0]+m1[ 5]*m2[ 1]+m1[ 9]*m2[ 2]+m1[13]*m2[ 3]);
+ m[ 2] = btScalar(m1[ 2]*m2[ 0]+m1[ 6]*m2[ 1]+m1[10]*m2[ 2]+m1[14]*m2[ 3]);
+ m[ 3] = btScalar(m1[ 3]*m2[ 0]+m1[ 7]*m2[ 1]+m1[11]*m2[ 2]+m1[15]*m2[ 3]);
+
+ m[ 4] = btScalar(m1[ 0]*m2[ 4]+m1[ 4]*m2[ 5]+m1[ 8]*m2[ 6]+m1[12]*m2[ 7]);
+ m[ 5] = btScalar(m1[ 1]*m2[ 4]+m1[ 5]*m2[ 5]+m1[ 9]*m2[ 6]+m1[13]*m2[ 7]);
+ m[ 6] = btScalar(m1[ 2]*m2[ 4]+m1[ 6]*m2[ 5]+m1[10]*m2[ 6]+m1[14]*m2[ 7]);
+ m[ 7] = btScalar(m1[ 3]*m2[ 4]+m1[ 7]*m2[ 5]+m1[11]*m2[ 6]+m1[15]*m2[ 7]);
+
+ m[ 8] = btScalar(m1[ 0]*m2[ 8]+m1[ 4]*m2[ 9]+m1[ 8]*m2[10]+m1[12]*m2[11]);
+ m[ 9] = btScalar(m1[ 1]*m2[ 8]+m1[ 5]*m2[ 9]+m1[ 9]*m2[10]+m1[13]*m2[11]);
+ m[10] = btScalar(m1[ 2]*m2[ 8]+m1[ 6]*m2[ 9]+m1[10]*m2[10]+m1[14]*m2[11]);
+ m[11] = btScalar(m1[ 3]*m2[ 8]+m1[ 7]*m2[ 9]+m1[11]*m2[10]+m1[15]*m2[11]);
+
+ m[12] = btScalar(m1[ 0]*m2[12]+m1[ 4]*m2[13]+m1[ 8]*m2[14]+m1[12]*m2[15]);
+ m[13] = btScalar(m1[ 1]*m2[12]+m1[ 5]*m2[13]+m1[ 9]*m2[14]+m1[13]*m2[15]);
+ m[14] = btScalar(m1[ 2]*m2[12]+m1[ 6]*m2[13]+m1[10]*m2[14]+m1[14]*m2[15]);
+ m[15] = btScalar(m1[ 3]*m2[12]+m1[ 7]*m2[13]+m1[11]*m2[14]+m1[15]*m2[15]);
+ }
+ void setup(int size)
+ {
+ m_initialized=false;
+ m_occlusion=false;
+ // compute the size of the buffer
+ GLint v[4];
+ GLdouble m[16],p[16];
+ int maxsize;
+ double ratio;
+ glGetIntegerv(GL_VIEWPORT,v);
+ maxsize = (v[2] > v[3]) ? v[2] : v[3];
+ assert(maxsize > 0);
+ ratio = 1.0/(2*maxsize);
+ // ensure even number
+ m_sizes[0] = 2*((int)(size*v[2]*ratio+0.5));
+ m_sizes[1] = 2*((int)(size*v[3]*ratio+0.5));
+ m_scales[0]=btScalar(m_sizes[0]/2);
+ m_scales[1]=btScalar(m_sizes[1]/2);
+ m_offsets[0]=m_scales[0]+0.5f;
+ m_offsets[1]=m_scales[1]+0.5f;
+ // prepare matrix
+ // at this time of the rendering, the modelview matrix is the
+ // world to camera transformation and the projection matrix is
+ // camera to clip transformation. combine both so that
+ glGetDoublev(GL_MODELVIEW_MATRIX,m);
+ glGetDoublev(GL_PROJECTION_MATRIX,p);
+ CMmat4mul(m_wtc,p,m);
+ }
+ void initialize()
+ {
+ size_t newsize = (m_sizes[0]*m_sizes[1])*sizeof(btScalar);
+ if (m_buffer)
+ {
+ // see if we can reuse
+ if (newsize > m_bufferSize)
+ {
+ free(m_buffer);
+ m_buffer = NULL;
+ m_bufferSize = 0;
+ }
+ }
+ if (!m_buffer)
+ {
+ m_buffer = (btScalar*)calloc(1, newsize);
+ m_bufferSize = newsize;
+ } else
+ {
+ // buffer exists already, just clears it
+ memset(m_buffer, 0, newsize);
+ }
+ // memory allocate must succeed
+ assert(m_buffer != NULL);
+ m_initialized = true;
+ m_occlusion = false;
+ }
+ void SetModelMatrix(double *fl)
+ {
+ CMmat4mul(m_mtc,m_wtc,fl);
+ if (!m_initialized)
+ initialize();
+ }
+
+ // transform a segment in world coordinate to clip coordinate
+ void transformW(const btVector3& x, btVector4& t)
+ {
+ t[0] = x[0]*m_wtc[0]+x[1]*m_wtc[4]+x[2]*m_wtc[8]+m_wtc[12];
+ t[1] = x[0]*m_wtc[1]+x[1]*m_wtc[5]+x[2]*m_wtc[9]+m_wtc[13];
+ t[2] = x[0]*m_wtc[2]+x[1]*m_wtc[6]+x[2]*m_wtc[10]+m_wtc[14];
+ t[3] = x[0]*m_wtc[3]+x[1]*m_wtc[7]+x[2]*m_wtc[11]+m_wtc[15];
+ }
+ void transformM(const float* x, btVector4& t)
+ {
+ t[0] = x[0]*m_mtc[0]+x[1]*m_mtc[4]+x[2]*m_mtc[8]+m_mtc[12];
+ t[1] = x[0]*m_mtc[1]+x[1]*m_mtc[5]+x[2]*m_mtc[9]+m_mtc[13];
+ t[2] = x[0]*m_mtc[2]+x[1]*m_mtc[6]+x[2]*m_mtc[10]+m_mtc[14];
+ t[3] = x[0]*m_mtc[3]+x[1]*m_mtc[7]+x[2]*m_mtc[11]+m_mtc[15];
+ }
+ // convert polygon to device coordinates
+ static bool project(btVector4* p,int n)
+ {
+ for(int i=0;i<n;++i)
+ {
+ const btScalar iw=1/p[i][3];
+ p[i][2]=1/p[i][3];
+ p[i][0]*=p[i][2];
+ p[i][1]*=p[i][2];
+ }
+ return(true);
+ }
+ // pi: closed polygon in clip coordinate, NP = number of segments
+ // po: same polygon with clipped segments removed
+ template <const int NP>
+ static int clip(const btVector4* pi,btVector4* po)
+ {
+ btScalar s[2*NP];
+ btVector4 pn[2*NP];
+ int i, j, m, n, ni;
+ // deal with near clipping
+ for(i=0, m=0;i<NP;++i)
+ {
+ s[i]=pi[i][2]+pi[i][3];
+ if(s[i]<0) m+=1<<i;
+ }
+ if(m==((1<<NP)-1))
+ return(0);
+ if(m!=0)
+ {
+ for(i=NP-1,j=0,n=0;j<NP;i=j++)
+ {
+ const btVector4& a=pi[i];
+ const btVector4& b=pi[j];
+ const btScalar t=s[i]/(a[3]+a[2]-b[3]-b[2]);
+ if((t>0)&&(t<1))
+ {
+ pn[n][0] = a[0]+(b[0]-a[0])*t;
+ pn[n][1] = a[1]+(b[1]-a[1])*t;
+ pn[n][2] = a[2]+(b[2]-a[2])*t;
+ pn[n][3] = a[3]+(b[3]-a[3])*t;
+ ++n;
+ }
+ if(s[j]>0) pn[n++]=b;
+ }
+ // ready to test far clipping, start from the modified polygon
+ pi = pn;
+ ni = n;
+ } else
+ {
+ // no clipping on the near plane, keep same vector
+ ni = NP;
+ }
+ // now deal with far clipping
+ for(i=0, m=0;i<ni;++i)
+ {
+ s[i]=pi[i][2]-pi[i][3];
+ if(s[i]>0) m+=1<<i;
+ }
+ if(m==((1<<ni)-1))
+ return(0);
+ if(m!=0)
+ {
+ for(i=ni-1,j=0,n=0;j<ni;i=j++)
+ {
+ const btVector4& a=pi[i];
+ const btVector4& b=pi[j];
+ const btScalar t=s[i]/(a[2]-a[3]-b[2]+b[3]);
+ if((t>0)&&(t<1))
+ {
+ po[n][0] = a[0]+(b[0]-a[0])*t;
+ po[n][1] = a[1]+(b[1]-a[1])*t;
+ po[n][2] = a[2]+(b[2]-a[2])*t;
+ po[n][3] = a[3]+(b[3]-a[3])*t;
+ ++n;
+ }
+ if(s[j]<0) po[n++]=b;
+ }
+ return(n);
+ }
+ for(int i=0;i<ni;++i) po[i]=pi[i];
+ return(ni);
+ }
+ // write or check a triangle to buffer. a,b,c in device coordinates (-1,+1)
+ template <typename POLICY>
+ inline bool draw( const btVector4& a,
+ const btVector4& b,
+ const btVector4& c,
+ const float face,
+ const btScalar minarea)
+ {
+ const btScalar a2=cross(b-a,c-a)[2];
+ if((face*a2)<0.f || btFabs(a2)<minarea)
+ return false;
+ // further down we are normally going to write to the Zbuffer, mark it so
+ POLICY::Occlusion(m_occlusion);
+
+ int x[3], y[3], ib=1, ic=2;
+ btScalar z[3];
+ x[0]=(int)(a.x()*m_scales[0]+m_offsets[0]);
+ y[0]=(int)(a.y()*m_scales[1]+m_offsets[1]);
+ z[0]=a.z();
+ if (a2 < 0.f)
+ {
+ // negative aire is possible with double face => must
+ // change the order of b and c otherwise the algorithm doesn't work
+ ib=2;
+ ic=1;
+ }
+ x[ib]=(int)(b.x()*m_scales[0]+m_offsets[0]);
+ x[ic]=(int)(c.x()*m_scales[0]+m_offsets[0]);
+ y[ib]=(int)(b.y()*m_scales[1]+m_offsets[1]);
+ y[ic]=(int)(c.y()*m_scales[1]+m_offsets[1]);
+ z[ib]=b.z();
+ z[ic]=c.z();
+ const int mix=btMax(0,btMin(x[0],btMin(x[1],x[2])));
+ const int mxx=btMin(m_sizes[0],1+btMax(x[0],btMax(x[1],x[2])));
+ const int miy=btMax(0,btMin(y[0],btMin(y[1],y[2])));
+ const int mxy=btMin(m_sizes[1],1+btMax(y[0],btMax(y[1],y[2])));
+ const int width=mxx-mix;
+ const int height=mxy-miy;
+ if ((width*height) <= 1)
+ {
+ // degenerated in at most one single pixel
+ btScalar* scan=&m_buffer[miy*m_sizes[0]+mix];
+ // use for loop to detect the case where width or height == 0
+ for(int iy=miy;iy<mxy;++iy)
+ {
+ for(int ix=mix;ix<mxx;++ix)
+ {
+ if(POLICY::Process(*scan,z[0]))
+ return(true);
+ if(POLICY::Process(*scan,z[1]))
+ return(true);
+ if(POLICY::Process(*scan,z[2]))
+ return(true);
+ }
+ }
+ } else if (width == 1)
+ {
+ // Degenerated in at least 2 vertical lines
+ // The algorithm below doesn't work when face has a single pixel width
+ // We cannot use general formulas because the plane is degenerated.
+ // We have to interpolate along the 3 edges that overlaps and process each pixel.
+ // sort the y coord to make formula simpler
+ int ytmp;
+ btScalar ztmp;
+ if (y[0] > y[1]) { ytmp=y[1];y[1]=y[0];y[0]=ytmp;ztmp=z[1];z[1]=z[0];z[0]=ztmp; }
+ if (y[0] > y[2]) { ytmp=y[2];y[2]=y[0];y[0]=ytmp;ztmp=z[2];z[2]=z[0];z[0]=ztmp; }
+ if (y[1] > y[2]) { ytmp=y[2];y[2]=y[1];y[1]=ytmp;ztmp=z[2];z[2]=z[1];z[1]=ztmp; }
+ int dy[]={ y[0]-y[1],
+ y[1]-y[2],
+ y[2]-y[0]};
+ btScalar dzy[3];
+ dzy[0] = (dy[0]) ? (z[0]-z[1])/dy[0] : btScalar(0.f);
+ dzy[1] = (dy[1]) ? (z[1]-z[2])/dy[1] : btScalar(0.f);
+ dzy[2] = (dy[2]) ? (z[2]-z[0])/dy[2] : btScalar(0.f);
+ btScalar v[3] = { dzy[0]*(miy-y[0])+z[0],
+ dzy[1]*(miy-y[1])+z[1],
+ dzy[2]*(miy-y[2])+z[2] };
+ dy[0] = y[1]-y[0];
+ dy[1] = y[0]-y[1];
+ dy[2] = y[2]-y[0];
+ btScalar* scan=&m_buffer[miy*m_sizes[0]+mix];
+ for(int iy=miy;iy<mxy;++iy)
+ {
+ if(dy[0] >= 0 && POLICY::Process(*scan,v[0]))
+ return(true);
+ if(dy[1] >= 0 && POLICY::Process(*scan,v[1]))
+ return(true);
+ if(dy[2] >= 0 && POLICY::Process(*scan,v[2]))
+ return(true);
+ scan+=m_sizes[0];
+ v[0] += dzy[0]; v[1] += dzy[1]; v[2] += dzy[2];
+ dy[0]--; dy[1]++, dy[2]--;
+ }
+ } else if (height == 1)
+ {
+ // Degenerated in at least 2 horizontal lines
+ // The algorithm below doesn't work when face has a single pixel width
+ // We cannot use general formulas because the plane is degenerated.
+ // We have to interpolate along the 3 edges that overlaps and process each pixel.
+ int xtmp;
+ btScalar ztmp;
+ if (x[0] > x[1]) { xtmp=x[1];x[1]=x[0];x[0]=xtmp;ztmp=z[1];z[1]=z[0];z[0]=ztmp; }
+ if (x[0] > x[2]) { xtmp=x[2];x[2]=x[0];x[0]=xtmp;ztmp=z[2];z[2]=z[0];z[0]=ztmp; }
+ if (x[1] > x[2]) { xtmp=x[2];x[2]=x[1];x[1]=xtmp;ztmp=z[2];z[2]=z[1];z[1]=ztmp; }
+ int dx[]={ x[0]-x[1],
+ x[1]-x[2],
+ x[2]-x[0]};
+ btScalar dzx[3];
+ dzx[0] = (dx[0]) ? (z[0]-z[1])/dx[0] : btScalar(0.f);
+ dzx[1] = (dx[1]) ? (z[1]-z[2])/dx[1] : btScalar(0.f);
+ dzx[2] = (dx[2]) ? (z[2]-z[0])/dx[2] : btScalar(0.f);
+ btScalar v[3] = { dzx[0]*(mix-x[0])+z[0],
+ dzx[1]*(mix-x[1])+z[1],
+ dzx[2]*(mix-x[2])+z[2] };
+ dx[0] = x[1]-x[0];
+ dx[1] = x[0]-x[1];
+ dx[2] = x[2]-x[0];
+ btScalar* scan=&m_buffer[miy*m_sizes[0]+mix];
+ for(int ix=mix;ix<mxx;++ix)
+ {
+ if(dx[0] >= 0 && POLICY::Process(*scan,v[0]))
+ return(true);
+ if(dx[1] >= 0 && POLICY::Process(*scan,v[1]))
+ return(true);
+ if(dx[2] >= 0 && POLICY::Process(*scan,v[2]))
+ return(true);
+ scan++;
+ v[0] += dzx[0]; v[1] += dzx[1]; v[2] += dzx[2];
+ dx[0]--; dx[1]++, dx[2]--;
+ }
+ } else
+ {
+ // general case
+ const int dx[]={ y[0]-y[1],
+ y[1]-y[2],
+ y[2]-y[0]};
+ const int dy[]={ x[1]-x[0]-dx[0]*width,
+ x[2]-x[1]-dx[1]*width,
+ x[0]-x[2]-dx[2]*width};
+ const int a=x[2]*y[0]+x[0]*y[1]-x[2]*y[1]-x[0]*y[2]+x[1]*y[2]-x[1]*y[0];
+ const btScalar ia=1/(btScalar)a;
+ const btScalar dzx=ia*(y[2]*(z[1]-z[0])+y[1]*(z[0]-z[2])+y[0]*(z[2]-z[1]));
+ const btScalar dzy=ia*(x[2]*(z[0]-z[1])+x[0]*(z[1]-z[2])+x[1]*(z[2]-z[0]))-(dzx*width);
+ int c[]={ miy*x[1]+mix*y[0]-x[1]*y[0]-mix*y[1]+x[0]*y[1]-miy*x[0],
+ miy*x[2]+mix*y[1]-x[2]*y[1]-mix*y[2]+x[1]*y[2]-miy*x[1],
+ miy*x[0]+mix*y[2]-x[0]*y[2]-mix*y[0]+x[2]*y[0]-miy*x[2]};
+ btScalar v=ia*((z[2]*c[0])+(z[0]*c[1])+(z[1]*c[2]));
+ btScalar* scan=&m_buffer[miy*m_sizes[0]];
+ for(int iy=miy;iy<mxy;++iy)
+ {
+ for(int ix=mix;ix<mxx;++ix)
+ {
+ if((c[0]>=0)&&(c[1]>=0)&&(c[2]>=0))
+ {
+ if(POLICY::Process(scan[ix],v))
+ return(true);
+ }
+ c[0]+=dx[0];c[1]+=dx[1];c[2]+=dx[2];v+=dzx;
+ }
+ c[0]+=dy[0];c[1]+=dy[1];c[2]+=dy[2];v+=dzy;
+ scan+=m_sizes[0];
+ }
+ }
+ return(false);
+ }
+ // clip than write or check a polygon
+ template <const int NP,typename POLICY>
+ inline bool clipDraw( const btVector4* p,
+ const float face,
+ btScalar minarea)
+ {
+ btVector4 o[NP*2];
+ int n=clip<NP>(p,o);
+ bool earlyexit=false;
+ if (n)
+ {
+ project(o,n);
+ for(int i=2;i<n && !earlyexit;++i)
+ {
+ earlyexit|=draw<POLICY>(o[0],o[i-1],o[i],face,minarea);
+ }
+ }
+ return(earlyexit);
+ }
+ // add a triangle (in model coordinate)
+ // face = 0.f if face is double side,
+ // = 1.f if face is single sided and scale is positive
+ // = -1.f if face is single sided and scale is negative
+ void appendOccluderM(const float* a,
+ const float* b,
+ const float* c,
+ const float face)
+ {
+ btVector4 p[3];
+ transformM(a,p[0]);
+ transformM(b,p[1]);
+ transformM(c,p[2]);
+ clipDraw<3,WriteOCL>(p,face,btScalar(0.f));
+ }
+ // add a quad (in model coordinate)
+ void appendOccluderM(const float* a,
+ const float* b,
+ const float* c,
+ const float* d,
+ const float face)
+ {
+ btVector4 p[4];
+ transformM(a,p[0]);
+ transformM(b,p[1]);
+ transformM(c,p[2]);
+ transformM(d,p[3]);
+ clipDraw<4,WriteOCL>(p,face,btScalar(0.f));
+ }
+ // query occluder for a box (c=center, e=extend) in world coordinate
+ inline bool queryOccluderW( const btVector3& c,
+ const btVector3& e)
+ {
+ if (!m_occlusion)
+ // no occlusion yet, no need to check
+ return true;
+ btVector4 x[8];
+ transformW(btVector3(c[0]-e[0],c[1]-e[1],c[2]-e[2]),x[0]);
+ transformW(btVector3(c[0]+e[0],c[1]-e[1],c[2]-e[2]),x[1]);
+ transformW(btVector3(c[0]+e[0],c[1]+e[1],c[2]-e[2]),x[2]);
+ transformW(btVector3(c[0]-e[0],c[1]+e[1],c[2]-e[2]),x[3]);
+ transformW(btVector3(c[0]-e[0],c[1]-e[1],c[2]+e[2]),x[4]);
+ transformW(btVector3(c[0]+e[0],c[1]-e[1],c[2]+e[2]),x[5]);
+ transformW(btVector3(c[0]+e[0],c[1]+e[1],c[2]+e[2]),x[6]);
+ transformW(btVector3(c[0]-e[0],c[1]+e[1],c[2]+e[2]),x[7]);
+ for(int i=0;i<8;++i)
+ {
+ // the box is clipped, it's probably a large box, don't waste our time to check
+ if((x[i][2]+x[i][3])<=0) return(true);
+ }
+ static const int d[]={ 1,0,3,2,
+ 4,5,6,7,
+ 4,7,3,0,
+ 6,5,1,2,
+ 7,6,2,3,
+ 5,4,0,1};
+ for(int i=0;i<(sizeof(d)/sizeof(d[0]));)
+ {
+ const btVector4 p[]={ x[d[i++]],
+ x[d[i++]],
+ x[d[i++]],
+ x[d[i++]]};
+ if(clipDraw<4,QueryOCL>(p,1.f,0.f))
+ return(true);
+ }
+ return(false);
+ }
+};
+
+
+struct DbvtCullingCallback : btDbvt::ICollide
+{
+ PHY_CullingCallback m_clientCallback;
+ void* m_userData;
+ OcclusionBuffer *m_ocb;
+
+ DbvtCullingCallback(PHY_CullingCallback clientCallback, void* userData)
+ {
+ m_clientCallback = clientCallback;
+ m_userData = userData;
+ m_ocb = NULL;
+ }
+ bool Descent(const btDbvtNode* node)
+ {
+ return(m_ocb->queryOccluderW(node->volume.Center(),node->volume.Extents()));
+ }
+ void Process(const btDbvtNode* node,btScalar depth)
+ {
+ Process(node);
+ }
+ void Process(const btDbvtNode* leaf)
+ {
+ btBroadphaseProxy* proxy=(btBroadphaseProxy*)leaf->data;
+ // the client object is a graphic controller
+ CcdGraphicController* ctrl = static_cast<CcdGraphicController*>(proxy->m_clientObject);
+ KX_ClientObjectInfo* info = (KX_ClientObjectInfo*)ctrl->getNewClientInfo();
+ if (m_ocb)
+ {
+ // means we are doing occlusion culling. Check if this object is an occluders
+ KX_GameObject* gameobj = KX_GameObject::GetClientObject(info);
+ if (gameobj && gameobj->GetOccluder())
+ {
+ double* fl = gameobj->GetOpenGLMatrixPtr()->getPointer();
+ // this will create the occlusion buffer if not already done
+ // and compute the transformation from model local space to clip space
+ m_ocb->SetModelMatrix(fl);
+ float face = (gameobj->IsNegativeScaling()) ? -1.0f : 1.0f;
+ // walk through the meshes and for each add to buffer
+ for (int i=0; i<gameobj->GetMeshCount(); i++)
+ {
+ RAS_MeshObject* meshobj = gameobj->GetMesh(i);
+ const float *v1, *v2, *v3, *v4;
+ int polycount = meshobj->NumPolygons();
+ for (int j=0; j<polycount; j++)
+ {
+ RAS_Polygon* poly = meshobj->GetPolygon(j);
+ switch (poly->VertexCount())
+ {
+ case 3:
+ v1 = poly->GetVertex(0)->getXYZ();
+ v2 = poly->GetVertex(1)->getXYZ();
+ v3 = poly->GetVertex(2)->getXYZ();
+ m_ocb->appendOccluderM(v1,v2,v3,((poly->IsTwoside())?0.f:face));
+ break;
+ case 4:
+ v1 = poly->GetVertex(0)->getXYZ();
+ v2 = poly->GetVertex(1)->getXYZ();
+ v3 = poly->GetVertex(2)->getXYZ();
+ v4 = poly->GetVertex(3)->getXYZ();
+ m_ocb->appendOccluderM(v1,v2,v3,v4,((poly->IsTwoside())?0.f:face));
+ break;
+ }
+ }
+ }
+ }
+ }
+ if (info)
+ (*m_clientCallback)(info, m_userData);
+ }
+};
+
+static OcclusionBuffer gOcb;
+bool CcdPhysicsEnvironment::cullingTest(PHY_CullingCallback callback, void* userData, PHY__Vector4 *planes, int nplanes, int occlusionRes)
+{
+ if (!m_cullingTree)
+ return false;
+ DbvtCullingCallback dispatcher(callback, userData);
+ btVector3 planes_n[6];
+ btScalar planes_o[6];
+ if (nplanes > 6)
+ nplanes = 6;
+ for (int i=0; i<nplanes; i++)
+ {
+ planes_n[i].setValue(planes[i][0], planes[i][1], planes[i][2]);
+ planes_o[i] = planes[i][3];
+ }
+ // if occlusionRes != 0 => occlusion culling
+ if (occlusionRes)
+ {
+ gOcb.setup(occlusionRes);
+ dispatcher.m_ocb = &gOcb;
+ // occlusion culling, the direction of the view is taken from the first plan which MUST be the near plane
+ btDbvt::collideOCL(m_cullingTree->m_sets[1].m_root,planes_n,planes_o,planes_n[0],nplanes,dispatcher);
+ btDbvt::collideOCL(m_cullingTree->m_sets[0].m_root,planes_n,planes_o,planes_n[0],nplanes,dispatcher);
+ }else
+ {
+ btDbvt::collideKDOP(m_cullingTree->m_sets[1].m_root,planes_n,planes_o,nplanes,dispatcher);
+ btDbvt::collideKDOP(m_cullingTree->m_sets[0].m_root,planes_n,planes_o,nplanes,dispatcher);
+ }
+ return true;
+}
int CcdPhysicsEnvironment::getNumContactPoints()
{
@@ -1211,6 +1831,13 @@ CcdPhysicsEnvironment::~CcdPhysicsEnvironment()
if (NULL != m_broadphase)
delete m_broadphase;
+
+ if (NULL != m_cullingTree)
+ delete m_cullingTree;
+
+ if (NULL != m_cullingCache)
+ delete m_cullingCache;
+
}
@@ -1465,8 +2092,8 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::CreateSphereController(float radi
{
CcdConstructionInfo cinfo;
- // memory leak! The shape is not deleted by Bullet and we cannot add it to the KX_Scene.m_shapes list
- cinfo.m_collisionShape = new btSphereShape(radius);
+ memset(&cinfo, 0, sizeof(cinfo)); /* avoid uninitialized values */
+ cinfo.m_collisionShape = new btSphereShape(radius); // memory leak! The shape is not deleted by Bullet and we cannot add it to the KX_Scene.m_shapes list
cinfo.m_MotionState = 0;
cinfo.m_physicsEnv = this;
// declare this object as Dyamic rather then static!!
@@ -1925,7 +2552,7 @@ int CcdPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl
PHY_IPhysicsController* CcdPhysicsEnvironment::CreateConeController(float coneradius,float coneheight)
{
CcdConstructionInfo cinfo;
-
+ memset(&cinfo, 0, sizeof(cinfo)); /* avoid uninitialized values */
// we don't need a CcdShapeConstructionInfo for this shape:
// it is simple enough for the standard copy constructor (see CcdPhysicsController::GetReplica)
cinfo.m_collisionShape = new btConeShape(coneradius,coneheight);
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
index 2f1f0bb254b..f861621ae37 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
@@ -20,6 +20,7 @@ subject to the following restrictions:
#include <vector>
#include <set>
class CcdPhysicsController;
+class CcdGraphicController;
#include "LinearMath/btVector3.h"
#include "LinearMath/btTransform.h"
@@ -40,6 +41,7 @@ class btDispatcher;
class WrapperVehicle;
class btPersistentManifold;
class btBroadphaseInterface;
+struct btDbvtBroadphase;
class btOverlappingPairCache;
class btIDebugDraw;
class PHY_IVehicle;
@@ -58,7 +60,10 @@ protected:
btIDebugDraw* m_debugDrawer;
class btDefaultCollisionConfiguration* m_collisionConfiguration;
- class btBroadphaseInterface* m_broadphase;
+ class btBroadphaseInterface* m_broadphase; // broadphase for dynamic world
+ // for culling only
+ btOverlappingPairCache* m_cullingCache;
+ struct btDbvtBroadphase* m_cullingTree; // broadphase for culling
//solver iterations
int m_numIterations;
@@ -77,7 +82,7 @@ protected:
void processFhSprings(double curTime,float timeStep);
public:
- CcdPhysicsEnvironment(btDispatcher* dispatcher=0, btOverlappingPairCache* pairCache=0);
+ CcdPhysicsEnvironment(bool useDbvtCulling, btDispatcher* dispatcher=0, btOverlappingPairCache* pairCache=0);
virtual ~CcdPhysicsEnvironment();
@@ -167,6 +172,7 @@ protected:
btTypedConstraint* getConstraintById(int constraintId);
virtual PHY_IPhysicsController* rayTest(PHY_IRayCastFilterCallback &filterCallback, float fromX,float fromY,float fromZ, float toX,float toY,float toZ);
+ virtual bool cullingTest(PHY_CullingCallback callback, void* userData, PHY__Vector4* planes, int nplanes, int occlusionRes);
//Methods for gamelogic collision/physics callbacks
@@ -200,7 +206,12 @@ protected:
void refreshCcdPhysicsController(CcdPhysicsController* ctrl);
+ void addCcdGraphicController(CcdGraphicController* ctrl);
+
+ void removeCcdGraphicController(CcdGraphicController* ctrl);
+
btBroadphaseInterface* getBroadphase();
+ btDbvtBroadphase* getCullingTree() { return m_cullingTree; }
btDispatcher* getDispatcher();
diff --git a/source/gameengine/Physics/Bullet/Makefile b/source/gameengine/Physics/Bullet/Makefile
index d5570e75833..48e537bb6a3 100644
--- a/source/gameengine/Physics/Bullet/Makefile
+++ b/source/gameengine/Physics/Bullet/Makefile
@@ -39,8 +39,16 @@ CPPFLAGS += -I$(NAN_BULLET2)/include
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
+CPPFLAGS += -I$(NAN_GLEW)/include
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
+CPPFLAGS += -I$(NAN_SOUNDSYSTEM)/include
CPPFLAGS += -I../../../kernel/gen_system
CPPFLAGS += -I../../Physics/common
CPPFLAGS += -I../../Physics/Dummy
CPPFLAGS += -I../../Rasterizer
+CPPFLAGS += -I../../Ketsji
+CPPFLAGS += -I../../Expressions
+CPPFLAGS += -I../../GameLogic
+CPPFLAGS += -I../../SceneGraph
+CPPFLAGS += -I../../../../source/blender/makesdna
diff --git a/source/gameengine/Physics/Bullet/SConscript b/source/gameengine/Physics/Bullet/SConscript
index db9f3387bfe..ab2c68ddfd5 100644
--- a/source/gameengine/Physics/Bullet/SConscript
+++ b/source/gameengine/Physics/Bullet/SConscript
@@ -1,11 +1,23 @@
#!/usr/bin/python
Import ('env')
-sources = 'CcdPhysicsEnvironment.cpp CcdPhysicsController.cpp'
+sources = 'CcdPhysicsEnvironment.cpp CcdPhysicsController.cpp CcdGraphicController.cpp'
-incs = '. ../common #source/kernel/gen_system #intern/string #intern/moto/include #source/gameengine/Rasterizer'
+incs = '. ../common'
+incs += ' #source/kernel/gen_system'
+incs += ' #intern/string'
+incs += ' #intern/moto/include'
+incs += ' #extern/glew/include'
+incs += ' #source/gameengine/Rasterizer'
+incs += ' #source/gameengine/Ketsji'
+incs += ' #source/gameengine/Expressions'
+incs += ' #source/gameengine/GameLogic'
+incs += ' #source/gameengine/SceneGraph'
+incs += ' #source/blender/makesdna'
+incs += ' #intern/SoundSystem'
incs += ' ' + env['BF_BULLET_INC']
+incs += ' ' + env['BF_PYTHON_INC']
cxxflags = []
if env['OURPLATFORM']=='win32-vc':
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
index a92b1e7f4a6..4e15e6ec130 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
@@ -70,6 +70,7 @@ public:
}
virtual PHY_IPhysicsController* rayTest(PHY_IRayCastFilterCallback &filterCallback, float fromX,float fromY,float fromZ, float toX,float toY,float toZ);
+ virtual bool cullingTest(PHY_CullingCallback callback, void* userData, PHY__Vector4* planes, int nplanes, int occlusionRes) { return false; }
//gamelogic callbacks
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsController.h b/source/gameengine/Physics/Sumo/SumoPhysicsController.h
index d8ee54935d7..415bc1e3982 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsController.h
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsController.h
@@ -144,6 +144,11 @@ public:
void GetWorldPosition(MT_Point3& pos);
void GetWorldScaling(MT_Vector3& scale);
+ float GetLinVelocityMin() const { return 0.f; }
+ void SetLinVelocityMin(float val) { }
+ float GetLinVelocityMax() const { return 0.f; }
+ void SetLinVelocityMax(float val) { }
+
// void SetSumoObject(class SM_Object* sumoObj) {
// m_sumoObj = sumoObj;
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
index 65b07a7a0be..418a361a065 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
@@ -76,6 +76,7 @@ public:
}
virtual PHY_IPhysicsController* rayTest(PHY_IRayCastFilterCallback &filterCallback,float fromX,float fromY,float fromZ, float toX,float toY,float toZ);
+ virtual bool cullingTest(PHY_CullingCallback callback, void* userData, PHY__Vector4 *planes, int nplanes, int occlusionRes) { return false; }
//gamelogic callbacks
diff --git a/source/gameengine/Physics/common/CMakeLists.txt b/source/gameengine/Physics/common/CMakeLists.txt
index a28fabe0c3a..41b2687fe38 100644
--- a/source/gameengine/Physics/common/CMakeLists.txt
+++ b/source/gameengine/Physics/common/CMakeLists.txt
@@ -24,7 +24,7 @@
#
# ***** END GPL LICENSE BLOCK *****
-SET(SRC PHY_IMotionState.cpp PHY_IPhysicsController.cpp PHY_IPhysicsEnvironment.cpp PHY_IVehicle.cpp)
+SET(SRC PHY_IMotionState.cpp PHY_IController.cpp PHY_IPhysicsController.cpp PHY_IGraphicController.cpp PHY_IPhysicsEnvironment.cpp PHY_IVehicle.cpp)
SET(INC
.
diff --git a/source/gameengine/Physics/common/PHY_DynamicTypes.h b/source/gameengine/Physics/common/PHY_DynamicTypes.h
index c5cf92b553a..7ce40001af7 100644
--- a/source/gameengine/Physics/common/PHY_DynamicTypes.h
+++ b/source/gameengine/Physics/common/PHY_DynamicTypes.h
@@ -19,12 +19,42 @@ subject to the following restrictions:
-
+struct KX_ClientObjectInfo;
class PHY_Shape;
struct PHY__Vector3
{
float m_vec[4];
+
+ operator const float* () const
+ {
+ return &m_vec[0];
+ }
+ operator float* ()
+ {
+ return &m_vec[0];
+ }
+};
+
+struct PHY__Vector4
+{
+ float m_vec[4];
+ PHY__Vector4() {}
+ void setValue(const float *value)
+ {
+ m_vec[0] = *value++;
+ m_vec[1] = *value++;
+ m_vec[2] = *value++;
+ m_vec[3] = *value++;
+ }
+ void setValue(const double *value)
+ {
+ m_vec[0] = (float)(*value++);
+ m_vec[1] = (float)(*value++);
+ m_vec[2] = (float)(*value++);
+ m_vec[3] = (float)(*value++);
+ }
+
operator const float* () const
{
return &m_vec[0];
@@ -34,6 +64,7 @@ struct PHY__Vector3
return &m_vec[0];
}
};
+
//typedef float PHY__Vector3[4];
enum
@@ -59,7 +90,7 @@ enum
void *client_object1,
void *client_object2,
const PHY_CollData *coll_data);
-
+ typedef void (*PHY_CullingCallback)(KX_ClientObjectInfo* info, void* param);
/// PHY_PhysicsType enumerates all possible Physics Entities.
diff --git a/source/gameengine/Physics/common/PHY_IController.cpp b/source/gameengine/Physics/common/PHY_IController.cpp
new file mode 100644
index 00000000000..47fe9a9eea8
--- /dev/null
+++ b/source/gameengine/Physics/common/PHY_IController.cpp
@@ -0,0 +1,39 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#include "PHY_IController.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+PHY_IController::~PHY_IController()
+{
+
+}
+
diff --git a/source/gameengine/Physics/common/PHY_IController.h b/source/gameengine/Physics/common/PHY_IController.h
new file mode 100644
index 00000000000..45e93f9d24e
--- /dev/null
+++ b/source/gameengine/Physics/common/PHY_IController.h
@@ -0,0 +1,53 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#ifndef PHY_ICONTROLLER_H
+#define PHY_ICONTROLLER_H
+
+#include "PHY_DynamicTypes.h"
+
+
+
+/**
+ PHY_IController is the abstract simplified Interface to objects
+ controlled by the physics engine. This includes the physics objects
+ and the graphics object for view frustrum and occlusion culling.
+*/
+class PHY_IController
+{
+ public:
+
+ virtual ~PHY_IController();
+ // clientinfo for raycasts for example
+ virtual void* getNewClientInfo()=0;
+ virtual void setNewClientInfo(void* clientinfo)=0;
+
+};
+
+#endif //PHY_ICONTROLLER_H
+
diff --git a/source/gameengine/Physics/common/PHY_IGraphicController.cpp b/source/gameengine/Physics/common/PHY_IGraphicController.cpp
new file mode 100644
index 00000000000..4dccecd3d29
--- /dev/null
+++ b/source/gameengine/Physics/common/PHY_IGraphicController.cpp
@@ -0,0 +1,39 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#include "PHY_IGraphicController.h"
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+PHY_IGraphicController::~PHY_IGraphicController()
+{
+
+}
+
diff --git a/source/gameengine/Physics/common/PHY_IGraphicController.h b/source/gameengine/Physics/common/PHY_IGraphicController.h
new file mode 100644
index 00000000000..36b8a978e87
--- /dev/null
+++ b/source/gameengine/Physics/common/PHY_IGraphicController.h
@@ -0,0 +1,56 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+#ifndef PHY_IGRAPHICCONTROLLER_H
+#define PHY_IGRAPHICCONTROLLER_H
+
+#include "PHY_IController.h"
+
+
+
+/**
+ PHY_IPhysicsController is the abstract simplified Interface to a physical object.
+ It contains the IMotionState and IDeformableMesh Interfaces.
+*/
+class PHY_IGraphicController : public PHY_IController
+{
+
+ public:
+
+ virtual ~PHY_IGraphicController();
+ /**
+ SynchronizeMotionStates ynchronizes dynas, kinematic and deformable entities (and do 'late binding')
+ */
+ virtual bool SetGraphicTransform()=0;
+
+ virtual PHY_IGraphicController* GetReplica(class PHY_IMotionState* motionstate) {return 0;}
+
+};
+
+#endif //PHY_IGRAPHICCONTROLLER_H
+
diff --git a/source/gameengine/Physics/common/PHY_IMotionState.h b/source/gameengine/Physics/common/PHY_IMotionState.h
index d759b0aeff4..64bb810ee7c 100644
--- a/source/gameengine/Physics/common/PHY_IMotionState.h
+++ b/source/gameengine/Physics/common/PHY_IMotionState.h
@@ -43,6 +43,8 @@ class PHY_IMotionState
virtual void getWorldPosition(float& posX,float& posY,float& posZ)=0;
virtual void getWorldScaling(float& scaleX,float& scaleY,float& scaleZ)=0;
virtual void getWorldOrientation(float& quatIma0,float& quatIma1,float& quatIma2,float& quatReal)=0;
+ // ori = array 12 floats, [0..3] = first column + 0, [4..7] = second colum, [8..11] = third column
+ virtual void getWorldOrientation(float* ori)=0;
virtual void setWorldPosition(float posX,float posY,float posZ)=0;
virtual void setWorldOrientation(float quatIma0,float quatIma1,float quatIma2,float quatReal)=0;
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsController.h b/source/gameengine/Physics/common/PHY_IPhysicsController.h
index 884e14cfb5a..770426b48db 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsController.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsController.h
@@ -29,7 +29,7 @@
#ifndef PHY_IPHYSICSCONTROLLER_H
#define PHY_IPHYSICSCONTROLLER_H
-#include "PHY_DynamicTypes.h"
+#include "PHY_IController.h"
@@ -37,7 +37,7 @@
PHY_IPhysicsController is the abstract simplified Interface to a physical object.
It contains the IMotionState and IDeformableMesh Interfaces.
*/
-class PHY_IPhysicsController
+class PHY_IPhysicsController : public PHY_IController
{
public:
@@ -82,9 +82,7 @@ class PHY_IPhysicsController
// dyna's that are rigidbody are free in orientation, dyna's with non-rigidbody are restricted
virtual void setRigidBody(bool rigid)=0;
- // clientinfo for raycasts for example
- virtual void* getNewClientInfo()=0;
- virtual void setNewClientInfo(void* clientinfo)=0;
+
virtual PHY_IPhysicsController* GetReplica() {return 0;}
virtual void calcXform() =0;
@@ -92,6 +90,12 @@ class PHY_IPhysicsController
virtual float GetMargin() const=0;
virtual float GetRadius() const=0;
virtual void SetRadius(float margin) = 0;
+
+ virtual float GetLinVelocityMin() const=0;
+ virtual void SetLinVelocityMin(float val) = 0;
+ virtual float GetLinVelocityMax() const=0;
+ virtual void SetLinVelocityMax(float val) = 0;
+
PHY__Vector3 GetWorldPosition(PHY__Vector3& localpos);
};
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
index 226ba3a7e74..9a4500c3214 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
@@ -142,6 +142,10 @@ class PHY_IPhysicsEnvironment
virtual PHY_IPhysicsController* rayTest(PHY_IRayCastFilterCallback &filterCallback, float fromX,float fromY,float fromZ, float toX,float toY,float toZ)=0;
+ //culling based on physical broad phase
+ // the plane number must be set as follow: near, far, left, right, top, botton
+ // the near plane must be the first one and must always be present, it is used to get the direction of the view
+ virtual bool cullingTest(PHY_CullingCallback callback, void *userData, PHY__Vector4* planeNormals, int planeNumber, int occlusionRes) = 0;
//Methods for gamelogic collision/physics callbacks
//todo:
diff --git a/source/gameengine/Physics/common/PHY_Pro.h b/source/gameengine/Physics/common/PHY_Pro.h
index 32e63ac2f6d..0249fc3118a 100644
--- a/source/gameengine/Physics/common/PHY_Pro.h
+++ b/source/gameengine/Physics/common/PHY_Pro.h
@@ -35,9 +35,11 @@
struct PHY_ShapeProps {
MT_Scalar m_mass; // Total mass
MT_Scalar m_inertia; // Inertia, should be a tensor some time
- MT_Scalar m_lin_drag; // Linear drag (air, water) 0 = concrete, 1 = vacuum
- MT_Scalar m_ang_drag; // Angular drag
+ MT_Scalar m_lin_drag; // Linear drag (air, water) 0 = concrete, 1 = vacuum, inverted and called dampening in blenders UI
+ MT_Scalar m_ang_drag; // Angular drag, inverted and called dampening in blenders UI
MT_Scalar m_friction_scaling[3]; // Scaling for anisotropic friction. Component in range [0, 1]
+ MT_Scalar m_clamp_vel_min; // Clamp the minimum velocity, this ensures an object moves at a minimum speed unless its stationary
+ MT_Scalar m_clamp_vel_max; // Clamp max velocity
bool m_do_anisotropic; // Should I do anisotropic friction?
bool m_do_fh; // Should the object have a linear Fh spring?
bool m_do_rot_fh; // Should the object have an angular Fh spring?
diff --git a/source/gameengine/Physics/common/SConscript b/source/gameengine/Physics/common/SConscript
index 4d7c808f49b..2713143f50d 100644
--- a/source/gameengine/Physics/common/SConscript
+++ b/source/gameengine/Physics/common/SConscript
@@ -1,7 +1,7 @@
#!/usr/bin/python
Import ('env')
-sources = 'PHY_IMotionState.cpp PHY_IPhysicsController.cpp PHY_IPhysicsEnvironment.cpp PHY_IVehicle.cpp'
+sources = 'PHY_IMotionState.cpp PHY_IController.cpp PHY_IPhysicsController.cpp PHY_IGraphicController.cpp PHY_IPhysicsEnvironment.cpp PHY_IVehicle.cpp'
incs = '. ../Dummy #intern/moto/include'
diff --git a/source/gameengine/PyDoc/BL_ActionActuator.py b/source/gameengine/PyDoc/BL_ActionActuator.py
index 3e95befe16b..480681dc14a 100644
--- a/source/gameengine/PyDoc/BL_ActionActuator.py
+++ b/source/gameengine/PyDoc/BL_ActionActuator.py
@@ -1,7 +1,9 @@
# $Id$
# Documentation for BL_ActionActuator
+import SCA_ILogicBrick
from SCA_IActuator import *
+
class BL_ActionActuator(SCA_IActuator):
"""
Action Actuators apply an action to an actor.
@@ -10,7 +12,7 @@ class BL_ActionActuator(SCA_IActuator):
@type action: string
@ivar start: Specifies the starting frame of the animation.
@type start: float
- @type end: Specifies the ending frame of the animation.
+ @ivar end: Specifies the ending frame of the animation.
@type end: float
@ivar blendin: Specifies the number of frames of animation to generate when making transitions between actions.
@type blendin: float
@@ -25,9 +27,7 @@ class BL_ActionActuator(SCA_IActuator):
@ivar blendTime: Sets the internal frame timer. This property must be in
the range from 0.0 to blendin.
@type blendTime: float
- @ivar type: The operation mode of the actuator.
- KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER,
- KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
+ @ivar type: The operation mode of the actuator. KX_ACTIONACT_PLAY, KX_ACTIONACT_PROPERTY, KX_ACTIONACT_FLIPPER, KX_ACTIONACT_LOOPSTOP, KX_ACTIONACT_LOOPEND
@type type: integer
@ivar continue: The actions continue option, True or False.
When True, the action will always play from where last left off,
diff --git a/source/gameengine/PyDoc/BL_Shader.py b/source/gameengine/PyDoc/BL_Shader.py
new file mode 100644
index 00000000000..182b73d437b
--- /dev/null
+++ b/source/gameengine/PyDoc/BL_Shader.py
@@ -0,0 +1,228 @@
+class BL_Shader: # (PyObjectPlus)
+ """
+ BL_Shader GLSL shaders.
+
+ All placeholders have a __ prefix
+ """
+
+ def __setUniformfv(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+
+ def __delSource(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getFragmentProg(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getVertexProg(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __isValid(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setAttrib(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setNumberOfPasses(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setSampler(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setSource(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform1f(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform1i(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform2f(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform2i(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform3f(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform3i(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform4f(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniform4i(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniformDef(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniformMatrix3(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniformMatrix4(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setUniformiv(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __validate(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
diff --git a/source/gameengine/PyDoc/BL_ShapeActionActuator.py b/source/gameengine/PyDoc/BL_ShapeActionActuator.py
index 209ff4e5580..e1e8b039749 100644
--- a/source/gameengine/PyDoc/BL_ShapeActionActuator.py
+++ b/source/gameengine/PyDoc/BL_ShapeActionActuator.py
@@ -1,6 +1,7 @@
# $Id$
# Documentation for BL_ShapeActionActuator
from SCA_IActuator import *
+from SCA_ILogicBrick import *
class BL_ShapeActionActuator(SCA_IActuator):
"""
@@ -10,7 +11,7 @@ class BL_ShapeActionActuator(SCA_IActuator):
@type action: string
@ivar start: Specifies the starting frame of the shape animation.
@type start: float
- @type end: Specifies the ending frame of the shape animation.
+ @ivar end: Specifies the ending frame of the shape animation.
@type end: float
@ivar blendin: Specifies the number of frames of animation to generate when making transitions between actions.
@type blendin: float
diff --git a/source/gameengine/PyDoc/CListValue.py b/source/gameengine/PyDoc/CListValue.py
new file mode 100644
index 00000000000..e9fc4215bb6
--- /dev/null
+++ b/source/gameengine/PyDoc/CListValue.py
@@ -0,0 +1,59 @@
+class CListValue: # (PyObjectPlus)
+ """
+ CListValue
+
+ This is a list like object used in the game engine internally that behaves similar to a python list in most ways.
+
+ As well as the normal index lookup.
+ C{val= clist[i]}
+
+ CListValue supports string lookups.
+ C{val= scene.objects["OBCube"]}
+
+ Other operations such as C{len(clist), list(clist), clist[0:10]} are also supported.
+ """
+ def append(val):
+ """
+ Add an item to the list (like pythons append)
+
+ Warning: Appending values to the list can cause crashes when the list is used internally by the game engine.
+ """
+
+ def count(val):
+ """
+ Count the number of instances of a value in the list.
+
+ @rtype: integer
+ @return: number of instances
+ """
+ def index(val):
+ """
+ Return the index of a value in the list.
+
+ @rtype: integer
+ @return: The index of the value in the list.
+ """
+ def reverse():
+ """
+ Reverse the order of the list.
+ """
+ def from_id(id):
+ """
+ This is a funtion especially for the game engine to return a value with a spesific id.
+
+ Since object names are not always unique, the id of an object can be used to get an object from the CValueList.
+
+ Example.
+
+ C{myObID = id(gameObject)}
+
+ C{...}
+
+ C{ob= scene.objects.from_id(myObID)}
+
+ Where myObID is an int or long from the id function.
+
+ This has the advantage that you can store the id in places you could not store a gameObject.
+
+ Warning: the id is derived from a memory location and will be different each time the game engine starts.
+ """ \ No newline at end of file
diff --git a/source/gameengine/PyDoc/GameKeys.py b/source/gameengine/PyDoc/GameKeys.py
index 1a0a737718e..310f2b0d506 100644
--- a/source/gameengine/PyDoc/GameKeys.py
+++ b/source/gameengine/PyDoc/GameKeys.py
@@ -134,26 +134,20 @@ Example::
co = GameLogic.getCurrentController()
# 'Keyboard' is a keyboard sensor
sensor = co.getSensor('Keyboard')
- sensor.setKey(GameKeys.F1KEY)
+ sensor.key = GameKeys.F1KEY
Example::
# Do the all keys thing
import GameLogic
import GameKeys
-
- # status: these should be added to a module somewhere
- KX_NO_INPUTSTATUS = 0
- KX_JUSTACTIVATED = 1
- KX_ACTIVE = 2
- KX_JUSTRELEASED = 3
-
+
co = GameLogic.getCurrentController()
# 'Keyboard' is a keyboard sensor
sensor = co.getSensor('Keyboard')
- keylist = sensor.getPressedKeys()
+ keylist = sensor.events
for key in keylist:
# key[0] == GameKeys.keycode, key[1] = status
- if key[1] == KX_JUSTACTIVATED:
+ if key[1] == GameLogic.KX_INPUT_JUST_ACTIVATED:
if key[0] == GameKeys.WKEY:
# Activate Forward!
if key[0] == GameKeys.SKEY:
@@ -173,3 +167,15 @@ def EventToString(event):
@param event: key event from GameKeys or the keyboard sensor.
@rtype: string
"""
+
+def EventToCharacter(event, shift):
+ """
+ Return the string name of a key event. Returns an empty string if the event cant be represented as a character.
+
+ @type event: int
+ @param event: key event from GameKeys or the keyboard sensor.
+ @type event: bool
+ @param event: set to true if shift is held.
+ @rtype: string
+ """
+
diff --git a/source/gameengine/PyDoc/GameLogic.py b/source/gameengine/PyDoc/GameLogic.py
index 0524a9df355..1996aa3f8a9 100644
--- a/source/gameengine/PyDoc/GameLogic.py
+++ b/source/gameengine/PyDoc/GameLogic.py
@@ -3,10 +3,17 @@
Documentation for the GameLogic Module.
=======================================
- There are only three importable modules in the game engine:
+ Modules available in the game engine:
- GameLogic
- L{GameKeys}
- L{Rasterizer}
+ - L{GameTypes}
+
+ Undocumented modules:
+ - VideoTexture
+ - CValue
+ - Expression
+ - PhysicsConstraints
All the other modules are accessible through the methods in GameLogic.
@@ -18,7 +25,7 @@ Documentation for the GameLogic Module.
# To get the game object this controller is on:
obj = co.getOwner()
- L{KX_GameObject} and L{KX_Camera} or L{KX_Light} methods are
+ L{KX_GameObject} and L{KX_Camera} or L{KX_LightObject} methods are
available depending on the type of object::
# To get a sensor linked to this controller.
# "sensorname" is the name of the sensor as defined in the Blender interface.
@@ -72,6 +79,7 @@ Documentation for the GameLogic Module.
- L{SoundActuator<KX_SoundActuator.KX_SoundActuator>}
- L{TrackToActuator<KX_TrackToActuator.KX_TrackToActuator>}
- L{VisibilityActuator<KX_VisibilityActuator.KX_VisibilityActuator>}
+ - L{DynamicActuator<KX_SCA_DynamicActuator.KX_SCA_DynamicActuator>}
Most logic brick's methods are accessors for the properties available in the logic buttons.
Consult the logic bricks documentation for more information on how each logic brick works.
@@ -148,9 +156,35 @@ Documentation for the GameLogic Module.
@var KX_RADAR_AXIS_NEG_X: See L{KX_RadarSensor}
@var KX_RADAR_AXIS_NEG_Y: See L{KX_RadarSensor}
@var KX_RADAR_AXIS_NEG_Z: See L{KX_RadarSensor}
-"""
+
+@group Ray Sensor: KX_RAY_AXIS_POS_X, KX_RAY_AXIS_POS_Y, KX_RAY_AXIS_POS_Z, KX_RAY_AXIS_NEG_X, KX_RAY_AXIS_NEG_Y, KX_RAY_AXIS_NEG_Z
+@var KX_RAY_AXIS_POS_X: See L{KX_RaySensor}
+@var KX_RAY_AXIS_POS_Y: See L{KX_RaySensor}
+@var KX_RAY_AXIS_POS_Z: See L{KX_RaySensor}
+@var KX_RAY_AXIS_NEG_X: See L{KX_RaySensor}
+@var KX_RAY_AXIS_NEG_Y: See L{KX_RaySensor}
+@var KX_RAY_AXIS_NEG_Z: See L{KX_RaySensor}
+
+@group Dynamic Actuator: KX_DYN_RESTORE_DYNAMICS, KX_DYN_DISABLE_DYNAMICS, KX_DYN_ENABLE_RIGID_BODY, KX_DYN_DISABLE_RIGID_BODY, KX_DYN_SET_MASS
+@var KX_DYN_RESTORE_DYNAMICS: See L{KX_SCA_DynamicActuator}
+@var KX_DYN_DISABLE_DYNAMICS: See L{KX_SCA_DynamicActuator}
+@var KX_DYN_ENABLE_RIGID_BODY: See L{KX_SCA_DynamicActuator}
+@var KX_DYN_DISABLE_RIGID_BODY: See L{KX_SCA_DynamicActuator}
+@var KX_DYN_SET_MASS: See L{KX_SCA_DynamicActuator}
+
+@group Input Status: KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED
+@var KX_INPUT_NONE: See L{SCA_MouseSensor}
+@var KX_INPUT_JUST_ACTIVATED: See L{SCA_MouseSensor}
+@var KX_INPUT_ACTIVE: See L{SCA_MouseSensor}
+@var KX_INPUT_JUST_RELEASED: See L{SCA_MouseSensor}
+@group Mouse Buttons: KX_MOUSE_BUT_LEFT, KX_MOUSE_BUT_MIDDLE, KX_MOUSE_BUT_RIGHT
+@var KX_MOUSE_BUT_LEFT: See L{SCA_MouseSensor}
+@var KX_MOUSE_BUT_MIDDLE: See L{SCA_MouseSensor}
+@var KX_MOUSE_BUT_RIGHT: See L{SCA_MouseSensor}
+"""
+
def getCurrentController():
"""
Gets the Python controller associated with this Python script.
@@ -171,6 +205,19 @@ def addActiveActuator(actuator, activate):
@type activate: boolean
@param activate: whether to activate or deactivate the given actuator.
"""
+def sendMessage(subject, body="", to="", message_from=""):
+ """
+ Sends a message to sensors in any active scene.
+
+ @param subject: The subject of the message
+ @type subject: string
+ @param body: The body of the message (optional)
+ @type body: string
+ @param to: The name of the object to send the message to (optional)
+ @type to: string
+ @param message_from: The name of the object that the message is coming from (optional)
+ @type message_from: string
+ """
def getRandomFloat():
"""
Returns a random floating point value in the range [0...1)
diff --git a/source/gameengine/PyDoc/GameTypes.py b/source/gameengine/PyDoc/GameTypes.py
new file mode 100644
index 00000000000..2b07a18247c
--- /dev/null
+++ b/source/gameengine/PyDoc/GameTypes.py
@@ -0,0 +1,75 @@
+# $Id$
+"""
+GameEngine Types
+================
+@var BL_ActionActuator: L{BL_ActionActuator<BL_ActionActuator.BL_ActionActuator>}
+@var BL_Shader: L{BL_Shader<BL_Shader.BL_Shader>}
+@var BL_ShapeActionActuator: L{BL_ShapeActionActuator<BL_ShapeActionActuator.BL_ShapeActionActuator>}
+@var CListValue: L{CListValue<CListValue.CListValue>}
+@var CValue: L{CValue<CValue.CValue>}
+@var KX_BlenderMaterial: L{KX_BlenderMaterial<KX_BlenderMaterial.KX_BlenderMaterial>}
+@var KX_CDActuator: L{KX_CDActuator<KX_CDActuator.KX_CDActuator>}
+@var KX_Camera: L{KX_Camera<KX_Camera.KX_Camera>}
+@var KX_CameraActuator: L{KX_CameraActuator<KX_CameraActuator.KX_CameraActuator>}
+@var KX_ConstraintActuator: L{KX_ConstraintActuator<KX_ConstraintActuator.KX_ConstraintActuator>}
+@var KX_ConstraintWrapper: L{KX_ConstraintWrapper<KX_ConstraintWrapper.KX_ConstraintWrapper>}
+@var KX_GameActuator: L{KX_GameActuator<KX_GameActuator.KX_GameActuator>}
+@var KX_GameObject: L{KX_GameObject<KX_GameObject.KX_GameObject>}
+@var KX_IpoActuator: L{KX_IpoActuator<KX_IpoActuator.KX_IpoActuator>}
+@var KX_LightObject: L{KX_LightObject<KX_LightObject.KX_LightObject>}
+@var KX_MeshProxy: L{KX_MeshProxy<KX_MeshProxy.KX_MeshProxy>}
+@var KX_MouseFocusSensor: L{KX_MouseFocusSensor<KX_MouseFocusSensor.KX_MouseFocusSensor>}
+@var KX_NearSensor: L{KX_NearSensor<KX_NearSensor.KX_NearSensor>}
+@var KX_NetworkMessageActuator: L{KX_NetworkMessageActuator<KX_NetworkMessageActuator.KX_NetworkMessageActuator>}
+@var KX_NetworkMessageSensor: L{KX_NetworkMessageSensor<KX_NetworkMessageSensor.KX_NetworkMessageSensor>}
+@var KX_ObjectActuator: L{KX_ObjectActuator<KX_ObjectActuator.KX_ObjectActuator>}
+@var KX_ParentActuator: L{KX_ParentActuator<KX_ParentActuator.KX_ParentActuator>}
+@var KX_PhysicsObjectWrapper: L{KX_PhysicsObjectWrapper<KX_PhysicsObjectWrapper.KX_PhysicsObjectWrapper>}
+@var KX_PolyProxy: L{KX_PolyProxy<KX_PolyProxy.KX_PolyProxy>}
+@var KX_PolygonMaterial: L{KX_PolygonMaterial<KX_PolygonMaterial.KX_PolygonMaterial>}
+@var KX_RadarSensor: L{KX_RadarSensor<KX_RadarSensor.KX_RadarSensor>}
+@var KX_RaySensor: L{KX_RaySensor<KX_RaySensor.KX_RaySensor>}
+@var KX_SCA_AddObjectActuator: L{KX_SCA_AddObjectActuator<KX_SCA_AddObjectActuator.KX_SCA_AddObjectActuator>}
+@var KX_SCA_DynamicActuator: L{KX_SCA_DynamicActuator<KX_SCA_DynamicActuator.KX_SCA_DynamicActuator>}
+@var KX_SCA_EndObjectActuator: L{KX_SCA_EndObjectActuator<KX_SCA_EndObjectActuator.KX_SCA_EndObjectActuator>}
+@var KX_SCA_ReplaceMeshActuator: L{KX_SCA_ReplaceMeshActuator<KX_SCA_ReplaceMeshActuator.KX_SCA_ReplaceMeshActuator>}
+@var KX_Scene: L{KX_Scene<KX_Scene.KX_Scene>}
+@var KX_SceneActuator: L{KX_SceneActuator<KX_SceneActuator.KX_SceneActuator>}
+@var KX_SoundActuator: L{KX_SoundActuator<KX_SoundActuator.KX_SoundActuator>}
+@var KX_StateActuator: L{KX_StateActuator<KX_StateActuator.KX_StateActuator>}
+@var KX_TouchSensor: L{KX_TouchSensor<KX_TouchSensor.KX_TouchSensor>}
+@var KX_TrackToActuator: L{KX_TrackToActuator<KX_TrackToActuator.KX_TrackToActuator>}
+@var KX_VehicleWrapper: L{KX_VehicleWrapper<KX_VehicleWrapper.KX_VehicleWrapper>}
+@var KX_VertexProxy: L{KX_VertexProxy<KX_VertexProxy.KX_VertexProxy>}
+@var KX_VisibilityActuator: L{KX_VisibilityActuator<KX_VisibilityActuator.KX_VisibilityActuator>}
+@var PyObjectPlus: L{PyObjectPlus<PyObjectPlus.PyObjectPlus>}
+@var SCA_2DFilterActuator: L{SCA_2DFilterActuator<SCA_2DFilterActuator.SCA_2DFilterActuator>}
+@var SCA_ANDController: L{SCA_ANDController<SCA_ANDController.SCA_ANDController>}
+@var SCA_ActuatorSensor: L{SCA_ActuatorSensor<SCA_ActuatorSensor.SCA_ActuatorSensor>}
+@var SCA_AlwaysSensor: L{SCA_AlwaysSensor<SCA_AlwaysSensor.SCA_AlwaysSensor>}
+@var SCA_DelaySensor: L{SCA_DelaySensor<SCA_DelaySensor.SCA_DelaySensor>}
+@var SCA_ILogicBrick: L{SCA_ILogicBrick<SCA_ILogicBrick.SCA_ILogicBrick>}
+@var SCA_IObject: L{SCA_IObject<SCA_IObject.SCA_IObject>}
+@var SCA_ISensor: L{SCA_ISensor<SCA_ISensor.SCA_ISensor>}
+@var SCA_JoystickSensor: L{SCA_JoystickSensor<SCA_JoystickSensor.SCA_JoystickSensor>}
+@var SCA_KeyboardSensor: L{SCA_KeyboardSensor<SCA_KeyboardSensor.SCA_KeyboardSensor>}
+@var SCA_MouseSensor: L{SCA_MouseSensor<SCA_MouseSensor.SCA_MouseSensor>}
+@var SCA_NANDController: L{SCA_NANDController<SCA_NANDController.SCA_NANDController>}
+@var SCA_NORController: L{SCA_NORController<SCA_NORController.SCA_NORController>}
+@var SCA_ORController: L{SCA_ORController<SCA_ORController.SCA_ORController>}
+@var SCA_PropertyActuator: L{SCA_PropertyActuator<SCA_PropertyActuator.SCA_PropertyActuator>}
+@var SCA_PropertySensor: L{SCA_PropertySensor<SCA_PropertySensor.SCA_PropertySensor>}
+@var SCA_PythonController: L{SCA_PythonController<SCA_PythonController.SCA_PythonController>}
+@var SCA_RandomActuator: L{SCA_RandomActuator<SCA_RandomActuator.SCA_RandomActuator>}
+@var SCA_RandomSensor: L{SCA_RandomSensor<SCA_RandomSensor.SCA_RandomSensor>}
+@var SCA_XNORController: L{SCA_XNORController<SCA_XNORController.SCA_XNORController>}
+@var SCA_XORController: L{SCA_XORController<SCA_XORController.SCA_XORController>}
+"""
+
+if 0:
+ # Use to print out all the links
+ for i in a.split('\n'):
+ if i.startswith('@var'):
+ var = i.split(' ')[1].split(':')[0]
+ print '@var %s: L{%s<%s.%s>}' % (var, var, var, var)
+
diff --git a/source/gameengine/PyDoc/KX_BlenderMaterial.py b/source/gameengine/PyDoc/KX_BlenderMaterial.py
new file mode 100644
index 00000000000..21417db1802
--- /dev/null
+++ b/source/gameengine/PyDoc/KX_BlenderMaterial.py
@@ -0,0 +1,38 @@
+class KX_BlenderMaterial: # (PyObjectPlus)
+ """
+ KX_BlenderMaterial
+
+ All placeholders have a __ prefix
+ """
+
+ def __getShader(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+
+ def __setBlending(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getMaterialIndex(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
diff --git a/source/gameengine/PyDoc/KX_CDActuator.py b/source/gameengine/PyDoc/KX_CDActuator.py
index 2c202476584..e1067674e7e 100644
--- a/source/gameengine/PyDoc/KX_CDActuator.py
+++ b/source/gameengine/PyDoc/KX_CDActuator.py
@@ -3,6 +3,15 @@
from SCA_IActuator import *
class KX_CDActuator(SCA_IActuator):
+ """
+ CD Controller actuator.
+ @ivar volume: controls the volume to set the CD to. 0.0 = silent, 1.0 = max volume.
+ @type volume: float
+ @ivar track: the track selected to be played
+ @type track: integer
+ @ivar gain: the gain (volume) of the CD between 0.0 and 1.0.
+ @type gain: float
+ """
def startCD():
"""
Starts the CD playing.
@@ -15,8 +24,21 @@ class KX_CDActuator(SCA_IActuator):
"""
Pauses the CD.
"""
+ def resumeCD():
+ """
+ Resumes the CD after a pause.
+ """
+ def playAll():
+ """
+ Plays the CD from the beginning.
+ """
+ def playTrack(trackNumber):
+ """
+ Plays the track selected.
+ """
def setGain(gain):
"""
+ DEPRECATED: Use the volume property.
Sets the gain (volume) of the CD.
@type gain: float
@@ -24,6 +46,7 @@ class KX_CDActuator(SCA_IActuator):
"""
def getGain():
"""
+ DEPRECATED: Use the volume property.
Gets the current gain (volume) of the CD.
@rtype: float
diff --git a/source/gameengine/PyDoc/KX_Camera.py b/source/gameengine/PyDoc/KX_Camera.py
index 4cadf1c0ed0..f5d0d45f968 100644
--- a/source/gameengine/PyDoc/KX_Camera.py
+++ b/source/gameengine/PyDoc/KX_Camera.py
@@ -185,3 +185,25 @@ class KX_Camera(KX_GameObject):
@param matrix: The new projection matrix for this camera.
"""
+ def enableViewport(viewport):
+ """
+ Use this camera to draw a viewport on the screen (for split screen games or overlay scenes). The viewport region is defined with L{setViewport}.
+
+ @type viewport: bool
+ @param viewport: the new viewport status
+ """
+ def setOnTop():
+ """
+ Set this cameras viewport ontop of all other viewport.
+ """
+ def setViewport(left, bottom, right, top):
+ """
+ Sets the region of this viewport on the screen in pixels.
+
+ Use L{Rasterizer.getWindowHeight} L{Rasterizer.getWindowWidth} to calculate values relative to the entire display.
+
+ @type left: int
+ @type bottom: int
+ @type right: int
+ @type top: int
+ """
diff --git a/source/gameengine/PyDoc/KX_ConstraintActuator.py b/source/gameengine/PyDoc/KX_ConstraintActuator.py
index 7c7ad5aa0fa..a30b859548b 100644
--- a/source/gameengine/PyDoc/KX_ConstraintActuator.py
+++ b/source/gameengine/PyDoc/KX_ConstraintActuator.py
@@ -5,6 +5,75 @@ from SCA_IActuator import *
class KX_ConstraintActuator(SCA_IActuator):
"""
A constraint actuator limits the position, rotation, distance or orientation of an object.
+
+ Properties:
+
+ @ivar damp: time constant of the constraint expressed in frame (not use by Force field constraint)
+ @type damp: integer
+
+ @ivar rotDamp: time constant for the rotation expressed in frame (only for the distance constraint)
+ 0 = use damp for rotation as well
+ @type rotDamp: integer
+
+ @ivar direction: the reference direction in world coordinate for the orientation constraint
+ @type direction: 3-tuple of float: [x,y,z]
+
+ @ivar option: Binary combination of the following values:
+ Applicable to Distance constraint:
+ KX_ACT_CONSTRAINT_NORMAL ( 64) : Activate alignment to surface
+ KX_ACT_CONSTRAINT_DISTANCE ( 512) : Activate distance control
+ KX_ACT_CONSTRAINT_LOCAL (1024) : direction of the ray is along the local axis
+ Applicable to Force field constraint:
+ KX_ACT_CONSTRAINT_DOROTFH (2048) : Force field act on rotation as well
+ Applicable to both:
+ KX_ACT_CONSTRAINT_MATERIAL ( 128) : Detect material rather than property
+ KX_ACT_CONSTRAINT_PERMANENT ( 256) : No deactivation if ray does not hit target
+ @type option: integer
+
+ @ivar time: activation time of the actuator. The actuator disables itself after this many frame.
+ If set to 0, the actuator is not limited in time.
+ @type time: integer
+
+ @ivar property: the name of the property or material for the ray detection of the distance constraint.
+ @type property: string
+
+ @ivar min: The lower bound of the constraint
+ For the rotation and orientation constraint, it represents radiant
+ @type min: float
+
+ @ivar distance: the target distance of the distance constraint
+ @type distance: float
+
+ @ivar max: the upper bound of the constraint.
+ For rotation and orientation constraints, it represents radiant.
+ @type max: float
+
+ @ivar rayLength: the length of the ray of the distance constraint.
+ @type rayLength: float
+
+ @ivar limit: type of constraint, use one of the following constant:
+ KX_ACT_CONSTRAINT_LOCX ( 1) : limit X coord
+ KX_ACT_CONSTRAINT_LOCY ( 2) : limit Y coord
+ KX_ACT_CONSTRAINT_LOCZ ( 3) : limit Z coord
+ KX_ACT_CONSTRAINT_ROTX ( 4) : limit X rotation
+ KX_ACT_CONSTRAINT_ROTY ( 5) : limit Y rotation
+ KX_ACT_CONSTRAINT_ROTZ ( 6) : limit Z rotation
+ KX_ACT_CONSTRAINT_DIRPX ( 7) : set distance along positive X axis
+ KX_ACT_CONSTRAINT_DIRPY ( 8) : set distance along positive Y axis
+ KX_ACT_CONSTRAINT_DIRPZ ( 9) : set distance along positive Z axis
+ KX_ACT_CONSTRAINT_DIRNX (10) : set distance along negative X axis
+ KX_ACT_CONSTRAINT_DIRNY (11) : set distance along negative Y axis
+ KX_ACT_CONSTRAINT_DIRNZ (12) : set distance along negative Z axis
+ KX_ACT_CONSTRAINT_ORIX (13) : set orientation of X axis
+ KX_ACT_CONSTRAINT_ORIY (14) : set orientation of Y axis
+ KX_ACT_CONSTRAINT_ORIZ (15) : set orientation of Z axis
+ KX_ACT_CONSTRAINT_FHPX (16) : set force field along positive X axis
+ KX_ACT_CONSTRAINT_FHPY (17) : set force field along positive Y axis
+ KX_ACT_CONSTRAINT_FHPZ (18) : set force field along positive Z axis
+ KX_ACT_CONSTRAINT_FHNX (19) : set force field along negative X axis
+ KX_ACT_CONSTRAINT_FHNY (20) : set force field along negative Y axis
+ KX_ACT_CONSTRAINT_FHNZ (21) : set force field along negative Z axis
+ @type limit: integer
"""
def setDamp(time):
"""
diff --git a/source/gameengine/PyDoc/KX_ConstraintWrapper.py b/source/gameengine/PyDoc/KX_ConstraintWrapper.py
new file mode 100644
index 00000000000..5b34e1609e8
--- /dev/null
+++ b/source/gameengine/PyDoc/KX_ConstraintWrapper.py
@@ -0,0 +1,28 @@
+class KX_ConstraintWrapper: # (PyObjectPlus)
+ """
+ KX_ConstraintWrapper
+
+ All placeholders have a __ prefix
+ """
+ def __getConstraintId(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+
+ def __testMethod(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+
diff --git a/source/gameengine/PyDoc/KX_GameActuator.py b/source/gameengine/PyDoc/KX_GameActuator.py
index b916b3b5617..fc5bd6005fc 100644
--- a/source/gameengine/PyDoc/KX_GameActuator.py
+++ b/source/gameengine/PyDoc/KX_GameActuator.py
@@ -5,15 +5,22 @@ from SCA_IActuator import *
class KX_GameActuator(SCA_IActuator):
"""
The game actuator loads a new .blend file, restarts the current .blend file or quits the game.
+
+ Properties:
+
+ @ivar file: the new .blend file to load
+ @type file: string.
"""
def getFile():
"""
+ DEPRECATED: use the file property
Returns the filename of the new .blend file to load.
@rtype: string
"""
def setFile(filename):
"""
+ DEPRECATED: use the file property
Sets the new .blend file to load.
@param filename: The file name this actuator will load.
diff --git a/source/gameengine/PyDoc/KX_GameObject.py b/source/gameengine/PyDoc/KX_GameObject.py
index 4f389a1ae4f..21ddf439924 100644
--- a/source/gameengine/PyDoc/KX_GameObject.py
+++ b/source/gameengine/PyDoc/KX_GameObject.py
@@ -1,29 +1,86 @@
# $Id$
# Documentation for game objects
-class KX_GameObject:
+# from SCA_IObject import *
+# from SCA_ISensor import *
+# from SCA_IController import *
+# from SCA_IActuator import *
+
+
+class KX_GameObject: # (SCA_IObject)
"""
All game objects are derived from this class.
Properties assigned to game objects are accessible as attributes of this class.
-
+ - note: Calling ANY method or attribute on an object that has been removed from a scene will raise a RuntimeError, if an object may have been removed since last accessing it use the L{isValid} attribute to check.
+
@ivar name: The object's name. (Read only)
+ - note: Currently (Blender 2.49) the prefix "OB" is added to all objects name. This may change in blender 2.5.
@type name: string.
- @ivar mass: The object's mass (provided the object has a physics controller). Read only.
+ @ivar mass: The object's mass
+ - note: The object must have a physics controller for the mass to be applied, otherwise the mass value will be returned as 0.0
@type mass: float
+ @ivar linVelocityMin: Enforces the object keeps moving at a minimum velocity.
+ - note: Applies to dynamic and rigid body objects only.
+ - note: A value of 0.0 disables this option.
+ - note: While objects are stationary the minimum velocity will not be applied.
+ @type linVelocityMin: float
+ @ivar linVelocityMax: Clamp the maximum linear velocity to prevent objects moving beyond a set speed.
+ - note: Applies to dynamic and rigid body objects only.
+ - note: A value of 0.0 disables this option (rather then setting it stationary).
+ @type linVelocityMax: float
+ @ivar localInertia: the object's inertia vector in local coordinates. Read only.
+ @type localInertia: list [ix, iy, iz]
@ivar parent: The object's parent object. (Read only)
- @type parent: L{KX_GameObject}
+ @type parent: L{KX_GameObject} or None
@ivar visible: visibility flag.
+ - note: Game logic will still run for invisible objects.
@type visible: boolean
+ @ivar occlusion: occlusion capability flag.
+ @type occlusion: boolean
@ivar position: The object's position.
- @type position: list [x, y, z]
- @ivar orientation: The object's orientation. 3x3 Matrix.
- You can also write a Quaternion or Euler vector.
- @type orientation: 3x3 Matrix [[float]]
+ DEPRECATED: use localPosition and worldPosition
+ @type position: list [x, y, z] On write: local position, on read: world position
+ @ivar orientation: The object's orientation. 3x3 Matrix. You can also write a Quaternion or Euler vector.
+ DEPRECATED: use localOrientation and worldOrientation
+ @type orientation: 3x3 Matrix [[float]] On write: local orientation, on read: world orientation
@ivar scaling: The object's scaling factor. list [sx, sy, sz]
- @type scaling: list [sx, sy, sz]
+ DEPRECATED: use localScaling and worldScaling
+ @type scaling: list [sx, sy, sz] On write: local scaling, on read: world scaling
+ @ivar localOrientation: The object's local orientation. 3x3 Matrix. You can also write a Quaternion or Euler vector.
+ @type localOrientation: 3x3 Matrix [[float]]
+ @ivar worldOrientation: The object's world orientation. Read-only.
+ @type worldOrientation: 3x3 Matrix [[float]]
+ @ivar localScaling: The object's local scaling factor.
+ @type localScaling: list [sx, sy, sz]
+ @ivar worldScaling: The object's world scaling factor. Read-only
+ @type worldScaling: list [sx, sy, sz]
+ @ivar localPosition: The object's local position.
+ @type localPosition: list [x, y, z]
+ @ivar worldPosition: The object's world position.
+ @type worldPosition: list [x, y, z]
@ivar timeOffset: adjust the slowparent delay at runtime.
@type timeOffset: float
+ @ivar state: the game object's state bitmask, using the first 30 bits, one bit must always be set.
+ @type state: int
+ @ivar meshes: a list meshes for this object.
+ - note: Most objects use only 1 mesh.
+ - note: Changes to this list will not update the KX_GameObject.
+ @type meshes: list of L{KX_MeshProxy}
+ @ivar sensors: a list of L{SCA_ISensor} objects.
+ - note: This attribute is experemental and may be removed (but probably wont be).
+ - note: Changes to this list will not update the KX_GameObject.
+ @type sensors: list
+ @ivar controllers: a list of L{SCA_IController} objects.
+ - note: This attribute is experemental and may be removed (but probably wont be).
+ - note: Changes to this list will not update the KX_GameObject.
+ @type controllers: list of L{SCA_ISensor}.
+ @ivar actuators: a list of L{SCA_IActuator} objects.
+ - note: This attribute is experemental and may be removed (but probably wont be).
+ - note: Changes to this list will not update the KX_GameObject.
+ @type actuators: list
+ @ivar isValid: Retuerns fails when the object has been removed from the scene and can no longer be used.
+ @type isValid: bool
"""
def endObject(visible):
"""
@@ -37,33 +94,43 @@ class KX_GameObject:
"""
def getVisible():
"""
- Gets the game object's visible flag.
+ Gets the game object's visible flag. (B{deprecated})
@rtype: boolean
"""
- def setVisible(visible):
+ def setVisible(visible, recursive):
"""
Sets the game object's visible flag.
@type visible: boolean
+ @type recursive: boolean
+ @param recursive: optional argument to set all childrens visibility flag too.
+ """
+ def setOcclusion(occlusion, recursive):
+ """
+ Sets the game object's occlusion capability.
+
+ @type visible: boolean
+ @type recursive: boolean
+ @param recursive: optional argument to set all childrens occlusion flag too.
"""
def getState():
"""
- Gets the game object's state bitmask.
+ Gets the game object's state bitmask. (B{deprecated})
@rtype: int
@return: the objects state.
"""
def setState(state):
"""
- Sets the game object's state flag.
- The bitmasks for states from 1 to 30 can be set with (1<<0, 1<<1, 1<<2 ... 1<<29)
+ Sets the game object's state flag. (B{deprecated}).
+ The bitmasks for states from 1 to 30 can be set with (1<<0, 1<<1, 1<<2 ... 1<<29)
@type state: integer
"""
def setPosition(pos):
"""
- Sets the game object's position.
+ Sets the game object's position. (B{deprecated})
Global coordinates for root object, local for child objects.
@@ -79,14 +146,14 @@ class KX_GameObject:
"""
def getPosition():
"""
- Gets the game object's position.
+ Gets the game object's position. (B{deprecated})
@rtype: list [x, y, z]
@return: the object's position in world coordinates.
"""
def setOrientation(orn):
"""
- Sets the game object's orientation.
+ Sets the game object's orientation. (B{deprecated})
@type orn: 3x3 rotation matrix, or Quaternion.
@param orn: a rotation matrix specifying the new rotation.
@@ -117,7 +184,7 @@ class KX_GameObject:
"""
def getOrientation():
"""
- Gets the game object's orientation.
+ Gets the game object's orientation. (B{deprecated})
@rtype: 3x3 rotation matrix
@return: The game object's rotation matrix
@@ -133,7 +200,7 @@ class KX_GameObject:
@param local: - False: you get the "global" movement ie: relative to world orientation (default).
- True: you get the "local" movement ie: relative to object orientation.
"""
- def applyRotation(movement, local = 0):
+ def applyRotation(rotation, local = 0):
"""
Sets the game object's rotation.
@@ -231,7 +298,7 @@ class KX_GameObject:
"""
def getMass():
"""
- Gets the game object's mass.
+ Gets the game object's mass. (B{deprecated})
@rtype: float
@return: the object's mass.
@@ -243,6 +310,8 @@ class KX_GameObject:
The reaction force is the force applied to this object over the last simulation timestep.
This also includes impulses, eg from collisions.
+ (B{This is not implimented for bullet physics at the moment})
+
@rtype: list [fx, fy, fz]
@return: the reaction force of this object.
"""
@@ -280,7 +349,7 @@ class KX_GameObject:
"""
def getParent():
"""
- Gets this object's parent.
+ Gets this object's parent. (B{deprecated})
@rtype: L{KX_GameObject}
@return: this object's parent object, or None if this object has no parent.
@@ -299,13 +368,13 @@ class KX_GameObject:
def getChildren():
"""
Return a list of immediate children of this object.
- @rtype: list
+ @rtype: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
@return: a list of all this objects children.
"""
def getChildrenRecursive():
"""
Return a list of children of this object, including all their childrens children.
- @rtype: list
+ @rtype: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
@return: a list of all this objects children recursivly.
"""
def getMesh(mesh):
@@ -413,5 +482,23 @@ class KX_GameObject:
If no hit, returns (None,None,None) or (None,None,None,None)
If the object hit is not a static mesh, polygon is None
"""
-
-
+ def setCollisionMargin(margin):
+ """
+ Set the objects collision margin.
+
+ note: If this object has no physics controller (a physics ID of zero), this function will raise RuntimeError.
+
+ @type margin: float
+ @param margin: the collision margin distance in blender units.
+ """
+ def sendMessage(subject, body="", to=""):
+ """
+ Sends a message.
+
+ @param subject: The subject of the message
+ @type subject: string
+ @param body: The body of the message (optional)
+ @type body: string
+ @param to: The name of the object to send the message to (optional)
+ @type to: string
+ """
diff --git a/source/gameengine/PyDoc/KX_IpoActuator.py b/source/gameengine/PyDoc/KX_IpoActuator.py
index e2fe3b289e3..ebc0b855f0a 100644
--- a/source/gameengine/PyDoc/KX_IpoActuator.py
+++ b/source/gameengine/PyDoc/KX_IpoActuator.py
@@ -5,10 +5,29 @@ from SCA_IActuator import *
class KX_IpoActuator(SCA_IActuator):
"""
IPO actuator activates an animation.
+
+ @ivar startFrame: Start frame.
+ @type startFrame: float
+ @ivar endFrame: End frame.
+ @type endFrame: float
+ @ivar propName: Use this property to define the Ipo position
+ @type propName: string
+ @ivar framePropName: Assign this property this action current frame number
+ @type framePropName: string
+ @ivar type: Play mode for the ipo. (In GameLogic.KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND, KX_IPOACT_FROM_PROP)
+ @type type: int
+ @ivar useIpoAsForce: Apply Ipo as a global or local force depending on the local option (dynamic objects only)
+ @type useIpoAsForce: bool
+ @ivar useIpoAdd: Ipo is added to the current loc/rot/scale in global or local coordinate according to Local flag
+ @type useIpoAdd: bool
+ @ivar useIpoLocal: Let the ipo acts in local coordinates, used in Force and Add mode.
+ @type useIpoLocal: bool
+ @ivar useChildren: Update IPO on all children Objects as well
+ @type useChildren: bool
"""
def set(mode, startframe, endframe, force):
"""
- Sets the properties of the actuator.
+ Sets the properties of the actuator. (B{deprecated})
@param mode: "Play", "PingPong", "Flipper", "LoopStop", "LoopEnd" or "FromProp"
@type mode: string
@@ -21,70 +40,70 @@ class KX_IpoActuator(SCA_IActuator):
"""
def setProperty(property):
"""
- Sets the name of the property to be used in FromProp mode.
+ Sets the name of the property to be used in FromProp mode. (B{deprecated})
@type property: string
"""
def setStart(startframe):
"""
- Sets the frame from which the IPO starts playing.
+ Sets the frame from which the IPO starts playing. (B{deprecated})
@type startframe: integer
"""
def getStart():
"""
- Returns the frame from which the IPO starts playing.
+ Returns the frame from which the IPO starts playing. (B{deprecated})
@rtype: integer
"""
def setEnd(endframe):
"""
- Sets the frame at which the IPO stops playing.
+ Sets the frame at which the IPO stops playing. (B{deprecated})
@type endframe: integer
"""
def getEnd():
"""
- Returns the frame at which the IPO stops playing.
+ Returns the frame at which the IPO stops playing. (B{deprecated})
@rtype: integer
"""
def setIpoAsForce(force):
"""
- Set whether to interpret the ipo as a force rather than a displacement.
+ Set whether to interpret the ipo as a force rather than a displacement. (B{deprecated})
@type force: boolean
@param force: KX_TRUE or KX_FALSE
"""
def getIpoAsForce():
"""
- Returns whether to interpret the ipo as a force rather than a displacement.
+ Returns whether to interpret the ipo as a force rather than a displacement. (B{deprecated})
@rtype: boolean
"""
def setIpoAdd(add):
"""
- Set whether to interpret the ipo as additive rather than absolute.
+ Set whether to interpret the ipo as additive rather than absolute. (B{deprecated})
@type add: boolean
@param add: KX_TRUE or KX_FALSE
"""
def getIpoAdd():
"""
- Returns whether to interpret the ipo as additive rather than absolute.
+ Returns whether to interpret the ipo as additive rather than absolute. (B{deprecated})
@rtype: boolean
"""
def setType(mode):
"""
- Sets the operation mode of the actuator.
+ Sets the operation mode of the actuator. (B{deprecated})
@param mode: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
@type mode: string
"""
def getType():
"""
- Returns the operation mode of the actuator.
+ Returns the operation mode of the actuator. (B{deprecated})
@rtype: integer
@return: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
@@ -92,7 +111,7 @@ class KX_IpoActuator(SCA_IActuator):
def setForceIpoActsLocal(local):
"""
Set whether to apply the force in the object's local
- coordinates rather than the world global coordinates.
+ coordinates rather than the world global coordinates. (B{deprecated})
@param local: Apply the ipo-as-force in the object's local
coordinates? (KX_TRUE, KX_FALSE)
@@ -101,5 +120,5 @@ class KX_IpoActuator(SCA_IActuator):
def getForceIpoActsLocal():
"""
Return whether to apply the force in the object's local
- coordinates rather than the world global coordinates.
+ coordinates rather than the world global coordinates. (B{deprecated})
"""
diff --git a/source/gameengine/PyDoc/KX_Light.py b/source/gameengine/PyDoc/KX_LightObject.py
index ff0cf071d2d..8cc1787887b 100644
--- a/source/gameengine/PyDoc/KX_Light.py
+++ b/source/gameengine/PyDoc/KX_LightObject.py
@@ -2,7 +2,7 @@
# Documentation for Light game objects.
from KX_GameObject import *
-class KX_Light(KX_GameObject):
+class KX_LightObject(KX_GameObject):
"""
A Light object.
diff --git a/source/gameengine/PyDoc/KX_MeshProxy.py b/source/gameengine/PyDoc/KX_MeshProxy.py
index 03bc36b6ac1..e8839ac484c 100644
--- a/source/gameengine/PyDoc/KX_MeshProxy.py
+++ b/source/gameengine/PyDoc/KX_MeshProxy.py
@@ -45,7 +45,14 @@ class KX_MeshProxy:
m_i += 1
mesh = obj.getMesh(m_i)
-
+ @ivar materials:
+ @type materials: list of L{KX_BlenderMaterial} or L{KX_PolygonMaterial} types
+
+ @ivar numPolygons:
+ @type numPolygons: integer
+
+ @ivar numMaterials:
+ @type numMaterials: integer
"""
def getNumMaterials():
diff --git a/source/gameengine/PyDoc/KX_MouseFocusSensor.py b/source/gameengine/PyDoc/KX_MouseFocusSensor.py
index 28d584037f8..24f7716218b 100644
--- a/source/gameengine/PyDoc/KX_MouseFocusSensor.py
+++ b/source/gameengine/PyDoc/KX_MouseFocusSensor.py
@@ -8,19 +8,60 @@ class KX_MouseFocusSensor(SCA_MouseSensor):
The mouse focus sensor works by transforming the mouse coordinates from 2d device
space to 3d space then raycasting away from the camera.
+
+ @ivar raySource: The worldspace source of the ray (the view position)
+ @type raySource: list (vector of 3 floats)
+ @ivar rayTarget: The worldspace target of the ray.
+ @type rayTarget: list (vector of 3 floats)
+ @ivar rayDirection: The L{rayTarget} - L{raySource} normalized.
+ @type rayDirection: list (normalized vector of 3 floats)
+ @ivar hitObject: the last object the mouse was over.
+ @type hitObject: L{KX_GameObject<KX_GameObject.KX_GameObject>} or None
+ @ivar hitPosition: The worldspace position of the ray intersecton.
+ @type hitPosition: list (vector of 3 floats)
+ @ivar hitNormal: the worldspace normal from the face at point of intersection.
+ @type hitNormal: list (normalized vector of 3 floats)
"""
- def GetRayTarget():
+ def getHitNormal():
+ """
+ Returns the normal (in worldcoordinates) at the point of collision where the object was hit by this ray. (B{deprecated})
+
+ @rtype: list [x, y, z]
+ @return: the ray collision normal.
+ """
+ def getHitObject():
+ """
+ Returns the object that was hit by this ray or None. (B{deprecated})
+
+ @rtype: L{KX_GameObject} or None
+ @return: the collision object.
+ """
+ def getHitPosition():
"""
- Returns the end point of the sensor ray.
+ Returns the position (in worldcoordinates) at the point of collision where the object was hit by this ray. (B{deprecated})
@rtype: list [x, y, z]
- @return: the end point of the sensor ray, in world coordinates.
+ @return: the ray collision position.
"""
- def GetRaySource():
+ def getRayDirection():
"""
- Returns the start point of the sensor ray.
+ Returns the normalized direction (in worldcoordinates) of the ray cast by the mouse. (B{deprecated})
@rtype: list [x, y, z]
- @return: the start point of the sensor ray, in world coordinates.
+ @return: the ray direction.
"""
+ def getRaySource():
+ """
+ Returns the position (in worldcoordinates) the ray was cast from by the mouse. (B{deprecated})
+
+ @rtype: list [x, y, z]
+ @return: the ray source.
+ """
+ def getRayTarget():
+ """
+ Returns the target of the ray (in worldcoordinates) that seeks the focus object. (B{deprecated})
+
+ @rtype: list [x, y, z]
+ @return: the ray target.
+ """ \ No newline at end of file
diff --git a/source/gameengine/PyDoc/KX_NetworkMessageActuator.py b/source/gameengine/PyDoc/KX_NetworkMessageActuator.py
index aecd2897743..c9f48d47eb8 100644
--- a/source/gameengine/PyDoc/KX_NetworkMessageActuator.py
+++ b/source/gameengine/PyDoc/KX_NetworkMessageActuator.py
@@ -5,21 +5,33 @@ from SCA_IActuator import *
class KX_NetworkMessageActuator(SCA_IActuator):
"""
Message Actuator
+
+ @ivar propName: Messages will only be sent to objects with the given property name.
+ @type propName: string
+ @ivar subject: The subject field of the message.
+ @type subject: string
+ @ivar body: The body of the message.
+ @type body: string
+ @ivar usePropBody: Send a property instead of a regular body message.
+ @type usePropBody: boolean
"""
def setToPropName(name):
"""
+ DEPRECATED: Use the propName property instead.
Messages will only be sent to objects with the given property name.
@type name: string
"""
def setSubject(subject):
"""
+ DEPRECATED: Use the subject property instead.
Sets the subject field of the message.
@type subject: string
"""
def setBodyType(bodytype):
"""
+ DEPRECATED: Use the usePropBody property instead.
Sets the type of body to send.
@type bodytype: boolean
@@ -27,6 +39,7 @@ class KX_NetworkMessageActuator(SCA_IActuator):
"""
def setBody(body):
"""
+ DEPRECATED: Use the body property instead.
Sets the message body.
@type body: string
diff --git a/source/gameengine/PyDoc/KX_NetworkMessageSensor.py b/source/gameengine/PyDoc/KX_NetworkMessageSensor.py
index 8f5f3609df7..0fecad58437 100644
--- a/source/gameengine/PyDoc/KX_NetworkMessageSensor.py
+++ b/source/gameengine/PyDoc/KX_NetworkMessageSensor.py
@@ -7,9 +7,22 @@ class KX_NetworkMessageSensor(SCA_ISensor):
The Message Sensor logic brick.
Currently only loopback (local) networks are supported.
+
+ @ivar subject: The subject the sensor is looking for.
+ @type subject: string
+ @ivar frameMessageCount: The number of messages received since the last frame.
+ (Read-only)
+ @type framemessageCount: int
+ @ivar subjects: The list of message subjects received. (Read-only)
+ @type subjects: list of strings
+ @ivar bodies: The list of message bodies received. (Read-only)
+ @type bodies: list of strings
"""
+
+
def setSubjectFilterText(subject):
"""
+ DEPRECATED: Use the subject property instead.
Change the message subject text that this sensor is listening to.
@type subject: string
@@ -18,24 +31,28 @@ class KX_NetworkMessageSensor(SCA_ISensor):
def getFrameMessageCount():
"""
+ DEPRECATED: Use the frameMessageCount property instead.
Get the number of messages received since the last frame.
@rtype: integer
"""
def getBodies():
"""
+ DEPRECATED: Use the bodies property instead.
Gets the list of message bodies.
@rtype: list
"""
def getSubject():
"""
+ DEPRECATED: Use the subject property instead.
Gets the message subject this sensor is listening for from the Subject: field.
@rtype: string
"""
def getSubjects():
"""
+ DEPRECATED: Use the subjects property instead.
Gets the list of message subjects received.
@rtype: list
diff --git a/source/gameengine/PyDoc/KX_ParentActuator.py b/source/gameengine/PyDoc/KX_ParentActuator.py
index 7b5625ec82d..2f5d9515d0b 100644
--- a/source/gameengine/PyDoc/KX_ParentActuator.py
+++ b/source/gameengine/PyDoc/KX_ParentActuator.py
@@ -1,16 +1,16 @@
-# $Id: KX_ParentActuator.py 2615 2004-06-02 12:43:27Z kester $
+# $Id$
# Documentation for KX_ParentActuator
from SCA_IActuator import *
class KX_ParentActuator(SCA_IActuator):
"""
- The parent actuator can set or remove an objects parent object.
-
+ The parent actuator can set or remove an objects parent object.
@ivar object: the object this actuator sets the parent too.
@type object: KX_GameObject or None
"""
def setObject(object):
"""
+ DEPRECATED: Use the object property.
Sets the object to set as parent.
Object can be either a L{KX_GameObject} or the name of the object.
@@ -19,6 +19,7 @@ class KX_ParentActuator(SCA_IActuator):
"""
def getObject(name_only = 1):
"""
+ DEPRECATED: Use the object property.
Returns the name of the object to change to.
@type name_only: bool
@param name_only: optional argument, when 0 return a KX_GameObject
diff --git a/source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py b/source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py
new file mode 100644
index 00000000000..2171cf4c7b6
--- /dev/null
+++ b/source/gameengine/PyDoc/KX_PhysicsObjectWrapper.py
@@ -0,0 +1,47 @@
+class KX_PhysicsObjectWrapper: # (PyObjectPlus)
+ """
+ KX_PhysicsObjectWrapper
+
+ All placeholders have a __ prefix
+ """
+ def __setActive(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+
+ def __setAngularVelocity(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setLinearVelocity(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setPosition(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
diff --git a/source/gameengine/PyDoc/KX_RaySensor.py b/source/gameengine/PyDoc/KX_RaySensor.py
index e487edcb655..b9de54e92a5 100644
--- a/source/gameengine/PyDoc/KX_RaySensor.py
+++ b/source/gameengine/PyDoc/KX_RaySensor.py
@@ -5,28 +5,53 @@ from SCA_ISensor import *
class KX_RaySensor(SCA_ISensor):
"""
A ray sensor detects the first object in a given direction.
+
+ @ivar property: The property the ray is looking for.
+ @type property: string
+ @ivar range: The distance of the ray.
+ @type range: float
+ @ivar useMaterial: Whether or not to look for a material (false = property)
+ @type useMaterial: boolean
+ @ivar useXRay: Whether or not to use XRay.
+ @type useXRay: boolean
+ @ivar hitObject: The game object that was hit by the ray. (Read-only)
+ @type hitObject: KX_GameObject
+ @ivar hitPosition: The position (in worldcoordinates) where the object was hit by the ray. (Read-only)
+ @type hitPosition: list [x, y, z]
+ @ivar hitNormal: The normal (in worldcoordinates) of the object at the location where the object was hit by the ray. (Read-only)
+ @type hitNormal: list [x, y, z]
+ @ivar rayDirection: The direction from the ray (in worldcoordinates). (Read-only)
+ @type rayDirection: list [x, y, z]
+ @ivar axis: The axis the ray is pointing on.
+ @type axis: int from 0 to 5
+ KX_RAY_AXIS_POS_X, KX_RAY_AXIS_POS_Y, KX_RAY_AXIS_POS_Z,
+ KX_RAY_AXIS_NEG_X, KX_RAY_AXIS_NEG_Y, KX_RAY_AXIS_NEG_Z
"""
def getHitObject():
"""
+ DEPRECATED: Use the hitObject property instead.
Returns the game object that was hit by this ray.
@rtype: KX_GameObject
"""
def getHitPosition():
"""
+ DEPRECATED: Use the hitPosition property instead.
Returns the position (in worldcoordinates) where the object was hit by this ray.
@rtype: list [x, y, z]
"""
def getHitNormal():
"""
+ DEPRECATED: Use the hitNormal property instead.
Returns the normal (in worldcoordinates) of the object at the location where the object was hit by this ray.
@rtype: list [nx, ny, nz]
"""
def getRayDirection():
"""
+ DEPRECATED: Use the rayDirection property instead.
Returns the direction from the ray (in worldcoordinates)
@rtype: list [dx, dy, dz]
diff --git a/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py b/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py
index 56068fa641a..572b864ff0a 100644
--- a/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py
+++ b/source/gameengine/PyDoc/KX_SCA_AddObjectActuator.py
@@ -9,6 +9,12 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
@type object: KX_GameObject or None
@ivar objectLastCreated: the last added object from this actuator (read only).
@type objectLastCreated: KX_GameObject or None
+ @ivar time: the lifetime of added objects, in frames.
+ @type time: integer
+ @ivar linearVelocity: the initial linear velocity of added objects.
+ @type linearVelocity: list [vx, vy, vz]
+ @ivar angularVelocity: the initial angular velocity of added objects.
+ @type angularVelocity: list [vx, vy, vz]
@warning: An Add Object actuator will be ignored if at game start, the linked object doesn't exist
(or is empty) or the linked object is in an active layer.
@@ -19,6 +25,7 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
"""
def setObject(object):
"""
+ DEPRECATED: use the object property
Sets the game object to add.
A copy of the object will be added to the scene when the actuator is activated.
@@ -31,6 +38,7 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
"""
def getObject(name_only = 0):
"""
+ DEPRECATED: use the object property
Returns the name of the game object to be added.
Returns None if no game object has been assigned to be added.
@@ -40,6 +48,7 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
"""
def setTime(time):
"""
+ DEPRECATED: use the time property
Sets the lifetime of added objects, in frames.
If time == 0, the object will last forever.
@@ -49,12 +58,14 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
"""
def getTime():
"""
+ DEPRECATED: use the time property
Returns the lifetime of the added object, in frames.
@rtype: integer
"""
def setLinearVelocity(vx, vy, vz):
"""
+ DEPRECATED: use the linearVelocity property
Sets the initial linear velocity of added objects.
@type vx: float
@@ -66,12 +77,14 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
"""
def getLinearVelocity():
"""
+ DEPRECATED: use the linearVelocity property
Returns the initial linear velocity of added objects.
@rtype: list [vx, vy, vz]
"""
def setAngularVelocity(vx, vy, vz):
"""
+ DEPRECATED: use the angularVelocity property
Sets the initial angular velocity of added objects.
@type vx: float
@@ -83,14 +96,23 @@ class KX_SCA_AddObjectActuator(SCA_IActuator):
"""
def getAngularVelocity():
"""
+ DEPRECATED: use the angularVelocity property
Returns the initial angular velocity of added objects.
@rtype: list [vx, vy, vz]
"""
def getLastCreatedObject():
"""
+ DEPRECATED: use the objectLastCreated property
Returns the last object created by this actuator.
@rtype: L{KX_GameObject}
@return: A L{KX_GameObject} or None if no object has been created.
"""
+ def instantAddObject():
+ """
+ Returns the last object created by this actuator. The object can then be accessed from L{objectLastCreated}.
+
+ @rtype: None
+ """
+
diff --git a/source/gameengine/PyDoc/KX_SCA_DynamicActuator.py b/source/gameengine/PyDoc/KX_SCA_DynamicActuator.py
new file mode 100644
index 00000000000..22da159ce71
--- /dev/null
+++ b/source/gameengine/PyDoc/KX_SCA_DynamicActuator.py
@@ -0,0 +1,30 @@
+# $Id$
+# Documentation for KX_SCA_DynamicActuator
+from SCA_IActuator import *
+
+class KX_SCA_DynamicActuator(SCA_IActuator):
+ """
+ Dynamic Actuator.
+ @ivar operation: the type of operation of the actuator, 0-4
+ KX_DYN_RESTORE_DYNAMICS, KX_DYN_DISABLE_DYNAMICS,
+ KX_DYN_ENABLE_RIGID_BODY, KX_DYN_DISABLE_RIGID_BODY, KX_DYN_SET_MASS
+ @type operation: integer
+ @ivar mass: the mass value for the KX_DYN_SET_MASS operation
+ @type mass: float
+ """
+ def setOperation(operation):
+ """
+ DEPRECATED: Use the operation property instead.
+ Set the type of operation when the actuator is activated:
+ - 0 = restore dynamics
+ - 1 = disable dynamics
+ - 2 = enable rigid body
+ - 3 = disable rigid body
+ - 4 = set mass
+ """
+ def getOperation():
+ """
+ DEPRECATED: Use the operation property instead.
+ return the type of operation
+ """
+
diff --git a/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py b/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py
index 498f6072e23..951c118a99a 100644
--- a/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py
+++ b/source/gameengine/PyDoc/KX_SCA_ReplaceMeshActuator.py
@@ -18,13 +18,13 @@ class KX_SCA_ReplaceMeshActuator(SCA_IActuator):
# Mesh (name, near, far)
# Meshes overlap so that they don't 'pop' when on the edge of the distance.
meshes = ((".Hi", 0.0, -20.0),
- (".Med", -15.0, -50.0),
- (".Lo", -40.0, -100.0)
- )
+ (".Med", -15.0, -50.0),
+ (".Lo", -40.0, -100.0)
+ )
co = GameLogic.getCurrentController()
obj = co.getOwner()
- act = co.getActuator("LOD." + obj.getName())
+ act = co.getActuator("LOD." + obj.name)
cam = GameLogic.getCurrentScene().active_camera
def Depth(pos, plane):
@@ -39,10 +39,10 @@ class KX_SCA_ReplaceMeshActuator(SCA_IActuator):
for mesh in meshes:
if depth < mesh[1] and depth > mesh[2]:
newmesh = mesh
- if "ME" + obj.getName() + mesh[0] == act.getMesh():
+ if "ME" + obj.name + mesh[0] == act.getMesh():
curmesh = mesh
- if newmesh != None and "ME" + obj.getName() + newmesh[0] != act.getMesh():
+ if newmesh != None and "ME" + obj.name + newmesh[0] != act.getMesh():
# The mesh is a different mesh - switch it.
# Check the current mesh is not a better fit.
if curmesh == None or curmesh[1] < depth or curmesh[2] > depth:
@@ -55,9 +55,14 @@ class KX_SCA_ReplaceMeshActuator(SCA_IActuator):
This will generate a warning in the console:
C{ERROR: GameObject I{OBName} ReplaceMeshActuator I{ActuatorName} without object}
+
+ @ivar mesh: L{KX_MeshProxy} or the name of the mesh that will replace the current one
+ Set to None to disable actuator
+ @type mesh: L{KX_MeshProxy} or None if no mesh is set
"""
def setMesh(name):
"""
+ DEPRECATED: Use the mesh property instead.
Sets the name of the mesh that will replace the current one.
When the name is None it will unset the mesh value so no action is taken.
@@ -65,10 +70,15 @@ class KX_SCA_ReplaceMeshActuator(SCA_IActuator):
"""
def getMesh():
"""
+ DEPRECATED: Use the mesh property instead.
Returns the name of the mesh that will replace the current one.
Returns None if no mesh has been scheduled to be added.
@rtype: string or None
"""
-
+ def instantReplaceMesh():
+ """
+ Immediately replace mesh without delay.
+ @rtype: None
+ """ \ No newline at end of file
diff --git a/source/gameengine/PyDoc/KX_Scene.py b/source/gameengine/PyDoc/KX_Scene.py
index 5e357e6eefc..5dcd560ee96 100644
--- a/source/gameengine/PyDoc/KX_Scene.py
+++ b/source/gameengine/PyDoc/KX_Scene.py
@@ -16,14 +16,14 @@ class KX_Scene:
scene = GameLogic.getCurrentScene()
# print all the objects in the scene
- for obj in scene.getObjectList():
- print obj.getName()
+ for obj in scene.objects:
+ print obj.name
# get an object named 'Cube'
- obj = scene.getObjectList()["OBCube"]
+ obj = scene.objects["OBCube"]
# get the first object in the scene.
- obj = scene.getObjectList()[0]
+ obj = scene.objects[0]
Example::
# Get the depth of an object in the camera view.
@@ -39,8 +39,8 @@ class KX_Scene:
@ivar name: The scene's name
@type name: string
- @type objects: A list of objects in the scene.
- @type objects: list [L{KX_GameObject}]
+ @ivar objects: A list of objects in the scene.
+ @type objects: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
@ivar active_camera: The current active camera
@type active_camera: L{KX_Camera}
@ivar suspended: True if the scene is suspended.
@@ -55,7 +55,7 @@ class KX_Scene:
"""
Returns the list of lights in the scene.
- @rtype: list [L{KX_Light}]
+ @rtype: list [L{KX_LightObject}]
"""
def getObjectList():
"""
@@ -70,7 +70,7 @@ class KX_Scene:
@rtype: string
"""
- def addObject(object, other, time=0)
+ def addObject(object, other, time=0):
"""
Adds an object to the scene like the Add Object Actuator would, and returns the created object.
diff --git a/source/gameengine/PyDoc/KX_SceneActuator.py b/source/gameengine/PyDoc/KX_SceneActuator.py
index cfb40ae072f..6e27257533e 100644
--- a/source/gameengine/PyDoc/KX_SceneActuator.py
+++ b/source/gameengine/PyDoc/KX_SceneActuator.py
@@ -8,25 +8,34 @@ class KX_SceneActuator(SCA_IActuator):
@warning: Scene actuators that use a scene name will be ignored if at game start, the
named scene doesn't exist or is empty
-
+
This will generate a warning in the console:
C{ERROR: GameObject I{OBName} has a SceneActuator I{ActuatorName} (SetScene) without scene}
+
+ @ivar scene: the name of the scene to change to/overlay/underlay/remove/suspend/resume
+ @type scene: string.
+ @ivar camera: the camera to change to.
+ When setting the attribute, you can use either a L{KX_Camera} or the name of the camera.
+ @type camera: L{KX_Camera} on read, string or L{KX_Camera} on write
"""
def setUseRestart(flag):
"""
+ DEPRECATED
Set flag to True to restart the scene.
@type flag: boolean
"""
def setScene(scene):
"""
+ DEPRECATED: use the scene property instead
Sets the name of the scene to change to/overlay/underlay/remove/suspend/resume.
@type scene: string
"""
def setCamera(camera):
"""
+ DEPRECATED: use the camera property instead
Sets the camera to change to.
Camera can be either a L{KX_Camera} or the name of the camera.
@@ -35,12 +44,14 @@ class KX_SceneActuator(SCA_IActuator):
"""
def getUseRestart():
"""
+ DEPRECATED
Returns True if the scene will be restarted.
@rtype: boolean
"""
def getScene():
"""
+ DEPRECATED: use the scene property instead
Returns the name of the scene to change to/overlay/underlay/remove/suspend/resume.
Returns an empty string ("") if no scene has been set.
@@ -49,6 +60,7 @@ class KX_SceneActuator(SCA_IActuator):
"""
def getCamera():
"""
+ DEPRECATED: use the camera property instead
Returns the name of the camera to change to.
@rtype: string
diff --git a/source/gameengine/PyDoc/KX_SoundActuator.py b/source/gameengine/PyDoc/KX_SoundActuator.py
index 072af5b816c..37ae3c6640d 100644
--- a/source/gameengine/PyDoc/KX_SoundActuator.py
+++ b/source/gameengine/PyDoc/KX_SoundActuator.py
@@ -7,18 +7,55 @@ class KX_SoundActuator(SCA_IActuator):
Sound Actuator.
The L{startSound()}, L{pauseSound()} and L{stopSound()} do not require
- the actuator to be activated - they act instantly.
+ the actuator to be activated - they act instantly provided that the actuator has
+ been activated once at least.
+
+ @ivar filename: Sets the filename of the sound this actuator plays.
+ @type filename: string
+
+ @ivar volume: Sets the volume (gain) of the sound.
+ @type volume: float
+
+ @ivar pitch: Sets the pitch of the sound.
+ @type pitch: float
+
+ @ivar rollOffFactor: Sets the roll off factor. Rolloff defines the rate of attenuation as the sound gets further away.
+ @type rollOffFactor: float
+
+ @ivar looping: Sets the loop mode of the actuator.
+ @type looping: integer
+
+ @ivar position: Sets the position of the sound.
+ @type position: float array
+
+ @ivar velocity: Sets the speed of the sound; The speed of the sound alter the pitch.
+ @type velocity: float array
+
+ @ivar orientation: Sets the orientation of the sound. When setting the orientation you can
+ also use quaternion [float,float,float,float] or euler angles [float,float,float]
+ @type orientation: 3x3 matrix [[float]]
+
+ @ivar type: Sets the operation mode of the actuator. You can use one of the following constant:
+ KX_SOUNDACT_PLAYSTOP (1)
+ KX_SOUNDACT_PLAYEND (2)
+ KX_SOUNDACT_LOOPSTOP (3)
+ KX_SOUNDACT_LOOPEND (4)
+ KX_SOUNDACT_LOOPBIDIRECTIONAL (5)
+ KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP (6)
+ @type type: integer
- @group Play Methods: startSound, pauseSound, stopSound
+ @group Play Methods: startSound, pauseSound, stopSound.
"""
def setFilename(filename):
"""
- Sets the filename of the sound this actuator plays.
+ DEPRECATED: Use the filename property instead.
+ Sets the filename of the sound this actuator plays.
@type filename: string
"""
def getFilename():
"""
+ DEPRECATED: Use the filename property instead.
Returns the filename of the sound this actuator plays.
@rtype: string
@@ -37,6 +74,7 @@ class KX_SoundActuator(SCA_IActuator):
"""
def setGain(gain):
"""
+ DEPRECATED: Use the volume property instead
Sets the gain (volume) of the sound
@type gain: float
@@ -44,24 +82,28 @@ class KX_SoundActuator(SCA_IActuator):
"""
def getGain():
"""
+ DEPRECATED: Use the volume property instead.
Gets the gain (volume) of the sound.
@rtype: float
"""
def setPitch(pitch):
"""
+ DEPRECATED: Use the pitch property instead.
Sets the pitch of the sound.
@type pitch: float
"""
def getPitch():
"""
+ DEPRECATED: Use the pitch property instead.
Returns the pitch of the sound.
@rtype: float
"""
def setRollOffFactor(rolloff):
"""
+ DEPRECATED: Use the rollOffFactor property instead.
Sets the rolloff factor for the sounds.
Rolloff defines the rate of attenuation as the sound gets further away.
@@ -71,12 +113,14 @@ class KX_SoundActuator(SCA_IActuator):
"""
def getRollOffFactor():
"""
+ DEPRECATED: Use the rollOffFactor property instead.
Returns the rolloff factor for the sound.
@rtype: float
"""
def setLooping(loop):
"""
+ DEPRECATED: Use the looping property instead.
Sets the loop mode of the actuator.
@bug: There are no constants defined for this method!
@@ -90,12 +134,14 @@ class KX_SoundActuator(SCA_IActuator):
"""
def getLooping():
"""
+ DEPRECATED: Use the looping property instead.
Returns the current loop mode of the actuator.
@rtype: integer
"""
def setPosition(x, y, z):
"""
+ DEPRECATED: Use the position property instead.
Sets the position this sound will come from.
@type x: float
@@ -107,6 +153,7 @@ class KX_SoundActuator(SCA_IActuator):
"""
def setVelocity(vx, vy, vz):
"""
+ DEPRECATED: Use the velocity property instead.
Sets the velocity this sound is moving at.
The sound's pitch is determined from the velocity.
@@ -120,6 +167,7 @@ class KX_SoundActuator(SCA_IActuator):
"""
def setOrientation(o11, o12, o13, o21, o22, o23, o31, o32, o33):
"""
+ DEPRECATED: Use the orientation property instead.
Sets the orientation of the sound.
The nine parameters specify a rotation matrix::
@@ -130,6 +178,7 @@ class KX_SoundActuator(SCA_IActuator):
def setType(mode):
"""
+ DEPRECATED: Use the type property instead.
Sets the operation mode of the actuator.
@param mode: KX_SOUNDACT_PLAYSTOP, KX_SOUNDACT_PLAYEND, KX_SOUNDACT_LOOPSTOP, KX_SOUNDACT_LOOPEND, KX_SOUNDACT_LOOPBIDIRECTIONAL, KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP
@@ -138,6 +187,7 @@ class KX_SoundActuator(SCA_IActuator):
def getType():
"""
+ DEPRECATED: Use the type property instead.
Returns the operation mode of the actuator.
@rtype: integer
diff --git a/source/gameengine/PyDoc/KX_StateActuator.py b/source/gameengine/PyDoc/KX_StateActuator.py
index fb6ae5a3621..fe3669d3809 100644
--- a/source/gameengine/PyDoc/KX_StateActuator.py
+++ b/source/gameengine/PyDoc/KX_StateActuator.py
@@ -5,9 +5,26 @@ from SCA_IActuator import *
class KX_StateActuator(SCA_IActuator):
"""
State actuator changes the state mask of parent object.
+
+ Property:
+
+ @ivar operation: type of bit operation to be applied on object state mask.
+ You can use one of the following constant:
+ KX_STATE_OP_CPY (0) : Copy state mask
+ KX_STATE_OP_SET (1) : Add bits to state mask
+ KX_STATE_OP_CLR (2) : Substract bits to state mask
+ KX_STATE_OP_NEG (3) : Invert bits to state mask
+ @type operation: integer
+
+ @ivar mask: value that defines the bits that will be modified by the operation.
+ The bits that are 1 in the mask will be updated in the object state,
+ the bits that are 0 are will be left unmodified expect for the Copy operation
+ which copies the mask to the object state
+ @type mask: integer
"""
def setOperation(op):
"""
+ DEPRECATED: Use the operation property instead.
Set the type of bit operation to be applied on object state mask.
Use setMask() to specify the bits that will be modified.
@@ -16,6 +33,7 @@ class KX_StateActuator(SCA_IActuator):
"""
def setMask(mask):
"""
+ DEPRECATED: Use the mask property instead.
Set the value that defines the bits that will be modified by the operation.
The bits that are 1 in the value will be updated in the object state,
the bits that are 0 are will be left unmodified expect for the Copy operation
diff --git a/source/gameengine/PyDoc/KX_TouchSensor.py b/source/gameengine/PyDoc/KX_TouchSensor.py
index d7277be4c2a..f4fcbeefc62 100644
--- a/source/gameengine/PyDoc/KX_TouchSensor.py
+++ b/source/gameengine/PyDoc/KX_TouchSensor.py
@@ -17,7 +17,7 @@ class KX_TouchSensor(SCA_ISensor):
@ivar objectHit: The last collided object. (Read Only)
@type objectHit: L{KX_GameObject} or None
@ivar objectHitList: A list of colliding objects. (Read Only)
- @type objectHitList: list
+ @type objectHitList: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
"""
#--The following methods are deprecated, please use properties instead.
@@ -53,7 +53,7 @@ class KX_TouchSensor(SCA_ISensor):
Only objects that have the requisite material/property are listed.
- @rtype: list [L{KX_GameObject}]
+ @rtype: L{CListValue<CListValue.CListValue>} of L{KX_GameObject<KX_GameObject.KX_GameObject>}
"""
def getTouchMaterial():
"""
diff --git a/source/gameengine/PyDoc/KX_TrackToActuator.py b/source/gameengine/PyDoc/KX_TrackToActuator.py
index 730ab21166b..ee2dc5d6144 100644
--- a/source/gameengine/PyDoc/KX_TrackToActuator.py
+++ b/source/gameengine/PyDoc/KX_TrackToActuator.py
@@ -15,9 +15,15 @@ class KX_TrackToActuator(SCA_IActuator):
@ivar object: the object this actuator tracks.
@type object: KX_GameObject or None
+ @ivar time: the time in frames with which to delay the tracking motion
+ @type time: integer
+ @ivar use3D: the tracking motion to use 3D
+ @type use3D: boolean
+
"""
def setObject(object):
"""
+ DEPRECATED: Use the object property.
Sets the object to track.
@type object: L{KX_GameObject}, string or None
@@ -25,6 +31,7 @@ class KX_TrackToActuator(SCA_IActuator):
"""
def getObject(name_only):
"""
+ DEPRECATED: Use the object property.
Returns the name of the object to track.
@type name_only: bool
@@ -33,18 +40,21 @@ class KX_TrackToActuator(SCA_IActuator):
"""
def setTime(time):
"""
+ DEPRECATED: Use the time property.
Sets the time in frames with which to delay the tracking motion.
@type time: integer
"""
def getTime():
"""
+ DEPRECATED: Use the time property.
Returns the time in frames with which the tracking motion is delayed.
@rtype: integer
"""
def setUse3D(use3d):
"""
+ DEPRECATED: Use the use3D property.
Sets the tracking motion to use 3D.
@type use3d: boolean
@@ -53,6 +63,7 @@ class KX_TrackToActuator(SCA_IActuator):
"""
def getUse3D():
"""
+ DEPRECATED: Use the use3D property.
Returns True if the tracking motion will track in the z direction.
@rtype: boolean
diff --git a/source/gameengine/PyDoc/KX_VehicleWrapper.py b/source/gameengine/PyDoc/KX_VehicleWrapper.py
new file mode 100644
index 00000000000..087aa167475
--- /dev/null
+++ b/source/gameengine/PyDoc/KX_VehicleWrapper.py
@@ -0,0 +1,166 @@
+class KX_VehicleWrapper: # (PyObjectPlus)
+ """
+ KX_VehicleWrapper
+
+ All placeholders have a __ prefix
+ """
+
+ def addWheel(wheel, attachPos, attachDir, axleDir, suspensionRestLength, wheelRadius, hasSteering):
+
+ """
+ TODO - Description
+
+ @param wheel: The object to use as a wheel.
+ @type wheel: L{KX_GameObject<KX_GameObject.KX_GameObject>} or a KX_GameObject name
+ @param attachPos: The position that this wheel will attach to.
+ @type attachPos: vector of 3 floats
+ @param attachDir: The direction this wheel points.
+ @type attachDir: vector of 3 floats
+ @param axleDir: The direction of this wheels axle.
+ @type axleDir: vector of 3 floats
+ @param suspensionRestLength: TODO - Description
+ @type suspensionRestLength: float
+ @param wheelRadius: The size of the wheel.
+ @type wheelRadius: float
+ """
+
+ def __applyBraking(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __applyEngineForce(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getConstraintId(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getConstraintType(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getNumWheels(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getWheelOrientationQuaternion(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getWheelPosition(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __getWheelRotation(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setRollInfluence(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setSteeringValue(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setSuspensionCompression(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setSuspensionDamping(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setSuspensionStiffness(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
+ def __setTyreFriction(val):
+ """
+ TODO - Description
+
+ @param val: the starting frame of the animation
+ @type val: float
+
+ @rtype: integer
+ @return: TODO Description
+ """
diff --git a/source/gameengine/PyDoc/KX_VertexProxy.py b/source/gameengine/PyDoc/KX_VertexProxy.py
index 8dc2752c037..7ee5087b316 100644
--- a/source/gameengine/PyDoc/KX_VertexProxy.py
+++ b/source/gameengine/PyDoc/KX_VertexProxy.py
@@ -34,6 +34,11 @@ class KX_VertexProxy:
@ivar v: The v texture coordinate of the vertex.
@type v: float
+ @ivar u2: The second u texture coordinate of the vertex.
+ @type u2: float
+ @ivar v2: The second v texture coordinate of the vertex.
+ @type v2: float
+
@group Colour: r, g, b, a
@ivar r: The red component of the vertex colour. 0.0 <= r <= 1.0
@type r: float
@@ -72,6 +77,19 @@ class KX_VertexProxy:
@type uv: list [u, v]
"""
+ def getUV2():
+ """
+ Gets the 2nd UV (texture) coordinates of this vertex.
+
+ @rtype: list [u, v]
+ @return: this vertexes UV (texture) coordinates.
+ """
+ def setUV2(uv):
+ """
+ Sets the 2nd UV (texture) coordinates of this vertex.
+
+ @type uv: list [u, v]
+ """
def getRGBA():
"""
Gets the colour of this vertex.
@@ -120,3 +138,11 @@ class KX_VertexProxy:
@rtype: list [nx, ny, nz]
@return: normalised normal vector.
"""
+ def setNormal(normal):
+ """
+ Sets the normal vector of this vertex.
+
+ @type normal: sequence of floats [r, g, b]
+ @param normal: the new normal of this vertex.
+ """
+
diff --git a/source/gameengine/PyDoc/KX_VisibilityActuator.py b/source/gameengine/PyDoc/KX_VisibilityActuator.py
index 22499f25d81..36f25b2423c 100644
--- a/source/gameengine/PyDoc/KX_VisibilityActuator.py
+++ b/source/gameengine/PyDoc/KX_VisibilityActuator.py
@@ -5,13 +5,18 @@ from SCA_IActuator import *
class KX_VisibilityActuator(SCA_IActuator):
"""
Visibility Actuator.
+ @ivar visibility: whether the actuator makes its parent object visible or invisible
+ @type visibility: boolean
+ @ivar occlusion: whether the actuator makes its parent object an occluder or not
+ @type occlusion: boolean
+ @ivar recursion: whether the visibility/occlusion should be propagated to all children of the object
+ @type recursion: boolean
"""
def set(visible):
"""
+ DEPRECATED: Use the visibility property instead.
Sets whether the actuator makes its parent object visible or invisible.
-
+
@param visible: - True: Makes its parent visible.
- False: Makes its parent invisible.
"""
-
- \ No newline at end of file
diff --git a/source/gameengine/PyDoc/SCA_2DFilterActuator.py b/source/gameengine/PyDoc/SCA_2DFilterActuator.py
new file mode 100644
index 00000000000..9a010e8f221
--- /dev/null
+++ b/source/gameengine/PyDoc/SCA_2DFilterActuator.py
@@ -0,0 +1,44 @@
+# $Id$
+# Documentation for SCA_2DFilterActuator
+from SCA_IActuator import *
+from SCA_ILogicBrick import *
+
+class SCA_2DFilterActuator(SCA_IActuator):
+ """
+ Create, enable and disable 2D filters
+
+ Properties:
+
+ The following properties don't have an immediate effect.
+ You must active the actuator to get the result.
+ The actuator is not persistent: it automatically stops itself after setting up the filter
+ but the filter remains active. To stop a filter you must activate the actuator with 'type'
+ set to RAS_2DFILTER_DISABLED or RAS_2DFILTER_NOFILTER.
+
+ @ivar shaderText: shader source code for custom shader
+ @type shaderText: string
+ @ivar disableMotionBlur: action on motion blur: 0=enable, 1=disable
+ @type disableMotionBlur: integer
+ @ivar type: type of 2D filter, use one of the following constants:
+ RAS_2DFILTER_ENABLED (-2) : enable the filter that was previously disabled
+ RAS_2DFILTER_DISABLED (-1) : disable the filter that is currently active
+ RAS_2DFILTER_NOFILTER (0) : disable and destroy the filter that is currently active
+ RAS_2DFILTER_MOTIONBLUR (1) : create and enable preset filters
+ RAS_2DFILTER_BLUR (2)
+ RAS_2DFILTER_SHARPEN (3)
+ RAS_2DFILTER_DILATION (4)
+ RAS_2DFILTER_EROSION (5)
+ RAS_2DFILTER_LAPLACIAN (6)
+ RAS_2DFILTER_SOBEL (7)
+ RAS_2DFILTER_PREWITT (8)
+ RAS_2DFILTER_GRAYSCALE (9)
+ RAS_2DFILTER_SEPIA (10)
+ RAS_2DFILTER_INVERT (11)
+ RAS_2DFILTER_CUSTOMFILTER (12) : customer filter, the code code is set via shaderText property
+ @type type: integer
+ @ivar passNb: order number of filter in the stack of 2D filters. Filters are executed in increasing order of passNb.
+ Only be one filter can be defined per passNb.
+ @type passNb: integer (0-100)
+ @ivar value: argument for motion blur filter
+ @type value: float (0.0-100.0)
+ """
diff --git a/source/gameengine/PyDoc/KX_ActuatorSensor.py b/source/gameengine/PyDoc/SCA_ActuatorSensor.py
index b0e138a8009..515354e8716 100644
--- a/source/gameengine/PyDoc/KX_ActuatorSensor.py
+++ b/source/gameengine/PyDoc/SCA_ActuatorSensor.py
@@ -1,9 +1,10 @@
# $Id$
-# Documentation for KX_ActuatorSensor
+# Documentation for SCA_ActuatorSensor
from SCA_IActuator import *
from SCA_ISensor import *
+from SCA_ILogicBrick import *
-class KX_ActuatorSensor(SCA_ISensor):
+class SCA_ActuatorSensor(SCA_ISensor):
"""
Actuator sensor detect change in actuator state of the parent object.
It generates a positive pulse if the corresponding actuator is activated
diff --git a/source/gameengine/PyDoc/SCA_ILogicBrick.py b/source/gameengine/PyDoc/SCA_ILogicBrick.py
index 18cb900f28d..4688ba12bb6 100644
--- a/source/gameengine/PyDoc/SCA_ILogicBrick.py
+++ b/source/gameengine/PyDoc/SCA_ILogicBrick.py
@@ -8,13 +8,17 @@ class SCA_ILogicBrick:
@ivar executePriority: This determines the order controllers are evaluated, and actuators are activated (lower priority is executed first).
@type executePriority: int
+ @ivar owner: The game object this logic brick is attached to (read only).
+ @type owner: L{KX_GameObject<KX_GameObject.KX_GameObject>} or None in exceptional cases.
"""
def getOwner():
"""
Gets the game object associated with this logic brick.
- @rtype: L{KX_GameObject}
+ Deprecated: Use the "owner" property instead.
+
+ @rtype: L{KX_GameObject<KX_GameObject.KX_GameObject>}
"""
#--The following methods are deprecated--
diff --git a/source/gameengine/PyDoc/SCA_JoystickSensor.py b/source/gameengine/PyDoc/SCA_JoystickSensor.py
index 111ee7f4cfa..13b006e8dd6 100644
--- a/source/gameengine/PyDoc/SCA_JoystickSensor.py
+++ b/source/gameengine/PyDoc/SCA_JoystickSensor.py
@@ -1,4 +1,4 @@
-# $Id: SCA_RandomSensor.py 15444 2008-07-05 17:05:05Z lukep $
+# $Id$
# Documentation for SCA_RandomSensor
from SCA_ISensor import *
@@ -8,10 +8,16 @@ class SCA_JoystickSensor(SCA_ISensor):
Properties:
- @ivar axisPosition: (read-only) The state of the joysticks axis as a list of 4 values, each spesifying the value of an axis between -32767 and 32767 depending on how far the axis is pushed, 0 for nothing.
- The first 2 values are used by most joysticks and gamepads for directional control. 3rd and 4th values are only on some joysticks and can be used for arbitary controls.
- left:[-32767, 0, ...], right:[32767, 0, ...], up:[0, -32767, ...], down:[0, 32767, ...]
- @type axisPosition: [integer, integer, integer, integer]
+ @ivar axisValues: (read-only) The state of the joysticks axis as a list of values L{numAxis} long.
+ each spesifying the value of an axis between -32767 and 32767 depending on how far the axis is pushed, 0 for nothing.
+ The first 2 values are used by most joysticks and gamepads for directional control. 3rd and 4th values are only on some joysticks and can be used for arbitary controls.
+ left:[-32767, 0, ...], right:[32767, 0, ...], up:[0, -32767, ...], down:[0, 32767, ...]
+ @type axisValues: list of ints
+
+ @ivar axisSingle: (read-only) like L{axisValues} but returns a single axis value that is set by the sensor.
+ Only use this for "Single Axis" type sensors otherwise it will raise an error.
+ @type axisSingle: int
+
@ivar numAxis: (read-only) The number of axes for the joystick at this index.
@type numAxis: integer
@ivar numButtons: (read-only) The number of buttons for the joystick at this index.
@@ -41,13 +47,13 @@ class SCA_JoystickSensor(SCA_ISensor):
Returns a list containing the indicies of the currently pressed buttons.
@rtype: list
"""
- def getButtonStatus(buttonIndex):
- """
- Returns a bool of the current pressed state of the specified button.
- @param buttonIndex: the button index, 0=first button
- @type buttonIndex: integer
- @rtype: bool
- """
+ def getButtonStatus(buttonIndex):
+ """
+ Returns a bool of the current pressed state of the specified button.
+ @param buttonIndex: the button index, 0=first button
+ @type buttonIndex: integer
+ @rtype: bool
+ """
def getIndex():
"""
DEPRECATED: use the 'index' property.
diff --git a/source/gameengine/PyDoc/SCA_KeyboardSensor.py b/source/gameengine/PyDoc/SCA_KeyboardSensor.py
index f6a7a7d8a97..8abb1fda762 100644
--- a/source/gameengine/PyDoc/SCA_KeyboardSensor.py
+++ b/source/gameengine/PyDoc/SCA_KeyboardSensor.py
@@ -20,31 +20,34 @@ class SCA_KeyboardSensor(SCA_ISensor):
@type targetProperty: string
@ivar useAllKeys: Flag to determine whether or not to accept all keys.
@type useAllKeys: boolean
+ @ivar events: a list of pressed keys that have either been pressed, or just released, or are active this frame. (read only).
+
+ - 'keycode' matches the values in L{GameKeys}.
+ - 'status' uses...
+ - L{GameLogic.KX_INPUT_NONE}
+ - L{GameLogic.KX_INPUT_JUST_ACTIVATED}
+ - L{GameLogic.KX_INPUT_ACTIVE}
+ - L{GameLogic.KX_INPUT_JUST_RELEASED}
+
+ @type events: list [[keycode, status], ...]
"""
- def getEventList():
- """
- Get a list of pressed keys that have either been pressed, or just released, or are active this frame.
-
- @rtype: list of key status. [[keycode, status]]
- @return: A list of keyboard events
- """
def getKeyStatus(keycode):
"""
Get the status of a key.
- @rtype: key state (KX_NO_INPUTSTATUS, KX_JUSTACTIVATED, KX_ACTIVE or KX_JUSTRELEASED)
+ @rtype: key state L{GameLogic} members (KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED)
@return: The state of the given key
@type keycode: integer
@param keycode: The code that represents the key you want to get the state of
"""
- #--The following methods are deprecated--
+ #--The following methods are DEPRECATED--
def getKey():
"""
Returns the key code this sensor is looking for.
- Deprecated: Use the "key" property instead.
+ B{DEPRECATED: Use the "key" property instead}.
@rtype: keycode from L{GameKeys} module
"""
@@ -53,7 +56,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Set the key this sensor should listen for.
- Deprecated: Use the "key" property instead.
+ B{DEPRECATED: Use the "key" property instead}.
@type keycode: keycode from L{GameKeys} module
"""
@@ -62,7 +65,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Returns the key code for the first modifier this sensor is looking for.
- Deprecated: Use the "hold1" property instead.
+ B{DEPRECATED: Use the "hold1" property instead}.
@rtype: keycode from L{GameKeys} module
"""
@@ -71,7 +74,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Sets the key code for the first modifier this sensor should look for.
- Deprecated: Use the "hold1" property instead.
+ B{DEPRECATED: Use the "hold1" property instead}.
@type keycode: keycode from L{GameKeys} module
"""
@@ -80,7 +83,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Returns the key code for the second modifier this sensor is looking for.
- Deprecated: Use the "hold2" property instead.
+ B{DEPRECATED: Use the "hold2" property instead}.
@rtype: keycode from L{GameKeys} module
"""
@@ -89,7 +92,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Sets the key code for the second modifier this sensor should look for.
- Deprecated: Use the "hold2" property instead.
+ B{DEPRECATED: Use the "hold2" property instead.}
@type keycode: keycode from L{GameKeys} module
"""
@@ -98,7 +101,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Get a list of keys that have either been pressed, or just released this frame.
- Deprecated: Use getEventList() instead.
+ B{DEPRECATED: Use "events" instead.}
@rtype: list of key status. [[keycode, status]]
"""
@@ -107,7 +110,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Get a list of currently pressed keys that have either been pressed, or just released
- Deprecated: Use getEventList() instead.
+ B{DEPRECATED: Use "events" instead.}
@rtype: list of key status. [[keycode, status]]
""" \ No newline at end of file
diff --git a/source/gameengine/PyDoc/SCA_MouseSensor.py b/source/gameengine/PyDoc/SCA_MouseSensor.py
index 9550cbb4105..278ebe63b8a 100644
--- a/source/gameengine/PyDoc/SCA_MouseSensor.py
+++ b/source/gameengine/PyDoc/SCA_MouseSensor.py
@@ -32,3 +32,13 @@ class SCA_MouseSensor(SCA_ISensor):
@rtype: integer
@return: the current y coordinate of the mouse, in frame coordinates (pixels).
"""
+ def getButtonStatus(button):
+ """
+ Get the mouse button status.
+
+ @type button: int
+ @param button: value in GameLogic members KX_MOUSE_BUT_LEFT, KX_MOUSE_BUT_MIDDLE, KX_MOUSE_BUT_RIGHT
+
+ @rtype: integer
+ @return: value in GameLogic members KX_INPUT_NONE, KX_INPUT_NONE, KX_INPUT_JUST_ACTIVATED, KX_INPUT_ACTIVE, KX_INPUT_JUST_RELEASED
+ """
diff --git a/source/gameengine/PyDoc/SCA_NANDController.py b/source/gameengine/PyDoc/SCA_NANDController.py
new file mode 100644
index 00000000000..a864ff2981c
--- /dev/null
+++ b/source/gameengine/PyDoc/SCA_NANDController.py
@@ -0,0 +1,11 @@
+# $Id$
+# Documentation for SCA_NANDController
+from SCA_IController import *
+
+class SCA_NANDController(SCA_IController):
+ """
+ An NAND controller activates when all linked sensors are not active.
+
+ There are no special python methods for this controller.
+ """
+
diff --git a/source/gameengine/PyDoc/SCA_NORController.py b/source/gameengine/PyDoc/SCA_NORController.py
new file mode 100644
index 00000000000..0bc0a71d7b1
--- /dev/null
+++ b/source/gameengine/PyDoc/SCA_NORController.py
@@ -0,0 +1,11 @@
+# $Id$
+# Documentation for SCA_NORController
+from SCA_IController import *
+
+class SCA_NORController(SCA_IController):
+ """
+ An NOR controller activates only when all linked sensors are de-activated.
+
+ There are no special python methods for this controller.
+ """
+
diff --git a/source/gameengine/PyDoc/SCA_RandomSensor.py b/source/gameengine/PyDoc/SCA_RandomSensor.py
index 940b8f879ff..6dc0a3c23c0 100644
--- a/source/gameengine/PyDoc/SCA_RandomSensor.py
+++ b/source/gameengine/PyDoc/SCA_RandomSensor.py
@@ -5,6 +5,11 @@ from SCA_ISensor import *
class SCA_RandomSensor(SCA_ISensor):
"""
This sensor activates randomly.
+
+ @ivar lastDraw: The seed of the random number generator.
+ @type lastDraw: int
+ @ivar seed: The seed of the random number generator.
+ @type seed: int
"""
def setSeed(seed):
@@ -25,4 +30,6 @@ class SCA_RandomSensor(SCA_ISensor):
def getLastDraw():
"""
Returns the last random number generated.
+
+ @rtype: integer
"""
diff --git a/source/gameengine/PyDoc/SCA_XNORController.py b/source/gameengine/PyDoc/SCA_XNORController.py
new file mode 100644
index 00000000000..5fb2561f35a
--- /dev/null
+++ b/source/gameengine/PyDoc/SCA_XNORController.py
@@ -0,0 +1,11 @@
+# $Id$
+# Documentation for SCA_XNORController
+from SCA_IController import *
+
+class SCA_XNORController(SCA_IController):
+ """
+ An XNOR controller activates when all linked sensors are the same (activated or inative).
+
+ There are no special python methods for this controller.
+ """
+
diff --git a/source/gameengine/PyDoc/SCA_XORController.py b/source/gameengine/PyDoc/SCA_XORController.py
new file mode 100644
index 00000000000..10e20fb0945
--- /dev/null
+++ b/source/gameengine/PyDoc/SCA_XORController.py
@@ -0,0 +1,11 @@
+# $Id$
+# Documentation for SCA_XORController
+from SCA_IController import *
+
+class SCA_XORController(SCA_IController):
+ """
+ An XOR controller activates when there is the input is mixed, but not when all are on or off.
+
+ There are no special python methods for this controller.
+ """
+
diff --git a/source/gameengine/PyDoc/SConscript b/source/gameengine/PyDoc/SConscript
index ac0b163d7bd..ed9712ba273 100644
--- a/source/gameengine/PyDoc/SConscript
+++ b/source/gameengine/PyDoc/SConscript
@@ -3,26 +3,27 @@ Import ('env')
from optparse import OptionParser
-try:
- import epydoc
-except ImportError:
- print "No epydoc install detected, Python API Docs will not be generated "
-if epydoc:
- from epydoc.docbuilder import build_doc_index
- from epydoc import cli
- names = env.Glob("source/gameengine/PyDoc/*.py")
- docindex = build_doc_index(names)
- optvalues = cli.OPTION_DEFAULTS
- optvalues["verbose"] = 1
- optvalues["target"] = env["BF_DOCDIR"]+"/BGE_API/"
- optvalues["url"] = "http://www.blender.org"
- optvalues["top"] = "Game Engine API"
- optvalues["name"] = "Blender"
- optvalues["noprivate"] = 1
- optvalues["noframes"] = 1
- optvalues["names"] = names
- optparser = OptionParser()
- optparser.set_defaults(**optvalues)
- (options, args) = optparser.parse_args([])
- cli.write_html(docindex, options)
+import epydoc
+from epydoc.docbuilder import build_doc_index
+from epydoc import cli
+names = env.Glob("source/gameengine/PyDoc/*.py")
+docindex = build_doc_index(names)
+optvalues = cli.OPTION_DEFAULTS
+optvalues["verbose"] = 1
+optvalues["quiet"] = 0
+optvalues["include_source_code"] = 0
+optvalues["inheritance"] = "included"
+optvalues["show_private"] = 0
+optvalues["target"] = env["BF_DOCDIR"]+"/BGE_API/"
+optvalues["url"] = "http://www.blender.org"
+optvalues["top"] = "Game Engine API"
+optvalues["name"] = "Blender"
+optvalues["noprivate"] = 1
+optvalues["noframes"] = 1
+optvalues["names"] = names
+optparser = OptionParser()
+optparser.set_defaults(**optvalues)
+(options, args) = optparser.parse_args([])
+print "Writing Game Engine epydocs to \"%s\"" % optvalues["target"]
+cli.write_html(docindex, options)
diff --git a/source/gameengine/PyDoc/WhatsNew.py b/source/gameengine/PyDoc/WhatsNew.py
index 64bef7ee1c8..4d86e6ef3c4 100644
--- a/source/gameengine/PyDoc/WhatsNew.py
+++ b/source/gameengine/PyDoc/WhatsNew.py
@@ -26,7 +26,7 @@ Blender 2.34
- Added getType() and setType() to L{BL_ActionActuator} and L{KX_SoundActuator} (sgefant)
- New Scene module: L{KX_Scene}
- New Camera module: L{KX_Camera}
- - New Light module: L{KX_Light}
+ - New Light module: L{KX_LightObject}
- Added attributes to L{KX_GameObject}, L{KX_VertexProxy}
- L{KX_SCA_AddObjectActuator}.setObject(), L{KX_TrackToActuator}.setObject() and
L{KX_SceneActuator}.setCamera() now accept L{KX_GameObject}s as parameters
diff --git a/source/gameengine/PyDoc/bge_api_validate_py.txt b/source/gameengine/PyDoc/bge_api_validate_py.txt
new file mode 100644
index 00000000000..0920e5d3c7d
--- /dev/null
+++ b/source/gameengine/PyDoc/bge_api_validate_py.txt
@@ -0,0 +1,110 @@
+#~ This program is free software; you can redistribute it and/or modify
+#~ it under the terms of the GNU General Public License as published by
+#~ the Free Software Foundation; version 2 of the License.
+
+#~ This program is distributed in the hope that it will be useful,
+#~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+#~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#~ GNU General Public License for more details.
+
+# This script must run from a logic brick so it has access to the game engine api
+# it assumes the root blender source directory is the current working directory
+#
+# Currently it only prints missing modules and methods (not attributes)
+
+
+BGE_API_DOC_PATH = 'source/gameengine/PyDoc'
+
+import GameTypes
+type_members = {}
+
+for type_name in dir(GameTypes):
+ if type_name.startswith('__'):
+ continue
+
+ type_object = getattr(GameTypes, type_name)
+
+ members = []
+ type_members[type_object.__name__] = members
+
+ for member in type_object.__dict__.keys():
+ if member.startswith('__'):
+ continue
+
+ # print type_object.__name__ + '.' + k
+ members.append(member)
+
+import sys, os
+
+doc_dir= os.path.join(os.getcwd(), BGE_API_DOC_PATH)
+
+if doc_dir not in sys.path:
+ sys.path.append(doc_dir)
+
+
+def check_attribute(type_mame, member):
+ filename = os.path.join(doc_dir, type_mame + '.py')
+ # print filename
+
+ file = open(filename, 'rU')
+
+ for l in file:
+ l = l.strip()
+
+ '''
+ @ivar foo: blah blah
+ to
+ foo
+
+ '''
+
+ if l.startswith('@ivar'):
+ var = l.split()[1].split(':')[0]
+
+ if var == member:
+ file.close()
+ return True
+
+ file.close()
+ return False
+
+
+
+
+
+
+print '\n\n\nChecking Docs'
+
+PRINT_OK = False
+
+for type_name in sorted(type_members.keys()):
+ members = type_members[type_name]
+
+ try:
+ mod = __import__(type_name)
+ if PRINT_OK:
+ print "type: %s" % type_name
+ except:
+ print "missing: %s - %s" % (type_name, str(sorted(members)))
+ continue
+
+ reload(mod) # incase were editing it
+
+ try:
+ type_class = getattr(mod, type_name)
+ except:
+ print "missing class: %s.%s - %s" % (type_name, type_name, str(sorted(members)))
+ continue
+
+ for member in sorted(members):
+ try:
+ getattr(type_class, member)
+ if PRINT_OK:
+ print "\tfound: %s.%s" % (type_name, member)
+ except:
+ if check_attribute(type_name, member):
+ if PRINT_OK:
+ print "\tfound attr: %s.%s" % (type_name, member)
+ else:
+ print "\tmissing: %s.%s" % (type_name, member)
+
diff --git a/source/gameengine/PyDoc/epy_docgen.sh b/source/gameengine/PyDoc/epy_docgen.sh
index b243101ddcb..ddf39dcc081 100644..100755
--- a/source/gameengine/PyDoc/epy_docgen.sh
+++ b/source/gameengine/PyDoc/epy_docgen.sh
@@ -8,4 +8,4 @@
LC_ALL=POSIX
epydoc --debug -v -o BPY_GE --url "http://www.blender.org" --top GameLogic \
- --name "Blender GameEngine" --no-private --no-frames *.py
+ --name "Blender GameEngine" --no-private --no-frames --no-sourcecode --inheritance=included *.py
diff --git a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
index 282c7306285..176da51b183 100644
--- a/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_2DFilterManager.cpp
@@ -435,11 +435,12 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas)
glViewport(0,0, texturewidth, textureheight);
glDisable(GL_DEPTH_TEST);
+ glPushMatrix(); //GL_MODELVIEW
+ glLoadIdentity(); // GL_MODELVIEW
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
+ glPushMatrix();
glLoadIdentity();
for(passindex =0; passindex<MAX_RENDER_PASS; passindex++)
@@ -466,6 +467,9 @@ void RAS_2DFilterManager::RenderFilters(RAS_ICanvas* canvas)
glEnable(GL_DEPTH_TEST);
glViewport(viewport[0],viewport[1],viewport[2],viewport[3]);
EndShaderProgram();
+ glPopMatrix();
+ glMatrixMode(GL_MODELVIEW);
+ glPopMatrix();
}
void RAS_2DFilterManager::EnableFilter(vector<STR_String>& propNames, void* gameObj, RAS_2DFILTER_MODE mode, int pass, STR_String& text)
diff --git a/source/gameengine/Rasterizer/RAS_BucketManager.cpp b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
index f7938bb62e6..ec290f89d9e 100644
--- a/source/gameengine/Rasterizer/RAS_BucketManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_BucketManager.cpp
@@ -148,6 +148,10 @@ void RAS_BucketManager::RenderAlphaBuckets(
while(sit->m_bucket->ActivateMaterial(cameratrans, rasty, rendertools))
sit->m_bucket->RenderMeshSlot(cameratrans, rasty, rendertools, *(sit->m_ms));
+
+ // make this mesh slot culled automatically for next frame
+ // it will be culled out by frustrum culling
+ sit->m_ms->SetCulled(true);
}
rasty->SetDepthMask(RAS_IRasterizer::KX_DEPTHMASK_ENABLED);
@@ -170,6 +174,10 @@ void RAS_BucketManager::RenderSolidBuckets(
while ((*bit)->ActivateMaterial(cameratrans, rasty, rendertools))
(*bit)->RenderMeshSlot(cameratrans, rasty, rendertools, *mit);
+
+ // make this mesh slot culled automatically for next frame
+ // it will be culled out by frustrum culling
+ mit->SetCulled(true);
}
}
diff --git a/source/gameengine/Rasterizer/RAS_FramingManager.h b/source/gameengine/Rasterizer/RAS_FramingManager.h
index 610bd13ff12..0a226ac30f9 100644
--- a/source/gameengine/Rasterizer/RAS_FramingManager.h
+++ b/source/gameengine/Rasterizer/RAS_FramingManager.h
@@ -163,6 +163,13 @@ struct RAS_FrameFrustum
float x2,y2;
};
+/* must match R_CULLING_... from DNA_scene_types.h */
+enum RAS_CullingMode
+{
+ RAS_CULLING_DBVT = 0,
+ RAS_CULLING_NORMAL,
+ RAS_CULLING_NONE
+};
/**
* @section RAS_FramingManager
diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h
index 83adcfd8321..cfeda06e670 100644
--- a/source/gameengine/Rasterizer/RAS_IRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h
@@ -113,6 +113,7 @@ public:
RAS_STEREO_ANAGLYPH,
RAS_STEREO_SIDEBYSIDE,
RAS_STEREO_VINTERLACE,
+ RAS_STEREO_DOME,
RAS_STEREO_MAXSTEREO
};
diff --git a/source/gameengine/Rasterizer/RAS_IRenderTools.h b/source/gameengine/Rasterizer/RAS_IRenderTools.h
index a289ffed492..52f6397cf6c 100644
--- a/source/gameengine/Rasterizer/RAS_IRenderTools.h
+++ b/source/gameengine/Rasterizer/RAS_IRenderTools.h
@@ -58,10 +58,6 @@ public:
RAS_TEXT_PADDED,
RAS_TEXT_MAX
};
- enum RAS_LIGHT_MODE {
- RAS_LIGHT_NONE = -1,
- RAS_LIGHT_OBJECT_LAYER = 0
- };
RAS_IRenderTools(
) :
@@ -135,7 +131,7 @@ public:
void
ProcessLighting(
RAS_IRasterizer *rasty,
- int layer,
+ bool uselights,
const MT_Transform& trans
)=0;
diff --git a/source/gameengine/Rasterizer/RAS_LightObject.h b/source/gameengine/Rasterizer/RAS_LightObject.h
index 4c54857dc39..6b63a891981 100644
--- a/source/gameengine/Rasterizer/RAS_LightObject.h
+++ b/source/gameengine/Rasterizer/RAS_LightObject.h
@@ -40,6 +40,7 @@ struct RAS_LightObject
};
bool m_modified;
int m_layer;
+ void *m_scene;
float m_energy;
float m_distance;
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
index d8631c1edf6..6beab28d61f 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
@@ -60,12 +60,14 @@ RAS_MeshSlot::RAS_MeshSlot()
RAS_MeshSlot::~RAS_MeshSlot()
{
- vector<RAS_DisplayArray*>::iterator it;
+ RAS_DisplayArrayList::iterator it;
+#ifdef USE_SPLIT
Split(true);
while(m_joinedSlots.size())
m_joinedSlots.front()->Split(true);
+#endif
for(it=m_displayArrays.begin(); it!=m_displayArrays.end(); it++) {
(*it)->m_users--;
@@ -81,7 +83,7 @@ RAS_MeshSlot::~RAS_MeshSlot()
RAS_MeshSlot::RAS_MeshSlot(const RAS_MeshSlot& slot)
{
- vector<RAS_DisplayArray*>::iterator it;
+ RAS_DisplayArrayList::iterator it;
m_clientObj = NULL;
m_pDeformer = NULL;
@@ -203,7 +205,7 @@ RAS_DisplayArray *RAS_MeshSlot::CurrentDisplayArray()
void RAS_MeshSlot::SetDisplayArray(int numverts)
{
- vector<RAS_DisplayArray*>::iterator it;
+ RAS_DisplayArrayList::iterator it;
RAS_DisplayArray *darray = NULL;
for(it=m_displayArrays.begin(); it!=m_displayArrays.end(); it++) {
@@ -295,7 +297,7 @@ bool RAS_MeshSlot::Equals(RAS_MeshSlot *target)
bool RAS_MeshSlot::Join(RAS_MeshSlot *target, MT_Scalar distance)
{
- vector<RAS_DisplayArray*>::iterator it;
+ RAS_DisplayArrayList::iterator it;
iterator mit;
size_t i;
@@ -330,6 +332,9 @@ bool RAS_MeshSlot::Join(RAS_MeshSlot *target, MT_Scalar distance)
for(begin(mit); !end(mit); next(mit))
for(i=mit.startvertex; i<mit.endvertex; i++)
mit.vertex[i].Transform(transform, ntransform);
+
+ /* We know we'll need a list at least this big, reserve in advance */
+ target->m_displayArrays.reserve(target->m_displayArrays.size() + m_displayArrays.size());
for(it=m_displayArrays.begin(); it!=m_displayArrays.end(); it++) {
target->m_displayArrays.push_back(*it);
@@ -357,7 +362,7 @@ bool RAS_MeshSlot::Split(bool force)
{
list<RAS_MeshSlot*>::iterator jit;
RAS_MeshSlot *target = m_joinSlot;
- vector<RAS_DisplayArray*>::iterator it, jt;
+ RAS_DisplayArrayList::iterator it, jt;
iterator mit;
size_t i, found0 = 0, found1 = 0;
@@ -425,11 +430,11 @@ bool RAS_MeshSlot::IsCulled()
return true;
if(!m_bCulled)
return false;
-
+#ifdef USE_SPLIT
for(it=m_joinedSlots.begin(); it!=m_joinedSlots.end(); it++)
if(!(*it)->m_bCulled)
return false;
-
+#endif
return true;
}
@@ -513,13 +518,13 @@ list<RAS_MeshSlot>::iterator RAS_MaterialBucket::msEnd()
bool RAS_MaterialBucket::ActivateMaterial(const MT_Transform& cameratrans, RAS_IRasterizer* rasty,
RAS_IRenderTools *rendertools)
{
- if (!rasty->SetMaterial(*m_material))
+ bool uselights;
+
+ if(!rasty->SetMaterial(*m_material))
return false;
- if (m_material->UsesLighting(rasty))
- rendertools->ProcessLighting(rasty, RAS_IRenderTools::RAS_LIGHT_OBJECT_LAYER, cameratrans);
- else
- rendertools->ProcessLighting(rasty, -1, cameratrans);
+ uselights= m_material->UsesLighting(rasty);
+ rendertools->ProcessLighting(rasty, uselights, cameratrans);
return true;
}
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.h b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
index 475f01d549a..f5c8cd3e107 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.h
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
@@ -86,9 +86,11 @@ public:
};
/* Entry of a RAS_MeshObject into RAS_MaterialBucket */
+typedef std::vector<RAS_DisplayArray*> RAS_DisplayArrayList;
class RAS_MeshSlot
{
+ friend class RAS_ListRasterizer;
private:
// indices into display arrays
int m_startarray;
@@ -97,7 +99,7 @@ private:
int m_endindex;
int m_startvertex;
int m_endvertex;
- vector<RAS_DisplayArray*> m_displayArrays;
+ RAS_DisplayArrayList m_displayArrays;
// for construction only
RAS_DisplayArray* m_currentArray;
@@ -156,6 +158,7 @@ public:
bool Join(RAS_MeshSlot *target, MT_Scalar distance);
bool Equals(RAS_MeshSlot *target);
bool IsCulled();
+ void SetCulled(bool culled) { m_bCulled = culled; }
};
/* Used by RAS_MeshObject, to point to it's slots in a bucket */
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.cpp b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
index a907994bf57..162f9a81335 100644
--- a/source/gameengine/Rasterizer/RAS_MeshObject.cpp
+++ b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
@@ -406,7 +406,9 @@ void RAS_MeshObject::UpdateBuckets(void* clientobj,
ms->m_bCulled = culled || !visible;
/* split if necessary */
+#ifdef USE_SPLIT
ms->Split();
+#endif
}
}
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.h b/source/gameengine/Rasterizer/RAS_MeshObject.h
index 0d35a2f402b..404b7f16a59 100644
--- a/source/gameengine/Rasterizer/RAS_MeshObject.h
+++ b/source/gameengine/Rasterizer/RAS_MeshObject.h
@@ -147,6 +147,16 @@ public:
/* polygon sorting by Z for alpha */
void SortPolygons(RAS_MeshSlot& ms, const MT_Transform &transform);
+
+ bool HasColliderPolygon() {
+ int numpolys= NumPolygons();
+ for (int p=0; p<numpolys; p++)
+ if (m_Polygons[p]->IsCollider())
+ return true;
+
+ return false;
+ }
+
/* for construction to find shared vertices */
struct SharedVertex {
RAS_DisplayArray *m_darray;
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
index 2c4b55ff964..65aadd63a40 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp
@@ -136,10 +136,10 @@ RAS_ListSlot* RAS_ListRasterizer::FindOrAdd(RAS_MeshSlot& ms)
*/
RAS_ListSlot* localSlot = (RAS_ListSlot*)ms.m_DisplayList;
if(!localSlot) {
- RAS_Lists::iterator it = mLists.find(&ms);
+ RAS_Lists::iterator it = mLists.find(ms.m_displayArrays);
if(it == mLists.end()) {
localSlot = new RAS_ListSlot(this);
- mLists.insert(std::pair<RAS_MeshSlot*, RAS_ListSlot*>(&ms, localSlot));
+ mLists.insert(std::pair<RAS_DisplayArrayList, RAS_ListSlot*>(ms.m_displayArrays, localSlot));
} else {
localSlot = static_cast<RAS_ListSlot*>(it->second->AddRef());
}
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
index 96d6d2a995d..653bb43e534 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h
@@ -35,7 +35,7 @@ enum RAS_ListSlotFlags {
LIST_REGEN =64
};
-typedef std::map<class RAS_MeshSlot*, RAS_ListSlot*> RAS_Lists;
+typedef std::map<RAS_DisplayArrayList, RAS_ListSlot*> RAS_Lists;
class RAS_ListRasterizer : public RAS_VAOpenGLRasterizer
{
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index d4d1b73c772..1a9a28916de 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -327,17 +327,23 @@ void RAS_OpenGLRasterizer::ClearCachingInfo(void)
m_materialCachingInfo = 0;
}
-void RAS_OpenGLRasterizer::FlushDebugLines()
+void RAS_OpenGLRasterizer::FlushDebugLines()
{
-//DrawDebugLines
- glDisable(GL_LIGHTING);
- glDisable(GL_TEXTURE_2D);
+ if(!m_debugLines.size())
+ return;
+
+ // DrawDebugLines
+ GLboolean light, tex;
+
+ light= glIsEnabled(GL_LIGHTING);
+ tex= glIsEnabled(GL_TEXTURE_2D);
+
+ if(light) glDisable(GL_LIGHTING);
+ if(tex) glDisable(GL_TEXTURE_2D);
glBegin(GL_LINES);
for (unsigned int i=0;i<m_debugLines.size();i++)
{
-
-
glColor4f(m_debugLines[i].m_color[0],m_debugLines[i].m_color[1],m_debugLines[i].m_color[2],1.f);
const MT_Scalar* fromPtr = &m_debugLines[i].m_from.x();
const MT_Scalar* toPtr= &m_debugLines[i].m_to.x();
@@ -347,11 +353,10 @@ void RAS_OpenGLRasterizer::FlushDebugLines()
}
glEnd();
- glEnable(GL_LIGHTING);
- glEnable(GL_TEXTURE_2D);
+ if(light) glEnable(GL_LIGHTING);
+ if(tex) glEnable(GL_TEXTURE_2D);
m_debugLines.clear();
-
}
void RAS_OpenGLRasterizer::EndFrame()
@@ -431,7 +436,7 @@ RAS_IRasterizer::StereoMode RAS_OpenGLRasterizer::GetStereoMode()
bool RAS_OpenGLRasterizer::Stereo()
{
- if(m_stereomode == RAS_STEREO_NOSTEREO)
+ if(m_stereomode == RAS_STEREO_NOSTEREO || m_stereomode == RAS_STEREO_DOME)
return false;
else
return true;
@@ -798,7 +803,7 @@ MT_Matrix4x4 RAS_OpenGLRasterizer::GetFrustumMatrix(
double mat[16];
// correction for stereo
- if(m_stereomode != RAS_STEREO_NOSTEREO)
+ if(Stereo())
{
float near_div_focallength;
// next 2 params should be specified on command line and in Blender publisher
@@ -841,7 +846,7 @@ void RAS_OpenGLRasterizer::SetViewMatrix(const MT_Matrix4x4 &mat, const MT_Vecto
m_viewmatrix = mat;
// correction for stereo
- if(m_stereomode != RAS_STEREO_NOSTEREO)
+ if(Stereo())
{
MT_Matrix3x3 camOrientMat3x3(camOrientQuat);
MT_Vector3 unitViewDir(0.0, -1.0, 0.0); // minus y direction, Blender convention
diff --git a/source/gameengine/Rasterizer/RAS_Polygon.cpp b/source/gameengine/Rasterizer/RAS_Polygon.cpp
index 50331d7a664..eacc1285166 100644
--- a/source/gameengine/Rasterizer/RAS_Polygon.cpp
+++ b/source/gameengine/Rasterizer/RAS_Polygon.cpp
@@ -39,7 +39,7 @@ RAS_Polygon::RAS_Polygon(RAS_MaterialBucket* bucket, RAS_DisplayArray *darray, i
m_offset[0]= m_offset[1]= m_offset[2]= m_offset[3]= 0;
m_numvert = numvert;
- m_edgecode = 255;
+// m_edgecode = 255;
m_polyflags = 0;
}
@@ -63,6 +63,7 @@ int RAS_Polygon::GetVertexOffset(int i)
return m_offset[i];
}
+/*
int RAS_Polygon::GetEdgeCode()
{
return m_edgecode;
@@ -71,7 +72,7 @@ int RAS_Polygon::GetEdgeCode()
void RAS_Polygon::SetEdgeCode(int edgecode)
{
m_edgecode = edgecode;
-}
+}*/
bool RAS_Polygon::IsVisible()
@@ -96,6 +97,17 @@ void RAS_Polygon::SetCollider(bool visible)
else m_polyflags &= ~COLLIDER;
}
+bool RAS_Polygon::IsTwoside()
+{
+ return (m_polyflags & TWOSIDE) != 0;
+}
+
+void RAS_Polygon::SetTwoside(bool twoside)
+{
+ if(twoside) m_polyflags |= TWOSIDE;
+ else m_polyflags &= ~TWOSIDE;
+}
+
RAS_MaterialBucket* RAS_Polygon::GetMaterial()
{
return m_bucket;
diff --git a/source/gameengine/Rasterizer/RAS_Polygon.h b/source/gameengine/Rasterizer/RAS_Polygon.h
index 18526ba45f7..41eaa6bdd4a 100644
--- a/source/gameengine/Rasterizer/RAS_Polygon.h
+++ b/source/gameengine/Rasterizer/RAS_Polygon.h
@@ -46,13 +46,18 @@ class RAS_Polygon
unsigned short m_numvert;
/* flags */
+#if 1
+ unsigned short m_polyflags;
+#else
unsigned char m_edgecode;
unsigned char m_polyflags;
-
+#endif
+
public:
enum {
VISIBLE = 1,
- COLLIDER = 2
+ COLLIDER = 2,
+ TWOSIDE = 4
};
RAS_Polygon(RAS_MaterialBucket* bucket, RAS_DisplayArray* darray, int numvert);
@@ -65,8 +70,9 @@ public:
int GetVertexOffset(int i);
// each bit is for a visible edge, starting with bit 1 for the first edge, bit 2 for second etc.
- int GetEdgeCode();
- void SetEdgeCode(int edgecode);
+ // - Not used yet!
+/* int GetEdgeCode();
+ void SetEdgeCode(int edgecode); */
bool IsVisible();
void SetVisible(bool visible);
@@ -74,6 +80,9 @@ public:
bool IsCollider();
void SetCollider(bool collider);
+ bool IsTwoside();
+ void SetTwoside(bool twoside);
+
RAS_MaterialBucket* GetMaterial();
RAS_DisplayArray* GetDisplayArray();
};
diff --git a/source/gameengine/SceneGraph/SG_BBox.cpp b/source/gameengine/SceneGraph/SG_BBox.cpp
index a44262d04f7..66fcc5c7408 100644
--- a/source/gameengine/SceneGraph/SG_BBox.cpp
+++ b/source/gameengine/SceneGraph/SG_BBox.cpp
@@ -188,6 +188,13 @@ void SG_BBox::getaa(MT_Point3 *box, const MT_Transform &world) const
*box++ = max;
}
+void SG_BBox::getmm(MT_Point3 *box, const MT_Transform &world) const
+{
+ const MT_Point3 min(world(m_min)), max(world(m_max));
+ *box++ = min;
+ *box++ = max;
+}
+
void SG_BBox::split(SG_BBox &left, SG_BBox &right) const
{
MT_Scalar sizex = m_max[0] - m_min[0];
diff --git a/source/gameengine/SceneGraph/SG_BBox.h b/source/gameengine/SceneGraph/SG_BBox.h
index b7e8ff65865..c39ad268e25 100644
--- a/source/gameengine/SceneGraph/SG_BBox.h
+++ b/source/gameengine/SceneGraph/SG_BBox.h
@@ -122,6 +122,8 @@ public:
*/
void getaa(MT_Point3 *box, const MT_Transform &world) const;
+ void getmm(MT_Point3 *box, const MT_Transform &world) const;
+
void split(SG_BBox &left, SG_BBox &right) const;
friend class SG_Tree;
diff --git a/source/gameengine/SceneGraph/SG_IObject.cpp b/source/gameengine/SceneGraph/SG_IObject.cpp
index d0bdac5c8f0..fbab4032a10 100644
--- a/source/gameengine/SceneGraph/SG_IObject.cpp
+++ b/source/gameengine/SceneGraph/SG_IObject.cpp
@@ -33,6 +33,8 @@
#include <config.h>
#endif
+SG_Stage gSG_Stage = SG_STAGE_UNKNOWN;
+
SG_IObject::
SG_IObject(
void* clientobj,
diff --git a/source/gameengine/SceneGraph/SG_IObject.h b/source/gameengine/SceneGraph/SG_IObject.h
index 7f6bdfbbb1c..9012b532059 100644
--- a/source/gameengine/SceneGraph/SG_IObject.h
+++ b/source/gameengine/SceneGraph/SG_IObject.h
@@ -31,6 +31,36 @@
#include <vector>
+// used for debugging: stage of the game engine main loop at which a Scenegraph modification is done
+enum SG_Stage
+{
+ SG_STAGE_UNKNOWN = 0,
+ SG_STAGE_NETWORK,
+ SG_STAGE_NETWORK_UPDATE,
+ SG_STAGE_PHYSICS1,
+ SG_STAGE_PHYSICS1_UPDATE,
+ SG_STAGE_CONTROLLER,
+ SG_STAGE_CONTROLLER_UPDATE,
+ SG_STAGE_ACTUATOR,
+ SG_STAGE_ACTUATOR_UPDATE,
+ SG_STAGE_PHYSICS2,
+ SG_STAGE_PHYSICS2_UPDATE,
+ SG_STAGE_SCENE,
+ SG_STAGE_RENDER,
+ SG_STAGE_CONVERTER,
+ SG_STAGE_CULLING,
+ SG_STAGE_MAX
+};
+
+extern SG_Stage gSG_Stage;
+
+inline void SG_SetActiveStage(SG_Stage stage)
+{
+ gSG_Stage = stage;
+}
+
+
+
class SG_Controller;
class SG_IObject;
diff --git a/source/gameengine/SceneGraph/SG_Node.cpp b/source/gameengine/SceneGraph/SG_Node.cpp
index 8de7ac83477..64d9019c86a 100644
--- a/source/gameengine/SceneGraph/SG_Node.cpp
+++ b/source/gameengine/SceneGraph/SG_Node.cpp
@@ -219,18 +219,19 @@ void SG_Node::RemoveChild(SG_Node* child)
-void SG_Node::UpdateWorldData(double time)
+void SG_Node::UpdateWorldData(double time, bool parentUpdated)
{
//if (!GetSGParent())
// return;
- if (UpdateSpatialData(GetSGParent(),time))
+ if (UpdateSpatialData(GetSGParent(),time,parentUpdated))
+ // to update the
ActivateUpdateTransformCallback();
// update children's worlddata
for (NodeList::iterator it = m_children.begin();it!=m_children.end();++it)
{
- (*it)->UpdateWorldData(time);
+ (*it)->UpdateWorldData(time, parentUpdated);
}
}
diff --git a/source/gameengine/SceneGraph/SG_Node.h b/source/gameengine/SceneGraph/SG_Node.h
index ffaaad861e2..29943653a81 100644
--- a/source/gameengine/SceneGraph/SG_Node.h
+++ b/source/gameengine/SceneGraph/SG_Node.h
@@ -175,7 +175,8 @@ public:
void
UpdateWorldData(
- double time
+ double time,
+ bool parentUpdated=false
);
/**
diff --git a/source/gameengine/SceneGraph/SG_ParentRelation.h b/source/gameengine/SceneGraph/SG_ParentRelation.h
index 6507cb98519..8f45df09b27 100644
--- a/source/gameengine/SceneGraph/SG_ParentRelation.h
+++ b/source/gameengine/SceneGraph/SG_ParentRelation.h
@@ -69,7 +69,8 @@ public :
bool
UpdateChildCoordinates(
SG_Spatial * child,
- const SG_Spatial * parent
+ const SG_Spatial * parent,
+ bool& parentUpdated
) = 0;
virtual
diff --git a/source/gameengine/SceneGraph/SG_Spatial.cpp b/source/gameengine/SceneGraph/SG_Spatial.cpp
index 99aeb3e72ee..2f3176816c6 100644
--- a/source/gameengine/SceneGraph/SG_Spatial.cpp
+++ b/source/gameengine/SceneGraph/SG_Spatial.cpp
@@ -55,7 +55,8 @@ SG_Spatial(
m_parent_relation (NULL),
m_bbox(MT_Point3(-1.0, -1.0, -1.0), MT_Point3(1.0, 1.0, 1.0)),
- m_radius(1.0)
+ m_radius(1.0),
+ m_modified(true)
{
}
@@ -101,6 +102,7 @@ SetParentRelation(
){
delete (m_parent_relation);
m_parent_relation = relation;
+ m_modified = true;
}
@@ -114,7 +116,8 @@ SetParentRelation(
SG_Spatial::
UpdateSpatialData(
const SG_Spatial *parent,
- double time
+ double time,
+ bool& parentUpdated
){
bool bComputesWorldTransform = false;
@@ -135,14 +138,14 @@ UpdateSpatialData(
// our world coordinates.
if (!bComputesWorldTransform)
- bComputesWorldTransform = ComputeWorldTransforms(parent);
+ bComputesWorldTransform = ComputeWorldTransforms(parent, parentUpdated);
return bComputesWorldTransform;
}
-bool SG_Spatial::ComputeWorldTransforms(const SG_Spatial *parent)
+bool SG_Spatial::ComputeWorldTransforms(const SG_Spatial *parent, bool& parentUpdated)
{
- return m_parent_relation->UpdateChildCoordinates(this,parent);
+ return m_parent_relation->UpdateChildCoordinates(this,parent,parentUpdated);
}
/**
@@ -166,6 +169,7 @@ RelativeTranslate(
m_localPosition += trans;
}
}
+ m_modified = true;
}
void
@@ -174,6 +178,7 @@ SetLocalPosition(
const MT_Point3& trans
){
m_localPosition = trans;
+ m_modified = true;
}
void
@@ -194,6 +199,7 @@ RelativeScale(
const MT_Vector3& scale
){
m_localScaling = m_localScaling * scale;
+ m_modified = true;
}
void
@@ -202,6 +208,7 @@ SetLocalScale(
const MT_Vector3& scale
){
m_localScaling = scale;
+ m_modified = true;
}
@@ -229,6 +236,7 @@ RelativeRotate(
rot
:
(GetWorldOrientation().inverse() * rot * GetWorldOrientation()));
+ m_modified = true;
}
void
@@ -236,6 +244,7 @@ SG_Spatial::
SetLocalOrientation(const MT_Matrix3x3& rot)
{
m_localRotation = rot;
+ m_modified = true;
}
diff --git a/source/gameengine/SceneGraph/SG_Spatial.h b/source/gameengine/SceneGraph/SG_Spatial.h
index 6ccec2aa9c1..c2ed80d21b2 100644
--- a/source/gameengine/SceneGraph/SG_Spatial.h
+++ b/source/gameengine/SceneGraph/SG_Spatial.h
@@ -61,7 +61,7 @@ protected:
SG_BBox m_bbox;
MT_Scalar m_radius;
-
+ bool m_modified;
public:
@@ -180,7 +180,7 @@ public:
MT_Transform GetWorldTransform() const;
- bool ComputeWorldTransforms( const SG_Spatial *parent);
+ bool ComputeWorldTransforms(const SG_Spatial *parent, bool& parentUpdated);
/**
* Bounding box functions.
@@ -193,9 +193,14 @@ public:
MT_Scalar Radius() const { return m_radius; }
void SetRadius(MT_Scalar radius) { m_radius = radius; }
+ bool IsModified() { return m_modified; }
protected:
friend class SG_Controller;
+ friend class KX_BoneParentRelation;
+ friend class KX_VertexParentRelation;
+ friend class KX_SlowParentRelation;
+ friend class KX_NormalParentRelation;
/**
* Protected constructor this class is not
@@ -223,8 +228,10 @@ protected:
bool
UpdateSpatialData(
const SG_Spatial *parent,
- double time
+ double time,
+ bool& parentUpdated
);
+ void SetModified(bool modified) { m_modified = modified; }
};
diff --git a/source/gameengine/VideoTexture/FilterNormal.cpp b/source/gameengine/VideoTexture/FilterNormal.cpp
index 03a79c1c8ce..a7266967efb 100644
--- a/source/gameengine/VideoTexture/FilterNormal.cpp
+++ b/source/gameengine/VideoTexture/FilterNormal.cpp
@@ -74,7 +74,7 @@ static int setColor (PyFilter * self, PyObject * value, void * closure)
// check validity of parameter
if (value == NULL || !PyInt_Check(value))
{
- PyErr_SetString(PyExc_TypeError, "The value must be a int");
+ PyErr_SetString(PyExc_TypeError, "filt.colorIdx = int: VideoTexture.FilterNormal, expected the value must be a int");
return -1;
}
// set color index
@@ -94,15 +94,20 @@ static PyObject * getDepth (PyFilter * self, void * closure)
static int setDepth (PyFilter * self, PyObject * value, void * closure)
{
// check validity of parameter
- if (value == NULL || !PyFloat_Check(value))
+ if (value)
{
- PyErr_SetString(PyExc_TypeError, "The value must be a float");
- return -1;
+ float depth= (float)PyFloat_AsDouble(value);
+ if ((depth==-1 && PyErr_Occurred()) == 0) /* no error converting to a float? */
+ {
+ // set depth
+ getFilter(self)->setDepth(depth);
+ // success
+ return 0;
+ }
}
- // set depth
- getFilter(self)->setDepth(float(PyFloat_AsDouble(value)));
- // success
- return 0;
+
+ PyErr_SetString(PyExc_TypeError, "filt.depth = float: VideoTexture.FilterNormal, expected the value must be a float");
+ return -1;
}
diff --git a/source/gameengine/VideoTexture/FilterSource.h b/source/gameengine/VideoTexture/FilterSource.h
index 6385ed5108f..254e0a02679 100644
--- a/source/gameengine/VideoTexture/FilterSource.h
+++ b/source/gameengine/VideoTexture/FilterSource.h
@@ -225,7 +225,7 @@ protected:
// otherwise if only vertical interpolation is needed
}
}
- else if ((y & 1) == 1)
+ else if ((y & 1) == 1) {
// if this pixel is on the edge
if (isEdge(x, y, size))
{
@@ -239,6 +239,7 @@ protected:
d = interpolV(m_buffU + offset) - 128;
e = interpolV(m_buffV + offset) - 128;
}
+ }
// convert to RGB
// R = clip(( 298 * C + 409 * E + 128) >> 8)
// G = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
diff --git a/source/gameengine/VideoTexture/ImageRender.cpp b/source/gameengine/VideoTexture/ImageRender.cpp
index 58697ed3cc7..09c3c22f258 100644
--- a/source/gameengine/VideoTexture/ImageRender.cpp
+++ b/source/gameengine/VideoTexture/ImageRender.cpp
@@ -28,7 +28,7 @@ http://www.gnu.org/copyleft/lesser.txt.
#include <math.h>
-#include <BIF_gl.h>
+#include "GL/glew.h"
#include "KX_PythonInit.h"
#include "DNA_scene_types.h"
@@ -249,7 +249,7 @@ void ImageRender::Render()
// restore the stereo mode now that the matrix is computed
m_rasterizer->SetStereoMode(stereomode);
- // do not update the mesh, we don't want to do it more than once per frame
+ // do not update the mesh transform, we don't want to do it more than once per frame
//m_scene->UpdateMeshTransformations();
m_scene->CalculateVisibleMeshes(m_rasterizer,m_camera);
@@ -434,26 +434,35 @@ static int ImageMirror_init (PyObject * pySelf, PyObject * args, PyObject * kwds
{
// get scene pointer
KX_Scene * scenePtr (NULL);
- if (scene != NULL && PyObject_TypeCheck(scene, &KX_Scene::Type))
- scenePtr = static_cast<KX_Scene*>(scene);
- else
+ if (scene != NULL && PyObject_TypeCheck(scene, &KX_Scene::Type))
+ scenePtr = static_cast<KX_Scene*>BGE_PROXY_REF(scene);
+ else
THRWEXCP(SceneInvalid, S_OK);
-
+
+ if(scenePtr==NULL) /* incase the python proxy reference is invalid */
+ THRWEXCP(SceneInvalid, S_OK);
+
// get observer pointer
KX_GameObject * observerPtr (NULL);
if (observer != NULL && PyObject_TypeCheck(observer, &KX_GameObject::Type))
- observerPtr = static_cast<KX_GameObject*>(observer);
+ observerPtr = static_cast<KX_GameObject*>BGE_PROXY_REF(observer);
else if (observer != NULL && PyObject_TypeCheck(observer, &KX_Camera::Type))
- observerPtr = static_cast<KX_Camera*>(observer);
+ observerPtr = static_cast<KX_Camera*>BGE_PROXY_REF(observer);
else
THRWEXCP(ObserverInvalid, S_OK);
+
+ if(observerPtr==NULL) /* incase the python proxy reference is invalid */
+ THRWEXCP(ObserverInvalid, S_OK);
// get mirror pointer
KX_GameObject * mirrorPtr (NULL);
if (mirror != NULL && PyObject_TypeCheck(mirror, &KX_GameObject::Type))
- mirrorPtr = static_cast<KX_GameObject*>(mirror);
+ mirrorPtr = static_cast<KX_GameObject*>BGE_PROXY_REF(mirror);
else
THRWEXCP(MirrorInvalid, S_OK);
+
+ if(mirrorPtr==NULL) /* incase the python proxy reference is invalid */
+ THRWEXCP(MirrorInvalid, S_OK);
// locate the material in the mirror
RAS_IPolyMaterial * material = getMaterial(mirror, materialID);
diff --git a/source/gameengine/VideoTexture/ImageViewport.cpp b/source/gameengine/VideoTexture/ImageViewport.cpp
index 4c2c81e2208..a4e36b5948c 100644
--- a/source/gameengine/VideoTexture/ImageViewport.cpp
+++ b/source/gameengine/VideoTexture/ImageViewport.cpp
@@ -25,7 +25,7 @@ http://www.gnu.org/copyleft/lesser.txt.
#include <PyObjectPlus.h>
#include <structmember.h>
-#include <BIF_gl.h>
+#include "GL/glew.h"
#include "Texture.h"
#include "ImageBase.h"
diff --git a/source/gameengine/VideoTexture/Texture.cpp b/source/gameengine/VideoTexture/Texture.cpp
index 12d4e79ad89..3533cee0f7f 100644
--- a/source/gameengine/VideoTexture/Texture.cpp
+++ b/source/gameengine/VideoTexture/Texture.cpp
@@ -45,7 +45,7 @@ http://www.gnu.org/copyleft/lesser.txt.
#include "Exception.h"
#include <memory.h>
-#include <BIF_gl.h>
+#include "GL/glew.h"
// macro for exception handling and logging
diff --git a/source/gameengine/VideoTexture/VideoBase.cpp b/source/gameengine/VideoTexture/VideoBase.cpp
index 10117c3af9e..3c703d75cda 100644
--- a/source/gameengine/VideoTexture/VideoBase.cpp
+++ b/source/gameengine/VideoTexture/VideoBase.cpp
@@ -22,7 +22,7 @@ http://www.gnu.org/copyleft/lesser.txt.
#if defined WIN32
#define WINDOWS_LEAN_AND_MEAN
-#include <Windows.h>
+#include <windows.h>
#endif
#include "VideoBase.h"
diff --git a/source/gameengine/VideoTexture/VideoFFmpeg.h b/source/gameengine/VideoTexture/VideoFFmpeg.h
index 51ce2c4eebe..51f1067c466 100644
--- a/source/gameengine/VideoTexture/VideoFFmpeg.h
+++ b/source/gameengine/VideoTexture/VideoFFmpeg.h
@@ -25,10 +25,10 @@ http://www.gnu.org/copyleft/lesser.txt.
#ifdef WITH_FFMPEG
extern "C" {
#include <pthread.h>
-#include <ffmpeg/avformat.h>
-#include <ffmpeg/avcodec.h>
-#include <ffmpeg/rational.h>
-#include <ffmpeg/swscale.h>
+#include <libavformat/avformat.h>
+#include <libavcodec/avcodec.h>
+#include <libavutil/rational.h>
+#include <libswscale/swscale.h>
#include "DNA_listBase.h"
#include "BLI_threads.h"
#include "BLI_blenlib.h"
diff --git a/source/gameengine/VideoTexture/blendVideoTex.cpp b/source/gameengine/VideoTexture/blendVideoTex.cpp
index ec066811a52..c11e7fffecd 100644
--- a/source/gameengine/VideoTexture/blendVideoTex.cpp
+++ b/source/gameengine/VideoTexture/blendVideoTex.cpp
@@ -1,6 +1,6 @@
/* $Id$
-----------------------------------------------------------------------------
-This source file is part of VideoTexure library
+This source file is part of VideoTexture library
Copyright (c) 2006 The Zdeno Ash Miklas
@@ -49,14 +49,14 @@ static PyObject * getMaterialID (PyObject *self, PyObject *args)
char * matName;
// get parameters
- if (!PyArg_ParseTuple(args, "Os", &obj, &matName))
+ if (!PyArg_ParseTuple(args, "Os:materialID", &obj, &matName))
return NULL;
// get material id
short matID = getMaterialID(obj, matName);
// if material was not found, report errot
if (matID < 0)
{
- PyErr_SetString(PyExc_RuntimeError, "object doesn't have material with given name");
+ PyErr_SetString(PyExc_RuntimeError, "VideoTexture.materialID(ob, string): Object doesn't have material with given name");
return NULL;
}
// return material ID
@@ -67,7 +67,7 @@ static PyObject * getMaterialID (PyObject *self, PyObject *args)
// get last error description
static PyObject * getLastError (PyObject *self, PyObject *args)
{
- return Py_BuildValue("s", Exception::m_lastError.c_str());
+ return PyString_FromString(Exception::m_lastError.c_str());
}
// set log file
@@ -89,7 +89,7 @@ static PyObject * imageToArray (PyObject * self, PyObject *args)
if (!PyArg_ParseTuple(args, "O", &pyImg) || !pyImageTypes.in(pyImg->ob_type))
{
// if object is incorect, report error
- PyErr_SetString(PyExc_TypeError, "The value must be a image source object");
+ PyErr_SetString(PyExc_TypeError, "VideoTexture.imageToArray(image): The value must be a image source object");
return NULL;
}
// get image structure
diff --git a/source/nan_compile.mk b/source/nan_compile.mk
index a2fcfad3a9e..70aee0bd416 100644
--- a/source/nan_compile.mk
+++ b/source/nan_compile.mk
@@ -49,6 +49,11 @@ else
CPPFLAGS += -DNO_KETSJI
endif
+ifeq ($(BF_PROFILE), true)
+ CFLAGS += -pg
+ CCFLAGS += -pg
+endif
+
ifeq ($(WITH_BF_OPENMP), true)
CFLAGS += -fopenmp
CCFLAGS += -fopenmp
diff --git a/source/nan_definitions.mk b/source/nan_definitions.mk
index 60fc56408b2..eadc334431d 100644
--- a/source/nan_definitions.mk
+++ b/source/nan_definitions.mk
@@ -88,6 +88,7 @@ else
export NAN_SOLID ?= $(LCGDIR)/solid
export NAN_QHULL ?= $(LCGDIR)/qhull
endif
+ export BF_PROFILE ?= false
export NAN_USE_BULLET ?= true
export NAN_BULLET2 ?= $(LCGDIR)/bullet2
export NAN_SUMO ?= $(SRCHOME)/gameengine/Physics/Sumo
@@ -114,69 +115,17 @@ endif
export NAN_FTGL ?= $(LCGDIR)/gcc/ftgl
export NAN_FFMPEG ?= $(LCGDIR)/gcc/ffmpeg
export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libavdevice.a
- export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg
else
export NAN_FTGL ?= $(LCGDIR)/ftgl
export NAN_FFMPEG ?= $(LCGDIR)/ffmpeg
export NAN_FFMPEGLIBS ?= $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavdevice.a
- export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg
endif
+ export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg
export WITH_OPENEXR ?= true
export WITH_DDS ?= true
export WITH_OPENJPEG ?= true
- ifeq ($(OS),windows)
- export NAN_WINTAB ?= $(LCGDIR)/wintab
- ifeq ($(FREE_WINDOWS), true)
- export NAN_PTHREADS ?= $(LCGDIR)/pthreads
- export NAN_OPENEXR ?= $(LCGDIR)/gcc/openexr
- export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a
- export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR
- else
- export NAN_OPENEXR ?= $(LCGDIR)/openexr
- export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/IlmImf.lib $(NAN_OPENEXR)/lib/Half.lib $(NAN_OPENEXR)/lib/Iex.lib
- export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/IlmImf -I$(NAN_OPENEXR)/include/Imath -I$(NAN_OPENEXR)/include/Iex
- endif
- else
- ifeq ($(OS),darwin)
- export NAN_OPENEXR ?= $(LCGDIR)/openexr
- ifeq ($(CPU),powerpc)
- export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a
- else
- export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a
- endif
- else
- ifeq ($(OS),linux)
- ifeq ($(WITH_OPENEXR), true)
- export NAN_OPENEXR?=$(shell pkg-config --variable=prefix OpenEXR )
- export NAN_OPENEXR_INC?=$(shell pkg-config --cflags OpenEXR )
- export NAN_OPENEXR_LIBS?=$(addprefix ${NAN_OPENEXR}/lib/lib,$(addsuffix .a,$(shell pkg-config --libs-only-l OpenEXR | sed -s "s/-l//g" )))
- endif
- else
- ifeq ($(OS), solaris)
- # this only exists at the moment for i386-64 CPU Types at the moment
- export NAN_OPENEXR ?= $(LCGDIR)/openexr
- export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a -lrt
- else
- ifeq ($(OS), irix)
- ifeq ($(IRIX_USE_GCC), true)
- export NAN_OPENEXR ?= $(LCGDIR)/openexr/gcc
- else
- export NAN_OPENEXR ?= $(LCGDIR)/openexr
- endif
- endif
- export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR
- export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a
- endif
- endif
- endif
- ifeq ($(WITH_OPENEXR), true)
- export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR
- endif
-
- endif
- # Platform Dependent settings go below:
ifeq ($(NAN_USE_FFMPEG_CONFIG), true)
export NAN_FFMPEG ?= $(shell ffmpeg-config --prefix)
@@ -184,6 +133,7 @@ endif
export NAN_FFMPEGCFLAGS ?= $(shell ffmpeg-config --cflags)
endif
+ # Platform Dependent settings go below:
ifeq ($(OS),beos)
export ID = $(USER)
@@ -193,7 +143,6 @@ endif
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
export NAN_OPENAL ?= $(LCGDIR)/openal
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= $(LCGDIR)/jpeg
export NAN_PNG ?= $(LCGDIR)/png
export NAN_TIFF ?= $(LCGDIR)/tiff
@@ -205,7 +154,7 @@ endif
export NAN_FREETYPE ?= $(LCGDIR)/freetype
export NAN_GETTEXT ?= $(LCGDIR)/gettext
export NAN_SDL ?= $(shell sdl-config --prefix)
- export NAN_SDLLIBS ?= $(shell sdl-config --libs)
+ export NAN_SDLLIBS ?= $(shell sdl-config --libs)
export NAN_SDLCFLAGS ?= $(shell sdl-config --cflags)
# Uncomment the following line to use Mozilla inplace of netscape
@@ -232,14 +181,14 @@ endif
export ID = $(shell whoami)
export HOST = $(shell hostname -s)
- export PY_FRAMEWORK = 1
+ export PY_FRAMEWORK ?= 1
ifdef PY_FRAMEWORK
export NAN_PYTHON ?= /System/Library/Frameworks/Python.framework/Versions/2.3
export NAN_PYTHON_VERSION ?= 2.3
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
- export NAN_PYTHON_LIB ?= -framework Python
- else
+ export NAN_PYTHON_LIB ?= -framework Python
+ else
export NAN_PYTHON ?= /sw
export NAN_PYTHON_VERSION ?= 2.3
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
@@ -247,7 +196,6 @@ endif
endif
export NAN_OPENAL ?= $(LCGDIR)/openal
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= $(LCGDIR)/jpeg
export NAN_PNG ?= $(LCGDIR)/png
export NAN_TIFF ?= $(LCGDIR)/tiff
@@ -266,10 +214,18 @@ endif
export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include
export NAN_SDLLIBS ?= $(NAN_SDL)/lib/libSDL.a -framework Cocoa -framework IOKit
+ export NAN_OPENEXR ?= $(LCGDIR)/openexr
+ export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR
+ ifeq ($(CPU),powerpc)
+ export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a
+ else
+ export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a
+ endif
+
# export NAN_NO_KETSJI=true
ifeq ($(CPU), i386)
- export NAN_NO_OPENAL=true
+ export NAN_NO_OPENAL=true
endif
# Uncomment the following line to use Mozilla inplace of netscape
@@ -305,7 +261,6 @@ endif
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
export NAN_OPENAL ?= /usr/local
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= /usr/local
export NAN_PNG ?= /usr/local
export NAN_TIFF ?= /usr/local
@@ -350,7 +305,6 @@ endif
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a -lpthread
export NAN_OPENAL ?= $(LCGDIR)/openal
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= $(LCGDIR)/jpeg
export NAN_PNG ?= $(LCGDIR)/png
export NAN_TIFF ?= $(LCGDIR)/tiff
@@ -369,7 +323,15 @@ endif
export NAN_FFMPEG ?= $(LCGDIR)/ffmpeg
export NAN_FFMPEGLIBS = $(NAN_FFMPEG)/lib/libavformat.a $(NAN_FFMPEG)/lib/libavcodec.a $(NAN_FFMPEG)/lib/libswscale.a $(NAN_FFMPEG)/lib/libavutil.a $(NAN_FFMPEG)/lib/libavdevice.a $(NAN_FFMPEG)/lib/libogg.a $(NAN_FFMPEG)/lib/libfaad.a $(NAN_FFMPEG)/lib/libmp3lame.a $(NAN_FFMPEG)/lib/libvorbis.a $(NAN_FFMPEG)/lib/libx264.a $(NAN_FFMPEG)/lib/libfaac.a $(NAN_ZLIB)/lib/libz.a
export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include -I$(NANBLENDERHOME)/extern/ffmpeg
-
+
+ ifeq ($(IRIX_USE_GCC), true)
+ export NAN_OPENEXR ?= $(LCGDIR)/openexr/gcc
+ else
+ export NAN_OPENEXR ?= $(LCGDIR)/openexr
+ endif
+ export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR
+ export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a
+
# Uncomment the following line to use Mozilla inplace of netscape
# CPPFLAGS +=-DMOZ_NOT_NET
# Location of MOZILLA/Netscape header files...
@@ -400,7 +362,6 @@ endif
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
export NAN_OPENAL ?= /usr
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= /usr
export NAN_PNG ?= /usr
export NAN_TIFF ?= /usr
@@ -421,6 +382,12 @@ ifneq ($(NAN_USE_FFMPEG_CONFIG), true)
export NAN_FFMPEGCFLAGS ?= -I$(NAN_FFMPEG)/include
endif
+ ifeq ($(WITH_OPENEXR), true)
+ export NAN_OPENEXR ?= $(shell pkg-config --variable=prefix OpenEXR )
+ export NAN_OPENEXR_INC ?= $(shell pkg-config --cflags OpenEXR )
+ export NAN_OPENEXR_LIBS ?= $(addprefix ${NAN_OPENEXR}/lib/lib,$(addsuffix .a,$(shell pkg-config --libs-only-l OpenEXR | sed -s "s/-l//g" )))
+ endif
+
# Uncomment the following line to use Mozilla inplace of netscape
export CPPFLAGS += -DMOZ_NOT_NET
# Location of MOZILLA/Netscape header files...
@@ -443,7 +410,7 @@ endif
# enable ffmpeg support
ifndef NAN_NO_FFMPEG
- export WITH_FFMPEG ?= true
+ export WITH_FFMPEG ?= true
endif
else
@@ -458,7 +425,6 @@ endif
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
export NAN_OPENAL ?= $(LCGDIR)/openal
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= $(LCGDIR)/jpeg
export NAN_PNG ?= $(LCGDIR)/png
export NAN_TIFF ?= $(LCGDIR)/tiff
@@ -500,8 +466,7 @@ endif
export NAN_PYTHON_VERSION ?= 2.5
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
- export NAN_OPENAL ?= $(LCGDIR)/openal
- export NAN_FMOD ?= $(LCGDIR)/fmod
+ export NAN_OPENAL ?= $(LCGDIR)/openal
export NAN_JPEG ?= $(LCGDIR)/jpeg
export NAN_PNG ?= $(LCGDIR)/png
export NAN_TIFF ?= /usr
@@ -517,6 +482,11 @@ endif
export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include/SDL
export NAN_SDLLIBS ?= $(NAN_SDL)/lib/libSDL.a
+ # this only exists at the moment for i386-64 CPU Types at the moment
+ export NAN_OPENEXR ?= $(LCGDIR)/openexr
+ export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR
+ export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a $(NAN_OPENEXR)/lib/libIlmThread.a -lrt
+
# Uncomment the following line to use Mozilla inplace of netscape
# CPPFLAGS +=-DMOZ_NOT_NET
# Location of MOZILLA/Netscape header files...
@@ -542,23 +512,7 @@ endif
export NAN_PYTHON ?= $(LCGDIR)/python
export NAN_ICONV ?= $(LCGDIR)/iconv
export NAN_PYTHON_VERSION ?= 2.5
- ifeq ($(FREE_WINDOWS), true)
- export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
- export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/freepy.a
- export NAN_FREETYPE ?= $(LCGDIR)/gcc/freetype
- export NAN_ODE ?= $(LCGDIR)/gcc/ode
- export NAN_SDL ?= $(LCGDIR)/gcc/sdl
- export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include
- else
- export NAN_PYTHON_BINARY ?= python
- export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python23.lib
- export NAN_FREETYPE ?= $(LCGDIR)/freetype
- export NAN_ODE ?= $(LCGDIR)/ode
- export NAN_SDL ?= $(LCGDIR)/sdl
- export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include
- endif
export NAN_OPENAL ?= $(LCGDIR)/openal
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= $(LCGDIR)/jpeg
export NAN_PNG ?= $(LCGDIR)/png
export NAN_TIFF ?= $(LCGDIR)/tiff
@@ -568,11 +522,30 @@ endif
export NAN_NSPR ?= $(LCGDIR)/nspr
export NAN_GETTEXT ?= $(LCGDIR)/gettext
ifeq ($(FREE_WINDOWS), true)
- export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/freegettext.a $(NAN_ICONV)/lib/freeiconv.a
+ export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/freegettext.a $(NAN_ICONV)/lib/freeiconv.a
+ export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
+ export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/lib25_vs2005/libpython25.a
+ export NAN_FREETYPE ?= $(LCGDIR)/gcc/freetype
+ export NAN_ODE ?= $(LCGDIR)/gcc/ode
+ export NAN_SDL ?= $(LCGDIR)/gcc/sdl
+ export NAN_OPENEXR ?= $(LCGDIR)/gcc/openexr
+ export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/OpenEXR
+ export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/libIlmImf.a $(NAN_OPENEXR)/lib/libHalf.a $(NAN_OPENEXR)/lib/libIex.a
+ export NAN_PTHREADS ?= $(LCGDIR)/pthreads
else
- export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/gnu_gettext.lib $(NAN_ICONV)/lib/iconv.lib
+ export NAN_GETTEXT_LIB ?= $(NAN_GETTEXT)/lib/gnu_gettext.lib $(NAN_ICONV)/lib/iconv.lib
+ export NAN_PYTHON_BINARY ?= python
+ export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python23.lib
+ export NAN_FREETYPE ?= $(LCGDIR)/freetype
+ export NAN_ODE ?= $(LCGDIR)/ode
+ export NAN_SDL ?= $(LCGDIR)/sdl
+ export NAN_OPENEXR ?= $(LCGDIR)/openexr
+ export NAN_OPENEXR_INC ?= -I$(NAN_OPENEXR)/include -I$(NAN_OPENEXR)/include/IlmImf -I$(NAN_OPENEXR)/include/Imath -I$(NAN_OPENEXR)/include/Iex
+ export NAN_OPENEXR_LIBS ?= $(NAN_OPENEXR)/lib/IlmImf.lib $(NAN_OPENEXR)/lib/Half.lib $(NAN_OPENEXR)/lib/Iex.lib
endif
+ export NAN_SDLCFLAGS ?= -I$(NAN_SDL)/include
+ export NAN_WINTAB ?= $(LCGDIR)/wintab
# Uncomment the following line to use Mozilla inplace of netscape
# CPPFLAGS +=-DMOZ_NOT_NET
# Location of MOZILLA/Netscape header files...
@@ -580,7 +553,7 @@ endif
export NAN_MOZILLA_LIB ?= $(LCGDIR)/mozilla/lib/
# Will fall back to look in NAN_MOZILLA_INC/nspr and NAN_MOZILLA_LIB
# if this is not set.
- export NAN_PYTHON_BINARY ?= python
+ export NAN_PYTHON_BINARY ?= python
export NAN_BUILDINFO ?= true
# Be paranoid regarding library creation (do not update archives)
export NAN_PARANOID ?= true
@@ -602,7 +575,6 @@ endif
export NAN_PYTHON_LIB ?= $(NAN_PYTHON)/lib/python$(NAN_PYTHON_VERSION)/config/libpython$(NAN_PYTHON_VERSION).a
export NAN_OPENAL ?= $(LCGDIR)/openal
- export NAN_FMOD ?= $(LCGDIR)/fmod
export NAN_JPEG ?= $(LCGDIR)/jpeg
export NAN_PNG ?= $(LCGDIR)/png
export NAN_TIFF ?= $(LCGDIR)/tiff
@@ -636,16 +608,16 @@ endif
# enable freetype2 support for text objects
#export WITH_FREETYPE2 ?= true
- endif
+ endif # windows + fallback
+ endif # solaris
+ endif # openbsd
+ endif # linux
+ endif # irix
+ endif # freebsd
+ endif # darwin
+ endif # beos
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
+endif # CONFIG_GUESS
# Don't want to build the gameengine?
ifeq ($(NAN_NO_KETSJI), true)
@@ -656,4 +628,4 @@ endif
# INTERNATIONAL implies WITH_FREETYPE2
ifeq ($(INTERNATIONAL), true)
export WITH_FREETYPE2=true
-endif
+endif
diff --git a/tools/btools.py b/tools/btools.py
index 3c6b63c30cc..7c77e9c1b0a 100755
--- a/tools/btools.py
+++ b/tools/btools.py
@@ -31,7 +31,6 @@ def validate_arguments(args, bc):
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH',
- 'WITH_BF_FMOD',
'WITH_BF_OPENEXR', 'BF_OPENEXR', 'BF_OPENEXR_INC', 'BF_OPENEXR_LIB', 'BF_OPENEXR_LIBPATH', 'WITH_BF_STATICOPENEXR', 'BF_OPENEXR_LIB_STATIC',
'WITH_BF_DDS',
'WITH_BF_FFMPEG', 'BF_FFMPEG_LIB','BF_FFMPEG_EXTRA', 'BF_FFMPEG', 'BF_FFMPEG_INC',
@@ -178,9 +177,6 @@ def read_opts(cfg, args):
('BF_PTHREADS_LIB', 'Pthreads library', ''),
('BF_PTHREADS_LIBPATH', 'Pthreads library path', ''),
- (BoolVariable('WITH_BF_FMOD', 'Use FMOD if true', False)),
- # BF_FMOD = $(LCGDIR)/fmod
-
(BoolVariable('WITH_BF_OPENEXR', 'Use OPENEXR if true', True)),
(BoolVariable('WITH_BF_STATICOPENEXR', 'Staticly link to OpenEXR', False)),
('BF_OPENEXR', 'OPENEXR base path', ''),
@@ -290,7 +286,7 @@ def read_opts(cfg, args):
##BF_PARANOID = True
##
### enable freetype2 support for text objects
- (BoolVariable('WITH_BF_FREETYPE', 'Use FreeType2 if true', False)),
+ (BoolVariable('WITH_BF_FREETYPE', 'Use FreeType2 if true', True)),
('BF_FREETYPE', 'Freetype base path', ''),
('BF_FREETYPE_INC', 'Freetype include path', ''),
('BF_FREETYPE_LIB', 'Freetype library', ''),