Selaa lähdekoodia

Fix for Issue #108 Turret Heading Node

DavidWyand-GG 13 vuotta sitten
vanhempi
commit
956f304e4d
1 muutettua tiedostoa jossa 20 lisäystä ja 4 poistoa
  1. 20 4
      Engine/source/T3D/turret/turretShape.cpp

+ 20 - 4
Engine/source/T3D/turret/turretShape.cpp

@@ -824,7 +824,11 @@ void TurretShape::_updateNodes(const Point3F& rot)
    {
       MatrixF* mat = &mShapeInstance->mNodeTransforms[node];
       Point3F defaultPos = mShapeInstance->getShape()->defaultTranslations[node];
-      mat->set(zRot);
+      Quat16 defaultRot = mShapeInstance->getShape()->defaultRotations[node];
+
+      QuatF qrot(zRot);
+      qrot *= defaultRot.getQuatF();
+      qrot.setMatrix( mat );      
       mat->setColumn(3, defaultPos);
    }
 
@@ -834,7 +838,11 @@ void TurretShape::_updateNodes(const Point3F& rot)
    {
       MatrixF* mat = &mShapeInstance->mNodeTransforms[node];
       Point3F defaultPos = mShapeInstance->getShape()->defaultTranslations[node];
-      mat->set(xRot);
+      Quat16 defaultRot = mShapeInstance->getShape()->defaultRotations[node];
+
+      QuatF qrot(xRot);
+      qrot *= defaultRot.getQuatF();
+      qrot.setMatrix( mat );    
       mat->setColumn(3, defaultPos);
    }
 
@@ -846,7 +854,11 @@ void TurretShape::_updateNodes(const Point3F& rot)
       {
          MatrixF* mat = &mShapeInstance->mNodeTransforms[node];
          Point3F defaultPos = mShapeInstance->getShape()->defaultTranslations[node];
-         mat->set(xRot);
+         Quat16 defaultRot = mShapeInstance->getShape()->defaultRotations[node];         
+
+         QuatF qrot(xRot);
+         qrot *= defaultRot.getQuatF();
+         qrot.setMatrix( mat );    
          mat->setColumn(3, defaultPos);
       }
 
@@ -855,7 +867,11 @@ void TurretShape::_updateNodes(const Point3F& rot)
       {
          MatrixF* mat = &mShapeInstance->mNodeTransforms[node];
          Point3F defaultPos = mShapeInstance->getShape()->defaultTranslations[node];
-         mat->set(zRot);
+         Quat16 defaultRot = mShapeInstance->getShape()->defaultRotations[node];
+
+         QuatF qrot(zRot);
+         qrot *= defaultRot.getQuatF();
+         qrot.setMatrix( mat );      
          mat->setColumn(3, defaultPos);
       }
    }