VR-Forces 4.3.1 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 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 
100  virtual void setReferenceObject(const DtString&);
101  virtual const DtString& referenceObject() const;
103 
106  virtual void setForceAutomaticOrientation(bool forceAuto);
107  virtual const bool forceAutomaticOrientation() const;
109 
113  virtual void setMoveOutHeading(double);
114  virtual double moveOutHeading() const;
116 
119  virtual void setScriptedMovementFile(const DtString&);
120  virtual const DtString& scriptedMovementFile() const;
122 
132  virtual void setClampType(int);
133  virtual int clampType() const;
135 
143  virtual void setCompletionRule(int);
144  virtual int completionRule() const;
146 
150  virtual void setFileConfiguration(const DtString&);
151  virtual const DtString& fileConfiguration() const;
153 
156  virtual double calculateOrientation(int frame, double dt, DtTaitBryan&, DtVector& rotationalVelocity) const;
157 
159  virtual DtVector calculateLocation(int frame) const;
160 
163  virtual void calculateSpeed(int frame, double dt, DtVector& velocity) const;
164 
166  virtual DtVector targetPosition() const;
167 
169  virtual DtVector localReferencePosition() const;
170 
172  virtual DtTaitBryan targetOrientation() const;
173 
175  virtual DtVector groundClamp(const DtVector&) const;
176 
178  virtual DtVector bodyOffsetVector(int frame) const;
179 
181  virtual DtTaitBryan orientationOffset(int frame) const;
182 
185  virtual DtVector groundClampHighFidelity(const DtVector& location, double heading, DtTaitBryan& newLocalOrienationTb) const;
186 
188  virtual DtVector velocityForFrame(int frame, double dt) const;
189 
191  virtual DtVector calculateRotationalVelocity(int frame, double dt) const;
192 
194  virtual DtVector calculateRotationalVelocity(const DtTaitBryan& currentFrame, int frame, double dt) const;
195 
197  virtual DtVector heightAdjustedLocation(const DtVector&) const;
198 
200  virtual DtTaitBryan orientationForFrame(int frame, double& heading) const;
201 
203  virtual bool canBeAnimated() const;
204 
207  virtual int animationRow(double, int frameHint = 0) const;
208 
210  virtual int animationRows() const;
211 
213  virtual double deltaTimeForFrame(int frame) const;
214 
216  virtual void resetAnimationVariables();
217 
219  virtual void reset();
220 
222  virtual void setupForAnimation();
223 
225  virtual double simulationTime(int) const;
226 
228  virtual void setFrameTime(double);
229 
232  virtual double frameTime() const;
233 
235  virtual void setAnimationFrame(int);
236  virtual int animationFrame() const;
237 
239  virtual void setNeedsSetup(bool);
240  virtual bool needsSetup() const;
241 
244  virtual bool simulate(double simulateFor, DtVector& newLocation, DtTaitBryan& newOrientation,
245  DtVector& newVelocity, DtVector& newRotationalVelocity, 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 
302  void createDeadReckoner();
303 
305  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
306  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
307 
308  static void objectAddedCallback(DtVrfObject* object, void* usr);
309  virtual void processObjectAddedCallback(DtVrfObject*);
310 
312  virtual void putSelf(FILE *fp, int indentLevel, bool writeUnspecified,
313  const DtFilename& path);
314 
316  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
317  const DtVariableBindingsList& variableBindings);
318 
320  virtual void initializeReferenceObject();
321 
323  virtual int nextFrameToMaintainSpeed(int frame, double speed) const;
324 
326  virtual void deadReckon(double overTime, DtVector& newWorldLocation,
327  DtTaitBryan& newLocalOrientation, DtVector& newVelocity,
328  DtVector& newRotationalVelocity) const;
329 
330 protected:
332 
335 
352 
354  {
355  LocalAnimationChange() : change(0), timeDelta(0) {};
356  LocalAnimationChange(const LocalAnimationChange& orig) : change(orig.change),
357  vector(orig.vector), orientation(orig.orientation), timeDelta(orig.timeDelta) {};
358  virtual ~LocalAnimationChange() {};
359 
364  int change;
365 
368 
370  DtTaitBryan orientation;
371 
372  double timeDelta;
373  };
374 
377  typedef std::map<int, LocalAnimationChange> AnimationChanges;
379 
380  double myDt;
381 
382  DtTaitBryan myLastOrientation;
387 
390 
393 
394  DtDeadReckoner* myDeadReckoner;
395 
397 };

Document ID: Generated on Wed Jul 29 00:55:00 EDT 2015 from SVN revision 155257
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)