![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: vectorObstructionManager.h,v $ $Revision: 1.16 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef vectorObstructionManager_H_ 00009 #define vectorObstructionManager_H_ 00010 00013 00015 00016 #include <vlutil/vlConfig.h> 00017 #include <vector> 00018 #include <list> 00019 #include <set> 00020 00021 #include "vrfobjcore/vectorObstruction.h" 00022 #include "vrfobjcore/vectorObstructionID.h" 00023 #include "geometry/spatialSubdivision.h" 00024 #include "vrfobjcore/physicalWorld.h" 00025 00026 class Coordinate_System; 00027 00035 #include "vrfobjcore/vrfobjcoreDefines.h" 00036 class DT_DLL_vrfobjcore DtVectorObstructionManager 00037 { 00038 public: 00039 00040 typedef std::list< std::pair<DtVectorObstructionID, std::vector<DtVectorObstruction> > > DtVectorIDObstructionAssociations; 00041 typedef std::list< std::pair<DtVectorObstructionID, DtSpatialSubdivision<DtVectorObstruction*>*> > DtObstructionSpatialContainers; 00042 00044 DtVectorObstructionManager(const DtTerrainInterface& terrainDatabase); 00045 00047 virtual ~DtVectorObstructionManager(); 00048 00049 private: 00051 DtVectorObstructionManager(const DtVectorObstructionManager& orig); 00052 00054 DtVectorObstructionManager& operator=(const DtVectorObstructionManager& orig); 00055 00056 public: 00057 00060 virtual bool init(); 00061 00064 void setExtrudeObstructions(bool extrude); 00065 00086 virtual bool getObstructions(const DtVectorObstructionID& vectorObstructionID, 00087 std::vector<DtVectorObstruction>*& vectorObstructions); 00088 00089 virtual bool getObstructions(const DtVectorObstructionID& vectorObstructionID, 00090 DtExtent& extent, std::set<DtVectorObstruction*>& vectorObstructions); 00091 00092 00101 virtual bool createNewVectorObstructionCollection(const DtVectorObstructionID& vectorObstructionID, 00102 std::vector<DtVectorObstruction>*& newVectorObstructionCollection); 00103 00114 virtual bool createNewVectorObstructionSpatialContainer(const DtVectorObstructionID& vectorObstructionID, 00115 std::vector<DtVectorObstruction>& newVectorObstructionCollection, 00116 DtSpatialSubdivision<DtVectorObstruction*>*& obstructionSpatialContainer, 00117 unsigned int numXSubdivisions = 100, 00118 unsigned int numYSubdivisions = 100, 00119 unsigned int numZSubdivisions = 1); 00120 00131 virtual bool addNewVectorObstructionType(const DtVectorObstructionID& vectorObstructionID, 00132 std::vector<DtVectorObstruction>*& newVectorObstructionCollection, 00133 DtSpatialSubdivision<DtVectorObstruction*>*& newVectorObstructionSpatialContainer); 00134 00141 virtual bool getAllFeaturesInRange(double range, 00142 const DtVectorObstructionID& vectorObstructionID, std::list<const DtNetworkNode*>& nodes); 00143 virtual bool getAllFeaturesInRange(double range, 00144 const DtVectorObstructionID& vectorObstructionID, std::list<const DtNetworkSegment*>& segments); 00145 00153 virtual bool expandExtentToIncludeVectorObstructions(const std::vector<DtVectorObstruction>& vectorObstructions, 00154 DtExtent& extent); 00155 00165 virtual bool addVectorObstructionsToSpatialContainer(std::vector<DtVectorObstruction>& vectorObstructions, 00166 DtSpatialSubdivision<DtVectorObstruction*>& newVectorObstructionSpatialContainer); 00167 00168 protected: 00169 00171 virtual const Coordinate_System* coordinateSystem() const; 00172 00178 virtual const DtTerrainInterface* terrainDatabase() const; 00179 00181 virtual DtVectorIDObstructionAssociations& vectorObstructionCollections(); 00182 00184 virtual DtObstructionSpatialContainers& vectorObstructionSpatialContainers(); 00185 00187 virtual DtVectorIDObstructionAssociations& obstructionCollections(); 00188 virtual DtObstructionSpatialContainers& obstructionSpatialContainers(); 00189 00196 bool testInvariant() const; 00197 00198 protected: 00199 00202 DtVectorIDObstructionAssociations myVectorObstructionCollections; 00203 00212 DtObstructionSpatialContainers myVectorObstructionSpatialContainers; 00213 00214 const DtTerrainInterface& myTerrainDatabase; 00215 00217 bool myExtrudeObstructions; 00218 }; 00219 00220 #endif