VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCigiBaseEntity.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCigi/vrvCigi.h>
13 
14 #include <vrvCore/DtUniqueID.h>
17 
18 #include <matrix/geodeticCoord.h>
19 #include <matrix/vlTaitBryan.h>
20 
21 #include <vlpi/entityType.h>
22 
23 #include <string>
24 
25 namespace makVrv
26 {
27  class DtAgentManagerInterface;
28  class DtCigiConnection;
29  class DtModelAgent;
30  class DtSceneObjectAgent;
31  class DtGroundClampingUpdaterAgent;
32  class DtDeadReckonUpdaterAgent;
33  class DtEmbarkationUpdaterAgent;
34  class DtSceneObject;
35  class DtDeadReckonUpdater;
36 
37 
43  {
44  public:
48  DtAgentManagerInterface& sceneInterface, int entityId,
49  int entityType);
50 
52  virtual ~DtCigiBaseEntity();
53 
56  virtual DtUniqueID uniqueId() const;
57 
59  virtual DtUniqueID elementId() const;
60 
62  virtual int cigiId() const;
63 
66  virtual void init();
67 
70  virtual void uninit();
71 
76  virtual void restart();
77 
82  virtual void restartRequest();
83 
85  virtual int entityType() const;
86 
88  virtual bool extendedEntityTypeOn() const;
89 
91  virtual void setExtendedEntityTypeOn(bool onOff);
92 
94  virtual void setExtendedEntityType(DtEntityType& entityType);
95 
97  virtual void setVisible(bool yesNo);
98 
100  virtual bool isVisible() const;
101 
103  virtual void setDeadReckoningOn(bool onOff);
104 
109  virtual bool isDeadReckoning() const;
110 
114  virtual void setPosition(const DtGeodeticCoord& pos, bool force=false);
115 
117  virtual const DtGeodeticCoord& position() const;
118 
124  virtual const DtGeodeticCoord& previousPosition() const;
125 
127  virtual const DtVector& localPosition() const;
128 
132  virtual void setOrientation(const DtTaitBryan& orientation, bool force=false);
133 
135  virtual const DtTaitBryan& orientation() const;
136 
138  virtual const DtTaitBryan& localOrientation() const;
139 
141  virtual const DtTaitBryan& geocentricOrientation() const;
142 
147  virtual void setLinearRate(const DtVector& rate, bool useWorldCoordinates, bool force=false);
148 
150  virtual const DtVector& linearRate() const;
151 
156  virtual void setAngularRate(const DtVector& rate, bool useWorldCoordinates, bool force=false);
157 
159  virtual const DtVector& angularRate() const;
160 
162 
165  virtual void setRelativeTo(DtCigiBaseEntity* parent);
166 
168  virtual void setRelativePosition(const DtVector& pos);
169 
172  virtual void setRelativeOrientation(const DtTaitBryan& orient);
173 
175  virtual bool isEmbarked() const;
176 
178  virtual int embarkedParentId() const;
179 
181  virtual const DtVector& relativePosition() const;
182 
184  virtual const DtTaitBryan& relativeOrientation() const;
186 
191  virtual void slot_deadReckoningAllowed(bool allowed);
192 
194  virtual void setAlpha(int alpha);
195 
198  virtual int alpha() const;
199 
201  virtual void setInheritAlpha(bool inherit);
202 
204  virtual bool isInheritingAlpha() const;
205 
207  virtual void slot_alphaChanged(int alpha, DtUniqueID id);
208 
212  virtual void slot_entityToBeDeleted(int cigiEntityId);
213 
215  virtual void setGroundClampingOn( DtGroundClampingUpdater::GroundClampingMode clampType );
216 
218  virtual DtGroundClampingUpdater::GroundClampingMode groundClampingType() const;
219 
221  virtual void setArtPartTranslation(int partId, float xOffset, float yOffset,
222  float zOffset, bool xEnable, bool yEnable, bool zEnable);
223 
226  virtual bool getArtPartTranslation( int partId, DtVector& translation );
227 
229  virtual void setArtPartOrientation(int partId, float yaw, float pitch, float roll,
230  bool yawEnable, bool pitchEnable, bool rollEnable);
231 
232  // Get the art part orientation from a specified CIGI part id.
234  virtual bool getArtPartOrientation( int partId, DtTaitBryan& orientation );
235 
237  virtual void setArtPartLinearRate(int partId, float xRate, float yRate,
238  float zRate);
239 
242  virtual bool getArtPartLinearRate( int partId, DtVector& rate );
243 
246  virtual bool getArtPartTranslationAndRate( int partId, DtVector& translation, DtVector& rate );
247 
249  virtual void setArtPartAngularRate(int partId, float yawRate, float pitchRate,
250  float rollRate);
251 
252  // Get the art part orientation rate from a specified CIGI part id.
254  virtual bool getArtPartAngularRate( int partId, DtVector& rate );
255 
256  // Get the art part orientation and rate from a specified CIGI part id.
258  virtual bool getArtPartOrientationAndRate( int partId, DtTaitBryan& orientation, DtVector& rate );
259 
261  virtual void setArtPartEnable(int partId, bool trueFalse);
262 
263  virtual DtSceneObjectAgent* findSceneObjectAgent();
264 
266  vrvSignalsLib::signal<void (int, DtUniqueID)> signal_alphaChanged;
267 
270  {
271  Stop = 0,
272  Pause = 1,
273  Play = 2,
274  Continue = 3,
275  };
276 
278  virtual void addCollisionSegmentID( unsigned int segmentId );
281  virtual void removeCollisionSegmentID( unsigned int segmentId );
282  //}@
283  protected:
285  virtual void startDeadReckoning();
286 
288  virtual void endDeadReckoning();
289 
291  virtual void startEmbarked();
292 
294  virtual void endEmbarked();
295 
298  virtual void startGroundClamping();
299 
301  virtual void buildGroundClampingUpdater();
302 
304  virtual void endGroundClamping();
305 
308  virtual bool isGroundClamping() const;
309 
312  virtual void getExtrapolatedValuesAndRestart();
313 
314  public:
320  virtual void delayedStartEmbarked();
321  protected:
324  virtual void queryExtrapolatedPositionAndOrientation( DtUniqueID drAgentId, bool relative );
325 
330  virtual void returnExtrapolatedPositionAndOrientation( const DtVector& resultPos,
331  const DtTaitBryan& resultOri, bool relative, bool invokeRestart );
332 
335  virtual DtDeadReckonUpdater* findDRUpdaterInRenderThread( DtUniqueID drAgentId ) const;
336 
337  protected:
338  DtSceneObjectAgent* mySceneObject;
339  DtModelAgent* myModel;
340  std::string myEntityModelDefName;
341 
342  DtDeadReckonUpdaterAgent* myDeadReckonUpdaterAgent;
343  DtGroundClampingUpdaterAgent* myGroundClampingUpdaterAgent;
344  DtEmbarkationUpdaterAgent* myEmbarkationUpdaterAgent;
345 
349 
350  DtGeodeticCoord myLastPosition;
352 
353  DtTaitBryan myLastOrientation;
356 
359 
362 
365 
368 
369  // This is the CIGI id
372 
374  DtEntityType* myExtendedEntityType;
375 
377 
378  // This is the parent's CIGI ID
380 
382  int myAlpha;
384 
385  // Used to ensure uninitialized position vectors are not send to the
386  // VR-Link smoother (and we don't attempt to convert orientation from
387  // topo input to database coordinates without a position either)
390 
391  // Note that while not all entity types can have art parts, there are multiple
392  // entity types that derive from baseEntity that do; this avoids duplication in
393  // those classes...
394  std::map<int, DtTaitBryan> myLastArtPartOrientation;
395  std::map<int, DtVector> myLastArtPartTranslation;
396  std::map<int, DtVector> myArtPartAngularRate;
397  std::map<int, DtVector> myArtPartLinearRate;
398 
401  std::list<unsigned int> myCollisionSegmentIdList;
402 
404 
405  vrvSignalsLib::connection myAlphaChangedConnection;
406  vrvSignalsLib::connection myPreTickConnection;
407  };
408 
409 
413  {
414  public:
415 
418  {
419  }
420 
423  {
424  }
425 
427  virtual DtCigiObjectCreator* clone() const = 0;
428 
430  virtual DtCigiBaseEntity* create(DtCigiConnection& connection,
431  DtAgentManagerInterface& sceneInterface, int entityId,
432  int entityType) const = 0;
433 
434  };
435 
436  template <typename CigiObject>
438  {
439  public:
440 
443  {
444  }
445 
448  {
449  }
450 
451  virtual DtCigiObjectCreator* clone() const
452  {
454  }
455 
457  virtual DtCigiBaseEntity* create( DtCigiConnection& connection,
458  DtAgentManagerInterface& sceneInterface, int entityId,
459  int entityType ) const
460  {
461  return new CigiObject (connection, sceneInterface, entityId,
462  entityType );
463  }
464  };
465 }
DT_DLL_EXAMPLESCENEROOTPLUGIN void init(DtDe &anIG)
std::map< int, DtVector > myArtPartAngularRate
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:396
DtVector myLastLocalPosition
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:351
std::map< int, DtTaitBryan > myLastArtPartOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:394
bool myDeadReckoningOn
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:346
DtGeodeticCoord myLastPosition
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:350
std::map< int, DtVector > myArtPartLinearRate
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:397
DtVector myLastRelativePosition
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:357
DtDeadReckonUpdater is a scene object updater that is given kinematic updates and updates a scene obj...
Definition: DtDeadReckonUpdater.h:28
bool myVisiblity
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:383
std::string myEntityModelDefName
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:340
virtual DtCigiBaseEntity * create(DtCigiConnection &connection, DtAgentManagerInterface &sceneInterface, int entityId, int entityType) const
Create function.
Definition: DtCigiBaseEntity.h:457
virtual DtCigiObjectCreator * clone() const
Every derived class must override this method.
Definition: DtCigiBaseEntity.h:451
DtVector myLastVelocity
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:360
bool myLastAngularVelocityWorldCoordinates
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:364
vrvSignalsLib::connection myPreTickConnection
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:406
bool myExtendedEntityTypeOn
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:373
virtual ~DtCigiObjectCreator()
DTOR.
Definition: DtCigiBaseEntity.h:422
std::list< unsigned int > myCollisionSegmentIdList
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:401
bool myOrientationSet
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:389
Contains DLL export macros.
DtAgentManagerInterface & mySceneInterface
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:367
int myEmbarkedParentID
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:379
bool myEmbarked
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:347
int myAlpha
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:382
vrvSignalsLib::connection myAlphaChangedConnection
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:405
std::map< int, DtVector > myLastArtPartTranslation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:395
bool myPositionSet
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:388
DtCigiObjectCreatorTemplate()
CTOR.
Definition: DtCigiBaseEntity.h:442
DtSceneObjectAgent * mySceneObject
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:338
AnimationStateGroup
AnimationStateGroup in Cigi Order.
Definition: DtCigiBaseEntity.h:269
DtDeadReckonUpdaterAgent * myDeadReckonUpdaterAgent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:342
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtTaitBryan myLastLocalOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:354
DtCigiBaseEntity * myParent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:376
DtCigiConnection & myConnection
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:366
Abstract DtCigiObject creator.
Definition: DtCigiBaseEntity.h:412
DtModelAgent * myModel
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:339
This class is responsible for the actual processing of CIGI data. This holds the entity visualizer...
Definition: DtCigiConnection.h:57
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Contains makVrv::DtGroundClampingUpdater class.
DtSignalConnectionManager mySignalConnections
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:403
int myEntityType
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:371
DtVector myLastAngularVelocity
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:363
DtTaitBryan myLastRelativeOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:358
DtTaitBryan myLastGeocentricOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:355
Base class to provide boost signal/slot management.
bool myInheritAlpha
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:381
int myEntityId
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:370
Contains makVrv::DtUniqueID type.
DtEntityType * myExtendedEntityType
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:374
This class provides an abstract base class for CIGI entities. These are created by the DtCigiEntityVi...
Definition: DtCigiBaseEntity.h:42
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:33
virtual ~DtCigiObjectCreatorTemplate()
DTOR.
Definition: DtCigiBaseEntity.h:447
#define DT_DLL_VRVCIGI
Definition: vrvCigi.h:19
DtTaitBryan myLastOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:353
DtGroundClampingUpdater::GroundClampingMode myGroundClampingType
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:348
Definition: DtCigiBaseEntity.h:437
DtEmbarkationUpdaterAgent * myEmbarkationUpdaterAgent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:344
DtCigiObjectCreator()
CTOR.
Definition: DtCigiBaseEntity.h:417
DtGroundClampingUpdaterAgent * myGroundClampingUpdaterAgent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:343
bool myLastVelocityWorldCoordinates
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:361
vrvSignalsLib::signal< void(int, DtUniqueID)> signal_alphaChanged
Emitted when this entity&#39;s alpha has changed.
Definition: DtCigiBaseEntity.h:266
GroundClampingMode
Ground Clamping Modes.
Definition: DtGroundClampingUpdater.h:36

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)