From 45f653167dc69edd31153b15532cdfbebee8e555 Mon Sep 17 00:00:00 2001
From: frohlich <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