]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/sky/moon.cxx
Work around apparent OSG 3.2.0 normal binding bug.
[simgear.git] / simgear / scene / sky / moon.cxx
index 20e1f2b078974c2bce9911078641069024abcce9..1fa724ef710a8479864a64ae5c506b0563c6c1d5 100644 (file)
 #include <osg/ShadeModel>
 #include <osg/TexEnv>
 #include <osg/Texture2D>
-#if SG_OSG_MIN_VERSION_REQUIRED(2,9,5)
-#include <osgDB/Options>
-#endif
 
 #include <simgear/constants.h>
 #include <simgear/screen/colors.hxx>
 #include <simgear/scene/model/model.hxx>
-#include <simgear/misc/PathOptions.hxx>
+#include <simgear/scene/util/SGReaderWriterOptions.hxx>
 
 #include "sphere.hxx"
 #include "moon.hxx"
@@ -78,8 +75,8 @@ SGMoon::build( SGPath path, double moon_size ) {
     stateSet->setRenderBinDetails(-5, "RenderBin");
 
     // set up the orb state
-    osg::ref_ptr<osgDB::ReaderWriter::Options> options
-        = makeOptionsFromPath(path);
+    osg::ref_ptr<SGReaderWriterOptions> options;
+    options = SGReaderWriterOptions::fromPath(path.str());
 
     osg::Texture2D* texture = SGLoadTexture2D("moon.png", options.get());
     stateSet->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON);
@@ -169,28 +166,19 @@ bool SGMoon::repaint( double moon_angle ) {
 // declination, offset by our current position (p) so that it appears
 // fixed at a great distance from the viewer.  Also add in an optional
 // rotation (i.e. for the current time of day.)
-bool SGMoon::reposition( const SGVec3f& p, double angle,
-                        double rightAscension, double declination,
+bool SGMoon::reposition( double rightAscension, double declination,
                         double moon_dist )
 {
-    osg::Matrix T1, T2, GST, RA, DEC;
-
-    T1.makeTranslate(p.osg());
-
-    GST.makeRotate(SGD_DEGREES_TO_RADIANS*angle, osg::Vec3(0, 0, -1));
+    osg::Matrix T2, RA, DEC;
 
-    // xglRotatef( ((SGD_RADIANS_TO_DEGREES * rightAscension)- 90.0),
-    //             0.0, 0.0, 1.0);
     RA.makeRotate(rightAscension - 90.0 * SGD_DEGREES_TO_RADIANS,
                   osg::Vec3(0, 0, 1));
 
-    // xglRotatef((SGD_RADIANS_TO_DEGREES * declination), 1.0, 0.0, 0.0);
     DEC.makeRotate(declination, osg::Vec3(1, 0, 0));
 
-    // xglTranslatef(0,moon_dist);
     T2.makeTranslate(osg::Vec3(0, moon_dist, 0));
 
-    moon_transform->setMatrix(T2*DEC*RA*GST*T1);
+    moon_transform->setMatrix(T2*DEC*RA);
 
     return true;
 }