VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
featureContext.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
14 #include <features/featureSet.h>
15 #include <features/feature.h>
16 #include <features/pathFeature.h>
17 #include <features/aStarGraph.h>
18 #include <features/areaFeature.h>
20 
23 
24 #include <boost/ptr_container/ptr_map.hpp>
25 
26 #include <tbb/mutex.h>
27 
28 #include <map>
29 #include <string>
30 
31 class DtVectorNetwork;
32 
33 namespace osg
34 {
35  template<typename T>
36  class ref_ptr;
37 }
38 
39 namespace osgEarth
40 {
41  class Map;
42 }
43 
44 namespace MAKVRinTerra
45 {
46  class DtFeatureContext;
47  class DtFeaturesDebugger;
48  class DtUnusedFeatureTileTracker;
49 
51  {
52  public:
54  typedef boost::function<DtFeatureSet* (std::string)> FeatureSetCreatorFcn;
55 
58 
61 
63  virtual ~DtFeatureDatabase();
64 
66  virtual bool init(const DtTerrainInterfaceConfig&);
67 
72  static void AddFeatureSetCreator(std::string extension, FeatureSetCreatorFcn factory);
73 
76  static DtFeatureSet* CreateFeatureSetFromFile(std::string file);
77 
82  static DtFeatureSet* ConfigureAttribute(
83  DtFeatureSet* set, std::string attribute, std::string value);
84 
85  static std::unique_ptr<DtFeatureSet> ConfigureAttribute(
86  std::unique_ptr<DtFeatureSet> set, std::string attribute, std::string value);
87 
88  static DtFeatureSet* ConfigureAttributes(
89  DtFeatureSet*,
91  DtAttributeConfigParser& parser);
92 
97  virtual bool loadSrcSpecConfigFor(std::string sourceFile, std::string attribute);
98 
106  virtual bool loadConfig(std::string configFile, DtQuery schema);
107 
112  virtual std::unique_ptr<DtFeatureSet> addFeatureSource(std::string file, bool page=true);
113 
120  virtual std::unique_ptr<DtFeatureSet> addFeatureSource(
122  std::string earthfile=std::string(), bool page=true,
123  const std::vector<std::string>& loadIfNameBeginsWith = std::vector<std::string>());
124 
129  virtual std::unique_ptr<DtFeatureSet> addFeatureSource(DtFeatureSet* fs, bool page=true);
130 
134  virtual void addFeatureSource(std::shared_ptr<DtFeatureSet> fs, bool page=true);
135 
140  virtual std::unique_ptr<DtFeatureSet> addFeatureSource(
141  DtFeatureSet* fs,
142  const DtTerrainInterfaceConfig& config);
143 
147  virtual void addFeatureSource(
148  std::shared_ptr<DtFeatureSet> fs,
149  const DtTerrainInterfaceConfig& config);
150 
155  virtual std::unique_ptr<DtFeatureSet> addVectorNetworkFeatureSource(
156  DtVectorNetwork* network, std::string sourceFile);
157 
164  virtual std::unique_ptr<DtFeatureSet> addFeatureSource(
165  DtFeatureSet* fs, std::string source, bool page=true);
166 
169  void addToDebugger(DtFeatureSet* fs);
170 
172  const DtTerrainInterfaceConfig& config() const;
173 
175  std::shared_ptr<DtAttributeConfigParser> parser() const;
176 
178  std::shared_ptr<DtUnusedFeatureTileTracker> tracker() const;
179 
181  std::shared_ptr<DtFeaturesDebugger> debugger() const;
182 
184  std::shared_ptr<LoadingQueue> loadingQueue() const;
185 
188  virtual DtFeatureSet* makeSourcePagetables(const DtProj& proj);
189 
192  virtual std::unique_ptr<DtFeatureSet> features(const std::string& queryName) const;
193 
195  virtual std::unique_ptr<DtFeatureSet> allFeatures() const;
196 
197  virtual void setBlockOnAsynchronousOperations(bool blockIn);
198 
199  private:
203  struct Record
204  {
205  typedef std::shared_ptr<Record> Ptr;
206  typedef std::vector<Ptr> Vector;
207 
208  std::unique_ptr<DtFeatureSet> featureSet;
210 
212  };
213 
215 
216  std::shared_ptr<DtFeaturesDebugger> myDebugger;
217  std::shared_ptr<DtAttributeConfigParser> myParser;
218  std::shared_ptr<DtUnusedFeatureTileTracker> myUnusedTracker;
219 
222 
223  std::shared_ptr<LoadingQueue> myLoadingQueue;
224 
226  };
227 
229  {
230  public:
231  static DtFeatureContext* Create(DtFeatureDatabase& db, const DtProj& proj);
232 
236  DtFeatureContext(DtFeatureDatabase& loader, const DtProj& proj);
237 
239  ~DtFeatureContext();
240 
242  void shutdown(bool block = true);
243 
246  std::unique_ptr<DtFeatureSet> features(const std::string& queryName) const;
247 
249  std::unique_ptr<DtFeatureSet> allFeatures() const;
250 
253  std::unique_ptr<DtAreaFeatureSet> areas(
254  const std::string& type,
255  const std::shared_ptr<DtVrfCallbackQueue>& = std::shared_ptr<DtVrfCallbackQueue>());
256 
259 
262  std::unique_ptr<DtAreaFeatureSet> areas(
263  const AreaConfig& cfg,
264  const std::shared_ptr<DtVrfCallbackQueue>& = std::shared_ptr<DtVrfCallbackQueue>());
265 
267  std::unique_ptr<DtPathFeatureSet> paths(std::string type);
268 
270  DtAStarGraph::Ptr pathFinder(std::string type);
271 
273  DtProj::CPtr projection() const;
274 
278  void cleanUpPathFinders();
279 
280  virtual void setBlockOnAsynchronousOperations(bool blockIn);
281  private:
284 
287 
289  std::unique_ptr<DtFeatureSet> mySourceFeatures;
290 
292  typedef boost::ptr_map<const std::string, DtFeatureSet> FeatureSetMap;
295  mutable std::mutex myFeatureSetMutex;
296  std::shared_ptr<FeatureQueue> myFeatureLoadingQueue;
297 
299  typedef boost::ptr_map<const AreaConfig, DtAreaFeatureSet> AreaFeatureSetMap;
302  mutable std::mutex myAreasMutex;
303  std::shared_ptr<AreaQueue> myAreaLoadingQueue;
304 
306  typedef boost::ptr_map<const std::string, DtAStarGraph::Ptr> PathFinderMap;
308  mutable std::mutex myPathFindersMutex;
309 
311  std::shared_ptr<DtFeaturesDebugger> myDebugger;
312 
314  std::shared_ptr<DtAttributeConfigParser> myAttributeParser;
315 
318 
321  };
322 }
Represents a set of DtFeature objects or others which conform to the DtFeature concept.
Definition: featureSet.h:105
#define DT_DLL_features
stop complaining about multiple independent base classes for boost::noncopyable this should probably ...
Definition: featuresDefines.h:41
Class DtTerrainInterfaceConfig is a readable-writable class holding terrain interface configuration o...
Definition: terrainInterfaceConfig.h:33
std::vector< Ptr > Vector
Definition: featureContext.h:206
DtQueueLoadingFeatureSet< DtFeatureSet >::Queue LoadingQueue
Async queue for loading feature sets.
Definition: featureContext.h:57
std::shared_ptr< const DtProj > CPtr
Definition: proj.h:56
bool myBlockOnAsynchronousOperations
Flag to determine blocking.
Definition: featureContext.h:320
DtUnusedFeatureTileTracker::Ptr myUnusedTracker
Unused tile tracker.
Definition: featureContext.h:317
Each record represents one feature set and all the info needed to load it. We need to collect all the...
Definition: featureContext.h:203
Definition: featureContext.h:36
std::shared_ptr< DtUnusedFeatureTileTracker > Ptr
Definition: unusedFeatureTileTracker.h:49
DtFeatureSet::List myFeatures
Definition: featureContext.h:221
std::mutex myFeatureSetMutex
Definition: featureContext.h:295
std::shared_ptr< DtFeaturesDebugger > myDebugger
Top level feature debugger.
Definition: featureContext.h:311
boost::ptr_map< const AreaConfig, DtAreaFeatureSet > AreaFeatureSetMap
Area stuff.
Definition: featureContext.h:299
std::shared_ptr< Record > Ptr
Definition: featureContext.h:205
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:29
boost::ptr_map< const std::string, DtFeatureSet > FeatureSetMap
Plain features.
Definition: featureContext.h:292
DtProj::CPtr myProjection
Local projection.
Definition: featureContext.h:283
DtTerrainInterfaceConfig config
Definition: featureContext.h:209
DtTerrainInterfaceConfig myTerrainInterfaceConfig
Terrain interface config object.
Definition: featureContext.h:286
DtQueueLoadingFeatureSet< DtFeatureSet >::Queue FeatureQueue
Definition: featureContext.h:293
Feature system config file.
FeatureSetMap myFeatureSets
Definition: featureContext.h:294
Represents some coordinate system. The terms &quot;coordinate system&quot;, &quot;projection&quot;, &quot;spatial reference&quot;...
Definition: proj.h:52
Represents a set of characeters a DtFeature object can have. DtQuery objects are the way to communica...
Definition: query.h:37
boost::ptr_map< const std::string, DtAStarGraph::Ptr > PathFinderMap
Path finder for path planning.
Definition: featureContext.h:306
std::unique_ptr< DtFeatureSet > featureSet
Definition: featureContext.h:208
std::shared_ptr< DtAStarGraph > Ptr
Definition: aStarGraph.h:96
std::shared_ptr< AreaQueue > myAreaLoadingQueue
Definition: featureContext.h:303
Definition: featureContext.h:50
const char * source
Definition: lz4.h:442
PathFinderMap myPathFinders
Definition: featureContext.h:307
std::shared_ptr< DtUnusedFeatureTileTracker > myUnusedTracker
Definition: featureContext.h:218
Parser for feature system configuration file. Constructs a set of DtQuery objects, each with a name from the configuration file. Also constructs a list of DtFeatureTransform objects, using DtQuery names as filters.
Definition: attributeConfigParser.h:78
DtTerrainInterfaceConfig myTerrainInterfaceConfig
Definition: featureContext.h:214
std::shared_ptr< FeatureQueue > myFeatureLoadingQueue
Definition: featureContext.h:296
AreaFeatureSetMap myAreaFeatureSets
Definition: featureContext.h:301
bool myBlockOnAsynchronousOperations
Definition: featureContext.h:225
std::unique_ptr< DtFeatureSet > mySourceFeatures
Reads from set of per-source page tables.
Definition: featureContext.h:289
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
boost::function< DtFeatureSet *(std::string)> FeatureSetCreatorFcn
Factory function for creating feature sets.
Definition: featureContext.h:54
Record::Vector myRecords
Definition: featureContext.h:220
std::mutex myAreasMutex
Definition: featureContext.h:302
std::shared_ptr< DtAttributeConfigParser > myAttributeParser
Feature config parser.
Definition: featureContext.h:314
DtQueueLoadingFeatureSet< DtAreaFeatureSet >::Queue AreaQueue
Definition: featureContext.h:300
DtAreaFeatureSetAdapter::Config AreaConfig
Configuration information for areas.
Definition: featureContext.h:258
DtFeatureSet used to combine multiple feature sets into one. This class allows all feature set algori...
Definition: featureSetList.h:26
Definition: featureContext.h:228
std::mutex myPathFindersMutex
Definition: featureContext.h:308
std::shared_ptr< DtAttributeConfigParser > myParser
Definition: featureContext.h:217
std::shared_ptr< DtFeaturesDebugger > myDebugger
Definition: featureContext.h:216
Configuration object for processing areas.
Definition: areaFeature.h:47
std::vector< DtFeatureTransform > TransformVector
Sequence of transforms.
Definition: attributeConfigParser.h:89
std::shared_ptr< LoadingQueue > myLoadingQueue
Definition: featureContext.h:223
Definition: vectorNetwork.h:37

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)