Commit: df1a199787a59e5e2af09df56d9f9ebce779f6d9
Author: Mitchell Stokes
Date:   Tue Apr 22 20:12:22 2014 -0700
https://developer.blender.org/rBdf1a199787a59e5e2af09df56d9f9ebce779f6d9

BGE Cleanup: Removing KX_ObjectProperties, KX_BoundBoxClass, KX_BoxBounds, and 
KX_CBounds

These were used in BL_CreatePhysicsObjectNew() in the converter. However, all
of the data put into KX_ObjectProperties was then copied again in
KX_ConvertBulletObject(). So, instead KX_ConvertBulletObject() now gathers the
information it needs itself, which avoid this odd double conversion step for
physics.

As a side-effect, the old code would result in static non-mesh objects with no 
bounds
set to still have triangle mesh bounds. This would result in no bounds for 
these objects.
If a bounds was set that required a mesh, non-mesh objects would become sphere 
bounds.
This is now true regardless of whether user bounds were set. In other words, 
static
non-mesh objects now use sphere bounds by default instead of mesh bounds. This 
might
slightly alter some games, but these objects should generally be set to No 
Collision
anyways.

===================================================================

M       source/gameengine/Converter/BL_BlenderDataConversion.cpp
M       source/gameengine/Ketsji/KX_ConvertPhysicsObject.h
M       source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp

===================================================================

diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp 
b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index 041dde2..b5c9f7a 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -1312,121 +1312,6 @@ static float my_boundbox_mesh(Mesh *me, float *loc, 
float *size)
        return sqrtf_signed(radius_sq);
 }
 
-
-static void my_tex_space_mesh(Mesh *me)
-{
-       KeyBlock *kb;
-       float *fp, loc[3], size[3], min[3], max[3];
-       int a;
-
-       my_boundbox_mesh(me, loc, size);
-       
-       if (me->texflag & ME_AUTOSPACE) {
-               if (me->key) {
-                       kb= me->key->refkey;
-                       if (kb) {
-
-                               INIT_MINMAX(min, max);
-
-                               fp= (float *)kb->data;
-                               for (a=0; a<kb->totelem; a++, fp += 3) {
-                                       minmax_v3v3_v3(min, max, fp);
-                               }
-                               if (kb->totelem) {
-                                       loc[0] = (min[0]+max[0])/2.0f; loc[1] = 
(min[1]+max[1])/2.0f; loc[2] = (min[2]+max[2])/2.0f;
-                                       size[0] = (max[0]-min[0])/2.0f; size[1] 
= (max[1]-min[1])/2.0f; size[2] = (max[2]-min[2])/2.0f;
-                               }
-                               else {
-                                       loc[0] = loc[1] = loc[2] = 0.0;
-                                       size[0] = size[1] = size[2] = 0.0;
-                               }
-                               
-                       }
-               }
-
-               copy_v3_v3(me->loc, loc);
-               copy_v3_v3(me->size, size);
-               me->rot[0] = me->rot[1] = me->rot[2] = 0.0f;
-
-               if (me->size[0] == 0.0f) me->size[0] = 1.0f;
-               else if (me->size[0] > 0.0f && me->size[0]< 0.00001f) 
me->size[0] = 0.00001f;
-               else if (me->size[0] < 0.0f && me->size[0]> -0.00001f) 
me->size[0] = -0.00001f;
-
-               if (me->size[1] == 0.0f) me->size[1] = 1.0f;
-               else if (me->size[1] > 0.0f && me->size[1]< 0.00001f) 
me->size[1] = 0.00001f;
-               else if (me->size[1] < 0.0f && me->size[1]> -0.00001f) 
me->size[1] = -0.00001f;
-
-               if (me->size[2] == 0.0f) me->size[2] = 1.0f;
-               else if (me->size[2] > 0.0f && me->size[2]< 0.00001f) 
me->size[2] = 0.00001f;
-               else if (me->size[2] < 0.0f && me->size[2]> -0.00001f) 
me->size[2] = -0.00001f;
-       }
-       
-}
-
-static void my_get_local_bounds(Object *ob, DerivedMesh *dm, float *center, 
float *size)
-{
-       BoundBox *bb= NULL;
-       /* uses boundbox, function used by Ketsji */
-       switch (ob->type)
-       {
-               case OB_MESH:
-                       if (dm)
-                       {
-                               float min_r[3], max_r[3];
-                               INIT_MINMAX(min_r, max_r);
-                               dm->getMinMax(dm, min_r, max_r);
-                               size[0] = 0.5f * fabsf(max_r[0] - min_r[0]);
-                               size[1] = 0.5f * fabsf(max_r[1] - min_r[1]);
-                               size[2] = 0.5f * fabsf(max_r[2] - min_r[2]);
-                                       
-                               center[0] = 0.5f * (max_r[0] + min_r[0]);
-                               center[1] = 0.5f * (max_r[1] + min_r[1]);
-                               center[2] = 0.5f * (max_r[2] + min_r[2]);
-                               return;
-                       } else
-                       {
-                               bb= ( (Mesh *)ob->data )->bb;
-                               if (bb==0) 
-                               {
-                                       my_tex_space_mesh((struct Mesh 
*)ob->data);
-                                       bb= ( (Mesh *)ob->data )->bb;
-                               }
-                       }
-                       break;
-               case OB_CURVE:
-               case OB_SURF:
-                       center[0] = center[1] = center[2] = 0.0;
-                       size[0]  = size[1]=size[2]=0.0;
-                       break;
-               case OB_FONT:
-                       center[0] = center[1] = center[2] = 0.0;
-                       size[0]  = size[1]=size[2]=1.0;
-                       break;
-               case OB_MBALL:
-                       bb= ob->bb;
-                       break;
-       }
-       
-       if (bb==NULL) 
-       {
-               center[0] = center[1] = center[2] = 0.0;
-               size[0] = size[1] = size[2] = 1.0;
-       }
-       else 
-       {
-               size[0] = 0.5f * fabsf(bb->vec[0][0] - bb->vec[4][0]);
-               size[1] = 0.5f * fabsf(bb->vec[0][1] - bb->vec[2][1]);
-               size[2] = 0.5f * fabsf(bb->vec[0][2] - bb->vec[1][2]);
-
-               center[0] = 0.5f * (bb->vec[0][0] + bb->vec[4][0]);
-               center[1] = 0.5f * (bb->vec[0][1] + bb->vec[2][1]);
-               center[2] = 0.5f * (bb->vec[0][2] + bb->vec[1][2]);
-       }
-}
-       
-
-
-
 //////////////////////////////////////////////////////
 
 
