14 #ifndef OSG_NODEVISITOR
15 #define OSG_NODEVISITOR 1
19 #include <osg/FrameStamp>
26 class CoordinateSystemNode;
31 class MatrixTransform;
33 class OcclusionQueryNode;
35 class PositionAttitudeTransform;
49 #define META_NodeVisitor(library, name) \
50 virtual const char* libraryName() const { return #library; }\
51 virtual const char* className() const { return #name; }
76 TRAVERSE_ACTIVE_CHILDREN
101 virtual
NodeVisitor* asNodeVisitor() {
return this; }
168 return (getTraversalMask() & (getNodeMaskOverride() | node.
getNodeMask()))!=0;
187 if (_traversalMode==TRAVERSE_PARENTS) node.
ascend(*
this);
188 else if (_traversalMode!=TRAVERSE_NONE) node.
traverse(*
this);
198 inline void pushOntoNodePath(
Node* node) {
if (_traversalMode!=TRAVERSE_PARENTS) _nodePath.push_back(node);
else _nodePath.insert(_nodePath.begin(),node); }
204 inline void popFromNodePath() {
if (_traversalMode!=TRAVERSE_PARENTS) _nodePath.pop_back();
else _nodePath.erase(_nodePath.begin()); }
237 virtual void apply(
Drawable& drawable);
238 virtual void apply(
Geometry& geometry);
240 virtual void apply(
Node& node);
242 virtual void apply(
Geode& node);
245 virtual void apply(
Group& node);
258 virtual void apply(
Camera& node);
263 virtual void apply(
Switch& node);
265 virtual void apply(
LOD& node);
304 virtual double getPreLoadTime()
const = 0;
NodeAcceptOp(const NodeAcceptOp &naop)
void setTraversalNumber(unsigned int fn)
TraversalMode _traversalMode
ImageRequestHandler * getImageRequestHandler()
ref_ptr< FrameStamp > _frameStamp
Node::NodeMask getTraversalMask() const
unsigned int getTraversalNumber() const
virtual float getDistanceToViewPoint(const Vec3 &, bool) const
NodeMask getNodeMask() const
Node::NodeMask _nodeMaskOverride
void setVisitorType(VisitorType type)
bool validNodeMask(const osg::Node &node) const
NodeAcceptOp & operator=(const NodeAcceptOp &)
virtual const NodeVisitor * asNodeVisitor() const
virtual ~ImageRequestHandler()
TraversalMode getTraversalMode() const
NodeAcceptOp(NodeVisitor &nv)
Node::NodeMask _traversalMask
virtual float getDistanceFromEyePoint(const Vec3 &, bool) const
virtual osg::Vec3 getEyePoint() const
void operator()(Node *node)
VisitorType getVisitorType() const
META_Object(osg, NodeVisitor) virtual NodeVisitor *asNodeVisitor()
const FrameStamp * getFrameStamp() const
virtual osg::Vec3 getViewPoint() const
unsigned int _traversalNumber
void traverse(Node &node)
const NodePath & getNodePath() const
virtual void accept(NodeVisitor &nv)
void setTraversalMode(TraversalMode mode)
virtual void ascend(NodeVisitor &nv)
const DatabaseRequestHandler * getDatabaseRequestHandler() const
ref_ptr< DatabaseRequestHandler > _databaseRequestHandler
void pushOntoNodePath(Node *node)
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
virtual void traverse(NodeVisitor &)
virtual float getDistanceToEyePoint(const Vec3 &, bool) const
DatabaseRequestHandler * getDatabaseRequestHandler()
void setFrameStamp(FrameStamp *fs)
virtual ~DatabaseRequestHandler()
Node::NodeMask getNodeMaskOverride() const
void setImageRequestHandler(ImageRequestHandler *handler)
void setTraversalMask(Node::NodeMask mask)
void setNodeMaskOverride(Node::NodeMask mask)
ref_ptr< ImageRequestHandler > _imageRequestHandler
OSGDB_EXPORT osg::Image * readImageFile(const std::string &filename, const Options *options)
std::vector< Node * > NodePath
const unsigned int UNINITIALIZED_FRAME_NUMBER
void setDatabaseRequestHandler(DatabaseRequestHandler *handler)
const ImageRequestHandler * getImageRequestHandler() const