Quellcode durchsuchen

Merge pull request #979 from sgrenier/next

Fixes physics issues for ghost objects and kinematic rigid bodies introduced by previous commit
Steve Grenier vor 12 Jahren
Ursprung
Commit
9fba645590
2 geänderte Dateien mit 10 neuen und 3 gelöschten Zeilen
  1. 1 1
      gameplay/src/Node.cpp
  2. 9 2
      gameplay/src/PhysicsCollisionObject.cpp

+ 1 - 1
gameplay/src/Node.cpp

@@ -420,7 +420,7 @@ const Matrix& Node::getWorldMatrix() const
             // If we have a parent, multiply our parent world transform by our local
             // If we have a parent, multiply our parent world transform by our local
             // transform to obtain our final resolved world transform.
             // transform to obtain our final resolved world transform.
             Node* parent = getParent();
             Node* parent = getParent();
-            if (parent)
+            if (parent && (!_collisionObject || _collisionObject->isKinematic()))
             {
             {
                 Matrix::multiply(parent->getWorldMatrix(), getMatrix(), &_world);
                 Matrix::multiply(parent->getWorldMatrix(), getMatrix(), &_world);
             }
             }

+ 9 - 2
gameplay/src/PhysicsCollisionObject.cpp

@@ -87,8 +87,15 @@ bool PhysicsCollisionObject::isKinematic() const
 
 
 bool PhysicsCollisionObject::isStatic() const
 bool PhysicsCollisionObject::isStatic() const
 {
 {
-    GP_ASSERT(getCollisionObject());
-    return getCollisionObject()->isStaticObject();
+    switch (getType())
+    {
+    case GHOST_OBJECT:
+    case CHARACTER:
+        return false;
+    default:
+        GP_ASSERT(getCollisionObject());
+        return getCollisionObject()->isStaticObject();
+    }
 }
 }
 
 
 bool PhysicsCollisionObject::isDynamic() const
 bool PhysicsCollisionObject::isDynamic() const