VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObjectFacadeInterface.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrfGuiCore/vrfGuiCore.h>
14 
15 #include <vrvCore/DtUniqueID.h>
16 #include <vrvCore/DtIntersector.h>
19 
20 #include <matrix/vlVector.h>
21 #include <matrix/geodeticCoord.h>
22 #include <matrix/3dBoundingVolume.h>
23 #include <matrix/vlTaitBryan.h>
24 #include <string>
25 #include <vlpi/entityType.h>
26 #include <vrfutil/rwUUID.h>
27 
28 #include <boost/signals2.hpp>
29 #include <set>
30 #include <vector>
31 
32 class DtReferenceEllipsoid;
33 
34 namespace makVrv
35 {
36  class DtDe;
37  class DtChannel;
38  class DtWindow;
39 }
40 
41 namespace makVrf
42 {
44  {
45  NoClamp = 0,
49  };
50 
51  class DtVrfObjectManipulationHandlerBaseClass;
52 
54  {
55  public:
57 
58  virtual ~DtVrfObjectFacadeInterface();
59 
60  virtual const std::string& entityId() const
61  {
62  return myEntityId;
63  }
64 
65  virtual void setEntityId(const std::string& i)
66  {
67  myEntityId = i;
68  }
69 
70  virtual void setTopographicOffsetBetweenPoints(const DtGeodeticCoord& origin, const DtGeodeticCoord& originWithOffset, bool resetLocation = true);
71  virtual void setTopographicOffsetFromPrincipal(const DtVector&, bool resetLocation = true);
72  const DtVector& topographicOffsetFromPrincipal() const;
73 
74  virtual DtVector convertGeodeticOffsetFromOriginToTopographicOffsetFromOrigin(const DtGeodeticCoord&) const;
75  virtual DtGeodeticCoord locationFromTopographicOffsetFromCenterPoint(const DtGeodeticCoord& origin) const;
76  virtual DtVector convertGeodeticOffsetToTopographicOffset(const DtGeodeticCoord& origin, const DtGeodeticCoord& position) const;
77 
78  virtual double headingOffsetFromPrincipal() const;
79  virtual void setHeadingOffsetFromPrincipal( double offset );
80 
81  virtual double pitchOffsetFromPrincipal() const;
82  virtual void setPitchOffsetFromPrincipal( double offset );
83 
84  virtual const DtEntityType& entityType() const;
85  virtual const DtEntityType& objectType() const;
86 
87  virtual Dt3dBoundingVolume boundingVolume(makVrv::DtModelSetId modelSet = makVrv::DtModelSetId::Models3D) const;
88 
89  virtual DtGeodeticCoord modifyPointByTopographicOffset(const DtGeodeticCoord& origin, const DtVector& topographicOffset) const;
90  virtual double altitudeOffsetFromPrincipal() const;
91  virtual void setAltitudeOffsetFromPrincipal( double offset, bool resetLocation = true );
92 
93  virtual makVrv::DtUniqueID uniqueIDForModelSet(makVrv::DtModelSetId set) const = 0;
94  virtual makVrv::DtUniqueID uniqueID() const = 0;
95  virtual std::vector<makVrv::DtUniqueID> modelUniqueIDs() const = 0;
96 
99  virtual void setOverrideIdsToIgnore(const std::vector<makVrv::DtUniqueID>& overrideIgnore);
100 
102  virtual const std::vector<makVrv::DtUniqueID>& idsToIgnore() const;
103 
104  virtual makVrv::DtUniqueID sceneObjectId() const;
105  virtual void setSceneObjectId( const makVrv::DtUniqueID& id );
106 
107  virtual std::string displayName() const;
108  virtual void setDisplayName( const std::string& displayName );
109 
110  virtual void setUUID(const DtUUID&);
111  virtual const DtUUID& uuid() const;
112 
113  virtual DtGeodeticCoord currentGeodeticOrigin() const;
114 
116  virtual DtGeodeticCoord currentGeodeticPosition() const;
117 
118  virtual DtGeodeticCoord convertToGeodetic(const DtVector& v) const;
119 
120  virtual double currentHeading() const;
121  virtual void setCurrentHeading( double currentHeading );
122  virtual void setHeadingChanged(bool b);
123 
124  virtual double currentPitch() const;
125  virtual void setCurrentPitch( double currentPitch );
126  virtual void setPitchChanged(bool b);
127 
129  virtual void setSelected(bool);
130 
132  virtual void setAttachedTo(DtVrfObjectFacadeInterface*, const DtVector& offset, const DtTaitBryan& offsetOrientation);
133  const DtVector& attachedPoint() const
134  {
135  return myAttachPoint;
136  }
137 
138  const DtTaitBryan& attachedOrientation()
139  {
140  return myAttachOrientation;
141  }
142 
144  {
145  return myAttachedTo;
146  }
147 
148  virtual bool attachedTo() const;
149  virtual void detach();
150 
152  virtual std::string overlayName() const;
153 
155  virtual double currentAltitude() const;
156 
158  virtual DtVector centerOfMass() const;
159 
160  virtual DtVector geocentricLocation() const;
161  virtual DtVector localLocation() const;
162  virtual DtVector localLocation(const DtGeodeticCoord& geodLocation) const;
163 
165  virtual double initialAltitudeAboveTerrain() const;
166 
168  virtual DtVector reviseLocation(const DtVector& loc, int clampType = -1) const;
169 
171  virtual DtTaitBryan localOrientation() const;
172 
174  virtual void setExtendedData(const std::map<std::string, std::string>&)
175  {
176  }
177 
178  virtual void setExtendedData(const std::map<DtString, DtString>&);
179 
180  virtual void mergeExtendedData(const std::map<std::string, std::string>&)
181  {
182  }
183 
184  virtual std::map<std::string, std::string> extendedData() const
185  {
186  return std::map<std::string, std::string>();
187  }
188  virtual std::map<int, DtString> extendedLabels() const
189  {
190  return std::map<int, DtString>();
191  }
192 
193  boost::signals2::signal<void (DtVrfObjectFacadeInterface*)> signal_visualized;
194  boost::signals2::signal<void (DtVrfObjectFacadeInterface*)> signal_originChanged;
195  boost::signals2::signal<void (DtVrfObjectFacadeInterface*, bool)> signal_selected;
196 
197  public:
199 
200  virtual void setOrigin(const DtGeodeticCoord&);
201  virtual void setOrigin(const DtVector&);
202 
203  virtual void setSymbolNameVisible(bool, makVrv::DtModelSetId modelSet = makVrv::DtModelSetId::Icons2D) = 0;
204 
205  virtual void setPickable(bool) = 0;
206  virtual void setIndicatorVisible(bool) = 0;
207  virtual void setWidgetEventsEnabled(bool) = 0;
208  virtual void setHatLineVisible(bool) = 0;
209 
213  virtual void setVisible(bool, makVrv::DtShowHideContext::ShowHideContext, bool updateOffsets = true) = 0;
214  virtual bool isVisible() const = 0;
215 
217  virtual void setVisible(bool show, bool updateOffsets = true);
218 
220  virtual void setTopographicOrientation(const DtTaitBryan&) = 0;
221  virtual void setLocalOrientation(const DtTaitBryan&) = 0;
222 
224  virtual void unrealizeFacades(bool willRecreate = false) = 0;
225 
227  virtual void realizeFacades() = 0;
228 
229  virtual void clearHeadingChanged()
230  {
231  myHeadingChanged = false;
232  }
233 
234  virtual void clearPitchChanged()
235  {
236  myPitchChanged = false;
237  }
238 
239  virtual bool hasNameChange() const
240  {
241  return myDisplayNameChanged;
242  }
243 
244  virtual void clearLocationChange()
245  {
246  myLocationChanged = false;
247  }
248 
249  virtual bool hasLocationChange() const
250  {
251  return myLocationChanged;
252  }
253 
254  virtual bool hasAltitudeChange() const
255  {
256  return myAltitudeChanged;
257  }
258 
259  virtual bool hasHeadingChange() const
260  {
261  return myHeadingChanged;
262  }
263 
264  virtual bool hasPitchChange() const
265  {
266  return myPitchChanged;
267  }
268 
269  virtual void clearFlags();
270 
271  virtual void setAltitudeClampType(DtAltitudeClampType t);
273  {
274  return myAltitudeClampType;
275  }
276 
277  virtual void setAltitudeAboveTerrain(double);
278  virtual double altitudeAboveTerrain() const
279  {
280  return myAltitudeAboveGL;
281  }
282 
283  virtual void setAltitudeAboveSeaLevel(double);
284  virtual double altitudeAboveSeaLevel() const
285  {
286  return myAltitudeAboveSL;
287  }
288 
289  virtual void setIsAnchor(bool);
290  virtual bool isAnchor() const
291  {
292  return myAnchor;
293  }
294 
295  virtual void setUserData(const std::string& userData);
296  virtual std::string userData() const;
297  bool userDataChanged() const
298  {
299  return myUserDataChanged;
300  }
301 
303  {
304  return myModelSetOnly;
305  }
306 
308  {
309  return ((myModelSetOnly == makVrv::DtModelSetId::Unspecified) || (i == myModelSetOnly));
310  }
311 
312  virtual makVrv::DtIntersector::IntersectProperties intersectorPickMask() const;
313 
314  virtual DtVector clampToLowestNonOceanPolygon( const DtVector& lp, makVrv::DtIntersector::IntersectProperties props ) const;
315  virtual DtVector clampToGround( const DtVector& localPosition, makVrv::DtIntersector::IntersectProperties props =
316  makVrv::DtIntersector::SupportNodes, int clampType = -1, bool* foundClamp = nullptr ) const;
317  virtual DtGeodeticCoord clampToGround( const DtGeodeticCoord& localPosition, makVrv::DtIntersector::IntersectProperties props =
318  makVrv::DtIntersector::SupportNodes, int clampType = -1, bool* foundClamp = nullptr ) const;
319 
320  virtual void setEmbarkationAllowed(bool);
321  bool embarkationAllowed() const;
322 
323  virtual void setDoNotClamp(bool b)
324  {
325  if (b)
326  {
327  myAltitudeClampType = NoClamp;
328  }
329  else
330  {
331  myAltitudeClampType = AltitudeAboveTerrain;
332  }
333  }
334 
335  bool doNotClamp() const
336  {
337  return (myAltitudeClampType == NoClamp);
338  }
339 
340  virtual void setClampToClosestPolygon(bool b)
341  {
342  myClampToClosestPolygon = b;
343  }
344 
346  {
347  return myClampToClosestPolygon;
348  }
349 
350  protected:
351  virtual void setCurrentGroundLocation( const DtGeodeticCoord& currentGroundLocation );
352 
353  protected:
356  std::string myDisplayName;
357  std::string myEntityId;
358 
359  DtTaitBryan myOrientationOffset;
361 
362  DtGeodeticCoord myCurrentGroundLocation;
363  DtTaitBryan myOrientation;
364 
371 
375  bool myAnchor;
376  std::string myUserData;
377 
379  DtEntityType myEntityType;
383 
385  DtVector myAttachPoint;
386  DtTaitBryan myAttachOrientation;
387 
388  mutable std::vector<makVrv::DtElementID> myUnifiedIgnoreList;
389  mutable std::set<makVrv::DtUniqueID> myDIGuyIdsIgnored;
390  mutable std::vector<makVrv::DtUniqueID> myModelIds;
391 
392  std::vector<makVrv::DtUniqueID> myOverrideIdsToIgnore;
393 
395  typedef std::map<makVrv::DtModelSetId, bool> ModelSetVisualizationMap;
397  };
398 }
double myAltitudeOffsetFromPrincipal
Definition: vrfObjectFacadeInterface.h:360
DtTaitBryan myOrientation
geodetic coords
Definition: vrfObjectFacadeInterface.h:363
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual bool isAnchor() const
Definition: vrfObjectFacadeInterface.h:290
IntersectProperties
The IntersectProperties enum is a flag set that indicates the types of nodes to be considered for int...
Definition: DtIntersector.h:31
bool userDataChanged() const
Definition: vrfObjectFacadeInterface.h:297
std::vector< makVrv::DtUniqueID > myModelIds
Definition: vrfObjectFacadeInterface.h:390
bool myClampToClosestPolygon
Definition: vrfObjectFacadeInterface.h:380
ModelSetVisualizationMap myModelSetVisualizationMap
Definition: vrfObjectFacadeInterface.h:396
double myAltitudeAboveSL
Definition: vrfObjectFacadeInterface.h:373
std::vector< makVrv::DtUniqueID > myOverrideIdsToIgnore
Definition: vrfObjectFacadeInterface.h:392
virtual bool hasAltitudeChange() const
Definition: vrfObjectFacadeInterface.h:254
virtual bool hasNameChange() const
Definition: vrfObjectFacadeInterface.h:239
virtual std::map< std::string, std::string > extendedData() const
Definition: vrfObjectFacadeInterface.h:184
std::vector< makVrv::DtElementID > myUnifiedIgnoreList
Definition: vrfObjectFacadeInterface.h:388
voidpf uLong int origin
Definition: ioapi.h:42
Contains integers that determine the context with which to show/hide a visualizer.
virtual const std::string & entityId() const
Definition: vrfObjectFacadeInterface.h:60
DtVector myTopographicOffsetFromPrincipal
Definition: vrfObjectFacadeInterface.h:394
bool doNotClamp() const
Definition: vrfObjectFacadeInterface.h:335
boost::signals2::signal< void(DtVrfObjectFacadeInterface *)> signal_visualized
Definition: vrfObjectFacadeInterface.h:193
ShowHideContext
Definition: DtShowHideContext.h:18
bool myPitchChanged
Definition: vrfObjectFacadeInterface.h:369
virtual double altitudeAboveSeaLevel() const
Definition: vrfObjectFacadeInterface.h:284
Contains the DtUUID class declaration.
Definition: vrfObjectFacadeInterface.h:47
std::map< makVrv::DtModelSetId, bool > ModelSetVisualizationMap
Definition: vrfObjectFacadeInterface.h:395
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
virtual std::map< int, DtString > extendedLabels() const
Definition: vrfObjectFacadeInterface.h:188
virtual void setExtendedData(const std::map< std::string, std::string > &)
For subclasses to implement...
Definition: vrfObjectFacadeInterface.h:174
bool supportsModelSet(makVrv::DtModelSetId i) const
Definition: vrfObjectFacadeInterface.h:307
bool myDisplayNameChanged
Definition: vrfObjectFacadeInterface.h:365
bool clampToClosestPolygon() const
Definition: vrfObjectFacadeInterface.h:345
Definition: vrfObjectFacadeInterface.h:45
makVrv::DtModelSetId modelSet() const
Definition: vrfObjectFacadeInterface.h:302
double myAltitudeAboveGL
Definition: vrfObjectFacadeInterface.h:374
makVrv::DtUniqueID mySceneObjectId
Definition: vrfObjectFacadeInterface.h:355
Contains makVrv:DtIntersector class.
makVrv::DtDe & myDe
Definition: vrfObjectFacadeInterface.h:354
DtVrfObjectFacadeInterface * attachedToObject() const
Definition: vrfObjectFacadeInterface.h:143
bool myHeadingChanged
Definition: vrfObjectFacadeInterface.h:368
virtual bool hasPitchChange() const
Definition: vrfObjectFacadeInterface.h:264
DtGeodeticCoord myCurrentGroundLocation
Definition: vrfObjectFacadeInterface.h:362
bool myUserDataChanged
Definition: vrfObjectFacadeInterface.h:370
Definition: vrfObjectFacadeInterface.h:53
bool myAnchor
Definition: vrfObjectFacadeInterface.h:375
DtUUID myUUID
Definition: vrfObjectFacadeInterface.h:381
std::string myDisplayName
Definition: vrfObjectFacadeInterface.h:356
Definition: DtIntersector.h:35
bool myAltitudeChanged
Definition: vrfObjectFacadeInterface.h:367
virtual DtAltitudeClampType altitudeClampType() const
Definition: vrfObjectFacadeInterface.h:272
std::string myEntityId
Definition: vrfObjectFacadeInterface.h:357
DtAltitudeClampType myAltitudeClampType
Definition: vrfObjectFacadeInterface.h:372
virtual void clearPitchChanged()
Definition: vrfObjectFacadeInterface.h:234
DtVector myAttachPoint
Definition: vrfObjectFacadeInterface.h:385
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
virtual bool hasLocationChange() const
Definition: vrfObjectFacadeInterface.h:249
Definition: vrfObjectFacadeInterface.h:46
virtual void setClampToClosestPolygon(bool b)
Definition: vrfObjectFacadeInterface.h:340
Definition: vrfObjectFacadeInterface.h:48
virtual void setEntityId(const std::string &i)
Definition: vrfObjectFacadeInterface.h:65
std::string myUserData
Definition: vrfObjectFacadeInterface.h:376
DtVrfObjectFacadeInterface * myAttachedTo
Definition: vrfObjectFacadeInterface.h:384
virtual void setDoNotClamp(bool b)
Definition: vrfObjectFacadeInterface.h:323
makVrv::DtModelSetId myModelSetOnly
Definition: vrfObjectFacadeInterface.h:378
Contains makVrv::DtUniqueID type.
const DtTaitBryan & attachedOrientation()
Definition: vrfObjectFacadeInterface.h:138
DtTaitBryan myOrientationOffset
Definition: vrfObjectFacadeInterface.h:359
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
boost::signals2::signal< void(DtVrfObjectFacadeInterface *)> signal_originChanged
Definition: vrfObjectFacadeInterface.h:194
bool myEmbarkationAllowed
Definition: vrfObjectFacadeInterface.h:382
virtual void clearHeadingChanged()
Definition: vrfObjectFacadeInterface.h:229
DtTaitBryan myAttachOrientation
Definition: vrfObjectFacadeInterface.h:386
DtModelSetId
Definition: DtModelSetEnums.h:19
voidpf uLong offset
Definition: ioapi.h:42
boost::signals2::signal< void(DtVrfObjectFacadeInterface *, bool)> signal_selected
Definition: vrfObjectFacadeInterface.h:195
virtual bool hasHeadingChange() const
Definition: vrfObjectFacadeInterface.h:259
DtEntityType myEntityType
Definition: vrfObjectFacadeInterface.h:379
virtual void mergeExtendedData(const std::map< std::string, std::string > &)
Definition: vrfObjectFacadeInterface.h:180
bool myLocationChanged
Definition: vrfObjectFacadeInterface.h:366
std::set< makVrv::DtUniqueID > myDIGuyIdsIgnored
Definition: vrfObjectFacadeInterface.h:389
Contains various enum classes relating to model sets.
virtual void clearLocationChange()
Definition: vrfObjectFacadeInterface.h:244
DtAltitudeClampType
Definition: vrfObjectFacadeInterface.h:43
virtual double altitudeAboveTerrain() const
Definition: vrfObjectFacadeInterface.h:278
const DtVector & attachedPoint() const
Definition: vrfObjectFacadeInterface.h:133

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)