![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00009 #pragma once 00010 00011 #include <vantageTerrainImplementation/terrainSourcePager.h> 00012 #include <vantageTerrainImplementation/vantageTerrainImplementationDefines.h> 00013 00014 #include <terrainInterface/terrainPagingGeometry.h> 00015 00016 #include <tbb/spin_rw_mutex.h> 00017 00018 class btIDebugDraw; 00019 00020 00021 typedef std::multimap<DtNodeId, btCollisionObject*> DtNodeToCollObjMMap; 00022 typedef std::pair<DtNodeToCollObjMMap::iterator, DtNodeToCollObjMMap::iterator> 00023 DtNodeToCollObjRangePair; 00024 00028 class DT_DLL_vantageTerrainImplementation DtTerrainSourceTracker 00029 { 00030 public: 00031 00032 DtTerrainSourceTracker(DtPagerCommandQueue* commandQueue); 00033 00034 virtual ~DtTerrainSourceTracker(); 00035 00037 virtual bool dataAvailable(DtPagingMetaDataPtr metaData, 00038 DtTerrainPagingGeometryPtr geometry) = 0; 00039 00040 virtual void pageInData(DtPagingMetaDataPtr metaData, 00041 DtTerrainPagingGeometryPtr geometry) = 0; 00042 00043 virtual void drawDebugInfo(btIDebugDraw* debugDrawer) = 0; 00044 00045 //Should return true if the tracker is capable of paging out data. 00046 virtual bool canPageOutData(unsigned int intersectId) = 0; 00047 00048 virtual unsigned int findOldestPagedData(unsigned int& numTriangles) = 0; 00049 00050 virtual void pageOutOldestData(const int priority) = 0; 00051 00052 virtual void addNodeToCollisionMapping(DtNodeId node, 00053 btCollisionObject* collisionObject); 00054 virtual void removeNodeToCollisionMappings(DtNodeId node); 00055 00056 virtual std::list<btCollisionObject*> collisionObjectsForNode( 00057 DtNodeId node); 00058 00059 protected: 00060 00061 DtPagerCommandQueue* myCommandQueue; 00062 00063 DtNodeToCollObjMMap myNodeToCollObjMMap; 00064 00065 mutable tbb::spin_rw_mutex myMutex; 00066 };