/* -*-c++-*- */ /* osgEarth - Geospatial SDK for OpenSceneGraph * Copyright 2020 Pelican Mapping * http://osgearth.org * * osgEarth is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see */ #ifndef OSGEARTH_METADATANODE_H #define OSGEARTH_METADATANODE_H 1 #include #include #include #include #include #include namespace osgEarth { class OSGEARTH_EXPORT MetadataNode : public osg::Group { public: MetadataNode(); MetadataNode(const MetadataNode& rhs, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); META_Node(osgEarth, MetadataNode); virtual ~MetadataNode(); virtual ObjectID add(Feature* feature, bool visible = true); virtual void tagDrawable(osg::Drawable* drawable, ObjectID id) const; virtual void tagNode(osg::Node* node, ObjectID id) const; virtual void finalize(); virtual unsigned int getNumFeatures() const; virtual bool getVisible(unsigned int index) const; virtual void setVisible(unsigned int index, bool value); virtual ObjectID getObjectID(unsigned index) const; virtual const Feature* getFeature(unsigned int index) const; virtual Feature* getFeature(unsigned int index); virtual int getIndexFromObjectID(ObjectID id) const; protected: virtual void init(); std::vector< osg::ref_ptr< Feature > > _features; osg::ref_ptr< osg::Vec2uiArray > _instances; }; } // namespace osgEarth #endif // OSGEARTH_METADATANODE_H