From dadbd034434ba5807987514e76ee5917aed0777f Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 16 Jul 2002 19:19:31 +0000 Subject: [PATCH] Fix to DOF Record from Sasa Bistrovic --- src/osgPlugins/flt/flt2osg.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/osgPlugins/flt/flt2osg.cpp b/src/osgPlugins/flt/flt2osg.cpp index ffad09044..48ed8bf9c 100644 --- a/src/osgPlugins/flt/flt2osg.cpp +++ b/src/osgPlugins/flt/flt2osg.cpp @@ -637,7 +637,27 @@ osg::Group* ConvertFromFLT::visitDOF(osg::Group& osgParent, DofRecord* rec) // a Group... I will leave for other more familiar with the // DofRecord to create the matrix as I don't have any Open Flight // documentation. RO August 2001. - + + // below is DOF code submitted by Sasa Bistrovic + SDegreeOfFreedom* p_data = rec->getData(); + + osg::Matrix mat; + + mat.makeTranslate(_unitScale*p_data->dfX._dfCurrent, + _unitScale*p_data->dfY._dfCurrent, + _unitScale*p_data->dfZ._dfCurrent); + + float roll_rad = osg::inDegrees(p_data->dfRoll._dfCurrent); + float pitch_rad = osg::inDegrees(p_data->dfPitch._dfCurrent); + float yaw_rad = osg::inDegrees(p_data->dfYaw._dfCurrent); + + osg::Matrix mat_rot = osg::Matrix::rotate(-yaw_rad, pitch_rad,roll_rad); + + mat.preMult(mat_rot); + + transform->setMatrix(mat); + + return transform; return transform; }