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) 2025 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 slot_smoothingChanged(bool enabled);
195 
197  virtual void slot_smoothingPeriodChanged(float period);
198 
200  virtual void setAlpha(int alpha);
201 
204  virtual int alpha() const;
205 
207  virtual void setInheritAlpha(bool inherit);
208 
210  virtual bool isInheritingAlpha() const;
211 
213  virtual void slot_alphaChanged(int alpha, DtUniqueID id);
214 
218  virtual void slot_entityToBeDeleted(int cigiEntityId);
219 
221  virtual void setGroundClampingOn( DtGroundClampingUpdater::GroundClampingMode clampType );
222 
224  virtual DtGroundClampingUpdater::GroundClampingMode groundClampingType() const;
225 
227  virtual void setArtPartTranslation(int partId, float xOffset, float yOffset,
228  float zOffset, bool xEnable, bool yEnable, bool zEnable);
229 
232  virtual bool getArtPartTranslation( int partId, DtVector& translation );
233 
235  virtual void setArtPartOrientation(int partId, float yaw, float pitch, float roll,
236  bool yawEnable, bool pitchEnable, bool rollEnable);
237 
238  // Get the art part orientation from a specified CIGI part id.
240  virtual bool getArtPartOrientation( int partId, DtTaitBryan& orientation );
241 
243  virtual void setArtPartLinearRate(int partId, float xRate, float yRate,
244  float zRate);
245 
248  virtual bool getArtPartLinearRate( int partId, DtVector& rate );
249 
252  virtual bool getArtPartTranslationAndRate( int partId, DtVector& translation, DtVector& rate );
253 
255  virtual void setArtPartAngularRate(int partId, float yawRate, float pitchRate,
256  float rollRate);
257 
258  // Get the art part orientation rate from a specified CIGI part id.
260  virtual bool getArtPartAngularRate( int partId, DtVector& rate );
261 
262  // Get the art part orientation and rate from a specified CIGI part id.
264  virtual bool getArtPartOrientationAndRate( int partId, DtTaitBryan& orientation, DtVector& rate );
265 
267  virtual void setArtPartEnable(int partId, bool trueFalse);
268 
269  virtual DtSceneObjectAgent* findSceneObjectAgent();
270 
272  vrvSignalsLib::signal<void (int, DtUniqueID)> signal_alphaChanged;
273 
276  {
277  Stop = 0,
278  Pause = 1,
279  Play = 2,
280  Continue = 3,
281  };
282 
284  virtual void addCollisionSegmentID( unsigned int segmentId );
287  virtual void removeCollisionSegmentID( unsigned int segmentId );
288  //}@
289  protected:
291  virtual void startDeadReckoning();
292 
294  virtual void endDeadReckoning();
295 
297  virtual void startEmbarked();
298 
300  virtual void endEmbarked();
301 
304  virtual void startGroundClamping();
305 
307  virtual void buildGroundClampingUpdater();
308 
310  virtual void endGroundClamping();
311 
314  virtual bool isGroundClamping() const;
315 
318  virtual void getExtrapolatedValuesAndRestart();
319 
320  public:
326  virtual void delayedStartEmbarked();
327  protected:
330  virtual void queryExtrapolatedPositionAndOrientation( DtUniqueID drAgentId, bool relative );
331 
336  virtual void returnExtrapolatedPositionAndOrientation( const DtVector& resultPos,
337  const DtTaitBryan& resultOri, bool relative, bool invokeRestart );
338 
341  virtual DtDeadReckonUpdater* findDRUpdaterInRenderThread( DtUniqueID drAgentId ) const;
342 
343  protected:
344  DtSceneObjectAgent* mySceneObject;
345  DtModelAgent* myModel;
346  std::string myEntityModelDefName;
347 
348  DtDeadReckonUpdaterAgent* myDeadReckonUpdaterAgent;
349  DtGroundClampingUpdaterAgent* myGroundClampingUpdaterAgent;
350  DtEmbarkationUpdaterAgent* myEmbarkationUpdaterAgent;
351 
355 
356  DtGeodeticCoord myLastPosition;
358 
359  DtTaitBryan myLastOrientation;
362 
365 
366  DtVector myLastVelocity;
368 
371 
374 
375  // This is the CIGI id
378 
380  DtEntityType myExtendedEntityType;
381 
383 
384  // This is the parent's CIGI ID
386 
388  int myAlpha;
390 
391  // Used to ensure uninitialized position vectors are not send to the
392  // VR-Link smoother (and we don't attempt to convert orientation from
393  // topo input to database coordinates without a position either)
396 
397  // Note that while not all entity types can have art parts, there are multiple
398  // entity types that derive from baseEntity that do; this avoids duplication in
399  // those classes...
400  std::map<int, DtTaitBryan> myLastArtPartOrientation;
401  std::map<int, DtVector> myLastArtPartTranslation;
402  std::map<int, DtVector> myArtPartAngularRate;
403  std::map<int, DtVector> myArtPartLinearRate;
404 
407  std::list<unsigned int> myCollisionSegmentIdList;
408 
410 
411  vrvSignalsLib::connection myAlphaChangedConnection;
412  vrvSignalsLib::connection myPreTickConnection;
413  };
414 
415 
419  {
420  public:
421 
424  {
425  }
426 
429  {
430  }
431 
433  virtual DtCigiObjectCreator* clone() const = 0;
434 
436  virtual DtCigiBaseEntity* create(DtCigiConnection& connection,
437  DtAgentManagerInterface& sceneInterface, int entityId,
438  int entityType) const = 0;
439 
440  };
441 
442  template <typename CigiObject>
444  {
445  public:
446 
449  {
450  }
451 
454  {
455  }
456 
457  virtual DtCigiObjectCreator* clone() const
458  {
460  }
461 
463  virtual DtCigiBaseEntity* create( DtCigiConnection& connection,
464  DtAgentManagerInterface& sceneInterface, int entityId,
465  int entityType ) const
466  {
467  return new CigiObject (connection, sceneInterface, entityId,
468  entityType );
469  }
470  };
471 }
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:402
DtVector myLastLocalPosition
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:357
std::map< int, DtTaitBryan > myLastArtPartOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:400
bool myDeadReckoningOn
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:352
DtGeodeticCoord myLastPosition
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:356
std::map< int, DtVector > myArtPartLinearRate
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:403
DtVector myLastRelativePosition
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:363
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:389
std::string myEntityModelDefName
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:346
virtual DtCigiBaseEntity * create(DtCigiConnection &connection, DtAgentManagerInterface &sceneInterface, int entityId, int entityType) const
Create function.
Definition: DtCigiBaseEntity.h:463
virtual DtCigiObjectCreator * clone() const
Every derived class must override this method.
Definition: DtCigiBaseEntity.h:457
DtVector myLastVelocity
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:366
bool myLastAngularVelocityWorldCoordinates
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:370
vrvSignalsLib::connection myPreTickConnection
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:412
bool myExtendedEntityTypeOn
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:379
virtual ~DtCigiObjectCreator()
DTOR.
Definition: DtCigiBaseEntity.h:428
std::list< unsigned int > myCollisionSegmentIdList
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:407
bool myOrientationSet
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:395
Contains DLL export macros.
DtAgentManagerInterface & mySceneInterface
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:373
int myEmbarkedParentID
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:385
bool myEmbarked
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:353
int myAlpha
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:388
vrvSignalsLib::connection myAlphaChangedConnection
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:411
std::map< int, DtVector > myLastArtPartTranslation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:401
bool myPositionSet
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:394
DtCigiObjectCreatorTemplate()
CTOR.
Definition: DtCigiBaseEntity.h:448
DtSceneObjectAgent * mySceneObject
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:344
AnimationStateGroup
AnimationStateGroup in Cigi Order.
Definition: DtCigiBaseEntity.h:275
DtDeadReckonUpdaterAgent * myDeadReckonUpdaterAgent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:348
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:360
DtCigiBaseEntity * myParent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:382
DtCigiConnection & myConnection
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:372
Abstract DtCigiObject creator.
Definition: DtCigiBaseEntity.h:418
DtModelAgent * myModel
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:345
This class is responsible for the actual processing of CIGI data. This holds the entity visualizer...
Definition: DtCigiConnection.h:58
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:409
int myEntityType
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:377
DtVector myLastAngularVelocity
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:369
DtEntityType myExtendedEntityType
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:380
DtTaitBryan myLastRelativeOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:364
DtTaitBryan myLastGeocentricOrientation
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:361
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:387
int myEntityId
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:376
Contains makVrv::DtUniqueID type.
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:453
#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:359
DtGroundClampingUpdater::GroundClampingMode myGroundClampingType
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:354
Definition: DtCigiBaseEntity.h:443
DtEmbarkationUpdaterAgent * myEmbarkationUpdaterAgent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:350
DtCigiObjectCreator()
CTOR.
Definition: DtCigiBaseEntity.h:423
DtGroundClampingUpdaterAgent * myGroundClampingUpdaterAgent
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:349
bool myLastVelocityWorldCoordinates
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:367
vrvSignalsLib::signal< void(int, DtUniqueID)> signal_alphaChanged
Emitted when this entity&#39;s alpha has changed.
Definition: DtCigiBaseEntity.h:272
GroundClampingMode
Ground Clamping Modes.
Definition: DtGroundClampingUpdater.h:36

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)