VR-Forces 4.6.1 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) 2017 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 <string>
22 
23 namespace makVrv
24 {
25  class DtAgentManagerInterface;
26  class DtCigiConnection;
27  class DtModelAgent;
28  class DtSceneObjectAgent;
29  class DtGroundClampingUpdaterAgent;
30  class DtDeadReckonUpdaterAgent;
31  class DtEmbarkationUpdaterAgent;
32  class DtSceneObject;
33  class DtDeadReckonUpdater;
34 
35 
41  {
42  public:
46  DtAgentManagerInterface& sceneInterface, int entityId,
47  int entityType);
48 
50  virtual ~DtCigiBaseEntity();
51 
54  virtual DtUniqueID uniqueId() const;
55 
57  virtual DtUniqueID elementId() const;
58 
60  virtual int cigiId() const;
61 
64  virtual void init();
65 
68  virtual void uninit();
69 
74  virtual void restart();
75 
80  virtual void restartRequest();
81 
83  virtual int entityType() const;
84 
86  virtual void setVisible(bool yesNo);
87 
89  virtual bool isVisible() const;
90 
92  virtual void setDeadReckoningOn(bool onOff);
93 
98  virtual bool isDeadReckoning() const;
99 
103  virtual void setPosition(const DtGeodeticCoord& pos, bool force=false);
104 
106  virtual const DtGeodeticCoord& position() const;
107 
109  virtual const DtVector& localPosition() const;
110 
114  virtual void setOrientation(const DtTaitBryan& orientation, bool force=false);
115 
117  virtual const DtTaitBryan& orientation() const;
118 
120  virtual const DtTaitBryan& localOrientation() const;
121 
123  virtual const DtTaitBryan& geocentricOrientation() const;
124 
129  virtual void setLinearRate(const DtVector& rate, bool useWorldCoordinates, bool force=false);
130 
132  virtual const DtVector& linearRate() const;
133 
138  virtual void setAngularRate(const DtVector& rate, bool useWorldCoordinates, bool force=false);
139 
141  virtual const DtVector& angularRate() const;
142 
144 
145 
147  virtual void setRelativeTo(DtCigiBaseEntity* parent);
148 
150  virtual void setRelativePosition(const DtVector& pos);
151 
154  virtual void setRelativeOrientation(const DtTaitBryan& orient);
155 
157  virtual bool isEmbarked() const;
158 
160  virtual int embarkedParentId() const;
162 
167  virtual void slot_deadReckoningAllowed(bool allowed);
168 
170  virtual void setAlpha(int alpha);
171 
174  virtual int alpha() const;
175 
177  virtual void setInheritAlpha(bool inherit);
178 
180  virtual bool isInheritingAlpha() const;
181 
183  virtual void slot_alphaChanged(int alpha, DtUniqueID id);
184 
188  virtual void slot_entityToBeDeleted(int cigiEntityId);
189 
191  virtual void setGroundClampingOn( DtGroundClampingUpdater::GroundClampingMode clampType );
192 
194  virtual DtGroundClampingUpdater::GroundClampingMode groundClampingType() const;
195 
197  virtual void setArtPartTranslation(int partId, float xOffset, float yOffset,
198  float zOffset, bool xEnable, bool yEnable, bool zEnable);
199 
202  virtual bool getArtPartTranslation( int partId, int& mappedPartId, DtVector& translation );
203 
205  virtual void setArtPartOrientation(int partId, float yaw, float pitch, float roll,
206  bool yawEnable, bool pitchEnable, bool rollEnable);
207 
208  // Get the art part orientation from a specified CIGI part id.
210  virtual bool getArtPartOrientation( int partId, int& mappedPartId, DtTaitBryan& orientation );
211 
213  virtual void setArtPartLinearRate(int partId, float xRate, float yRate,
214  float zRate);
215 
218  virtual bool getArtPartLinearRate( int partId, int& mappedPartId, DtVector& rate );
219 
222  virtual bool getArtPartTranslationAndRate( int partId, int& mappedPartId, DtVector& translation, DtVector& rate );
223 
225  virtual void setArtPartAngularRate(int partId, float yawRate, float pitchRate,
226  float rollRate);
227 
228  // Get the art part orientation rate from a specified CIGI part id.
230  virtual bool getArtPartAngularRate( int partId, int& mappedPartId, DtVector& rate );
231 
232  // Get the art part orientation and rate from a specified CIGI part id.
234  virtual bool getArtPartOrientationAndRate( int partId, int& mappedPartId, DtTaitBryan& orientation, DtVector& rate );
235 
237  virtual void setArtPartEnable(int partId, bool trueFalse);
238 
239  virtual DtSceneObjectAgent* findSceneObjectAgent();
240 
242  boost::signal<void (int, DtUniqueID)> signal_alphaChanged;
243 
244  protected:
246  virtual void startDeadReckoning();
247 
249  virtual void endDeadReckoning();
250 
252  virtual void startEmbarked();
253 
255  virtual void endEmbarked();
256 
259  virtual void startGroundClamping();
260 
262  virtual void buildGroundClampingUpdater();
263 
265  virtual void endGroundClamping();
266 
269  virtual bool isGroundClamping() const;
270 
273  virtual void getExtrapolatedValuesAndRestart();
274 
279  virtual void delayedStartEmbarked();
280 
283  virtual void queryExtrapolatedPositionAndOrientation( DtUniqueID drAgentId, bool relative );
284 
289  virtual void returnExtrapolatedPositionAndOrientation( const DtVector& resultPos,
290  const DtTaitBryan& resultOri, bool relative, bool invokeRestart );
291 
294  virtual DtDeadReckonUpdater* findDRUpdaterInRenderThread( DtUniqueID drAgentId ) const;
295 
296  protected:
297  DtSceneObjectAgent* mySceneObject;
298  DtModelAgent* myModel;
299  std::string myEntityModelDefName;
300 
301  DtDeadReckonUpdaterAgent* myDeadReckonUpdaterAgent;
302  DtGroundClampingUpdaterAgent* myGroundClampingUpdaterAgent;
303  DtEmbarkationUpdaterAgent* myEmbarkationUpdaterAgent;
304 
308 
309  DtGeodeticCoord myLastPosition;
311 
312  DtTaitBryan myLastOrientation;
315 
318 
321 
324 
327 
328  // This is the CIGI id
331 
333 
334  // This is the parent's CIGI ID
336 
338  int myAlpha;
340 
341  // Used to ensure uninitialized position vectors are not send to the
342  // VR-Link smoother (and we don't attempt to convert orientation from
343  // topo input to database coordinates without a position either)
346 
347  // Note that while not all entity types can have art parts, there are multiple
348  // entity types that derive from baseEntity that do; this avoids duplication in
349  // those classes...
350  std::map<int, DtTaitBryan> myLastArtPartOrientation;
351  std::map<int, DtVector> myLastArtPartTranslation;
352  std::map<int, DtVector> myArtPartAngularRate;
353  std::map<int, DtVector> myArtPartLinearRate;
354 
356  };
357 
358 
362  {
363  public:
364 
367  {
368  }
369 
372  {
373  }
374 
376  virtual DtCigiObjectCreator* clone() const = 0;
377 
379  virtual DtCigiBaseEntity* create(DtCigiConnection& connection,
380  DtAgentManagerInterface& sceneInterface, int entityId,
381  int entityType) const = 0;
382 
383  };
384 
385  template <typename CigiObject>
387  {
388  public:
389 
392  {
393  }
394 
397  {
398  }
399 
400  virtual DtCigiObjectCreator* clone() const
401  {
403  }
404 
406  virtual DtCigiBaseEntity* create( DtCigiConnection& connection,
407  DtAgentManagerInterface& sceneInterface, int entityId,
408  int entityType ) const
409  {
410  return new CigiObject (connection, sceneInterface, entityId,
411  entityType );
412  }
413  };
414 }

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)