VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
animationModel.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 #include "vrfobjcore/vrfObject.h"
11 #include <readerWriter/rwReal.h>
12 #include <readerWriter/rwString.h>
13 #include <readerWriter/rwInt.h>
14 #include <readerWriter/rwBoolean.h>
15 #include "vrfutil/rwTaitBryan.h"
16 #include "readerWriter/rwVector.h"
18 #include "vrfutil/movementFile.h"
19 #include <readerWriter/rwList.h>
20 
21 class DtSimManager;
22 class DtDeadReckoner;
23 
28 
30 {
31 public:
33  {
34  public:
35  AnimationChange(const DtString&);
36 
37  virtual ~AnimationChange();
38 
39  public:
45  };
46 
48  {
49  public:
51  virtual ~AnimationChangeList();
52 
53  virtual void addAnimationChange(int row, int change, const DtVector& vector, const DtTaitBryan& orientation, double timeDelta);
54 
55  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
56  const DtVariableBindingsList& variableBindings);
57  };
58 
59 public:
60  //Constructor
62  const DtString& rwName = DtString::nullString(),
63  DtReaderWriterRegistry* parentRegistry = 0);
64 
65  //Copy constructor
67  const DtString& rwName = DtString::nullString(),
68  DtReaderWriterRegistry* parentRegistry = 0);
69 
70  //Assignment Operator
72 
73  //Destructor
74  virtual ~DtAnimationModel();
75 
78  virtual void setTimeScale(double d);
79  virtual double timeScale() const;
81 
85  virtual void setReferencePoint(const DtVector&);
86  virtual DtVector referencePoint() const;
88 
92  virtual void setReferenceOrientation(const DtTaitBryan&);
93  virtual DtTaitBryan referenceOrientation() const;
95 
101  virtual void setTarget(const DtUUID&);
102 
104  virtual DtSharedVrfObjectReference target();
106 
109  virtual void setForceAutomaticOrientation(bool forceAuto);
110  virtual const bool forceAutomaticOrientation() const;
112 
116  virtual void setMoveOutHeading(double);
117  virtual double moveOutHeading() const;
119 
122  virtual void setScriptedMovementFile(const DtString&);
123  virtual const DtString& scriptedMovementFile() const;
125 
135  virtual void setClampType(int);
136  virtual int clampType() const;
138 
146  virtual void setCompletionRule(int);
147  virtual int completionRule() const;
149 
153  virtual void setFileConfiguration(const DtString&);
154  virtual const DtString& fileConfiguration() const;
156 
159  virtual double calculateOrientation(int frame, double dt, DtTaitBryan&, DtVector& rotationalVelocity) const;
160 
162  virtual DtVector calculateLocation(int frameA, int frameB = -1, double timePastFrameA = 0) const;
163 
166  virtual void calculateSpeed(int frame, DtVector& velocity) const;
167 
169  virtual DtVector targetPosition() const;
170 
172  virtual DtVector localReferencePosition() const;
173 
175  virtual DtTaitBryan targetOrientation() const;
176 
178  virtual DtVector groundClamp(const DtVector&) const;
179 
181  virtual DtVector bodyOffsetVector(int frame) const;
182 
184  virtual DtTaitBryan orientationOffset(int frame) const;
185 
189  virtual bool groundClampHighFidelity(const DtVector& location, double heading, DtTaitBryan& newLocalOrienationTb, DtVector& newLocalLocation) const;
190 
192  virtual DtVector velocityForFrame(int frame) const;
193 
195  virtual DtVector calculateRotationalVelocity(int frame, double dt) const;
196 
198  virtual DtVector calculateRotationalVelocity(const DtTaitBryan& currentFrame, int frame) const;
199 
201  virtual DtVector heightAdjustedLocation(const DtVector&) const;
202 
204  virtual DtTaitBryan orientationForFrame(int frame, double& heading) const;
205 
207  virtual bool canBeAnimated() const;
208 
211  virtual int animationRow(double, int frameHint = 0) const;
212 
214  virtual int animationRows() const;
215 
217  virtual double deltaTimeForFrame(int frame) const;
218 
220  virtual void resetAnimationVariables();
221 
223  virtual void reset();
224 
226  virtual void setupForAnimation();
227 
229  virtual double simulationTime(int) const;
230 
232  virtual void setFrameTime(double);
233 
236  virtual double frameTime() const;
237 
239  virtual void setAnimationFrame(int);
240  virtual int animationFrame() const;
241 
243  virtual void setNeedsSetup(bool);
244  virtual bool needsSetup() const;
245 
248  virtual bool simulate(double simulateFor, DtVector& newLocation, DtTaitBryan& newOrientation,
249  DtVector& newVelocity, DtVector& newRotationalVelocity, bool debug = false);
250 
252  virtual void setElapsedAnimationTime(double);
253  virtual double elapsedAnimationTime() const;
254 
257  virtual void setTransitionSpeed(double);
258  virtual double transitionSpeed() const;
259 
265  virtual int setObjectOffsetLocation(int row, const DtVector&);
266 
269  virtual int setObjectOffsetOrientation(int row, const DtTaitBryan&);
270 
272  virtual void setTimeDeltaFromPreviousRow(int forRow, double timeDelta);
273 
278  virtual int addAnimationRow(double deltaTime, double lateral, double range, double altitude,
279  double headingOffset = 0, double pitchOffset = 0, double rollOffset = 0);
280 
282  virtual void removeRow(int);
284 
285  virtual void setEntity(DtVrfObject*);
286  virtual DtVrfObject* entity() const;
287  virtual const char* readerWriterType() const;
288 
290  virtual int frameToTravelSpeed(int base, double speed) const;
291 
293  virtual double lastSimulationTime() const;
294 
296  virtual bool isFinished() const;
297 
298 protected:
299 
302  void createDeadReckoner();
303 
305  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
306  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
307 
309  virtual void putSelf(std::string& fp, int indentLevel, bool writeUnspecified,
310  const DtFilename& path);
311 
313  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
314  const DtVariableBindingsList& variableBindings);
315 
317  virtual void initializeReferenceObject();
318 
320  virtual int nextFrameToMaintainSpeed(int frame, double speed) const;
321 
323  virtual void deadReckon(double overTime, DtVector& newWorldLocation,
324  DtTaitBryan& newLocalOrientation, DtVector& newVelocity,
325  DtVector& newRotationalVelocity) const;
326 
327 protected:
329 
331 
349 
351  {
352  LocalAnimationChange() : change(0), timeDelta(0) {};
353  LocalAnimationChange(const LocalAnimationChange& orig) : change(orig.change),
354  vector(orig.vector), orientation(orig.orientation), timeDelta(orig.timeDelta) {};
355  virtual ~LocalAnimationChange() {};
356 
361  int change;
362 
365 
367  DtTaitBryan orientation;
368 
369  double timeDelta;
370  };
371 
374  typedef std::map<int, LocalAnimationChange> AnimationChanges;
376 
377  DtTaitBryan myLastOrientation;
382 
385 
388 
389  DtDeadReckoner* myDeadReckoner;
390 
392 };

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)