VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 DtReaderWriter::SearchPaths& searchPaths,
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 
105  virtual void setForceAutomaticOrientation(bool forceAuto);
106  virtual const bool forceAutomaticOrientation() const;
108 
112  virtual void setMoveOutHeading(double);
113  virtual double moveOutHeading() const;
115 
118  virtual void setScriptedMovementFile(const DtString&);
119  virtual const DtString& scriptedMovementFile() const;
121 
131  virtual void setClampType(int);
132  virtual int clampType() const;
134 
142  virtual void setCompletionRule(int);
143  virtual int completionRule() const;
145 
149  virtual void setFileConfiguration(const DtString&);
150  virtual const DtString& fileConfiguration() const;
152 
155  virtual double calculateOrientation(int frame, double dt, DtTaitBryan&, DtVector& rotationalVelocity) const;
156 
158  virtual DtVector calculateLocation(int frame) const;
159 
162  virtual void calculateSpeed(int frame, double dt, DtVector& velocity, DtVector& acceleration) const;
163 
165  virtual DtVector targetPosition() const;
166 
168  virtual DtVector localReferencePosition() const;
169 
171  virtual DtTaitBryan targetOrientation() const;
172 
174  virtual DtVector groundClamp(const DtVector&) const;
175 
177  virtual DtVector bodyOffsetVector(int frame) const;
178 
180  virtual DtTaitBryan orientationOffset(int frame) const;
181 
184  virtual DtVector groundClampHighFidelity(const DtVector& location, double heading, DtTaitBryan& newLocalOrienationTb) const;
185 
187  virtual DtVector velocityForFrame(int frame, double dt) const;
188 
190  virtual DtVector calculateRotationalVelocity(int frame, double dt) const;
191 
193  virtual DtVector calculateRotationalVelocity(const DtTaitBryan& currentFrame, int frame, double dt) const;
194 
196  virtual DtVector heightAdjustedLocation(const DtVector&) const;
197 
199  virtual DtTaitBryan orientationForFrame(int frame, double& heading) const;
200 
202  virtual bool canBeAnimated() const;
203 
206  virtual int animationRow(double, int frameHint = 0) const;
207 
209  virtual int animationRows() const;
210 
212  virtual double deltaTimeForFrame(int frame) const;
213 
215  virtual void resetAnimationVariables();
216 
218  virtual void reset();
219 
221  virtual void setupForAnimation();
222 
224  virtual double simulationTime(int) const;
225 
227  virtual void setFrameTime(double);
228 
231  virtual double frameTime() const;
232 
234  virtual void setAnimationFrame(int);
235  virtual int animationFrame() const;
236 
238  virtual void setNeedsSetup(bool);
239  virtual bool needsSetup() const;
240 
243  virtual bool simulate(double simulateFor, DtVector& newLocation, DtTaitBryan& newOrientation,
244  DtVector& newVelocity, DtVector& newAcceleration, DtVector& newRotationalVelocity,
245  bool debug = false);
246 
248  virtual void setElapsedAnimationTime(double);
249  virtual double elapsedAnimationTime() const;
250 
253  virtual void setTransitionSpeed(double);
254  virtual double transitionSpeed() const;
255 
261  virtual int setObjectOffsetLocation(int row, const DtVector&);
262 
265  virtual int setObjectOffsetOrientation(int row, const DtTaitBryan&);
266 
268  virtual void setTimeDeltaFromPreviousRow(int forRow, double timeDelta);
269 
274  virtual int addAnimationRow(double deltaTime, double lateral, double range, double altitude,
275  double headingOffset = 0, double pitchOffset = 0, double rollOffset = 0);
276 
278  virtual void removeRow(int);
280 
281  virtual void setEntity(DtVrfObject*);
282  virtual DtVrfObject* entity() const;
283  virtual DtVrfObject* targetPoint() const;
284  virtual const char* readerWriterType() const;
285 
287  virtual int frameToTravelSpeed(int base, double speed) const;
288 
290  virtual double dT() const;
291 
293  virtual double lastSimulationTime() const;
294 
296  virtual bool isFinished() const;
297 
298 protected:
299 
301  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
302  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
303 
304  static void objectAddedCallback(DtVrfObject* object, void* usr);
305  virtual void processObjectAddedCallback(DtVrfObject*);
306 
308  virtual void putSelf(FILE *fp, int indentLevel, bool writeUnspecified,
309  const DtFilename& path);
310 
312  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
313  const DtVariableBindingsList& variableBindings);
314 
316  virtual void initializeReferenceObject();
317 
319  virtual int nextFrameToMaintainSpeed(int frame, double speed) const;
320 
322  virtual void deadReckon(double overTime, DtVector& newWorldLocation, DtTaitBryan& newLocalOrientation, DtVector& newVelocity) const;
323 
324 protected:
326 
329 
345 
347  {
348  LocalAnimationChange() : change(0), timeDelta(0) {};
349  LocalAnimationChange(const LocalAnimationChange& orig) : change(orig.change),
350  vector(orig.vector), orientation(orig.orientation), timeDelta(orig.timeDelta) {};
351  virtual ~LocalAnimationChange() {};
352 
357  int change;
358 
361 
363  DtTaitBryan orientation;
364 
365  double timeDelta;
366  };
367 
370  typedef std::map<int, LocalAnimationChange> AnimationChanges;
372 
373  double myDt;
374 
375  DtTaitBryan myLastOrientation;
380 
383 
386 
388 };

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)