]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/model/SGScaleTransform.cxx
Merge branch 'next' of git.gitorious.org:fg/simgear into next
[simgear.git] / simgear / scene / model / SGScaleTransform.cxx
index 4907cbd97e764bbbdf5aef16041b8bbc459bf64a..7b485590df2a7ce25fad74eb80caea3d1c6f22af 100644 (file)
@@ -35,6 +35,11 @@ SGScaleTransform::SGScaleTransform() :
   _boundScale(1)
 {
   setReferenceFrame(RELATIVE_RF);
+  // see osg::Transform doc: If the transformation matrix scales the subgraph
+  // then the normals of the underlying geometry will need to be renormalized
+  // to be unit vectors once more.
+  osg::StateSet* stateset = getOrCreateStateSet();
+  stateset->setMode(GL_NORMALIZE, osg::StateAttribute::ON);
 }
 
 SGScaleTransform::SGScaleTransform(const SGScaleTransform& scale,
@@ -112,7 +117,7 @@ bool ScaleTransform_readLocalData(osg::Object& obj, osgDB::Input& fr)
             fr += 3;
         else
             return false;
-        scale.setCenter(SGVec3d(center));
+        scale.setCenter(toSG(center));
     }
     if (fr[0].matchWord("scaleFactor")) {
         ++fr;
@@ -121,7 +126,7 @@ bool ScaleTransform_readLocalData(osg::Object& obj, osgDB::Input& fr)
             fr += 3;
         else
             return false;
-        scale.setScaleFactor(SGVec3d(scaleFactor));
+        scale.setScaleFactor(toSG(scaleFactor));
     }
     return true;
 }