VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtMultiDeadReckonUpdater.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 <vrvCore/vrvCore.h>
13 #include <vrvCore/DtTickable.h>
14 #include <vrvCore/DtUniqueID.h>
15 
16 #include <vlpi/disEnums.h>
17 
18 #include <vector>
19 #include <string>
20 
21 #include <boost/function.hpp>
22 
23 #include <matrix/vlVector.h>
24 
25 class DtTaitBryan;
26 
27 namespace makVrv
28 {
29 
30  class DtDe;
31  class DtMotionModel;
32  class DtSceneObject;
33 
39  {
40  typedef std::vector<DtMotionModel*> MotionModels;
41 
42  public:
48 
50  virtual ~DtMultiDeadReckonUpdater();
51 
54  virtual void update( DtTime tNow );
55 
65  virtual bool needsUpdate( DtTime tNow );
66 
69  virtual void setSceneObject( DtSceneObject* sceneObject );
70 
72 
73  virtual void setInputPosition( unsigned int vtx, const DtVector& position );
74  virtual void setInputPosition( unsigned int vtx, const DtVector& position,
75  double time);
77 
79 
80 
81  virtual void setInputOrientation(unsigned int vtx, const DtTaitBryan& ori );
82  virtual void setInputOrientation(unsigned int vtx, const DtTaitBryan& ori,
83  double time );
85 
89  virtual void setVelocity( int vtx, const DtVector32& velo );
90 
94  virtual void setAcceleration( int vtx, const DtVector32& accel );
95 
99  virtual void setAngularVelocity( int vtx, const DtVector32& velo );
100 
107  virtual void setDeadReckoningSettings( bool pos, bool ori, bool velo );
108 
111  virtual void setSmoothingEnabled( bool enabled );
112 
117  virtual void setSmoothingPeriod( float period );
118 
121  virtual void updateSpacial( DtTime tNow );
122 
125  virtual void setMotionModel( const std::string& modelName );
126 
130  virtual DtMotionModel* motionModel( int vtx );
131 
134  virtual void setUseAbsoluteTimeStamping(bool);
135  bool useAbsoluteTimeStamping() const;
136 
139  inline DtSceneObject* sceneObject()
140  {
141  return mySceneObject;
142  }
143 
145  inline DtUniqueID uniqueId() const
146  {
147  return myUniqueId;
148  }
149 
150  protected:
155  DtMotionModel* createMotionModel( DtMotionModel* other );
156 
158  void applyToAllMotionModels(
159  const boost::function<void (DtMotionModel*)>& func );
160 
163  virtual void slot_sceneObjectToBeDeleted( const DtUniqueID& id );
165 
166  protected:
169 
172 
175 
176  // When the class is destructed, the scene object may or may not
177  // exist. Using a separate connection variable makes it possible to
178  // 'disconnect' even if the scene object has been deleted.
179  boost::signalslib::connection mySceneObjectConnection;
180 
183 
185 
186  std::string myMotionModelType;
187  DtDeadReckonTypes myDeadReckonTypes;
188 
193  };
194 
195 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)