
Add pitch and roll interpretation in STG
By: a guest on
May 20th, 2012 | syntax:
None | size: 1.35 KB | hits: 25 | expires: Never
diff --git a/simgear/scene/tgdb/ReaderWriterSTG.cxx b/simgear/scene/tgdb/ReaderWriterSTG.cxx
index 21a47ba..3d1ba29 100644
--- a/simgear/scene/tgdb/ReaderWriterSTG.cxx
+++ b/simgear/scene/tgdb/ReaderWriterSTG.cxx
@@ -281,7 +281,22 @@ ReaderWriterSTG::readStgFile(const std::string& absoluteFileName,
matrix = makeZUpFrame(SGGeod::fromDegM(lon, lat, elev));
matrix.preMultRotate(osg::Quat(SGMiscd::deg2rad(hdg),
osg::Vec3(0, 0, 1)));
-
+
+ while ( (in.peek() != '\n') && (in.peek() != '\r') &&
+ isspace(in.peek()) ) {
+ in.get();
+ }
+
+ if (isdigit(in.peek())){
+ double pitch(0.0), roll(0.0);
+ in >> pitch >> roll;
+
+ matrix.preMultRotate(osg::Quat(SGMiscd::deg2rad(pitch),
+ osg::Vec3(1, 0, 0)));
+ matrix.preMultRotate(osg::Quat(SGMiscd::deg2rad(roll),
+ osg::Vec3(0, 1, 0)));
+ }
+
osg::MatrixTransform* matrixTransform;
matrixTransform = new osg::MatrixTransform(matrix);
matrixTransform->setDataVariance(osg::Object::STATIC);