VR-Vantage API Documentation
DtTerrain.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2008 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /******************************************************************************
6 ** $RCSfile: DtTerrain.h,v $ $Revision: 1.55 $ $State: Exp $
7 ******************************************************************************/
8 
12 
13 #ifndef DtTerrain_H_
14 #define DtTerrain_H_
15 
16 #include <vrvCore/vrvCore.h>
18 #include <vrvCore/DtForest.h>
21 
23 
24 #include <boost/signal.hpp>
25 #include <boost/shared_ptr.hpp>
26 
27 #include <string>
28 #include <map>
29 #include <list>
30 #include <vector>
31 
32 namespace makArchives
33 {
34  class DtTerrainRecord;
35  class DtFeatureLayerRecord;
36  class DtTerrainPatchRecord;
37  class DtTerrainOperationRecord;
38 }
39 
40 namespace makVrv
41 {
42  class DtDe;
43  class DtFeature;
44  class DtFeatureLayer;
45  class DtModelAgent;
46  class DtProp;
47  class DtTerrainPatch;
48  class DtTerrainPatchObjectAgent;
49  class DtTerrainSignaler;
50 
54  {
55 
56  public:
57 
58  typedef std::list<DtTerrainPatch*> TerrainPatches;
59  typedef std::list<DtFeatureLayer*> FeatureLayers;
60 
62  typedef std::map<int, makArchives::DtTerrainOperationRecord> TerrainOperationsMap;
63 
65  DtTerrain(DtDe& de, DtAgentManagerInterface& sceneManagerInterface);
66 
68  ~DtTerrain();
69 
71  virtual void clear();
72 
74 
75 
79  bool globalScaleTerrain() const;
80 
84  void updateGlobalScaleTerrain();
85 
87  virtual void getRecord(makArchives::DtTerrainRecord& rec);
88 
90  virtual void setFromRecord(const makArchives::DtTerrainRecord& rec);
91 
93 
95 
96 
101  virtual DtTerrainPatch& addTerrainPatch(const makArchives::DtTerrainPatchRecord& rec);
102 
107  virtual DtTerrainPatch& addTerrainPatch(const std::string& terrainDefinitionName);
108 
110  virtual DtTerrainPatch* findTerrainPatch(const std::string& terrainDefinitionName);
111 
113  virtual DtTerrainPatch* findTerrainPatch(DtUniqueID id);
114 
117  virtual bool removeTerrainPatch(const std::string& terrainDefinitionName);
118 
121  const TerrainPatches& terrainPatches() const ;
122 
125  TerrainPatches& terrainPatches();
126 
128 
129 
131 
132  virtual const TerrainOperationsMap& terrainOperationsMap() const;
134 
136 
137 
138 
141  virtual DtFeatureLayer& addFeatureLayer(const makArchives::DtFeatureLayerRecord& rec);
142 
147  virtual DtFeatureLayer& addFeatureLayer(const std::string& featureLayerFilename);
148 
150  virtual void removeFeatureLayer(const std::string& featureLayerFilename);
151 
153  virtual const FeatureLayers& featureLayers() const;
154 
156  virtual FeatureLayers& featureLayers();
157 
159  virtual DtFeatureLayer* findFeatureLayer(const std::string& featureLayerFilename);
160 
162 
164 
165 
167  std::string generatePropName(const std::string& propType);
168 
170 
172 
173 
177  virtual DtForest& forest();
178 
180 
181  bool isPropNameUsed(const std::string& propName) const;
182 
186  virtual bool getTerrainIntersection(double x, double y, double z,
187  double upX, double upY, double upZ, double& retX, double& retY,
188  double& retZ );
189 
193  virtual void clearElevationCache();
195 
197 
198 
201  virtual bool exportTerrainAndProps(const std::string&);
202 
204 
205  protected:
206 
208  void executeTerrainOperation(const makArchives::DtTerrainOperationRecord& operation,
209  const makArchives::DtTerrainRecord& terrainRec);
210 
212  void addTerrainOperationRecord(const makArchives::DtTerrainOperationRecord& operation);
213 
215  void removeTerrainOperationRecord( const makArchives::DtTerrainOperationRecord& operation);
216 
218  void removeTerrainOperationRecord(int id);
219 
221  void clearTerrainOperations();
222 
223  protected:
224  typedef std::map<std::string,int> PropNameMap;
225 
229 
233 
237 
239 
240  };
241 
245  {
246  public:
247 
249  static DtTerrainSignaler& instance(DtDe& de);
250 
252  virtual ~DtTerrainSignaler();
253 
254  //@name Signals
256 
258  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchAdded;
259 
261  boost::signal< void (const DtTerrainPatch&) > signal_terrainPatchToBeDeleted;
262 
264  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerAdded;
265 
267  boost::signal< void (const DtFeatureLayer&) > signal_featureLayerToBeDeleted;
268 
270  boost::signal<void () > signal_terrainToBeCleared;
271 
273  boost::signal< void () > signal_terrainCleared;
274 
276  boost::signal< void (const std::string&, const std::string&) > signal_propExtractionRuleLoaded;
277 
279  boost::signal< void (DtProp& prop) > signal_propCreated;
280 
282  boost::signal< void (const DtProp& prop) > signal_propAboutToBeDestroyed;
283 
285  boost::signal< void (const DtProp& prop, double x, double y, double z) > signal_propPositionAboutToChange;
286 
288  boost::signal< void (const DtProp& prop, double x, double y, double z, double w) > signal_propOrientationAboutToChange;
289 
291  boost::signal< void (const DtFeature&) > signal_featureAdded;
292 
294  boost::signal< void (const DtFeature&) > signal_featureToBeDeleted;
295 
297  boost::signal< void(int id, const makArchives::DtTerrainOperationRecord& rec) > signal_terrainOperationAdded;
298 
300  boost::signal< void(int id) > signal_terrainOperationRemoved;
301 
303  boost::signal< void(bool) > signal_terrainIsGlobalScaleChanged;
304 
307  boost::signal< void() > signal_terrainGeometryLoaded;
308 
310 
311  protected:
313  };
314 }
315 
316 #endif
317 


Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)