VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
terrainInterfaceConfig.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2022 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfutil/vrfutilDefines.h>
15 #include <readerWriter/rwInt.h>
16 #include <readerWriter/rwReal.h>
17 #include <readerWriter/rwString.h>
18 #include <readerWriter/rwBoolean.h>
19 #include "readerWriter/rwVector.h"
22 
23 #include <iosfwd>
24 
25 #include <boost/noncopyable.hpp>
26 
28 
34  : public DtReaderWriter
35  , boost::noncopyable
36 {
37  class DT_DLL_vrfutil Configator : boost::noncopyable
38  {
39  public:
40  virtual ~Configator();
41  virtual bool configure(DtReaderWriter&, bool ignoreUnspecified=true) const = 0;
42  };
43 
44  template <typename D>
45  class TerrainParam : public D, public Configator
46  {
47  public:
48  explicit TerrainParam(
49  const std::string& name, DtReaderWriterRegistry* parentRegistry)
50  : D(name, parentRegistry)
51  {
52  //this->setValueSpecified(false, true);
53  this->myValueSpecified = true;
54  }
55 
56  explicit TerrainParam(const std::string& name, bool def, DtReaderWriterRegistry* parent)
57  : D(def, name, parent)
58  {
59  //this->setValueSpecified(false, true);
60  this->myValueSpecified = true;
61  }
62 
63  template <typename T>
64  explicit TerrainParam(const std::string& name, T def, DtReaderWriterRegistry* parent)
65  : D(name, def, parent)
66  {
67  //this->setValueSpecified(false, true);
68  this->myValueSpecified = true;
69  }
70 
71  virtual bool valuePresent() const
72  {
73  return this->valueSpecified();
74  }
75 
76  virtual bool configure(DtReaderWriter& rw, bool ignoreUnspecified) const override
77  {
78  if (ignoreUnspecified && !valuePresent())
79  return true;
80 
81  if (D* rwD = dynamic_cast<D*>(&rw))
82  {
83  *rwD = *this;
84  return true;
85  }
86 
87  return false;
88  }
89 
90  template <typename T>
92  {
93  D::operator=(t);
94  this->setValueSpecified(true);
95  return *this;
96  }
97  };
98 
99  template <typename T>
100  class ListT : public DtRwTemplatedListPtr<T, true>
101  , public Configator
102  {
104 
105  public:
106  ListT(const std::string& name, DtReaderWriterRegistry* parentRegistry)
107  : ListBase(name, parentRegistry)
108  {
109  }
110 
111  virtual bool configure(DtReaderWriter& rw, bool ignoreUnspecified) const override
112  {
113  ListBase* rwlist = dynamic_cast<ListBase*>(&rw);
114  if (!rwlist)
115  return false;
116 
117  rwlist->removeAndDeleteAll();
118 
119  bool success = true;
120  typename ListBase::iterator iter(*this);
121  for (T* info=iter.first(); info; info=iter.next())
122  {
123  std::unique_ptr<T> t(new T());
124  info->configure(*t, ignoreUnspecified);
125  rwlist->add(t.release());
126  }
127 
128  return success;
129  }
130 
131  //using ListBase::operator=;
132  };
133 
141 
148 
149 public:
155  explicit DtTerrainInterfaceConfig(const std::string& matchPattern = "");
157 
159 
161  virtual bool loadFromFile(const std::string& file, std::ostream& log);
162  virtual bool loadFromFile(const std::string& file);
163 
168  virtual bool loadFromSourceSpecificFile(
169  const std::string& file,
170  const std::string& ext = "mtl");
171 
188  virtual void configure(
189  DtTerrainInterfaceConfig& config,
190  const std::string& matchText,
191  bool ignoreUnspecified=true) const;
192 
193  virtual void configure(DtTerrainInterfaceConfig& config, bool ignoreUnspecified=true) const;
194 
197  virtual void configurePaths(std::string& path) const;
198 
200  virtual void print(std::ostream&, bool printUnspecified = true) const;
201 
202  virtual DtString prettyPrint() const override;
203 
204  virtual void setName(const DtString&) override;
205 
211 
218 
224 
230 
236 
241 
246 
252 
259 
264 
269 
275 
281 
288 
294 
301 
309 
315 
322 
328 
348 
355 
360 
367 
373 
379 
384 
390 
397 
402 
407 
412 
417 
421 
425 
429 
433 
440 
447 
455 
463 
473 
485 
490 
494 
502 
512 
518 
526 
534 
543 
547 
548  static void setModelDefinitionDefault(const std::string&);
549 
550  std::string modelDefinitionPath() const;
551 
552  std::string simCachePath() const;
553 
554  std::string featureConfigFile() const;
555 
556 protected:
561 
565 
569 };
570 
571 DT_DLL_vrfutil std::ostream& operator<<(std::ostream&, const DtTerrainInterfaceConfig&);
TInt featuresLowestLoadLOD
Parameter Name: features-lowest-load-LOD Parameter Description: The largest tile (smallest LOD) for l...
Definition: terrainInterfaceConfig.h:235
TBool proceduralSimVegetationEnabled
Parameter Name: procedural-sim-vegetation-enabled Configure if we want the procedural sim trees to be...
Definition: terrainInterfaceConfig.h:542
virtual bool configure(DtReaderWriter &rw, bool ignoreUnspecified) const override
Definition: terrainInterfaceConfig.h:111
TerrainParam & operator=(T t)
Definition: terrainInterfaceConfig.h:91
Class DtTerrainInterfaceConfig is a readable-writable class holding terrain interface configuration o...
Definition: terrainInterfaceConfig.h:33
TBool deduplicateFeatures
Parameter Name: deduplicate-features Parameter Description: Remove duplicate features. Parameter Default: True.
Definition: terrainInterfaceConfig.h:263
TInt defaultPreloadPriority
Parameter Name: default-preload-priority Parameter Description: Default priority for preload geometry...
Definition: terrainInterfaceConfig.h:389
virtual bool valuePresent() const
Definition: terrainInterfaceConfig.h:71
TInt minDynamicElevationLod
Parameter Name: minDynamicElevationLod Parameter Description: Minimum LOD at which dynamic elevation ...
Definition: terrainInterfaceConfig.h:533
TerrainParam< DtRwVector > TVector
Definition: terrainInterfaceConfig.h:138
TBool oceanLayerPresent
Parameter Name: ocean-layer-present Enable/disable ocean layer-present Default: True.
Definition: terrainInterfaceConfig.h:406
TerrainParam(const std::string &name, bool def, DtReaderWriterRegistry *parent)
Definition: terrainInterfaceConfig.h:56
TReal featuresIndexRatio
Parameter Name: features-index-ratio Parameter Description: If the ratio of the number of features in...
Definition: terrainInterfaceConfig.h:258
TReal seaLevel
Parameter Name: sea-level Sea level in meters Default:
Definition: terrainInterfaceConfig.h:411
TInt featuresMaxIndexLOD
Parameter Name: features-max-index-LOD Parameter Description: Smallest tile LOD level to index featur...
Definition: terrainInterfaceConfig.h:245
TInt cacheOnlyMaxLod
Parameter Name: cache-only-max-lod Parameter Description: Max level of detail to use when in cache-on...
Definition: terrainInterfaceConfig.h:359
TInt pathFinderMaxDisjointNetworks
Parameter Name: pathfinder-max-disjoint-networks Parameter Description: Maximum number of additional ...
Definition: terrainInterfaceConfig.h:347
TReal elevationIntersectTriangleMergeTolerance
Parameter Name: elevation-intersect-triangle-merge-tolerance Parameter Description: Error tolerance b...
Definition: terrainInterfaceConfig.h:462
ListT(const std::string &name, DtReaderWriterRegistry *parentRegistry)
Definition: terrainInterfaceConfig.h:106
TBool pageFeatures
Parameter Name: page-features Default: True.
Definition: terrainInterfaceConfig.h:424
virtual void removeAndDeleteAll() override
Removes and deletes all entries in the list.
Definition: readerWriter.h:85
TInt minFeaturesToIndexTile
Parameter Name: min-features-to-index-tile Parameter Description: Minumum number of features in a til...
Definition: terrainInterfaceConfig.h:251
TInt pathFinderMaxSize
Parameter Name: pathfinder-max-features Parameter Description: The max size of a DtAStarGraph. Once a path finder has exceeded this number of loaded features, it will be deleted, to be recreated the next time a path plan is requested. Parameter Default Value: 50000.
Definition: terrainInterfaceConfig.h:287
TString mySimCachePath
Parameter Name: sim-cache-path Default: /cache/vrfsim.
Definition: terrainInterfaceConfig.h:564
TerrainParam< DtRwString > TString
Definition: terrainInterfaceConfig.h:137
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
Definition: readerWriterRegistry.h:39
virtual bool configure(DtReaderWriter &rw, bool ignoreUnspecified) const override
Definition: terrainInterfaceConfig.h:76
TReal elevationTriangleOutputMergeTolerance
Parameter Name: elevation-triangle-output-merge-tolerance Parameter Description: Error tolerance betw...
Definition: terrainInterfaceConfig.h:454
TerrainParam(const std::string &name, DtReaderWriterRegistry *parentRegistry)
Definition: terrainInterfaceConfig.h:48
TList subconfigurations
Parameter Name: subconfigurations Parameter Description: A list of DtTerrainInterfaceConfig objects w...
Definition: terrainInterfaceConfig.h:147
TInt terrainMinUnloadIntersectDiff
Parameter Name: terrain-min-unload-intersect-diff Default: 50.
Definition: terrainInterfaceConfig.h:432
Definition: terrainInterfaceConfig.h:45
TBool loadTerraPageLocalMaterials
Parameter Name: load-terra-page-local-materials Parameter Description: Whether or not to have the bac...
Definition: terrainInterfaceConfig.h:280
TInt nbTerrainThread
Parameter Name: nbTerrainThread Parameter Description: Number of terrain thread to start...
Definition: terrainInterfaceConfig.h:517
TInt pathFinderMinVertexSearch
Parameter Name: pathfinder-min-vertex-search Parameter Description: The minimum number of vertices th...
Definition: terrainInterfaceConfig.h:314
ListT< DtTerrainInterfaceConfig > TList
Definition: terrainInterfaceConfig.h:139
TInt maxElevationIndexLOD
Parameter Name: max-elevation-index-lod Parameter Description: Maximum LOD to check for elevation int...
Definition: terrainInterfaceConfig.h:446
TBool loadTerraPageImagery
Parameter Name: load-terra-page-imagery Parameter Description: Whether or not to have the back-end lo...
Definition: terrainInterfaceConfig.h:274
TInt intersectPageInPriority
Parameter Name: intersect-page-in-priority Parameter Description: Priority for paging in data for non...
Definition: terrainInterfaceConfig.h:378
void print(double **a, int r, int c, const char *str)
TInt pathFinderPageTableDepth
Parameter Name: pathfinder-page-table-depth Parameter Description: The depth of the Quad-Tree used fo...
Definition: terrainInterfaceConfig.h:293
DtRwTemplatedListPtr< T, true > ListBase
Definition: terrainInterfaceConfig.h:103
Description: DtIteratorBase is the base class for iterators used to iterate over a DtList...
Definition: iteratorBase.h:32
TInt featuresHighestLoadLOD
Parameter Name: features-highest-load-LOD Parameter Description: The smallest tile (highest LOD) for ...
Definition: terrainInterfaceConfig.h:229
TBool cacheLastFeatureTile
Parameter Name: cache-last-feature-tile Parameter Description: Cache last used feature tile Parameter...
Definition: terrainInterfaceConfig.h:268
TVector spatialSubdivisionDimensions
Parameter Name: spatial-subdivision-dimensions Parameter Description: Parameters for Spatial Subdivis...
Definition: terrainInterfaceConfig.h:396
virtual DtListItem * add(DtReaderWriter *item) override
Define this function to hide the DtRwList version, and accept only the specific DtReaderWriter subcla...
Definition: rwTemplatedList.h:90
Definition: terrainInterfaceConfig.h:37
virtual T * first(bool move=true)
Definition: iteratorBase.h:331
TReal pathFinderVertexTolerance
Parameter Name: pathfinder-vertex-tolerance Parameter Description: The distance tolerance (in meters)...
Definition: terrainInterfaceConfig.h:308
TInt blockingIntersectPageInPriority
Parameter Name: blocking-intersect-page-in-priority Parameter Description: Priority for paging in dat...
Definition: terrainInterfaceConfig.h:372
TInt minElevationIndexLOD
Parameter Name: min-elevation-index-lod Parameter Description: Minimum LOD to check for elevation int...
Definition: terrainInterfaceConfig.h:439
Definition: terrainInterfaceConfig.h:100
virtual T * next(bool move=true)
Definition: iteratorBase.h:332
TerrainParam< DtRwTerrainCategoryMask > TTerrainCategoryMask
Definition: terrainInterfaceConfig.h:140
TInt triangleThreshold
Parameter Name: num-triangles-threshold Parameter Description: Maximum number of triangles. Once the number of triangles exceeds this number, data will be paged out until we are below this threshold. Parameter Default Value: 10000000.
Definition: terrainInterfaceConfig.h:354
TBool activePagerTbbMode
Parameter Name: active-pager-tbb-mode Parameter Description: Configure the active pager multi - threa...
Definition: terrainInterfaceConfig.h:511
TReal seaFloor
Parameter Name: sea-floor Sea floor in meters. Default:
Definition: terrainInterfaceConfig.h:416
TInt featuresPerTileTarget
Parameter Name: features-per-tile-target Parameter Description: Target number of features per tile...
Definition: terrainInterfaceConfig.h:240
TTerrainCategoryMask terrainCategoryMaskOverride
Parameter Name: terrain-category-mask-override Parameter Description: If specified, overrides all intersection calls to treat them as if they have the specified mask.
Definition: terrainInterfaceConfig.h:546
TReal pathFinderDotProductDistanceThreshold
Parameter Name: pathfinder-dot-product-distance-threshold Parameter Description: Heuristic which meas...
Definition: terrainInterfaceConfig.h:321
TInt featureIntersectionMode
Parameter Name: feature-intersection-mode Parameter Description: Configure Feature intersection mode ...
Definition: terrainInterfaceConfig.h:501
TReal maxChordLengthBeforeSplit
Parameter Name: max-chord-length-before-split Parameter Description: Maximum length of chords before ...
Definition: terrainInterfaceConfig.h:472
TInt maxElevationChordSplitTestLOD
Parameter Name: max-elevation-chord-split-test-lod Parameter Description: When doing intersections ov...
Definition: terrainInterfaceConfig.h:484
TReal featuresMinUnloadTime
Parameter Name: features-min-unload-time Default: 15.
Definition: terrainInterfaceConfig.h:428
TString pluginsDirectory
Parameter Name: plugins-directory Default: ../(plugins|plugins64)/(release|debug) ...
Definition: terrainInterfaceConfig.h:493
TReal pathFinderLoadTimeout
Parameter Name: pathfinder-load-timeout Parameter Description: The amount of time (in seconds) that t...
Definition: terrainInterfaceConfig.h:300
TerrainParam(const std::string &name, T def, DtReaderWriterRegistry *parent)
Definition: terrainInterfaceConfig.h:64
TReal pathFinderMinSearchRadius
Parameter Name: pathfinder-min-search-radius Parameter Description: Minumum distance path finder will...
Definition: terrainInterfaceConfig.h:327
TBool useS57ForTerrainGeneration
Parameter Name: use-S57-for-terrain-generation Parameter Description: Flag for S57 to terrain and soi...
Definition: terrainInterfaceConfig.h:401
Definition: rwTemplatedList.h:34
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
TerrainParam< DtRwReal > TReal
Definition: terrainInterfaceConfig.h:136
TInt maxNetworkThreads
Parameter Name: max-feature-network-threads Parameter Description: The max number of background threa...
Definition: terrainInterfaceConfig.h:210
TerrainParam< DtRwBoolean > TBool
Definition: terrainInterfaceConfig.h:134
TInt minElevationTileLoadingLod
Parameter Name: minElevationTileLoadingLod Parameter Description: Minimum LOD to load elevation tiles...
Definition: terrainInterfaceConfig.h:525
TString myFeatureConfigFile
Parameter Name: features-config-file Default: /settings/featureconfig.txt.
Definition: terrainInterfaceConfig.h:568
TerrainParam< DtRwInt > TInt
Definition: terrainInterfaceConfig.h:135
TBool useSoundingPoints
Parameter Name: use-sounding-points Default: True.
Definition: terrainInterfaceConfig.h:420
TBool loadImagery
Parameter Name: load-imagery Parameter Description: Whether the terrain system will load imagery it d...
Definition: terrainInterfaceConfig.h:366
TString myModelDefinitionPath
Parameter Name: model-definition-path. Will append /ModelDefinitions so keep this at the root Default...
Definition: terrainInterfaceConfig.h:560
TInt pageOutPriority
Parameter Name: page-out-priority Parameter Description: Priority for paging out data. Parameter Default Value: 30.
Definition: terrainInterfaceConfig.h:383
File: rwVector.h.
TInt areaPageTableLoadingThreads
Parameter Name: area-page-table-threads Parameter Description: Max number of simultaneous threads tha...
Definition: terrainInterfaceConfig.h:223
TInt maxUnusedFeatures
Parameter Name: max-unused-features Parameter Description: Max number of unused features to store in ...
Definition: terrainInterfaceConfig.h:217
TInt lowFidelityIntersectionLOD
Parameter Name: low-fidelity-intersection-lod Parameter Description: LOD to use when doing low fideli...
Definition: terrainInterfaceConfig.h:489

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)