VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/vectorObstructionManager.h
Go to the documentation of this file.
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

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)