VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
186  virtual void setGroundClampingOn( DtGroundClampingUpdater::GroundClampingMode clampType );
187 
189  virtual DtGroundClampingUpdater::GroundClampingMode groundClampingType() const;
190 
192  virtual void setArtPartTranslation(int partId, float xOffset, float yOffset,
193  float zOffset, bool xEnable, bool yEnable, bool zEnable);
194 
197  virtual bool getArtPartTranslation( int partId, int& mappedPartId, DtVector& translation );
198 
200  virtual void setArtPartOrientation(int partId, float yaw, float pitch, float roll,
201  bool yawEnable, bool pitchEnable, bool rollEnable);
202 
203  // Get the art part orientation from a specified CIGI part id.
205  virtual bool getArtPartOrientation( int partId, int& mappedPartId, DtTaitBryan& orientation );
206 
208  virtual void setArtPartLinearRate(int partId, float xRate, float yRate,
209  float zRate);
210 
213  virtual bool getArtPartLinearRate( int partId, int& mappedPartId, DtVector& rate );
214 
217  virtual bool getArtPartTranslationAndRate( int partId, int& mappedPartId, DtVector& translation, DtVector& rate );
218 
220  virtual void setArtPartAngularRate(int partId, float yawRate, float pitchRate,
221  float rollRate);
222 
223  // Get the art part orientation rate from a specified CIGI part id.
225  virtual bool getArtPartAngularRate( int partId, int& mappedPartId, DtVector& rate );
226 
227  // Get the art part orientation and rate from a specified CIGI part id.
229  virtual bool getArtPartOrientationAndRate( int partId, int& mappedPartId, DtTaitBryan& orientation, DtVector& rate );
230 
232  virtual void setArtPartEnable(int partId, bool trueFalse);
233 
234  virtual DtSceneObjectAgent* findSceneObjectAgent();
235 
237  boost::signal<void (int, DtUniqueID)> signal_alphaChanged;
238 
239  protected:
241  virtual void startDeadReckoning();
242 
244  virtual void endDeadReckoning();
245 
247  virtual void startEmbarked();
248 
250  virtual void endEmbarked();
251 
254  virtual void startGroundClamping();
255 
257  virtual void buildGroundClampingUpdater();
258 
260  virtual void endGroundClamping();
261 
264  virtual bool isGroundClamping() const;
265 
268  virtual void getExtrapolatedValuesAndRestart();
269 
274  virtual void delayedStartEmbarked();
275 
278  virtual void queryExtrapolatedPositionAndOrientation( DtUniqueID drAgentId, bool relative );
279 
284  virtual void returnExtrapolatedPositionAndOrientation( DtVector resultPos,
285  DtTaitBryan resultOri, bool relative, bool invokeRestart );
286 
289  virtual DtDeadReckonUpdater* findDRUpdaterInRenderThread( DtUniqueID drAgentId ) const;
290 
291  protected:
292  DtSceneObjectAgent* mySceneObject;
293  DtModelAgent* myModel;
294  std::string myEntityModelDefName;
295 
296  DtDeadReckonUpdaterAgent* myDeadReckonUpdaterAgent;
297  DtGroundClampingUpdaterAgent* myGroundClampingUpdaterAgent;
298  DtEmbarkationUpdaterAgent* myEmbarkationUpdaterAgent;
299 
303 
304  DtGeodeticCoord myLastPosition;
306 
307  DtTaitBryan myLastOrientation;
310 
313 
316 
319 
322 
323  // This is the CIGI id
326 
328 
329  // This is the parent's CIGI ID
331 
333  int myAlpha;
335 
336  // Note that while not all entity types can have art parts, there are multiple
337  // entity types that derive from baseEntity that do; this avoids duplication in
338  // those classes...
339  std::map<int, DtTaitBryan> myLastArtPartOrientation;
340  std::map<int, DtVector> myLastArtPartTranslation;
341  std::map<int, DtVector> myArtPartAngularRate;
342  std::map<int, DtVector> myArtPartLinearRate;
343 
345  };
346 
347 
351  {
352  public:
353 
356  {
357  }
358 
361  {
362  }
363 
365  virtual DtCigiObjectCreator* clone() const = 0;
366 
368  virtual DtCigiBaseEntity* create(DtCigiConnection& connection,
369  DtAgentManagerInterface& sceneInterface, int entityId,
370  int entityType) const = 0;
371 
372  };
373 
374  template <typename CigiObject>
376  {
377  public:
378 
381  {
382  }
383 
386  {
387  }
388 
389  virtual DtCigiObjectCreator* clone() const
390  {
392  }
393 
395  virtual DtCigiBaseEntity* create( DtCigiConnection& connection,
396  DtAgentManagerInterface& sceneInterface, int entityId,
397  int entityType ) const
398  {
399  return new CigiObject (connection, sceneInterface, entityId,
400  entityType );
401  }
402  };
403 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)