24 #include <osg/PositionAttitudeTransform>
25 #include <osg/NodeVisitor>
26 #include <osg/MatrixTransform>
27 #include <osgSim/MultiSwitch>
28 #include <osgSim/DOFTransform>
32 #include <osg/PolygonOffset>
67 T* result =
dynamic_cast<T*
>(&node);
84 T* result =
dynamic_cast<T*
>(&node);
99 : osg::NodeVisitor(traversalMode)
111 return cullFaceEnabled;
114 osg::StateAttribute::GLModeValue cullFaceModeValue = ss->getMode(GL_CULL_FACE);
115 if ((cullFaceModeValue & osg::StateAttribute::INHERIT) == osg::StateAttribute::INHERIT)
117 return cullFaceEnabled;
121 return (cullFaceModeValue & osg::StateAttribute::ON) == osg::StateAttribute::ON;
131 return dtPolygonOffset;
134 osg::PolygonOffset* polygonOffset =
dynamic_cast<osg::PolygonOffset*
>(ss->getAttribute(osg::StateAttribute::POLYGONOFFSET));
137 dtPolygonOffset =
DtIndirectPolygonOffset(polygonOffset->getFactor()*polygonOffset->getFactorMultiplier(), polygonOffset->getUnits()*polygonOffset->getUnitsMultiplier());
139 return dtPolygonOffset;
155 T* result =
dynamic_cast<T*
>(&node);
158 bool processThisNode =
true;
166 processThisNode =
false;
167 for(
unsigned int i = 0; i < result->getNumChildren(); i++)
169 osg::Node* child = result->getChild(i);
174 processThisNode =
true;
186 osg::MatrixTransform* nodeAsMatrixXForm =
dynamic_cast<osg::MatrixTransform*
>(&node);
187 if (nodeAsMatrixXForm)
189 mat = nodeAsMatrixXForm->getMatrix() * mat;
192 nodeAndXForm.
xform = mat;
193 nodeAndXForm.
node = result;
195 nodeAndXForm.
nodePath = getNodePath();
203 results.push_back(nodeAndXForm);
207 osgSim::DOFTransform* dof =
dynamic_cast<osgSim::DOFTransform*
>(&node);
213 osg::MatrixTransform* mat =
dynamic_cast<osg::MatrixTransform*
>(&node);
219 osg::PositionAttitudeTransform* pat =
dynamic_cast<osg::PositionAttitudeTransform*
>(&node);
223 patMat.setTrans(pat->getPosition());
224 patMat.setRotate(pat->getAttitude());
225 patMat.makeScale(pat->getScale());
230 osg::Switch* osgSwitch =
dynamic_cast<osg::Switch*
>(&node);
233 for (
unsigned int i = 0; i < osgSwitch->getNumChildren(); ++i)
235 osg::Node* child = osgSwitch->getChild(i);
246 child->accept(*
this);
255 osgSim::MultiSwitch* multiSwitch =
dynamic_cast<osgSim::MultiSwitch*
>(&node);
258 for (
unsigned int i = 0; i < multiSwitch->getNumChildren(); ++i)
260 osg::Node* child = multiSwitch->getChild(i);
271 child->accept(*
this);
283 for (
unsigned int i = 0; i < dynamicSwitch->getNumChildren(); ++i)
285 osg::Node* child = dynamicSwitch->getChild(i);
296 child->accept(*
this);
305 osg::Sequence* dynamicSequence =
dynamic_cast<osg::Sequence*
>(&node);
308 for (
unsigned int i = 0; i < dynamicSequence->getNumChildren(); ++i)
310 osg::Node* child = dynamicSequence->getChild(i);
321 child->accept(*
this);
330 osg::LOD* lod =
dynamic_cast<osg::LOD*
>(&node);
333 for (
unsigned int i = 0; i < lod->getNumChildren(); i++)
337 const osg::LOD::MinMaxPair& range = lod->getRangeList()[i];
342 lod->getChild(i)->accept(*
this);
365 std::vector< DtNodePlusTraversalInfo >
results;
structure for holding the information about a particular instance of a particular switch...
Definition: DtIndirectSwitchManager.h:61
DtIndirectSwitchManager::DequeNodeSwitchInfoPairs switchStack
Definition: DtOsgFindNodesVisitor.h:53
float myEndRange
Definition: DtIndirectLodManager.h:89
DtIndirectSwitchManager::DequeNodeSwitchInfoPairs switchStack
Definition: DtOsgFindNodesVisitor.h:369
std::vector< DtNodePlusTraversalInfo > results
Definition: DtOsgFindNodesVisitor.h:365
structure for holding the information about a particular instance of a particular lod...
Definition: DtIndirectLodManager.h:86
DtDynamicTerrainSwitchNode replaces an osgSim::multiswitch in a terrain patch (or page) that is tagge...
Definition: DtDynamicTerrainSwitchNode.h:74
bool hasDofParent
Definition: DtOsgFindNodesVisitor.h:54
virtual bool isCullFaceEnabled(osg::StateSet *ss) const
Definition: DtOsgFindNodesVisitor.h:106
std::set< osg::Node * > nodeIgnoreList
Definition: DtOsgFindNodesVisitor.h:366
std::deque< NodeSwitchInfoPair > DequeNodeSwitchInfoPairs
Definition: DtIndirectSwitchManager.h:72
visitor for gathering all nodes of the same type in a scene graph. Returns vector of raw pointers ...
Definition: DtOsgFindNodesVisitor.h:61
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
Contains makVrv::DtDynamicTerrainSequenceNode class.
DtGeometrySpecification class declaration.
structure for holding the traversal info which is gathered by the DtOsgFindNodesVisitorRefPtrFlattenG...
Definition: DtOsgFindNodesVisitor.h:41
DtOsgFindNodesVisitorRefPtr(osg::NodeVisitor::TraversalMode traversalMode)
Definition: DtOsgFindNodesVisitor.h:80
DtIndirectLodManager::DequeIndirectLodInfos lodStack
Definition: DtOsgFindNodesVisitor.h:51
DtNodePlusTraversalInfo()
Definition: DtOsgFindNodesVisitor.h:43
std::deque< osg::Matrixd > matrixStack
Definition: DtOsgFindNodesVisitor.h:367
osg::Matrixd xform
Definition: DtOsgFindNodesVisitor.h:50
osg::Vec3 myCenter
Definition: DtIndirectLodManager.h:91
float myStartRange
Definition: DtIndirectLodManager.h:88
visitor for gathering all nodes of the same type in a scene graph. Returns vector of ref pointers ...
Definition: DtOsgFindNodesVisitor.h:78
virtual void apply(osg::Node &node)
Definition: DtOsgFindNodesVisitor.h:142
std::stack< DtIndirectPolygonOffset > myPolygonOffsetStack
Definition: DtOsgFindNodesVisitor.h:374
Contains makVrv::DtIndirectSwitchManager class.
DtIndirectPolygonOffset polygonOffset
Definition: DtOsgFindNodesVisitor.h:56
std::pair< NodeObserverPtr, IndirectSwitchInfo > NodeSwitchInfoPair
Definition: DtIndirectSwitchManager.h:71
void apply(osg::Node &node)
Definition: DtOsgFindNodesVisitor.h:82
DtOsgFindNodesVisitor(osg::NodeVisitor::TraversalMode traversalMode)
Definition: DtOsgFindNodesVisitor.h:63
osg::NodePath nodePath
Definition: DtOsgFindNodesVisitor.h:52
bool cullFaceEnabled
Definition: DtOsgFindNodesVisitor.h:55
Contains makVrv::DtIndirectLodManager class.
osg::Node::NodeMask myGatherNodeMask
Definition: DtOsgFindNodesVisitor.h:371
DtIndirectLodManager::DequeIndirectLodInfos lodStack
Definition: DtOsgFindNodesVisitor.h:368
non virtual container class for defining a polygon offset state
Definition: DtIndirectPolygonOffset.h:18
Contains DLL export macros.
Contains makVrv::DtDynamicTerrainSwitchNode class.
osg::ref_ptr< osg::Node > node
Definition: DtOsgFindNodesVisitor.h:49
std::stack< bool > myCullFaceEnabledStack
Definition: DtOsgFindNodesVisitor.h:373
std::vector< T * > results
Definition: DtOsgFindNodesVisitor.h:73
visitor for gathering all nodes of the same type in a scene graph.
Definition: DtOsgFindNodesVisitor.h:96
myGatherNodeMask(gatherNodeMask)
Definition: DtOsgFindNodesVisitor.h:101
std::deque< IndirectLodInfo > DequeIndirectLodInfos
Definition: DtIndirectLodManager.h:95
std::vector< osg::ref_ptr< T > > results
Definition: DtOsgFindNodesVisitor.h:90
Contains the DtIndirectPolygonOffset class declaration.
virtual DtIndirectPolygonOffset gatherPolygonOffset(osg::StateSet *ss) const
Definition: DtOsgFindNodesVisitor.h:125
std::deque< osgSim::DOFTransform * > dofStack
Definition: DtOsgFindNodesVisitor.h:370
void apply(osg::Node &node)
Definition: DtOsgFindNodesVisitor.h:65