@@ -1524,230 +1409,16 @@ static void BL_CreatePhysicsObjectNew(KX_GameObject* 
gameobj,
        
        PHY_MaterialProps* smmaterial = 
                CreateMaterialFromBlenderObject(blenderobject);
-                                       
-       KX_ObjectProperties objprop;
-       objprop.m_lockXaxis = (blenderobject->gameflag2 & 
OB_LOCK_RIGID_BODY_X_AXIS) !=0;
-       objprop.m_lockYaxis = (blenderobject->gameflag2 & 
OB_LOCK_RIGID_BODY_Y_AXIS) !=0;
-       objprop.m_lockZaxis = (blenderobject->gameflag2 & 
OB_LOCK_RIGID_BODY_Z_AXIS) !=0;
-       objprop.m_lockXRotaxis = (blenderobject->gameflag2 & 
OB_LOCK_RIGID_BODY_X_ROT_AXIS) !=0;
-       objprop.m_lockYRotaxis = (blenderobject->gameflag2 & 
OB_LOCK_RIGID_BODY_Y_ROT_AXIS) !=0;
-       objprop.m_lockZRotaxis = (blenderobject->gameflag2 & 
OB_LOCK_RIGID_BODY_Z_ROT_AXIS) !=0;
-
-       objprop.m_isCompoundChild = isCompoundChild;
-       objprop.m_hasCompoundChildren = hasCompoundChildren;
-       objprop.m_margin = blenderobject->margin;
-       
-       // ACTOR is now a separate feature
-       objprop.m_isactor = (blenderobject->gameflag & OB_ACTOR)!=0;
-       objprop.m_dyna = (blenderobject->gameflag & OB_DYNAMIC) != 0;
-       objprop.m_softbody = (blenderobject->gameflag & OB_SOFT_BODY) != 0;
-       objprop.m_angular_rigidbody = (blenderobject->gameflag & OB_RIGID_BODY) 
!= 0;
-       objprop.m_character = (blenderobject->gameflag & OB_CHARACTER) != 0;
-       objprop.m_record_animation = (blenderobject->gameflag & 
OB_RECORD_ANIMATION) != 0;
-       
-       ///contact processing threshold is only for rigid bodies and static 
geometry, not 'dynamic'
-       if (objprop.m_angular_rigidbody || !objprop.m_dyna )
-       {
-               objprop.m_contactProcessingThreshold = 
blenderobject->m_contactProcessingThreshold;
-       } else
-       {
-               objprop.m_contactProcessingThreshold = 0.f;
-       }
 
-       objprop.m_sensor = (blenderobject->gameflag & OB_SENSOR) != 0;
-       
-       if (objprop.m_softbody)
-       {
-               ///for game soft bodies
-               if (blenderobject->bsoft)
-               {
-                       objprop.m_gamesoftFlag = blenderobject->bsoft->flag;
-                                       ///////////////////
-                       objprop.m_soft_linStiff = 
blenderobject->bsoft->linStiff;
-                       objprop.m_soft_angStiff = 
blenderobject->bsoft->angStiff;               /* angular stiffness 0..1 */
-                       objprop.m_soft_volume= blenderobject->bsoft->volume;    
                /* volume preservation 0..1 */
-
-                       objprop.m_soft_viterations= 
blenderobject->bsoft->viterations;          /* Velocities solver iterations */
-                       objprop.m_soft_piterations= 
blenderobject->bsoft->piterations;          /* Positions solver iterations */
-                       objprop.m_soft_diterations= 
blenderobject->bsoft->diterations;          /* Drift solver iterations */
-                       objprop.m_soft_citerations= 
blenderobject->bsoft->citerations;          /* Cluster solver iterations */
-
-                       objprop.m_soft_kSRHR_CL= 
blenderobject->bsoft->kSRHR_CL;                /* Soft vs rigid hardness [0,1] 
(cluster only) */
-                       objprop.m_soft_kSKHR_CL= 
blenderobject->bsoft->kSKHR_CL;                /* Soft vs kinetic hardness 
[0,1] (cluster only) */
-                       objprop.m_soft_kSSHR_CL= 
blenderobject->bsoft->kSSHR_CL;                /* Soft vs soft hardness [0,1] 
(cluster only) */
-                       objprop.m_soft_kSR_SPLT_CL= 
blenderobject->bsoft->kSR_SPLT_CL;  /* Soft vs rigid impulse split [0,1] 
(cluster only) */
-
-                       objprop.m_soft_kSK_SPLT_CL= 
blenderobject->bsoft->kSK_SPLT_CL;  /* Soft vs rigid impulse split [0,1] 
(cluster only) */
-                       objprop.m_soft_kSS_SPLT_CL= 
blenderobject->bsoft->kSS_SPLT_CL;  /* Soft vs rigid impulse split [0,1] 
(cluster only) */
-                       objprop.m_soft_kVCF= blenderobject->bsoft->kVCF;        
                /* Velocities correction factor (Baumgarte) */
-                       objprop.m_soft_kDP= blenderobject->bsoft->kDP;          
        /* Damping coefficient [0,1] */
-
-                       objprop.m_soft_kDG= blenderobject->bsoft->kDG;          
        /* Drag coefficient [0,+inf] */
-                       objprop.m_soft_kLF= blenderobject->bsoft->kLF;          
        /* Lift coefficient [0,+inf] */
-                       objprop.m_soft_kPR= blenderobject->bsoft->kPR;          
        /* Pressure coefficient [-inf,+inf] */
-                       objprop.m_soft_kVC= blenderobject->bsoft->kVC;          
        /* Volume conversation coefficient [0,+inf] */
-
-                       objprop.m_soft_kDF= blenderobject->bsoft->kDF;          
        /* Dynamic friction coefficient [0,1] */
-                       objprop.m_soft_kMT= blenderobject->bsoft->kMT;          
        /* Pose matching coefficient [0,1] */
-                       objprop.m_soft_kCHR= blenderobject->bsoft->kCHR;        
                /* Rigid contacts hardness [0,1] */
-                       objprop.m_soft_kKHR= blenderobject->bsoft->kKHR;        
                /* Kinetic contacts hardness [0,1] */
-
-                       objprop.m_soft_kSHR= blenderobject->bsoft->kSHR;        
                /* Soft contacts hardness [0,1] */
-                       objprop.m_soft_kAHR= blenderobject->bsoft->kAHR;        
                /* Anchors hardness [0,1] */
-                       objprop.m_soft_collisionflags= 
blenderobject->bsoft->collisionflags;    /* Vertex/Face or Signed Distance 
Field(SDF) or Clusters, Soft versus Soft or Rigid */
-                       objprop.m_soft_numclusteriterations= 
blenderobject->bsoft->numclusteriterations;        /* number of iterations to 
refine collision clusters*/
-                       //objprop.m_soft_welding = 
blenderobject->bsoft->welding;               /* welding */
-                       /* disable welding: it doesn't bring any additional 
stability and it breaks the relation between soft body collision shape and 
graphic mesh */
-                       objprop.m_soft_welding = 0.f;
-                       objprop.m_margin = blenderobject->bsoft->margin;
-                       objprop.m_contactProcessingThreshold = 0.f;
-               } else
-               {
-                       objprop.m_gamesoftFlag = OB_BSB_BENDING_CONSTRAINTS | 
OB_BSB_SHAPE_MATCHING | OB_BSB_AERO_VPOINT;
-                       
-                       objprop.m_soft_linStiff = 0.5;
-                       objprop.m_soft_angStiff = 1.f;          /* angular 
stiffness 0..1 */
-                       objprop.m_soft_volume= 1.f;                     /* 
volume preservation 0..1 */
-
-
-                       objprop.m_soft_viterations= 0;
-                       objprop.m_soft_piterations= 1;
-                       objprop.m_soft_diterations= 0;
-                       objprop.m_soft_citerations= 4;
-
-                       objprop.m_soft_kSRHR_CL= 0.1f;
-                       objprop.m_soft_kSKHR_CL= 1.f;
-                       objprop.m_soft_kSSHR_CL= 0.5;
-                       objprop.m_soft_kSR_SPLT_CL= 0.5f;
-
-                       objprop.m_soft_kSK_SPLT_CL= 0.5f;
-                       objprop.m_soft_kSS_SPLT_CL= 0.5f;
-                       objprop.m_soft_kVCF=  1;
-                       objprop.m_soft_kDP= 0;
-
-                       objprop.m_soft_kDG= 0;
-                       objprop.m_soft_kLF= 0;
-                       objprop.m_soft_kPR= 0;
-                       objprop.m_soft_kVC= 0;
-
-                       objprop.m_soft_kDF= 0.2f;
-                       objprop.m_soft_kMT= 0.05f;
-                       objprop.m_soft_kCHR= 1.0f;
-                       objprop.m_soft_kKHR= 0.1f;
-
-                       objprop.m_soft_kSHR= 1.f;
-                       objprop.m_soft_kAHR= 0.7f;
-                       objprop.m_soft_collisionflags= OB_BSB_COL_SDF_RS + 
OB_BSB_COL_VF_SS;
-                       objprop.m_soft_numclusteriterations= 16;
-                       objprop.m_soft_welding = 0.f;
-                       objprop.m_margin = 0.f;
-                       objprop.m_contactProcessingThreshold = 0.f;
-               }
-       }
-
-       objprop.m_ghost = (blenderobject->gameflag & (OB_GHOST | OB_SENSOR | 
OB_CHARACTER)) != 0;
-       objprop.m_disableSleeping = (blenderobject->gameflag & 
OB_COLLISION_RESPONSE) != 0;//abuse the OB_COLLISION_RESPONSE flag
-       //mmm, for now, taks this for the size of the dynamicobject
-       // Blender uses inertia for radius of dynamic object
-       objprop.m_radius = blenderobject->inertia;
-       objprop.m_in_active_layer

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to