diff options
Diffstat (limited to 'source/gameengine/Ketsji/KX_GameObject.cpp')
-rw-r--r-- | source/gameengine/Ketsji/KX_GameObject.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index 8193aa8c37b..a02fd9cec1b 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -46,6 +46,7 @@ typedef unsigned long uint_ptr; #define KX_INERTIA_INFINITE 10000 +#include "BLI_arithb.h" #include "RAS_IPolygonMaterial.h" #include "KX_BlenderMaterial.h" #include "KX_GameObject.h" @@ -454,6 +455,22 @@ double* KX_GameObject::GetOpenGLMatrix() return fl; } +void KX_GameObject::UpdateBlenderObjectMatrix(Object* blendobj) +{ + if (!blendobj) + blendobj = m_pBlenderObject; + if (blendobj) { + const MT_Matrix3x3& rot = NodeGetWorldOrientation(); + const MT_Vector3& scale = NodeGetWorldScaling(); + const MT_Vector3& pos = NodeGetWorldPosition(); + rot.getValue(blendobj->obmat[0]); + pos.getValue(blendobj->obmat[3]); + VecMulf(blendobj->obmat[0], scale[0]); + VecMulf(blendobj->obmat[1], scale[1]); + VecMulf(blendobj->obmat[2], scale[2]); + } +} + void KX_GameObject::AddMeshUser() { for (size_t i=0;i<m_meshes.size();i++) |