VR-Forces 4.2 Class Documentation
animationModel.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
10 #include "vrfutil/rwReal.h"
11 #include "vrfutil/rwString.h"
12 #include "vrfutil/rwInt.h"
13 #include "vrfutil/rwBoolean.h"
14 #include "vrfutil/rwTaitBryan.h"
15 #include "vrfutil/rwVector.h"
17 #include "vrfutil/movementFile.h"
18 #include "vrfutil/rwList.h"
19 
20 class DtVrfObject;
21 class DtSimManager;
22 
27 
29 {
30 public:
32  {
33  public:
34  AnimationChange(const DtString&);
35 
36  virtual ~AnimationChange();
37 
38  public:
44  };
45 
47  {
48  public:
50  virtual ~AnimationChangeList();
51 
52  virtual void addAnimationChange(int row, int change, const DtVector& vector, const DtTaitBryan& orientation, double timeDelta);
53 
54  virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath,
55  const DtVariableBindingsList& variableBindings);
56  };
57 
58 public:
59  //Constructor
61  const DtString& rwName = DtString::nullString(),
62  DtReaderWriterRegistry* parentRegistry = 0);
63 
64  //Copy constructor
66  const DtString& rwName = DtString::nullString(),
67  DtReaderWriterRegistry* parentRegistry = 0);
68 
69  //Assignment Operator
71 
72  //Destructor
73  virtual ~DtAnimationModel();
74 
77  virtual void setTimeScale(double d);
78  virtual double timeScale() const;
80 
84  virtual void setReferencePoint(const DtVector&);
85  virtual DtVector referencePoint() const;
87 
91  virtual void setReferenceOrientation(const DtTaitBryan&);
92  virtual DtTaitBryan referenceOrientation() const;
94 
99  virtual void setReferenceObject(const DtString&);
100  virtual const DtString& referenceObject() const;
102 
106  virtual void setMoveOutHeading(double);
107  virtual double moveOutHeading() const;
109 
112  virtual void setScriptedMovementFile(const DtString&);
113  virtual const DtString& scriptedMovementFile() const;
115 
122  virtual void setClampType(int);
123  virtual int clampType() const;
125 
133  virtual void setCompletionRule(int);
134  virtual int completionRule() const;
136 
140  virtual void setFileConfiguration(const DtString&);
141  virtual const DtString& fileConfiguration() const;
143 
146  virtual double calculateOrientation(int frame, double dt, DtTaitBryan&, DtVector& rotationalVelocity) const;
147 
149  virtual DtVector calculateLocation(int frame) const;
150 
153  virtual void calculateSpeed(int frame, double dt, DtVector& velocity, DtVector& acceleration) const;
154 
156  virtual DtVector targetPosition() const;
157 
159  virtual DtVector localReferencePosition() const;
160 
162  virtual DtTaitBryan targetOrientation() const;
163 
165  virtual DtVector groundClamp(const DtVector&) const;
166 
168  virtual DtVector bodyOffsetVector(int frame) const;
169 
171  virtual DtTaitBryan orientationOffset(int frame) const;
172 
175  virtual DtVector groundClampHighFidelity(const DtVector& location, double heading, DtTaitBryan& newLocalOrienationTb) const;
176 
178  virtual DtVector velocityForFrame(int frame, double dt) const;
179 
181  virtual DtVector calculateRotationalVelocity(int frame, double dt) const;
182 
184  virtual DtVector calculateRotationalVelocity(const DtTaitBryan& currentFrame, int frame, double dt) const;
185 
187  virtual DtVector heightAdjustedLocation(const DtVector&) const;
188 
190  virtual DtTaitBryan orientationForFrame(int frame, double& heading) const;
191 
193  virtual bool canBeAnimated() const;
194 
197  virtual int animationRow(double, int frameHint = 0) const;
198 
200  virtual int animationRows() const;
201 
203  virtual double deltaTimeForFrame(int frame) const;
204 
206  virtual void resetAnimationVariables();
207 
209  virtual void reset();
210 
212  virtual void setupForAnimation();
213 
215  virtual double simulationTime(int) const;
216 
218  virtual void setFrameTime(double);
219 
222  virtual double frameTime() const;
223 
225  virtual void setAnimationFrame(int);
226  virtual int animationFrame() const;
227 
229  virtual void setNeedsSetup(bool);
230  virtual bool needsSetup() const;
231 
234  virtual bool simulate(double simulateFor, DtVector& newLocation, DtTaitBryan& newOrientation,
235  DtVector& newVelocity, DtVector& newAcceleration, DtVector& newRotationalVelocity);
236 
238  virtual void setElapsedAnimationTime(double);
239  virtual double elapsedAnimationTime() const;
240 
243  virtual void setTransitionSpeed(double);
244  virtual double transitionSpeed() const;
245 
251  virtual int setObjectOffsetLocation(int row, const DtVector&);
252 
255  virtual int setObjectOffsetOrientation(int row, const DtTaitBryan&);
256 
258  virtual void setTimeDeltaFromPreviousRow(int forRow, double timeDelta);
259 
264  virtual int addAnimationRow(double deltaTime, double lateral, double range, double altitude,
265  double headingOffset = 0, double pitchOffset = 0, double rollOffset = 0);
266 
268  virtual void removeRow(int);
270 
271  virtual void setEntity(DtVrfObject*);
272  virtual DtVrfObject* entity() const;
273  virtual DtVrfObject* targetPoint() const;
274  virtual const char* readerWriterType() const;
275 
277  virtual int frameToTravelSpeed(int base, double speed) const;
278 
280  virtual double dT() const;
281 
283  virtual double lastSimulationTime() const;
284 
286  virtual bool isFinished() const;
287 
288 protected:
289 
291  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
292  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
293 
294  static void objectAddedCallback(DtVrfObject* object, void* usr);
295  virtual void processObjectAddedCallback(DtVrfObject*);
296 
298  virtual void putSelf(FILE *fp, int indentLevel, bool writeUnspecified,
299  const DtFilename& path);
300 
302  virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath,
303  const DtVariableBindingsList& variableBindings);
304 
306  virtual void initializeReferenceObject();
307 
309  virtual int nextFrameToMaintainSpeed(int frame, double speed) const;
310 
312  virtual void deadReckon(double overTime, DtVector& newWorldLocation, DtTaitBryan& newLocalOrientation, DtVector& newVelocity) const;
313 
314 protected:
316 
319 
334 
336  {
337  LocalAnimationChange() : change(0), timeDelta(0) {};
338  LocalAnimationChange(const LocalAnimationChange& orig) : change(orig.change),
339  vector(orig.vector), orientation(orig.orientation), timeDelta(orig.timeDelta) {};
340  virtual ~LocalAnimationChange() {};
341 
346  int change;
347 
350 
352  DtTaitBryan orientation;
353 
354  double timeDelta;
355  };
356 
359  typedef std::map<int, LocalAnimationChange> AnimationChanges;
361 
362  double myDt;
363 
364  DtTaitBryan myLastOrientation;
369 
372 
375 
377 };

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)