![]() |
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/terrainEngineCommand.h> 00012 #include <vantageTerrainImplementation/terrainSourcePager.h> 00013 #include <vantageTerrainImplementation/pageInVisitor.h> 00014 #include <vantageTerrainImplementation/boundingVolumeTerrainSourceTracker.h> 00015 #include <terrainInterface/terrainPagingGeometry.h> 00016 00019 class DT_DLL_vantageTerrainImplementation DtBoundingVolumeTerrainSourcePager : public DtTerrainSourcePager 00020 { 00021 public: 00022 00023 DtBoundingVolumeTerrainSourcePager(DtVantageTerrainEngine* terrainEngine); 00024 00025 virtual ~DtBoundingVolumeTerrainSourcePager(); 00026 00031 virtual bool pageInGeometry(const DtTerrainPagingGeometryPtr geometry, 00032 const unsigned int intersectId = 0) = 0; 00033 00037 virtual bool pageOutNodes(std::list<DtNodeId>& nodesToRemove) = 0; 00038 00039 virtual void updateTerrain(const unsigned int intersectId = 0) = 0; 00040 00041 virtual void updatePageTracker(const unsigned int intersectId = 0) = 0; 00042 00043 protected: 00045 class DtBoundingVolumeActivePageVisitor : public DtMaintainMatrixVisitor 00046 { 00047 public: 00048 DtBoundingVolumeActivePageVisitor(unsigned int intersectId = 0); 00049 00050 const DtNodeBoundingInfoList& pagedOutBoundingVolumes() const; 00051 const DtNodeBoundingInfoMap& pagedInBoundingVolumes() const; 00052 bool noValidAreas() const; 00053 00054 protected: 00055 void pushBound(osg::Node& node); 00056 void popBound(); 00057 00058 bool addToPagedOutVolumesList(const DtNodeBoundingInfoPtr pagedOutArea); 00059 00060 protected: 00061 DtNodeBoundingInfoList myPagedOutBoundingList; 00062 DtNodeBoundingInfoMap myPagedInBoundingMap; 00063 bool myNoValidAreas; 00064 std::stack<osg::BoundingSphere> myBoundingNodeStack; 00065 unsigned int myIntersectId; 00066 }; 00067 00068 };