From 956f304e4d25bd3eccbf9f9d93730dedad9c49fd Mon Sep 17 00:00:00 2001 From: DavidWyand-GG Date: Mon, 5 Nov 2012 15:36:58 -0500 Subject: [PATCH] Fix for Issue #108 Turret Heading Node --- Engine/source/T3D/turret/turretShape.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/Engine/source/T3D/turret/turretShape.cpp b/Engine/source/T3D/turret/turretShape.cpp index de86ee177..59f20a3e1 100644 --- a/Engine/source/T3D/turret/turretShape.cpp +++ b/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); } }