![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00010 00011 #pragma once 00012 00013 #include <vantageTerrainImplementation/vantageTerrainImplementationDefines.h> 00014 00015 #include <terrainInterface/terrainPagingGeometry.h> 00016 00017 #include <osg/Vec3> 00018 #include <osg/NodeVisitor> 00019 #include <geometry/chord.h> 00020 #include <list> 00021 #include <geometry/sphere.h> 00022 00023 class btIDebugDraw; 00024 00027 class DT_DLL_vantageTerrainImplementation DtMaintainMatrixVisitor : public osg::NodeVisitor 00028 { 00029 public: 00030 DtMaintainMatrixVisitor(); 00031 virtual ~DtMaintainMatrixVisitor() {}; 00032 virtual void apply(osg::PositionAttitudeTransform& node); 00033 virtual void apply(osg::MatrixTransform& node); 00034 00035 protected: 00040 virtual osg::BoundingSphere worldRefNodeBounds(osg::Node& node); 00041 00042 protected: 00043 osg::Matrix myMatrix; 00044 }; 00045 00050 class DT_DLL_vantageTerrainImplementation DtPageInVisitor : public DtMaintainMatrixVisitor 00051 { 00052 public: 00053 typedef std::list<std::pair<osg::Node*, int> > DtNodeChildList; 00054 00055 DtPageInVisitor(); 00056 virtual void apply(osg::Group& node); 00057 virtual void apply(osg::Geode& node); 00058 virtual void apply(osg::LOD& node); 00059 virtual void apply(osg::PagedLOD& node); 00060 virtual void apply(osg::CoordinateSystemNode& node); 00061 00062 virtual unsigned int numNodesRequested() const; 00063 virtual const DtNodeChildList& nodesRequested() const; 00066 virtual bool allDataPagedIn() const; 00067 00069 virtual int pagedLodCount() const; 00070 00071 protected: 00075 virtual bool requiresPageIn(osg::Node& node); 00076 00077 protected: 00080 DtNodeChildList myPagedNodesRequested; 00081 bool myAllDataPagedIn; 00082 int myPagedLodCount; 00083 }; 00084 00087 class DT_DLL_vantageTerrainImplementation DtGeometryPageInVisitor : public DtPageInVisitor 00088 { 00089 public: 00090 DtGeometryPageInVisitor(const DtTerrainPagingGeometryPtr geometry); 00091 00092 protected: 00093 virtual bool requiresPageIn(osg::Node& node); 00094 00095 DtTerrainPagingGeometryPtr myGeometry; 00096 }; 00097 00099 class DT_DLL_vantageTerrainImplementation DtInspectorVisitor : public DtMaintainMatrixVisitor 00100 { 00101 public: 00102 00103 DtInspectorVisitor(); 00104 virtual void apply(osg::Node& node); 00105 virtual void apply(osg::Group& node); 00106 virtual void apply(osg::Geode& node); 00107 virtual void apply(osg::LOD& node); 00108 virtual void apply(osg::PagedLOD& node); 00109 //virtual void apply(osg::CoordinateSystemNode& node); 00110 00111 protected: 00112 virtual void indent(); 00113 virtual void printBoundingInfo(osg::Node& node); 00114 00115 int myIndentLevel; 00116 protected: 00117 }; 00118 00120 class DT_DLL_vantageTerrainImplementation DtDrawBoundingSpheresVisitor : public DtMaintainMatrixVisitor 00121 { 00122 public: 00123 DtDrawBoundingSpheresVisitor(btIDebugDraw* debugDrawer, const DtChord& chord); 00124 //virtual void apply(osg::Node& node); 00125 virtual void apply(osg::Group& node); 00126 //virtual void apply(osg::Geode& geode); 00127 //virtual void apply(osg::LOD& node); 00128 //virtual void apply(osg::PagedLOD& node); 00129 //virtual void apply(osg::CoordinateSystemNode& node); 00130 00131 protected: 00132 btIDebugDraw* myDebugDrawer; 00133 DtChord myTestChord; 00134 }; 00135 00137 00139 class DT_DLL_vantageTerrainImplementation DtTerrainIsPagingVisitor : public osg::NodeVisitor 00140 { 00141 public: 00142 DtTerrainIsPagingVisitor(); 00143 virtual ~DtTerrainIsPagingVisitor(); 00144 00146 virtual void apply(osg::PagedLOD& node); 00147 00149 virtual const bool& encounteredPagedLod() const; 00150 00151 protected: 00152 00154 bool myEncounteredPagedLod; 00155 };