![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00006 #pragma once 00007 00010 00012 00013 #include <vantageTerrainImplementation/terrainEngineCommand.h> 00014 #include <vantageTerrainImplementation/boundingVolumeTerrainSourcePager.h> 00015 #include <vantageTerrainImplementation/pageInVisitor.h> 00016 #include <vantageTerrainImplementation/pagedLodTerrainSourceTracker.h> 00017 #include <terrainInterface/terrainPagingGeometry.h> 00018 00021 class DT_DLL_vantageTerrainImplementation DtPagedLodTerrainSourcePager : public DtBoundingVolumeTerrainSourcePager 00022 { 00023 public: 00024 00025 DtPagedLodTerrainSourcePager(DtVantageTerrainEngine* terrainEngine, osg::Group* rootNode); 00026 00027 virtual ~DtPagedLodTerrainSourcePager(); 00028 00030 virtual DtTerrainSourceTracker* createTerrainSourceTracker(); 00031 00032 virtual bool pageInGeometry(const DtTerrainPagingGeometryPtr geometry, 00033 const unsigned int intersectId = 0); 00034 00035 virtual bool pageOutNodes(std::list<DtNodeId>& nodesToRemove); 00036 00037 virtual void updateTerrain(const unsigned int intersectId = 0); 00038 00040 virtual void updatePageTracker(const unsigned int intersectId = 0); 00041 00044 static DtTerrainSourcePager* terrainChooserFunction(osg::Node& node, 00045 DtVantageTerrainEngine* terrainEngine); 00046 00047 protected: 00049 osg::Node* terrainRoot(); 00050 00051 virtual bool pageInData(DtPageInVisitor& visitor); 00052 00057 00058 static DtNodeId osgNodeId(osg::Node* node); 00059 static osg::Node* nodeFromId(DtNodeId nodeId); 00061 00062 protected: 00063 00065 osg::Node* myRootNode; 00066 00068 bool myForceUpdate; 00069 00071 class DtActivePageVisitor : public DtBoundingVolumeActivePageVisitor 00072 { 00073 public: 00074 DtActivePageVisitor(unsigned int intersectId = 0); 00075 virtual void apply(osg::Group& node); 00076 virtual void apply(osg::LOD& node); 00077 virtual void apply(osg::PagedLOD& node); 00078 }; 00079 00080 }; 00081