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:
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-07-16 04:08:06 +0400
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-07-16 04:08:06 +0400
commit7398803bf45c338062a8ce8e4960bbf53bb18d81 (patch)
tree6cbd53b00ac3191e5e6eff00fc5068d343cac4f4 /source/gameengine
parent07f294cf4a0af8797a46bc4b77ee1084ab2c552e (diff)
Fix to not create invalid bound shapes from non mesh objects (armatures).
Diffstat (limited to 'source/gameengine')
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp61
1 files changed, 36 insertions, 25 deletions
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index 706c923591d..e0d460d18d6 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -503,7 +503,7 @@ static PHY_ShapeProps *CreateShapePropsFromBlenderObject(struct Object* blendero
-float my_boundbox_mesh(Mesh *me, float *loc, float *size)
+static float my_boundbox_mesh(Mesh *me, float *loc, float *size)
{
MVert *mvert;
BoundBox *bb;
@@ -560,7 +560,7 @@ float my_boundbox_mesh(Mesh *me, float *loc, float *size)
-void my_tex_space_mesh(Mesh *me)
+static void my_tex_space_mesh(Mesh *me)
{
KeyBlock *kb;
float *fp, loc[3], size[3], min[3], max[3];
@@ -610,30 +610,38 @@ void my_tex_space_mesh(Mesh *me)
}
-void my_get_local_bounds(Object *ob, float *centre, float *size)
+static void my_get_local_bounds(Object *ob, float *centre, float *size)
{
BoundBox *bb= NULL;
/* uses boundbox, function used by Ketsji */
-
- if(ob->type==OB_MESH) {
- bb= ( (Mesh *)ob->data )->bb;
- if(bb==0) {
- my_tex_space_mesh((struct Mesh *)ob->data);
+ switch (ob->type)
+ {
+ case OB_MESH:
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:
+ case OB_FONT:
+ centre[0]= centre[1]= centre[2]= 0.0;
+ size[0] = size[1]=size[2]=0.0;
+ break;
+ case OB_MBALL:
+ bb= ob->bb;
+ break;
}
- else if ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT) {
+
+ if(bb==NULL)
+ {
centre[0]= centre[1]= centre[2]= 0.0;
- size[0] = size[1]=size[2]=0.0;
+ size[0] = size[1]=size[2]=1.0;
}
- else if(ob->type==OB_MBALL) {
- bb= ob->bb;
- }
- if(bb==NULL) {
- centre[0]= centre[1]= centre[2]= 0.0;
- size[0] = size[1]=size[2]=0.0;
- }
- else {
+ else
+ {
size[0]= 0.5*fabs(bb->vec[0][0] - bb->vec[4][0]);
size[1]= 0.5*fabs(bb->vec[0][1] - bb->vec[2][1]);
size[2]= 0.5*fabs(bb->vec[0][2] - bb->vec[1][2]);
@@ -641,7 +649,7 @@ void my_get_local_bounds(Object *ob, float *centre, float *size)
centre[0]= 0.5*(bb->vec[0][0] + bb->vec[4][0]);
centre[1]= 0.5*(bb->vec[0][1] + bb->vec[2][1]);
centre[2]= 0.5*(bb->vec[0][2] + bb->vec[1][2]);
- }
+ }
}
@@ -707,6 +715,14 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_boundobject.box.m_extends[1]=2.f*bb.m_extends[1];
objprop.m_boundobject.box.m_extends[2]=2.f*bb.m_extends[2];
break;
+ case OB_BOUND_POLYH:
+ if (blenderobject->type == OB_MESH)
+ {
+ objprop.m_boundclass = KX_BOUNDMESH;
+ break;
+ }
+ // Object is not a mesh... can't use polyheder.
+ // Fall through and become a sphere.
case OB_BOUND_SPHERE:
{
objprop.m_boundclass = KX_BOUNDSPHERE;
@@ -727,11 +743,6 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_boundobject.c.m_height = 2.f*bb.m_extends[2];
break;
}
- case OB_BOUND_POLYH:
- {
- objprop.m_boundclass = KX_BOUNDMESH;
- break;
- }
}
}