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:
@@ -36,14 +36,22 @@ SGModelPlacement::~SGModelPlacement ()
|
|||||||
void
|
void
|
||||||
SGModelPlacement::init( osg::Node * model )
|
SGModelPlacement::init( osg::Node * model )
|
||||||
{
|
{
|
||||||
// remove previous model (in case of reinit)
|
// remove previous models (in case of reinit)
|
||||||
_transform->removeChild(0,1);
|
_transform->removeChild(0, _transform->getNumChildren());
|
||||||
if (model != 0) {
|
if (model != 0) {
|
||||||
_transform->addChild(model);
|
_transform->addChild(model);
|
||||||
}
|
}
|
||||||
_selector->setValue(0, 1);
|
_selector->setValue(0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SGModelPlacement::add( osg::Node* model )
|
||||||
|
{
|
||||||
|
if (model != 0) {
|
||||||
|
_transform->addChild(model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SGModelPlacement::clear()
|
void SGModelPlacement::clear()
|
||||||
{
|
{
|
||||||
_selector = NULL;
|
_selector = NULL;
|
||||||
@@ -80,30 +88,6 @@ SGModelPlacement::setVisible (bool visible)
|
|||||||
_selector->setValue(0, 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
|
void
|
||||||
SGModelPlacement::setPosition(const SGGeod& position)
|
SGModelPlacement::setPosition(const SGGeod& position)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ public:
|
|||||||
|
|
||||||
virtual void init( osg::Node* model );
|
virtual void init( osg::Node* model );
|
||||||
void clear();
|
void clear();
|
||||||
|
void add( osg::Node* model );
|
||||||
|
|
||||||
virtual void update();
|
virtual void update();
|
||||||
|
|
||||||
@@ -51,14 +52,6 @@ public:
|
|||||||
virtual bool getVisible () const;
|
virtual bool getVisible () const;
|
||||||
virtual void setVisible (bool visible);
|
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);
|
void setPosition(const SGGeod& position);
|
||||||
const SGGeod& getPosition() const { return _position; }
|
const SGGeod& getPosition() const { return _position; }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user