void EllipseNode::rebuild() { osgEarth::clearChildren( getPositionAttitudeTransform() ); // construct a local-origin ellipse. GeometryFactory factory; Geometry* geom = NULL; if (std::abs(_arcEnd.as(Units::DEGREES) - _arcStart.as(Units::DEGREES)) >= 360.0) { geom = factory.createEllipse(osg::Vec3d(0,0,0), _radiusMajor, _radiusMinor, _rotationAngle, _numSegments); } else { geom = factory.createEllipticalArc(osg::Vec3d(0,0,0), _radiusMajor, _radiusMinor, _rotationAngle, _arcStart, _arcEnd, _numSegments, 0L, _pie); } if ( geom ) { GeometryCompiler compiler; osg::ref_ptr<Feature> feature = new Feature(geom, 0L); //todo: consider the SRS osg::ref_ptr<osg::Node> node = compiler.compile( feature.get(), _style, FilterContext(0L) ); if ( node ) { node = AnnotationUtils::installOverlayParent(node.get(), _style); getPositionAttitudeTransform()->addChild( node.get() ); } applyRenderSymbology( _style ); setLightingIfNotSet( false ); } }
void EllipseNode::rebuildGeometry() { // construct a local-origin ellipse. GeometryFactory factory; osg::ref_ptr<Geometry> geom; if (std::abs(_arcEnd.as(Units::DEGREES) - _arcStart.as(Units::DEGREES)) >= 360.0) { geom = factory.createEllipse(osg::Vec3d(0,0,0), _radiusMajor, _radiusMinor, _rotationAngle, _numSegments); } else { geom = factory.createEllipticalArc(osg::Vec3d(0,0,0), _radiusMajor, _radiusMinor, _rotationAngle, _arcStart, _arcEnd, _numSegments, 0L, _pie); } if ( geom.valid() ) { setGeometry( geom.get() ); } }
void EllipseNode::rebuild() { std::string currentDecoration = getDecoration(); clearDecoration(); //Remove all children from this node osgEarth::clearChildren( this ); osgEarth::clearChildren( _xform.get() ); this->addChild( _xform.get() ); // construct a local-origin ellipse. GeometryFactory factory; Geometry* geom = NULL; if (std::abs(_arcEnd.as(Units::DEGREES) - _arcStart.as(Units::DEGREES)) >= 360.0) { geom = factory.createEllipse(osg::Vec3d(0,0,0), _radiusMajor, _radiusMinor, _rotationAngle, _numSegments); } else { geom = factory.createEllipticalArc(osg::Vec3d(0,0,0), _radiusMajor, _radiusMinor, _rotationAngle, _arcStart, _arcEnd, _numSegments, 0L, _pie); } if ( geom ) { GeometryCompiler compiler; osg::ref_ptr<Feature> feature = new Feature(geom, 0L); //todo: consider the SRS osg::Node* node = compiler.compile( feature.get(), _style, FilterContext(0L) ); if ( node ) { _xform->addChild( node ); this->replaceChild( _xform.get(), applyAltitudePolicy(_xform.get(), _style) ); } applyRenderSymbology( _style ); setLightingIfNotSet( false ); } setDecoration( currentDecoration ); }