From 45f653167dc69edd31153b15532cdfbebee8e555 Mon Sep 17 00:00:00 2001 From: frohlich Date: Tue, 24 Mar 2009 08:03:15 +0000 Subject: [PATCH] Make use of optimized matrix multiplication routines in osg. Modified Files: simgear/scene/model/SGTranslateTransform.cxx --- simgear/scene/model/SGTranslateTransform.cxx | 26 +++----------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/simgear/scene/model/SGTranslateTransform.cxx b/simgear/scene/model/SGTranslateTransform.cxx index e185618e..40d63634 100644 --- a/simgear/scene/model/SGTranslateTransform.cxx +++ b/simgear/scene/model/SGTranslateTransform.cxx @@ -29,16 +29,6 @@ #include "SGTranslateTransform.hxx" -static inline void -set_translation (osg::Matrix &matrix, double position_m, const SGVec3d &axis) -{ - SGVec3d xyz = axis * position_m; - matrix.makeIdentity(); - matrix(3, 0) = xyz[0]; - matrix(3, 1) = xyz[1]; - matrix(3, 2) = xyz[2]; -} - SGTranslateTransform::SGTranslateTransform() : _axis(0, 0, 0), _value(0) @@ -59,13 +49,9 @@ SGTranslateTransform::computeLocalToWorldMatrix(osg::Matrix& matrix, osg::NodeVisitor* nv) const { if (_referenceFrame == RELATIVE_RF) { - osg::Matrix tmp; - set_translation(tmp, _value, _axis); - matrix.preMult(tmp); + matrix.preMultTranslate((_value*_axis).osg()); } else { - osg::Matrix tmp; - set_translation(tmp, _value, _axis); - matrix = tmp; + matrix.setTrans((_value*_axis).osg()); } return true; } @@ -75,13 +61,9 @@ SGTranslateTransform::computeWorldToLocalMatrix(osg::Matrix& matrix, osg::NodeVisitor* nv) const { if (_referenceFrame == RELATIVE_RF) { - osg::Matrix tmp; - set_translation(tmp, -_value, _axis); - matrix.postMult(tmp); + matrix.postMultTranslate((-_value*_axis).osg()); } else { - osg::Matrix tmp; - set_translation(tmp, -_value, _axis); - matrix = tmp; + matrix.setTrans((-_value*_axis).osg()); } return true; } -- 2.39.5