VR-Forces 5.0.1 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 
16 #include <vrvCore/DtUniqueID.h>
17 #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:
56  DtVrfObjectFacadeInterface( makVrv::DtDe& de, int modelSet = -1 );
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 DtObjectType objectType() const;
86 
87  virtual Dt3dBoundingVolume boundingVolume(int modelSet = 0) 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(int 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 mergeExtendedData(const std::map<std::string, std::string>&)
179  {
180  }
181 
182  virtual std::map<std::string, std::string> extendedData() const
183  {
184  return std::map<std::string, std::string>();
185  }
186  virtual std::map<int, DtString> extendedLabels() const
187  {
188  return std::map<int, DtString>();
189  }
190 
191  boost::signals2::signal<void (DtVrfObjectFacadeInterface*)> signal_visualized;
192  boost::signals2::signal<void (DtVrfObjectFacadeInterface*)> signal_originChanged;
193  boost::signals2::signal<void (DtVrfObjectFacadeInterface*, bool)> signal_selected;
194 
195  public:
197 
198  virtual void setOrigin(const DtGeodeticCoord&);
199  virtual void setOrigin(const DtVector&);
200 
201  virtual void setSymbolNameVisible(bool) = 0;
202 
203  virtual void setPickable(bool) = 0;
204  virtual void setIndicatorVisible(bool) = 0;
205  virtual void setWidgetEventsEnabled(bool) = 0;
206  virtual void setHatLineVisible(bool) = 0;
207 
211  virtual void setVisible(bool, makVrv::DtShowHideContext::ShowHideContext, bool updateOffsets = true) = 0;
212  virtual bool isVisible() const = 0;
213 
215  virtual void setVisible(bool show, bool updateOffsets = true);
216 
218  virtual void setTopographicOrientation(const DtTaitBryan&) = 0;
219  virtual void setLocalOrientation(const DtTaitBryan&) = 0;
220 
222  virtual void unrealizeFacades(bool willRecreate = false) = 0;
223 
225  virtual void realizeFacades() = 0;
226 
227  virtual bool hasNameChange() const
228  {
229  return myDisplayNameChanged;
230  }
231 
232  virtual void clearLocationChange()
233  {
234  myLocationChanged = false;
235  }
236 
237  virtual bool hasLocationChange() const
238  {
239  return myLocationChanged;
240  }
241 
242  virtual bool hasAltitudeChange() const
243  {
244  return myAltitudeChanged;
245  }
246 
247  virtual bool hasHeadingChange() const
248  {
249  return myHeadingChanged;
250  }
251 
252  virtual bool hasPitchChange() const
253  {
254  return myPitchChanged;
255  }
256 
257  virtual void clearFlags();
258 
259  virtual void setAltitudeClampType(DtAltitudeClampType t);
261  {
262  return myAltitudeClampType;
263  }
264 
265  virtual void setAltitudeAboveTerrain(double);
266  virtual double altitudeAboveTerrain() const
267  {
268  return myAltitudeAboveGL;
269  }
270 
271  virtual void setAltitudeAboveSeaLevel(double);
272  virtual double altitudeAboveSeaLevel() const
273  {
274  return myAltitudeAboveSL;
275  }
276 
277  virtual void setIsAnchor(bool);
278  virtual bool isAnchor() const
279  {
280  return myAnchor;
281  }
282 
283  virtual void setUserData(const std::string& userData);
284  virtual std::string userData() const;
285  bool userDataChanged() const
286  {
287  return myUserDataChanged;
288  }
289 
290  int modelSet() const
291  {
292  return myModelSetOnly;
293  }
294 
295  bool supportsModelSet(int i) const
296  {
297  return ((myModelSetOnly == -1) || (i == myModelSetOnly));
298  }
299 
300  virtual makVrv::DtIntersector::IntersectProperties intersectorPickMask() const;
301 
302  virtual DtVector clampToLowestNonOceanPolygon( const DtVector& lp, makVrv::DtIntersector::IntersectProperties props ) const;
303  virtual DtVector clampToGround( const DtVector& localPosition, makVrv::DtIntersector::IntersectProperties props =
304  makVrv::DtIntersector::SupportNodes, int clampType = -1 ) const;
305  virtual DtGeodeticCoord clampToGround( const DtGeodeticCoord& localPosition, makVrv::DtIntersector::IntersectProperties props =
306  makVrv::DtIntersector::SupportNodes, int clampType = -1 ) const;
307 
308  virtual void setEmbarkationAllowed(bool);
309  bool embarkationAllowed() const;
310 
311  virtual void setDoNotClamp(bool b)
312  {
313  if (b)
314  {
315  myAltitudeClampType = NoClamp;
316  }
317  else
318  {
319  myAltitudeClampType = AltitudeAboveTerrain;
320  }
321  }
322 
323  bool doNotClamp() const
324  {
325  return (myAltitudeClampType == NoClamp);
326  }
327 
328  virtual void setClampToClosestPolygon(bool b)
329  {
330  myClampToClosestPolygon = b;
331  }
332 
334  {
335  return myClampToClosestPolygon;
336  }
337 
338  protected:
339  virtual void setCurrentGroundLocation( const DtGeodeticCoord& currentGroundLocation );
340 
341  protected:
344  std::string myDisplayName;
345  std::string myEntityId;
346 
347  DtTaitBryan myOrientationOffset;
349 
350  DtGeodeticCoord myCurrentGroundLocation;
351  DtTaitBryan myOrientation;
352 
359 
363  bool myAnchor;
364  std::string myUserData;
365 
367  DtEntityType myEntityType;
371 
374  DtTaitBryan myAttachOrientation;
375 
376  mutable std::vector<makVrv::DtElementID> myUnifiedIgnoreList;
377  mutable std::set<makVrv::DtUniqueID> myDIGuyIdsIgnored;
378  mutable std::vector<makVrv::DtUniqueID> myModelIds;
379 
380  std::vector<makVrv::DtUniqueID> myOverrideIdsToIgnore;
381 
383  typedef std::map<int, bool> ModelSetVisualizationMap;
385  };
386 }
double myAltitudeOffsetFromPrincipal
Definition: vrfObjectFacadeInterface.h:348
DtTaitBryan myOrientation
geodetic coords
Definition: vrfObjectFacadeInterface.h:351
UUID is a unique ID wrapper class.
Definition: rwUUID.h:226
virtual bool isAnchor() const
Definition: vrfObjectFacadeInterface.h:278
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:285
std::vector< makVrv::DtUniqueID > myModelIds
Definition: vrfObjectFacadeInterface.h:378
bool myClampToClosestPolygon
Definition: vrfObjectFacadeInterface.h:368
ModelSetVisualizationMap myModelSetVisualizationMap
Definition: vrfObjectFacadeInterface.h:384
double myAltitudeAboveSL
Definition: vrfObjectFacadeInterface.h:361
std::vector< makVrv::DtUniqueID > myOverrideIdsToIgnore
Definition: vrfObjectFacadeInterface.h:380
virtual bool hasAltitudeChange() const
Definition: vrfObjectFacadeInterface.h:242
virtual bool hasNameChange() const
Definition: vrfObjectFacadeInterface.h:227
virtual std::map< std::string, std::string > extendedData() const
Definition: vrfObjectFacadeInterface.h:182
std::vector< makVrv::DtElementID > myUnifiedIgnoreList
Definition: vrfObjectFacadeInterface.h:376
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:382
bool doNotClamp() const
Definition: vrfObjectFacadeInterface.h:323
boost::signals2::signal< void(DtVrfObjectFacadeInterface *)> signal_visualized
Definition: vrfObjectFacadeInterface.h:191
ShowHideContext
Definition: DtShowHideContext.h:18
bool myPitchChanged
Definition: vrfObjectFacadeInterface.h:357
virtual double altitudeAboveSeaLevel() const
Definition: vrfObjectFacadeInterface.h:272
Contains the DtUUID class declaration.
int modelSet() const
Definition: vrfObjectFacadeInterface.h:290
Definition: vrfObjectFacadeInterface.h:47
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
virtual std::map< int, DtString > extendedLabels() const
Definition: vrfObjectFacadeInterface.h:186
virtual void setExtendedData(const std::map< std::string, std::string > &)
For subclasses to implement...
Definition: vrfObjectFacadeInterface.h:174
bool myDisplayNameChanged
Definition: vrfObjectFacadeInterface.h:353
Definition: objectType.h:27
std::map< int, bool > ModelSetVisualizationMap
Definition: vrfObjectFacadeInterface.h:383
bool clampToClosestPolygon() const
Definition: vrfObjectFacadeInterface.h:333
Definition: vrfObjectFacadeInterface.h:45
double myAltitudeAboveGL
Definition: vrfObjectFacadeInterface.h:362
makVrv::DtUniqueID mySceneObjectId
Definition: vrfObjectFacadeInterface.h:343
Contains makVrv:DtIntersector class.
makVrv::DtDe & myDe
Definition: vrfObjectFacadeInterface.h:342
DtVrfObjectFacadeInterface * attachedToObject() const
Definition: vrfObjectFacadeInterface.h:143
bool myHeadingChanged
Definition: vrfObjectFacadeInterface.h:356
virtual bool hasPitchChange() const
Definition: vrfObjectFacadeInterface.h:252
DtGeodeticCoord myCurrentGroundLocation
Definition: vrfObjectFacadeInterface.h:350
bool myUserDataChanged
Definition: vrfObjectFacadeInterface.h:358
Definition: vrfObjectFacadeInterface.h:53
bool myAnchor
Definition: vrfObjectFacadeInterface.h:363
DtUUID myUUID
Definition: vrfObjectFacadeInterface.h:369
std::string myDisplayName
Definition: vrfObjectFacadeInterface.h:344
Definition: DtIntersector.h:35
bool myAltitudeChanged
Definition: vrfObjectFacadeInterface.h:355
virtual DtAltitudeClampType altitudeClampType() const
Definition: vrfObjectFacadeInterface.h:260
std::string myEntityId
Definition: vrfObjectFacadeInterface.h:345
DtAltitudeClampType myAltitudeClampType
Definition: vrfObjectFacadeInterface.h:360
int myModelSetOnly
Definition: vrfObjectFacadeInterface.h:366
DtVector myAttachPoint
Definition: vrfObjectFacadeInterface.h:373
virtual bool hasLocationChange() const
Definition: vrfObjectFacadeInterface.h:237
Definition: vrfObjectFacadeInterface.h:46
virtual void setClampToClosestPolygon(bool b)
Definition: vrfObjectFacadeInterface.h:328
Definition: vrfObjectFacadeInterface.h:48
virtual void setEntityId(const std::string &i)
Definition: vrfObjectFacadeInterface.h:65
bool supportsModelSet(int i) const
Definition: vrfObjectFacadeInterface.h:295
std::string myUserData
Definition: vrfObjectFacadeInterface.h:364
DtVrfObjectFacadeInterface * myAttachedTo
Definition: vrfObjectFacadeInterface.h:372
virtual void setDoNotClamp(bool b)
Definition: vrfObjectFacadeInterface.h:311
Contains makVrv::DtUniqueID type.
const DtTaitBryan & attachedOrientation()
Definition: vrfObjectFacadeInterface.h:138
DtTaitBryan myOrientationOffset
Definition: vrfObjectFacadeInterface.h:347
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:70
boost::signals2::signal< void(DtVrfObjectFacadeInterface *)> signal_originChanged
Definition: vrfObjectFacadeInterface.h:192
bool myEmbarkationAllowed
Definition: vrfObjectFacadeInterface.h:370
DtTaitBryan myAttachOrientation
Definition: vrfObjectFacadeInterface.h:374
voidpf uLong offset
Definition: ioapi.h:42
boost::signals2::signal< void(DtVrfObjectFacadeInterface *, bool)> signal_selected
Definition: vrfObjectFacadeInterface.h:193
virtual bool hasHeadingChange() const
Definition: vrfObjectFacadeInterface.h:247
DtEntityType myEntityType
Definition: vrfObjectFacadeInterface.h:367
virtual void mergeExtendedData(const std::map< std::string, std::string > &)
Definition: vrfObjectFacadeInterface.h:178
bool myLocationChanged
Definition: vrfObjectFacadeInterface.h:354
std::set< makVrv::DtUniqueID > myDIGuyIdsIgnored
Definition: vrfObjectFacadeInterface.h:377
virtual void clearLocationChange()
Definition: vrfObjectFacadeInterface.h:232
DtAltitudeClampType
Definition: vrfObjectFacadeInterface.h:43
virtual double altitudeAboveTerrain() const
Definition: vrfObjectFacadeInterface.h:266
const DtVector & attachedPoint() const
Definition: vrfObjectFacadeInterface.h:133

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)