![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00009 #pragma once 00010 00011 #include "vantageTerrainImplementation/vantageTerrainImplementationDefines.h" 00012 #include "vrvOsg/DtHierarchicalPagedLod.h" 00013 #include "vantageTerrainImplementation/boundingVolumeTerrainSourcePager.h" 00014 #include "vantageTerrainImplementation/pageInVisitor.h" 00015 #include "vantageTerrainImplementation/boundingVolumeTerrainSourceTracker.h" 00016 00017 struct DT_DLL_vantageTerrainImplementation DtMetaflightBoundingInfo 00018 { 00019 DtNodeBoundingInfoPtr boundingInfo; 00022 bool boundingInfoFromGeometry; 00023 }; 00024 00025 typedef std::map<makVrv::DtHierarchicalPagedLod*, DtMetaflightBoundingInfo> DtHierNodeBoundingVolumeMap; 00026 00029 class DT_DLL_vantageTerrainImplementation DtMetaflightTerrainSourcePager : public DtBoundingVolumeTerrainSourcePager 00030 { 00031 public: 00032 00033 DtMetaflightTerrainSourcePager(DtVantageTerrainEngine* terrainEngine, 00034 osg::Group* rootNode); 00035 00036 virtual ~DtMetaflightTerrainSourcePager(); 00037 00039 virtual DtTerrainSourceTracker* createTerrainSourceTracker(); 00040 00041 virtual bool pageInGeometry(const DtTerrainPagingGeometryPtr geometry, 00042 const unsigned int intersectId = 0); 00043 00044 virtual bool pageOutNodes(std::list<DtNodeId>& nodesToRemove); 00045 00046 virtual void updateTerrain(const unsigned int intersectId = 0); 00047 00048 virtual void updatePageTracker(const unsigned int intersectId = 0); 00049 00052 static DtTerrainSourcePager* terrainChooserFunction(osg::Node& node, 00053 DtVantageTerrainEngine* terrainEngine); 00054 00055 protected: 00056 00057 class DtMetaflightTerrainVisitor : public DtBoundingVolumeActivePageVisitor 00058 { 00059 public: 00060 DtMetaflightTerrainVisitor(); 00061 virtual ~DtMetaflightTerrainVisitor(); 00062 00064 virtual void apply(osg::Group& node); 00065 00066 protected: 00067 virtual void indent(); 00068 00069 public: 00070 int myIndentLevel; 00071 }; 00072 00077 00078 static DtNodeId osgNodeId(makVrv::DtHierarchicalPagedLod* node); 00079 static makVrv::DtHierarchicalPagedLod* nodeFromId(DtNodeId nodeId); 00081 00082 protected: 00083 osg::Group* myRootNode; 00084 00085 00088 DtHierNodeBoundingVolumeMap myPagedInNodes; 00089 DtHierNodeBoundingVolumeMap myPagedOutNodes; 00090 }; 00091 00093