#include <osg/ref_ptr>
#include <osg/Node>
#include <osg/Switch>
+#include <osg/PositionAttitudeTransform>
-#include <simgear/props/props.hxx>
-
-#include "placementtrans.hxx"
-
-// Don't pull in the headers, since we don't need them here.
-class SGLocation;
-
+#include <simgear/math/SGMath.hxx>
// Has anyone done anything *really* stupid, like making min and max macros?
#ifdef min
virtual osg::Node* getSceneGraph () { return _selector.get(); }
- virtual SGLocation * getSGLocation () { return _location; }
-
virtual bool getVisible () const;
virtual void setVisible (bool visible);
- virtual double getLongitudeDeg () const { return _lon_deg; }
- virtual double getLatitudeDeg () const { return _lat_deg; }
- virtual double getElevationFt () const { return _elev_ft; }
+ virtual double getLongitudeDeg () const { return _position.getLongitudeDeg(); }
+ virtual double getLatitudeDeg () const { return _position.getLatitudeDeg(); }
+ virtual double getElevationFt () const { return _position.getElevationFt(); }
virtual void setLongitudeDeg (double lon_deg);
virtual void setLatitudeDeg (double lat_deg);
virtual void setElevationFt (double elev_ft);
virtual void setPosition (double lon_deg, double lat_deg, double elev_ft);
void setPosition(const SGGeod& position);
+ const SGGeod& getPosition() const { return _position; }
virtual double getRollDeg () const { return _roll_deg; }
virtual double getPitchDeg () const { return _pitch_deg; }
virtual void setOrientation (double roll_deg, double pitch_deg,
double heading_deg);
void setOrientation(const SGQuatd& orientation);
+
+ void setReferenceTime(const double& referenceTime);
+ void setBodyLinearVelocity(const SGVec3d& velocity);
+ void setBodyAngularVelocity(const SGVec3d& velocity);
private:
-
// Geodetic position
- double _lon_deg;
- double _lat_deg;
- double _elev_ft;
+ SGGeod _position;
// Orientation
double _roll_deg;
double _heading_deg;
osg::ref_ptr<osg::Switch> _selector;
- osg::ref_ptr<SGPlacementTransform> _position;
-
- // Location
- SGLocation * _location;
+ osg::ref_ptr<osg::PositionAttitudeTransform> _transform;
};
#endif // _SG_PLACEMENT_HXX