14#ifndef OSG_NODEVISITOR
15#define OSG_NODEVISITOR 1
26namespace osgGA {
class EventVisitor; }
33class CoordinateSystemNode;
40class OcclusionQueryNode;
42class PositionAttitudeTransform;
44class MultiViewAutoTransform;
63#define META_NodeVisitor(library, name) \
64 virtual const char* libraryName() const { return #library; }\
65 virtual const char* className() const { return #name; }
90 TRAVERSE_ACTIVE_CHILDREN
115 virtual NodeVisitor* asNodeVisitor() {
return this; }
223 return (getTraversalMask() & (getNodeMaskOverride() | node.
getNodeMask()))!=0;
249 if (!_valueMap) _valueMap =
new ValueMap;
250 return _valueMap.get();
265 if (!_valueStack) _valueStack =
new ValueStack;
266 return _valueStack.get();
276 if (_traversalMode==TRAVERSE_PARENTS) node.
ascend(*
this);
277 else if (_traversalMode!=TRAVERSE_NONE) node.
traverse(*
this);
287 inline void pushOntoNodePath(
Node* node) {
if (_traversalMode!=TRAVERSE_PARENTS) _nodePath.push_back(node);
else _nodePath.insert(_nodePath.begin(),node); }
293 inline void popFromNodePath() {
if (_traversalMode!=TRAVERSE_PARENTS) _nodePath.pop_back();
else _nodePath.erase(_nodePath.begin()); }
Definition EventVisitor:42
Definition CullVisitor:49
Definition IntersectionVisitor:152
Definition UpdateVisitor:38
Definition CoordinateSystemNode:96
@ SHALLOW_COPY
Definition CopyOp:47
Definition LightSource:25
Definition NodeVisitor:438
NodeAcceptOp(const NodeAcceptOp &naop)
Definition NodeVisitor:442
NodeAcceptOp & operator=(const NodeAcceptOp &)
Definition NodeVisitor:449
void operator()(Node *node)
Definition NodeVisitor:444
NodeVisitor & _nv
Definition NodeVisitor:451
NodeAcceptOp(NodeVisitor &nv)
Definition NodeVisitor:441
Definition NodeVisitor:364
virtual void requestNodeFile(const std::string &fileName, osg::NodePath &nodePath, float priority, const FrameStamp *framestamp, osg::ref_ptr< osg::Referenced > &databaseRequest, const osg::Referenced *options=0)=0
virtual ~DatabaseRequestHandler()
Definition NodeVisitor:373
DatabaseRequestHandler()
Definition NodeVisitor:367
Definition NodeVisitor:388
virtual void requestImageFile(const std::string &fileName, osg::Object *attachmentPoint, int attachmentIndex, double timeToMergeBy, const FrameStamp *framestamp, osg::ref_ptr< osg::Referenced > &imageRequest, const osg::Referenced *options=0)=0
virtual ~ImageRequestHandler()
Definition NodeVisitor:401
ImageRequestHandler()
Definition NodeVisitor:391
virtual osg::ref_ptr< osg::Image > readRefImageFile(const std::string &fileName, const osg::Referenced *options=0)=0
virtual double getPreLoadTime() const =0
Definition NodeVisitor:82
virtual void apply(OcclusionQueryNode &node)
const FrameStamp * getFrameStamp() const
Definition NodeVisitor:188
const DatabaseRequestHandler * getDatabaseRequestHandler() const
Definition NodeVisitor:383
ValueStack * getOrCreateValueStack()
Definition NodeVisitor:263
virtual void apply(MatrixTransform &node)
virtual const osgUtil::IntersectionVisitor * asIntersectionVisitor() const
Definition NodeVisitor:151
void setDatabaseRequestHandler(DatabaseRequestHandler *handler)
Definition NodeVisitor:377
virtual void apply(LightSource &node)
virtual void apply(Drawable &drawable)
TraversalMode _traversalMode
Definition NodeVisitor:422
VisitorType getVisitorType() const
Definition NodeVisitor:176
virtual void apply(Billboard &node)
virtual void apply(Geometry &geometry)
virtual osgUtil::IntersectionVisitor * asIntersectionVisitor()
Definition NodeVisitor:147
VisitorType
Definition NodeVisitor:94
@ UPDATE_VISITOR
Definition NodeVisitor:96
@ EVENT_VISITOR
Definition NodeVisitor:97
@ COLLECT_OCCLUDER_VISITOR
Definition NodeVisitor:98
@ CULL_VISITOR
Definition NodeVisitor:99
ImageRequestHandler * getImageRequestHandler()
Definition NodeVisitor:408
virtual void apply(AutoTransform &node)
virtual const osgGA::EventVisitor * asEventVisitor() const
Definition NodeVisitor:143
ValueMap * getOrCreateValueMap()
Definition NodeVisitor:247
META_Object(osg, NodeVisitor) virtual NodeVisitor *asNodeVisitor()
Definition NodeVisitor:111
void setValueMap(ValueMap *ps)
Definition NodeVisitor:238
virtual const osgUtil::CullVisitor * asCullVisitor() const
Definition NodeVisitor:135
virtual const osgUtil::UpdateVisitor * asUpdateVisitor() const
Definition NodeVisitor:127
TraversalMode
Definition NodeVisitor:86
@ TRAVERSE_NONE
Definition NodeVisitor:87
@ TRAVERSE_PARENTS
Definition NodeVisitor:88
@ TRAVERSE_ALL_CHILDREN
Definition NodeVisitor:89
const ValueStack * getValueStack() const
Definition NodeVisitor:260
Node::NodeMask _traversalMask
Definition NodeVisitor:423
virtual osgUtil::UpdateVisitor * asUpdateVisitor()
Definition NodeVisitor:123
const ValueMap * getValueMap() const
Definition NodeVisitor:244
virtual void reset()
Definition NodeVisitor:167
void setTraversalMask(Node::NodeMask mask)
Definition NodeVisitor:200
void pushOntoNodePath(Node *node)
Definition NodeVisitor:287
const NodePath & getNodePath() const
Definition NodeVisitor:301
Node::NodeMask getTraversalMask() const
Definition NodeVisitor:203
void setFrameStamp(FrameStamp *fs)
Definition NodeVisitor:185
virtual osgGA::EventVisitor * asEventVisitor()
Definition NodeVisitor:139
virtual void apply(ClearNode &node)
ref_ptr< FrameStamp > _frameStamp
Definition NodeVisitor:420
virtual const osg::CullStack * asCullStack() const
Definition NodeVisitor:159
virtual void apply(Group &node)
virtual void apply(CameraView &node)
virtual void apply(Camera &node)
virtual float getDistanceToEyePoint(const Vec3 &, bool) const
Definition NodeVisitor:314
virtual void apply(PositionAttitudeTransform &node)
TraversalMode getTraversalMode() const
Definition NodeVisitor:234
void traverse(Node &node)
Definition NodeVisitor:274
NodeVisitor(TraversalMode tm=TRAVERSE_NONE)
Node::NodeMask _nodeMaskOverride
Definition NodeVisitor:424
virtual void apply(Projection &node)
virtual void apply(ProxyNode &node)
void setNodeMaskOverride(Node::NodeMask mask)
Definition NodeVisitor:210
VisitorType _visitorType
Definition NodeVisitor:417
void setValueStack(ValueStack *ps)
Definition NodeVisitor:254
void setTraversalMode(TraversalMode mode)
Definition NodeVisitor:231
NodePath _nodePath
Definition NodeVisitor:426
ref_ptr< ImageRequestHandler > _imageRequestHandler
Definition NodeVisitor:429
virtual void apply(TexGenNode &node)
virtual void apply(Switch &node)
ValueStack * getValueStack()
Definition NodeVisitor:257
virtual void apply(LOD &node)
NodeVisitor(const NodeVisitor &nv, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
virtual void apply(OccluderNode &node)
virtual osg::Vec3 getViewPoint() const
Definition NodeVisitor:309
virtual float getDistanceToViewPoint(const Vec3 &, bool) const
Definition NodeVisitor:324
unsigned int getTraversalNumber() const
Definition NodeVisitor:182
virtual void apply(Node &node)
NodeVisitor(VisitorType type, TraversalMode tm=TRAVERSE_NONE)
virtual void apply(Sequence &node)
virtual void apply(Geode &node)
bool validNodeMask(const osg::Node &node) const
Definition NodeVisitor:221
virtual float getDistanceFromEyePoint(const Vec3 &, bool) const
Definition NodeVisitor:319
osg::ref_ptr< ValueStack > _valueStack
Definition NodeVisitor:432
void setVisitorType(VisitorType type)
Definition NodeVisitor:173
const ImageRequestHandler * getImageRequestHandler() const
Definition NodeVisitor:411
virtual osg::CullStack * asCullStack()
Definition NodeVisitor:155
ValueMap * getValueMap()
Definition NodeVisitor:241
ref_ptr< DatabaseRequestHandler > _databaseRequestHandler
Definition NodeVisitor:428
unsigned int _traversalNumber
Definition NodeVisitor:418
NodePath & getNodePath()
Definition NodeVisitor:297
DatabaseRequestHandler * getDatabaseRequestHandler()
Definition NodeVisitor:380
virtual void apply(CoordinateSystemNode &node)
Node::NodeMask getNodeMaskOverride() const
Definition NodeVisitor:213
void setImageRequestHandler(ImageRequestHandler *handler)
Definition NodeVisitor:405
osg::ref_ptr< ValueMap > _valueMap
Definition NodeVisitor:431
void setTraversalNumber(unsigned int fn)
Definition NodeVisitor:179
void popFromNodePath()
Definition NodeVisitor:293
virtual osg::Vec3 getEyePoint() const
Definition NodeVisitor:305
virtual void apply(PagedLOD &node)
virtual void apply(Transform &node)
virtual void apply(ClipNode &node)
virtual const NodeVisitor * asNodeVisitor() const
Definition NodeVisitor:119
virtual osgUtil::CullVisitor * asCullVisitor()
Definition NodeVisitor:131
virtual void traverse(NodeVisitor &)
Definition Node:167
NodeMask getNodeMask() const
Definition Node:367
unsigned int NodeMask
Definition Node:363
virtual void accept(NodeVisitor &nv)
virtual void ascend(NodeVisitor &nv)
Definition OccluderNode:27
Definition OcclusionQueryNode:110
Definition NodeVisitor:456
ValueStack * _valueStack
Definition NodeVisitor:489
const Referenced * _key
Definition NodeVisitor:490
~PushPopObject()
Definition NodeVisitor:483
PushPopObject(NodeVisitor *nv, const Referenced *key, Object *value)
Definition NodeVisitor:460
PushPopObject(ValueStack *valueStack, const Referenced *key, Object *value)
Definition NodeVisitor:472
Definition NodeVisitor:494
~PushPopValue()
Definition NodeVisitor:523
ValueStack * _valueStack
Definition NodeVisitor:529
const Referenced * _key
Definition NodeVisitor:530
PushPopValue(ValueStack *valueStack, const Referenced *key, const T &value)
Definition NodeVisitor:512
PushPopValue(NodeVisitor *nv, const Referenced *key, const T &value)
Definition NodeVisitor:499
void push(const Referenced *key, Object *value)
Definition ValueStack:42
void pop(const Referenced *key)
Definition ValueStack:54
Shader generator framework.
Definition NodeVisitor:25
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
const unsigned int UNINITIALIZED_FRAME_NUMBER
Definition NodeVisitor:61
ValueStack * getOrCreateUserObjectOfType< NodeVisitor, ValueStack >(NodeVisitor *nv)
Definition NodeVisitor:534
std::vector< Node * > NodePath
Definition Node:47
ValueMap * getOrCreateUserObjectOfType< NodeVisitor, ValueMap >(NodeVisitor *nv)
Definition NodeVisitor:540
#define OSG_EXPORT
Definition osg/Export:39