VR-Forces 4.8 Class Documentation
 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) 2020 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 
96  virtual void setExtendedEntityType(DtEntityType& entityType);
97 
99  virtual void setVisible(bool yesNo);
100 
102  virtual bool isVisible() const;
103 
105  virtual void setDeadReckoningOn(bool onOff);
106 
111  virtual bool isDeadReckoning() const;
112 
116  virtual void setPosition(const DtGeodeticCoord& pos, bool force=false);
117 
119  virtual const DtGeodeticCoord& position() const;
120 
122  virtual const DtVector& localPosition() const;
123 
127  virtual void setOrientation(const DtTaitBryan& orientation, bool force=false);
128 
130  virtual const DtTaitBryan& orientation() const;
131 
133  virtual const DtTaitBryan& localOrientation() const;
134 
136  virtual const DtTaitBryan& geocentricOrientation() const;
137 
142  virtual void setLinearRate(const DtVector& rate, bool useWorldCoordinates, bool force=false);
143 
145  virtual const DtVector& linearRate() const;
146 
151  virtual void setAngularRate(const DtVector& rate, bool useWorldCoordinates, bool force=false);
152 
154  virtual const DtVector& angularRate() const;
155 
157 
160  virtual void setRelativeTo(DtCigiBaseEntity* parent);
161 
163  virtual void setRelativePosition(const DtVector& pos);
164 
167  virtual void setRelativeOrientation(const DtTaitBryan& orient);
168 
170  virtual bool isEmbarked() const;
171 
173  virtual int embarkedParentId() const;
174 
176  virtual const DtVector& relativePosition() const;
177 
179  virtual const DtTaitBryan& relativeOrientation() const;
181 
186  virtual void slot_deadReckoningAllowed(bool allowed);
187 
189  virtual void setAlpha(int alpha);
190 
193  virtual int alpha() const;
194 
196  virtual void setInheritAlpha(bool inherit);
197 
199  virtual bool isInheritingAlpha() const;
200 
202  virtual void slot_alphaChanged(int alpha, DtUniqueID id);
203 
207  virtual void slot_entityToBeDeleted(int cigiEntityId);
208 
210  virtual void setGroundClampingOn( DtGroundClampingUpdater::GroundClampingMode clampType );
211 
213  virtual DtGroundClampingUpdater::GroundClampingMode groundClampingType() const;
214 
216  virtual void setArtPartTranslation(int partId, float xOffset, float yOffset,
217  float zOffset, bool xEnable, bool yEnable, bool zEnable);
218 
221  virtual bool getArtPartTranslation( int partId, DtVector& translation );
222 
224  virtual void setArtPartOrientation(int partId, float yaw, float pitch, float roll,
225  bool yawEnable, bool pitchEnable, bool rollEnable);
226 
227  // Get the art part orientation from a specified CIGI part id.
229  virtual bool getArtPartOrientation( int partId, DtTaitBryan& orientation );
230 
232  virtual void setArtPartLinearRate(int partId, float xRate, float yRate,
233  float zRate);
234 
237  virtual bool getArtPartLinearRate( int partId, DtVector& rate );
238 
241  virtual bool getArtPartTranslationAndRate( int partId, DtVector& translation, DtVector& rate );
242 
244  virtual void setArtPartAngularRate(int partId, float yawRate, float pitchRate,
245  float rollRate);
246 
247  // Get the art part orientation rate from a specified CIGI part id.
249  virtual bool getArtPartAngularRate( int partId, DtVector& rate );
250 
251  // Get the art part orientation and rate from a specified CIGI part id.
253  virtual bool getArtPartOrientationAndRate( int partId, DtTaitBryan& orientation, DtVector& rate );
254 
256  virtual void setArtPartEnable(int partId, bool trueFalse);
257 
258  virtual DtSceneObjectAgent* findSceneObjectAgent();
259 
261  boost::signal<void (int, DtUniqueID)> signal_alphaChanged;
262 
265  {
266  Stop = 0,
267  Pause = 1,
268  Play = 2,
269  Continue = 3,
270  };
271 
273  virtual void addCollisionSegmentID( unsigned int segmentId );
276  virtual void removeCollisionSegmentID( unsigned int segmentId );
277  //}@
278  protected:
280  virtual void startDeadReckoning();
281 
283  virtual void endDeadReckoning();
284 
286  virtual void startEmbarked();
287 
289  virtual void endEmbarked();
290 
293  virtual void startGroundClamping();
294 
296  virtual void buildGroundClampingUpdater();
297 
299  virtual void endGroundClamping();
300 
303  virtual bool isGroundClamping() const;
304 
307  virtual void getExtrapolatedValuesAndRestart();
308 
313  virtual void delayedStartEmbarked();
314 
317  virtual void queryExtrapolatedPositionAndOrientation( DtUniqueID drAgentId, bool relative );
318 
323  virtual void returnExtrapolatedPositionAndOrientation( const DtVector& resultPos,
324  const DtTaitBryan& resultOri, bool relative, bool invokeRestart );
325 
328  virtual DtDeadReckonUpdater* findDRUpdaterInRenderThread( DtUniqueID drAgentId ) const;
329 
330  protected:
331  DtSceneObjectAgent* mySceneObject;
332  DtModelAgent* myModel;
333  std::string myEntityModelDefName;
334 
335  DtDeadReckonUpdaterAgent* myDeadReckonUpdaterAgent;
336  DtGroundClampingUpdaterAgent* myGroundClampingUpdaterAgent;
337  DtEmbarkationUpdaterAgent* myEmbarkationUpdaterAgent;
338 
342 
343  DtGeodeticCoord myLastPosition;
345 
346  DtTaitBryan myLastOrientation;
349 
352 
355 
358 
361 
362  // This is the CIGI id
365 
367  DtEntityType* myExtendedEntityType;
368 
370 
371  // This is the parent's CIGI ID
373 
375  int myAlpha;
377 
378  // Used to ensure uninitialized position vectors are not send to the
379  // VR-Link smoother (and we don't attempt to convert orientation from
380  // topo input to database coordinates without a position either)
383 
384  // Note that while not all entity types can have art parts, there are multiple
385  // entity types that derive from baseEntity that do; this avoids duplication in
386  // those classes...
387  std::map<int, DtTaitBryan> myLastArtPartOrientation;
388  std::map<int, DtVector> myLastArtPartTranslation;
389  std::map<int, DtVector> myArtPartAngularRate;
390  std::map<int, DtVector> myArtPartLinearRate;
391 
394  std::list<unsigned int> myCollisionSegmentIdList;
395 
397  };
398 
399 
403  {
404  public:
405 
408  {
409  }
410 
413  {
414  }
415 
417  virtual DtCigiObjectCreator* clone() const = 0;
418 
420  virtual DtCigiBaseEntity* create(DtCigiConnection& connection,
421  DtAgentManagerInterface& sceneInterface, int entityId,
422  int entityType) const = 0;
423 
424  };
425 
426  template <typename CigiObject>
428  {
429  public:
430 
433  {
434  }
435 
438  {
439  }
440 
441  virtual DtCigiObjectCreator* clone() const
442  {
444  }
445 
447  virtual DtCigiBaseEntity* create( DtCigiConnection& connection,
448  DtAgentManagerInterface& sceneInterface, int entityId,
449  int entityType ) const
450  {
451  return new CigiObject (connection, sceneInterface, entityId,
452  entityType );
453  }
454  };
455 }
std::map< int, DtVector > myArtPartAngularRate
Definition: DtCigiBaseEntity.h:389
DtVector myLastLocalPosition
Definition: DtCigiBaseEntity.h:344
std::map< int, DtTaitBryan > myLastArtPartOrientation
Definition: DtCigiBaseEntity.h:387
boost::signal< void(int, DtUniqueID)> signal_alphaChanged
Emitted when this entity&#39;s alpha has changed.
Definition: DtCigiBaseEntity.h:261
bool myDeadReckoningOn
Definition: DtCigiBaseEntity.h:339
DtGeodeticCoord myLastPosition
Definition: DtCigiBaseEntity.h:343
std::map< int, DtVector > myArtPartLinearRate
Definition: DtCigiBaseEntity.h:390
DtVector myLastRelativePosition
Definition: DtCigiBaseEntity.h:350
DtDeadReckonUpdater is a scene object updater that is given kinematic updates and updates a scene obj...
Definition: DtDeadReckonUpdater.h:29
bool myVisiblity
Definition: DtCigiBaseEntity.h:376
std::string myEntityModelDefName
Definition: DtCigiBaseEntity.h:333
virtual DtCigiBaseEntity * create(DtCigiConnection &connection, DtAgentManagerInterface &sceneInterface, int entityId, int entityType) const
Create function.
Definition: DtCigiBaseEntity.h:447
virtual DtCigiObjectCreator * clone() const
Every derived class must override this method.
Definition: DtCigiBaseEntity.h:441
DtVector myLastVelocity
Definition: DtCigiBaseEntity.h:353
bool myLastAngularVelocityWorldCoordinates
Definition: DtCigiBaseEntity.h:357
bool myExtendedEntityTypeOn
Definition: DtCigiBaseEntity.h:366
virtual ~DtCigiObjectCreator()
DTOR.
Definition: DtCigiBaseEntity.h:412
std::list< unsigned int > myCollisionSegmentIdList
List for Collision Detection Segment IDs from collision segment detection definition packets...
Definition: DtCigiBaseEntity.h:394
bool myOrientationSet
Definition: DtCigiBaseEntity.h:382
Contains DLL export macros.
DtAgentManagerInterface & mySceneInterface
Definition: DtCigiBaseEntity.h:360
int myEmbarkedParentID
Definition: DtCigiBaseEntity.h:372
bool myEmbarked
Definition: DtCigiBaseEntity.h:340
int myAlpha
Definition: DtCigiBaseEntity.h:375
std::map< int, DtVector > myLastArtPartTranslation
Definition: DtCigiBaseEntity.h:388
bool myPositionSet
Definition: DtCigiBaseEntity.h:381
DtCigiObjectCreatorTemplate()
CTOR.
Definition: DtCigiBaseEntity.h:432
DtSceneObjectAgent * mySceneObject
Definition: DtCigiBaseEntity.h:331
AnimationStateGroup
AnimationStateGroup in Cigi Order.
Definition: DtCigiBaseEntity.h:264
DtDeadReckonUpdaterAgent * myDeadReckonUpdaterAgent
Definition: DtCigiBaseEntity.h:335
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
DtTaitBryan myLastLocalOrientation
Definition: DtCigiBaseEntity.h:347
DtCigiBaseEntity * myParent
Definition: DtCigiBaseEntity.h:369
DtCigiConnection & myConnection
Definition: DtCigiBaseEntity.h:359
Abstract DtCigiObject creator.
Definition: DtCigiBaseEntity.h:402
DtModelAgent * myModel
Definition: DtCigiBaseEntity.h:332
This class is responsible for the actual processing of CIGI data.
Definition: DtCigiConnection.h:56
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
Contains makVrv::DtGroundClampingUpdater class.
DtSignalConnectionManager mySignalConnections
Definition: DtCigiBaseEntity.h:396
int myEntityType
Definition: DtCigiBaseEntity.h:364
DtVector myLastAngularVelocity
Definition: DtCigiBaseEntity.h:356
DtTaitBryan myLastRelativeOrientation
Definition: DtCigiBaseEntity.h:351
DtTaitBryan myLastGeocentricOrientation
Definition: DtCigiBaseEntity.h:348
Base class to provide boost signal/slot management.
bool myInheritAlpha
Definition: DtCigiBaseEntity.h:374
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
int myEntityId
Definition: DtCigiBaseEntity.h:363
Contains makVrv::DtUniqueID type.
DtEntityType * myExtendedEntityType
Definition: DtCigiBaseEntity.h:367
This class provides an abstract base class for CIGI entities.
Definition: DtCigiBaseEntity.h:42
The abstract interface necessary for agents.
Definition: DtAgentManagerInterface.h:36
virtual ~DtCigiObjectCreatorTemplate()
DTOR.
Definition: DtCigiBaseEntity.h:437
#define DT_DLL_VRVCIGI
Definition: vrvCigi.h:19
DtTaitBryan myLastOrientation
Definition: DtCigiBaseEntity.h:346
DtGroundClampingUpdater::GroundClampingMode myGroundClampingType
Definition: DtCigiBaseEntity.h:341
Definition: DtCigiBaseEntity.h:427
DtEmbarkationUpdaterAgent * myEmbarkationUpdaterAgent
Definition: DtCigiBaseEntity.h:337
DtCigiObjectCreator()
CTOR.
Definition: DtCigiBaseEntity.h:407
DtGroundClampingUpdaterAgent * myGroundClampingUpdaterAgent
Definition: DtCigiBaseEntity.h:336
bool myLastVelocityWorldCoordinates
Definition: DtCigiBaseEntity.h:354
GroundClampingMode
Ground Clamping Modes.
Definition: DtGroundClampingUpdater.h:31

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)