Revision: 24871
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24871
Author:   ben2610
Date:     2009-11-24 23:44:29 +0100 (Tue, 24 Nov 2009)

Log Message:
-----------
BGE: replace mesh works for Soft Body (including reinstantiation of physics 
soft body mesh).

Even a static mesh can be used as replacement: the mesh
will be instantiated with the soft body settings of the
object. The position and orientation of the soft body
is preserved after the replacement.

Known limitation: the velocity of the soft body is reset
aftet the replacement. This is because soft body don't
have a well defined velocity.

Modified Paths:
--------------
    trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj
    trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj
    trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    trunk/blender/source/gameengine/Converter/BL_MeshDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_MeshDeformer.h
    trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_ModifierDeformer.h
    trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_ShapeDeformer.h
    trunk/blender/source/gameengine/Converter/BL_SkinDeformer.cpp
    trunk/blender/source/gameengine/Converter/BL_SkinDeformer.h
    trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
    trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h
    trunk/blender/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
    trunk/blender/source/gameengine/Ketsji/KX_Scene.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.h
    trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
    trunk/blender/source/gameengine/Rasterizer/CMakeLists.txt
    trunk/blender/source/gameengine/Rasterizer/RAS_MeshObject.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_MeshObject.h
    trunk/blender/source/gameengine/Rasterizer/SConscript

Added Paths:
-----------
    trunk/blender/source/gameengine/Converter/KX_SoftBodyDeformer.cpp
    trunk/blender/source/gameengine/Converter/KX_SoftBodyDeformer.h

Removed Paths:
-------------
    trunk/blender/source/gameengine/Converter/BL_SkinMeshObject.cpp
    trunk/blender/source/gameengine/Converter/BL_SkinMeshObject.h

Modified: 
trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj
===================================================================
--- trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj     
2009-11-24 20:15:24 UTC (rev 24870)
+++ trunk/blender/projectfiles_vc9/gameengine/converter/KX_converter.vcproj     
2009-11-24 22:44:29 UTC (rev 24871)
@@ -526,10 +526,6 @@
                                >
                        </File>
                        <File
-                               
RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.cpp"
-                               >
-                       </File>
-                       <File
                                
RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.cpp"
                                >
                        </File>
@@ -561,6 +557,10 @@
                                
RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.cpp"
                                >
                        </File>
+                       <File
+                               
RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.cpp"
+                               >
+                       </File>
                </Filter>
                <Filter
                        Name="Header Files"
@@ -615,10 +615,6 @@
                                >
                        </File>
                        <File
-                               
RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.h"
-                               >
-                       </File>
-                       <File
                                
RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.h"
                                >
                        </File>
@@ -650,6 +646,10 @@
                                
RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.h"
                                >
                        </File>
+                       <File
+                               
RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.h"
+                               >
+                       </File>
                </Filter>
        </Files>
        <Globals>

Modified: 
trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj
===================================================================
--- trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj  
2009-11-24 20:15:24 UTC (rev 24870)
+++ trunk/blender/projectfiles_vc9/gameengine/rasterizer/RAS_rasterizer.vcproj  
2009-11-24 22:44:29 UTC (rev 24871)
@@ -43,7 +43,7 @@
                        <Tool
                                Name="VCCLCompilerTool"
                                Optimization="0"
-                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
                                
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
                                BasicRuntimeChecks="3"
                                RuntimeLibrary="1"
@@ -118,7 +118,7 @@
                        <Tool
                                Name="VCCLCompilerTool"
                                InlineFunctionExpansion="1"
-                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
                                PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
                                StringPooling="true"
                                RuntimeLibrary="2"
@@ -194,7 +194,7 @@
                                Name="VCCLCompilerTool"
                                Optimization="2"
                                InlineFunctionExpansion="1"
-                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
                                
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
                                StringPooling="true"
                                RuntimeLibrary="0"
@@ -269,7 +269,7 @@
                        <Tool
                                Name="VCCLCompilerTool"
                                Optimization="0"
