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:
Diffstat (limited to 'source/gameengine/Converter/BL_BlenderDataConversion.cpp')
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp60
1 files changed, 41 insertions, 19 deletions
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index c1923bea2d9..0a5b30118a3 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -62,7 +62,6 @@
#include "KX_ConvertControllers.h"
#include "KX_ConvertSensors.h"
-#include "KX_GameObject.h"
#include "SCA_LogicManager.h"
#include "SCA_EventManager.h"
#include "SCA_TimeEventManager.h"
@@ -71,6 +70,7 @@
#include "KX_EmptyObject.h"
#include "MT_Point3.h"
#include "MT_Transform.h"
+#include "MT_MinMax.h"
#include "SCA_IInputDevice.h"
#include "RAS_TexMatrix.h"
#include "RAS_ICanvas.h"
@@ -175,9 +175,9 @@ static unsigned int KX_Mcol2uint_new(MCol col)
unsigned int temp=0;
unsigned char *cp= (unsigned char *)&temp;
cp[3]=255;
- cp[2]= col.r;
+ cp[0]= col.r;
cp[1]= col.g;
- cp[0]= col.b;
+ cp[2]= col.b;
return temp;
}
@@ -580,7 +580,7 @@ void my_tex_space_mesh(Mesh *me)
my_boundbox_mesh(me, loc, size);
- if(me->texflag & ME_AUTOSPACE) {
+ if(me->texflag & AUTOSPACE) {
if(me->key) {
kb= me->key->refkey;
if (kb) {
@@ -650,9 +650,9 @@ void my_get_local_bounds(Object *ob, float *centre, float *size)
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]);
- centre[0]= (bb->vec[0][0] + bb->vec[4][0])/2.0;
- centre[1]= (bb->vec[0][1] + bb->vec[2][1])/2.0;
- centre[2]= (bb->vec[0][2] + bb->vec[1][2])/2.0;
+ 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]);
}
}
@@ -699,13 +699,42 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_ghost = (blenderobject->gameflag & OB_GHOST) != 0;
objprop.m_dynamic_parent=NULL;
objprop.m_isdeformable = ((blenderobject->gameflag2 & 2)) != 0;
- objprop.m_implicitsphere = false;
- objprop.m_implicitbox = false;
+ objprop.m_boundclass = objprop.m_dyna?KX_BOUNDSPHERE:KX_BOUNDMESH;
- if (blenderobject->dtx & OB_BOUNDBOX)
+ KX_BoxBounds bb;
+ my_get_local_bounds(blenderobject,objprop.m_boundobject.box.m_center,bb.m_extends);
+ if (blenderobject->gameflag & OB_BOUNDS)
{
- objprop.m_implicitsphere = (blenderobject->boundtype == OB_BOUND_SPHERE);
- objprop.m_implicitbox = (blenderobject->boundtype == OB_BOUND_BOX);
+ switch (blenderobject->boundtype)
+ {
+ case OB_BOUND_BOX:
+ objprop.m_boundclass = KX_BOUNDBOX;
+ //mmm, has to be divided by 2 to be proper extends
+ objprop.m_boundobject.box.m_extends[0]=2.f*bb.m_extends[0];
+ 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_SPHERE:
+ {
+ objprop.m_boundclass = KX_BOUNDSPHERE;
+ objprop.m_boundobject.c.m_radius = MT_max(bb.m_extends[0], MT_max(bb.m_extends[1], bb.m_extends[2]));
+ break;
+ }
+ case OB_BOUND_CYLINDER:
+ {
+ objprop.m_boundclass = KX_BOUNDCYLINDER;
+ objprop.m_boundobject.c.m_radius = MT_max(bb.m_extends[0], bb.m_extends[1]);
+ objprop.m_boundobject.c.m_height = 2.f*bb.m_extends[2];
+ break;
+ }
+ case OB_BOUND_CONE:
+ {
+ objprop.m_boundclass = KX_BOUNDCONE;
+ objprop.m_boundobject.c.m_radius = MT_max(bb.m_extends[0], bb.m_extends[1]);
+ objprop.m_boundobject.c.m_height = 2.f*bb.m_extends[2];
+ break;
+ }
+ }
}
// get Root Parent of blenderobject
@@ -724,13 +753,6 @@ void BL_CreatePhysicsObjectNew(KX_GameObject* gameobj,
objprop.m_isactor = (blenderobject->gameflag & OB_ACTOR)!=0;
objprop.m_concave = (blenderobject->boundtype & 4) != 0;
-
- my_get_local_bounds(blenderobject,objprop.m_boundingbox.m_center,objprop.m_boundingbox.m_extends);
- //mmm, has to be divided by 2 to be proper extends
- objprop.m_boundingbox.m_extends[0]*=2.f;
- objprop.m_boundingbox.m_extends[1]*=2.f;
- objprop.m_boundingbox.m_extends[2]*=2.f;
-
switch (physics_engine)
{
case UseSumo: