Placement can contain multiple nodes.

- Allow placement to have multiple children added.
- Remove legacy position setting APIs, enforce use of SGGeod
This commit is contained in:
James Turner
2013-10-20 20:44:42 +01:00
parent 0b197501e1
commit 49730cadee
2 changed files with 11 additions and 34 deletions

View File

@@ -36,14 +36,22 @@ SGModelPlacement::~SGModelPlacement ()
void
SGModelPlacement::init( osg::Node * model )
{
// remove previous model (in case of reinit)
_transform->removeChild(0,1);
// remove previous models (in case of reinit)
_transform->removeChild(0, _transform->getNumChildren());
if (model != 0) {
_transform->addChild(model);
}
_selector->setValue(0, 1);
}
void
SGModelPlacement::add( osg::Node* model )
{
if (model != 0) {
_transform->addChild(model);
}
}
void SGModelPlacement::clear()
{
_selector = NULL;
@@ -80,30 +88,6 @@ SGModelPlacement::setVisible (bool visible)
_selector->setValue(0, visible);
}
void
SGModelPlacement::setLongitudeDeg (double lon_deg)
{
_position.setLongitudeDeg(lon_deg);
}
void
SGModelPlacement::setLatitudeDeg (double lat_deg)
{
_position.setLatitudeDeg(lat_deg);
}
void
SGModelPlacement::setElevationFt (double elev_ft)
{
_position.setElevationFt(elev_ft);
}
void
SGModelPlacement::setPosition (double lon_deg, double lat_deg, double elev_ft)
{
_position = SGGeod::fromDegFt(lon_deg, lat_deg, elev_ft);
}
void
SGModelPlacement::setPosition(const SGGeod& position)
{

View File

@@ -43,6 +43,7 @@ public:
virtual void init( osg::Node* model );
void clear();
void add( osg::Node* model );
virtual void update();
@@ -51,14 +52,6 @@ public:
virtual bool getVisible () const;
virtual void setVisible (bool visible);
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; }