VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
terrainGeometry.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2025 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
13 #include <vl/globalObjectDesignator.h>
14 #include <vlpi/entityIdentifier.h>
15 #include <vlutil/vlMachineTypes.h>
16 #include <vlutil/vlString.h>
17 #include <matrix/vlVector.h>
18 #include <map>
19 #include <ostream>
20 
22 {
29 };
30 
34 {
35 public:
37 
38  virtual ~DtTerrainGeometry();
39 
41 
42  DtTerrainGeometry& operator=(const DtTerrainGeometry& orig);
43 
44  bool operator==(const DtTerrainGeometry& other) const;
45  bool operator!=(const DtTerrainGeometry& other) const;
46 
47  int netSize() const;
48 
49  virtual unsigned int getPaddingSize(DtU64 byteOffset, unsigned int boundary) const;
50 
51  void writeToBuffer( char* buffer ) const;
52  void fillFromBuffer( const char* buffer, int bufferSize, int offset );
53 
56 
57  template<class Variant>
58  const Variant* variant() const
59  {
60  // Don't do an expensive dynamic cast unless we're pretty sure we have the right type here.
61  if (Variant::theTerrainAreaType() == terrainAreaType())
62  {
63  return dynamic_cast<const Variant*>(this);
64  }
65  return 0;
66  }
67 
68  template<class Variant>
69  Variant* variant()
70  {
71  return const_cast<Variant*>(static_cast<const Variant*>(this));
72  }
74 
76 
77 
79  virtual DtTerrainGeometry* clone() const = 0;
80 
82  virtual DtTerrainAreaTypeEnum32 terrainAreaType() const = 0;
83 
86  virtual bool approximatelyEqual(const DtTerrainGeometry& other, double tolerance = -1.0) const = 0;
87 
89  virtual int variantNetSize() const = 0;
90 
92  virtual int variantOctetBoundary() const = 0;
93 
95  virtual void writeVariantToBuffer( char* buffer ) const = 0;
96 
98  virtual void fillVariantFromBuffer( const char* buffer, int bufferSize, int offset ) = 0;
99 
101 
102  virtual void printData() const;
103  virtual void printDataToStream(std::ostream &) const;
104 
106  static DtTerrainAreaTypeEnum32 terrainAreaTypeFromBuffer(const char* buffer, int bufferSize, int offset);
107 
110  static int octetBoundary();
111 
113  static double defaultTolerance();
114 
116  static void setDefaultTolerance(double tolerance);
117 
118 protected:
119 
120  static double theDefaultTolerance; // = 0.001
121 
122 };
123 
127 {
128 public:
130  virtual DtTerrainAreaTypeEnum32 terrainAreaType() const = 0;
131  virtual int variantOctetBoundary() const = 0;
132  virtual DtTerrainGeometry* createVariant() const = 0;
133  virtual DtTerrainGeometryVariantInfo* clone() const = 0;
134 };
135 
137 template<class VariantType>
139 {
140 public:
141 
142  virtual DtTerrainAreaTypeEnum32 terrainAreaType() const override
143  {
144  return VariantType::theTerrainAreaType();
145  }
146 
147  virtual int variantOctetBoundary() const override
148  {
149  return VariantType::theVariantOctetBoundary();
150  }
151 
152  virtual DtTerrainGeometry* createVariant() const override
153  {
154  return new VariantType();
155  }
156 
157  virtual DtTerrainGeometryVariantInfo* clone() const override
158  {
160  }
161 };
162 
167 {
168 public:
169 
171  static void registerTerrainGeometryVariant(const DtTerrainGeometryVariantInfo& variantInfo);
172 
175  static void registerUnknownTerrainGeometryVariant(const DtTerrainGeometryVariantInfo& variantInfo);
176 
178  static DtTerrainGeometry* createTerrainGeometry(DtTerrainAreaTypeEnum32 terrainAreaType);
179 
181  static DtTerrainGeometry* createUnknownTerrainGeometry();
182 
185  static int octetBoundary(DtTerrainAreaTypeEnum32 terrainAreaType);
186 
188  static int maximumOctetBoundary();
189 
190 protected:
191 
193  static void registerDefaultTerrainGeometryVariants();
194 
195  static std::map<DtTerrainAreaTypeEnum32, DtTerrainGeometryVariantInfo*> theVariants;
196 
198 
200 };
201 
202 DT_DLL_vrfExtProtocol std::ostream& operator<<(std::ostream& stream, const DtTerrainGeometry&);
virtual DtTerrainGeometry * createVariant() const =0
virtual DtTerrainGeometryVariantInfo * clone() const =0
virtual int variantOctetBoundary() const =0
virtual ~DtTerrainGeometryVariantInfo()
Definition: terrainGeometry.h:129
Variant * variant()
If this Terrain Geometry object matches the given variant type, returns a pointer to this object of t...
Definition: terrainGeometry.h:69
Class for providing information on a Terrain Geometry variant. A new DtTerrainGeometryVariantInfo mus...
Definition: terrainGeometry.h:126
virtual DtTerrainAreaTypeEnum32 terrainAreaType() const override
Definition: terrainGeometry.h:142
virtual int variantOctetBoundary() const override
Definition: terrainGeometry.h:147
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
DT_DLL_features std::ostream & operator<<(std::ostream &, const DtFeatureTransform &)
std::ostream output.
Template implementation of DtTerrainGeometryVariantInfo.
Definition: terrainGeometry.h:138
Definition: terrainGeometry.h:26
static std::map< DtTerrainAreaTypeEnum32, DtTerrainGeometryVariantInfo * > theVariants
Definition: terrainGeometry.h:195
Factor class for creating Terrain Geometry variants based on Terrain Area Type. Default types will be...
Definition: terrainGeometry.h:166
static DtTerrainGeometryVariantInfo * theUnknownVariant
Definition: terrainGeometry.h:197
Definition: terrainGeometry.h:27
virtual DtTerrainGeometryVariantInfo * clone() const override
Definition: terrainGeometry.h:157
virtual DtTerrainGeometry * createVariant() const override
Definition: terrainGeometry.h:152
Definition: terrainGeometry.h:23
voidpf stream
Definition: ioapi.h:39
DtTerrainAreaTypeEnum32
Definition: terrainGeometry.h:21
#define DT_DLL_vrfExtProtocol
Definition: vrfExtProtocolDefines.h:23
DT_DLL_terrainCS bool operator!=(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
const Variant * variant() const
If this Terrain Geometry object matches the given variant type, returns a pointer to this object of t...
Definition: terrainGeometry.h:58
static bool theFactoryIsInitialized
Definition: terrainGeometry.h:199
static double theDefaultTolerance
Definition: terrainGeometry.h:120
voidpf uLong offset
Definition: ioapi.h:42
Definition: terrainGeometry.h:25
virtual DtTerrainAreaTypeEnum32 terrainAreaType() const =0
Definition: terrainGeometry.h:28
Definition: terrainGeometry.h:24
Definition: terrainGeometry.h:33

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)