-                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
                                PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
                                BasicRuntimeChecks="3"
                                RuntimeLibrary="3"
@@ -344,7 +344,7 @@
                        <Tool
                                Name="VCCLCompilerTool"
                                Optimization="0"
-                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
                                
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
                                BasicRuntimeChecks="3"
                                RuntimeLibrary="1"
@@ -419,7 +419,7 @@
                        <Tool
                                Name="VCCLCompilerTool"
                                InlineFunctionExpansion="1"
-                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
+                               
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
                                
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
                                StringPooling="true"
                                RuntimeLibrary="0"

Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp      
2009-11-24 20:15:24 UTC (rev 24870)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp      
2009-11-24 22:44:29 UTC (rev 24871)
@@ -89,11 +89,11 @@
 #include "BKE_global.h"
 #include "BKE_object.h"
 #include "BKE_scene.h"
-#include "BL_SkinMeshObject.h"
 #include "BL_ModifierDeformer.h"
 #include "BL_ShapeDeformer.h"
 #include "BL_SkinDeformer.h"
 #include "BL_MeshDeformer.h"
+#include "KX_SoftBodyDeformer.h"
 //#include "BL_ArmatureController.h"
 
 #include "BlenderWorldInfo.h"
@@ -720,7 +720,6 @@
 RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, KX_Scene* 
scene, KX_BlenderSceneConverter *converter)
 {
        RAS_MeshObject *meshobj;
-       bool skinMesh = false;
        int lightlayer = blenderobj ? blenderobj->lay:(1<<20)-1; // all layers 
if no object.
 
        if ((meshobj = converter->FindGameMesh(mesh/*, ob->lay*/)) != NULL)
@@ -743,14 +742,7 @@
                tangent = (float(*)[3])dm->getFaceDataArray(dm, CD_TANGENT);
        }
 
-       // Determine if we need to make a skinned mesh
-       if (blenderobj && (mesh->dvert || mesh->key || ((blenderobj->gameflag & 
OB_SOFT_BODY) != 0) || BL_ModifierDeformer::HasCompatibleDeformer(blenderobj)))
-       {
-               meshobj = new BL_SkinMeshObject(mesh);
-               skinMesh = true;
-       }
-       else
-               meshobj = new RAS_MeshObject(mesh);
+       meshobj = new RAS_MeshObject(mesh);
 
        // Extract avaiable layers
        MTF_localLayer *layers =  new MTF_localLayer[MAX_MTFACE];
@@ -877,7 +869,7 @@
                                if (kx_blmat == NULL)
                                        kx_blmat = new KX_BlenderMaterial();
 
-                               kx_blmat->Initialize(scene, bl_mat, skinMesh);
+                               kx_blmat->Initialize(scene, bl_mat);
                                polymat = 
static_cast<RAS_IPolyMaterial*>(kx_blmat);
                        }
                        else {
@@ -1736,31 +1728,35 @@
                bool bHasDvert = mesh->dvert != NULL && ob->defbase.first;
                bool bHasArmature = (ob->parent && ob->parent->type == 
OB_ARMATURE && ob->partype==PARSKEL && bHasDvert);
                bool bHasModifier = 
BL_ModifierDeformer::HasCompatibleDeformer(ob);
+               bool bHasSoftBody = (!ob->parent && (ob->gameflag & 
OB_SOFT_BODY));
 
                if (bHasModifier) {
                        BL_ModifierDeformer *dcont = new 
BL_ModifierDeformer((BL_DeformableGameObject *)gameobj,
-                                                                               
                                                kxscene->GetBlenderScene(), ob, 
(BL_SkinMeshObject *)meshobj);
+                                                                               
                                                kxscene->GetBlenderScene(), ob, 
meshobj);
                        ((BL_DeformableGameObject*)gameobj)->SetDeformer(dcont);
                        if (bHasShapeKey && bHasArmature)
                                dcont->LoadShapeDrivers(ob->parent);
                } else if (bHasShapeKey) {

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to