VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
attachedTerrain.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
15 
18 #include "vrfutil/rwInt.h"
19 #include "vrfutil/rwString.h"
20 #include "vrfutil/rwBoolean.h"
21 #include "vrfutil/readerWriter.h"
22 #include <matrix/vlDcm.h>
24 #include <geometry/point.h>
25 #include <geometry/chord.h>
26 #include <matrix/topoCoord.h>
27 #include <matrix/geodeticCoord.h>
28 #include <matrix/coordTransform.h>
29 
30 #include <boost/shared_ptr.hpp>
31 
32 class DtTerrainInterface;
33 class DtPhysicalWorld;
34 class DtVrfObject;
37 class DtSurface;
38 class Coordinate_System;
39 
41 {
42 public:
43 
46 
48  DtAttachedTerrain(const DtString& name,
49  DtReaderWriterRegistry* const parentRegistry = 0, DtVrfObject* owner = 0);
50 
51  DtAttachedTerrain(const DtSymbolString& name,
52  DtReaderWriterRegistry* const parentRegistry = 0, DtVrfObject* owner = 0);
53 
55  DtAttachedTerrain(const DtString& name, const DtAttachedTerrain& orig,
56  DtReaderWriterRegistry* const parentRegistry = 0);
57 
59  from, DtReaderWriterRegistry* const parentRegistry = 0);
60 
62  virtual ~DtAttachedTerrain();
63 
65  virtual DtVrfObject* vrfObject() const;
66 
69 
73  virtual const char* readerWriterType() const;
74 
75  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
76  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
77 
78 public:
79  virtual const Coordinate_System* coordinateSystem() const;
80  virtual Coordinate_System* coordinateSystem();
81  virtual const Coordinate_System* objectModelCoordinateSystem() const;
82 
85  virtual void tick();
86 
88  virtual bool isHighFidelityTerrain() const;
89 
91  virtual void setStayAttachedEvenIfOff(bool);
92  virtual bool stayAttachedEvenIfOff() const;
93 
94  virtual double terrainHeight(const DtVector& localLocation,
95  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
96  virtual bool terrainHeight(const DtVector& localLocation,
97  double& terrainHeight, bool* dataAvailable = 0,
98  bool overrideBlockingAssert = false) const;
99 
100  virtual bool terrainHeightAndSurface(double lat, double lon,
101  double& terrainHeight, DtSurface& surface, bool* dataAvailable = 0,
102  bool overrideBlockingAssert = false) const;
103 
104  virtual bool terrainHeightAndSurface(const DtVector& localLocation,
105  double& terrainHeight, DtSurface& surface, bool* dataAvailable = 0,
106  bool overrideBlockingAssert = false) const;
107 
108 
109  virtual bool closestIntersection(const DtVector& localLocation,
110  DtPoint& intersectionPoint,
111  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
112 
113  virtual bool closestIntersection(const DtVector& localLocation,
114  DtVector& intersectionPoint,
115  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
116 
117  virtual bool closestIntersection(const DtVector& localLocation,
121  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
122 
123  virtual bool intersect(const DtChord& chord, DtPoint& intersectionPoint,
124  double& intersectionTime,
125  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
126 
127  virtual bool intersect(const DtChord& chord,
131  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
132 
139  virtual bool closestIntersection(const DtVector& curPosition,
140  DtVector& intersection, bool ignoreWater, bool* dataAvailable = 0,
141  bool overrideBlockingAssert = false) const;
142 
168  virtual bool allIntersectsAlongChord(const DtChord& chord,
171  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
172  bool overrideBlockingAssert = false) const;
173 
174 protected:
175  bool testInvariant() const;
176 
179  virtual void updateCoordTransforms();
180 
182  virtual DtVector convertLocalPointToModelPoint(const DtVector& source) const;
183 
186  virtual DtChord convertLocalChordToModelChord(const DtChord& source) const;
187 
189  virtual DtVector convertModelPointToDatabasePoint(const DtPoint&) const;
190 
193  virtual void convertModelPointToDatabasePoint(DtChordIntersectionRecord&) const;
194 
195 public:
196  virtual int appearanceFlags() const;
197 
198  void setObjectGeometricModel(boost::shared_ptr<DtTerrainInterface> newObjGeomModel);
199  boost::shared_ptr<DtTerrainInterface> objectGeometricModel() const;
200 
201  void setEntity(const DtSharedVrfObjectReference);
203 
204  void setPhysicalWorld(DtPhysicalWorld* newPhysicalWorld);
205  DtPhysicalWorld* physicalWorld();
206  const DtPhysicalWorld* physicalWorld() const;
207 
208  void clear();
209 
210  virtual DtAttachedTerrain* clone(const DtString& name, DtReaderWriterRegistry* const parentRegistry = 0) const;
211 
212 protected:
214 
216  boost::shared_ptr<DtTerrainInterface> myObjectGeometricModel;
217 
221 
224  DtCoordTransform myGeocentricToTopographic;
225  DtCoordTransform myTopographicToGeocentric;
226  DtCoordTransform myModelNormalToLocalNormal;
231 
235 };
236 

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)