VR-Forces 4.5 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) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 #include "vrfobjcore/vrfObject.h"
12 #include "vrfutil/rwReal.h"
13 #include "vrfutil/rwString.h"
14 #include "vrfutil/rwInt.h"
15 #include "vrfutil/rwBoolean.h"
16 #include "vrfutil/rwTaitBryan.h"
17 #include "vrfutil/rwVector.h"
19 #include "vrfutil/movementFile.h"
20 #include "vrfutil/rwList.h"
21 
22 class DtSimManager;
23 class DtDeadReckoner;
24 
29 
31 {
32 public:
34  {
35  public:
36  AnimationChange(const DtString&);
37 
38  virtual ~AnimationChange();
39 
40  public:
46  };
47 
49  {
50  public:
52  virtual ~AnimationChangeList();
53 
54  virtual void addAnimationChange(int row, int change, const DtVector& vector, const DtTaitBryan& orientation, double timeDelta);
55 
56  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
57  const DtVariableBindingsList& variableBindings);
58  };
59 
60 public:
61  //Constructor
63  const DtString& rwName = DtString::nullString(),
64  DtReaderWriterRegistry* parentRegistry = 0);
65 
66  //Copy constructor
68  const DtString& rwName = DtString::nullString(),
69  DtReaderWriterRegistry* parentRegistry = 0);
70 
71  //Assignment Operator
73 
74  //Destructor
75  virtual ~DtAnimationModel();
76 
79  virtual void setTimeScale(double d);
80  virtual double timeScale() const;
82 
86  virtual void setReferencePoint(const DtVector&);
87  virtual DtVector referencePoint() const;
89 
93  virtual void setReferenceOrientation(const DtTaitBryan&);
94  virtual DtTaitBryan referenceOrientation() const;
96 
102  virtual void setTarget(const DtUUID&);
103 
105  virtual DtSharedVrfObjectReference target();
107 
110  virtual void setForceAutomaticOrientation(bool forceAuto);
111  virtual const bool forceAutomaticOrientation() const;
113 
117  virtual void setMoveOutHeading(double);
118  virtual double moveOutHeading() const;
120 
123  virtual void setScriptedMovementFile(const DtString&);
124  virtual const DtString& scriptedMovementFile() const;
126 
136  virtual void setClampType(int);
137  virtual int clampType() const;
139 
147  virtual void setCompletionRule(int);
148  virtual int completionRule() const;
150 
154  virtual void setFileConfiguration(const DtString&);
155  virtual const DtString& fileConfiguration() const;
157 
160  virtual double calculateOrientation(int frame, double dt, DtTaitBryan&, DtVector& rotationalVelocity) const;
161 
163  virtual DtVector calculateLocation(int frameA, int frameB = -1, double timePastFrameA = 0) const;
164 
167  virtual void calculateSpeed(int frame, DtVector& velocity) const;
168 
170  virtual DtVector targetPosition() const;
171 
173  virtual DtVector localReferencePosition() const;
174 
176  virtual DtTaitBryan targetOrientation() const;
177 
179  virtual DtVector groundClamp(const DtVector&) const;
180 
182  virtual DtVector bodyOffsetVector(int frame) const;
183 
185  virtual DtTaitBryan orientationOffset(int frame) const;
186 
190  virtual bool groundClampHighFidelity(const DtVector& location, double heading, DtTaitBryan& newLocalOrienationTb, DtVector& newLocalLocation) const;
191 
193  virtual DtVector velocityForFrame(int frame) const;
194 
196  virtual DtVector calculateRotationalVelocity(int frame, double dt) const;
197 
199  virtual DtVector calculateRotationalVelocity(const DtTaitBryan& currentFrame, int frame) const;
200 
202  virtual DtVector heightAdjustedLocation(const DtVector&) const;
203 
205  virtual DtTaitBryan orientationForFrame(int frame, double& heading) const;
206 
208  virtual bool canBeAnimated() const;
209 
212  virtual int animationRow(double, int frameHint = 0) const;
213 
215  virtual int animationRows() const;
216 
218  virtual double deltaTimeForFrame(int frame) const;
219 
221  virtual void resetAnimationVariables();
222 
224  virtual void reset();
225 
227  virtual void setupForAnimation();
228 
230  virtual double simulationTime(int) const;
231 
233  virtual void setFrameTime(double);
234 
237  virtual double frameTime() const;
238 
240  virtual void setAnimationFrame(int);
241  virtual int animationFrame() const;
242 
244  virtual void setNeedsSetup(bool);
245  virtual bool needsSetup() const;
246 
249  virtual bool simulate(double simulateFor, DtVector& newLocation, DtTaitBryan& newOrientation,
250  DtVector& newVelocity, DtVector& newRotationalVelocity, bool debug = false);
251 
253  virtual void setElapsedAnimationTime(double);
254  virtual double elapsedAnimationTime() const;
255 
258  virtual void setTransitionSpeed(double);
259  virtual double transitionSpeed() const;
260 
266  virtual int setObjectOffsetLocation(int row, const DtVector&);
267 
270  virtual int setObjectOffsetOrientation(int row, const DtTaitBryan&);
271 
273  virtual void setTimeDeltaFromPreviousRow(int forRow, double timeDelta);
274 
279  virtual int addAnimationRow(double deltaTime, double lateral, double range, double altitude,
280  double headingOffset = 0, double pitchOffset = 0, double rollOffset = 0);
281 
283  virtual void removeRow(int);
285 
286  virtual void setEntity(DtVrfObject*);
287  virtual DtVrfObject* entity() const;
288  virtual const char* readerWriterType() const;
289 
291  virtual int frameToTravelSpeed(int base, double speed) const;
292 
294  virtual double lastSimulationTime() const;
295 
297  virtual bool isFinished() const;
298 
299 protected:
300 
303  void createDeadReckoner();
304 
306  static void objectAboutToBeRemovedCallback(DtVrfObject* object, void* usr);
307  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
308 
310  virtual void putSelf(std::string& fp, int indentLevel, bool writeUnspecified,
311  const DtFilename& path);
312 
314  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
315  const DtVariableBindingsList& variableBindings);
316 
318  virtual void initializeReferenceObject();
319 
321  virtual int nextFrameToMaintainSpeed(int frame, double speed) const;
322 
324  virtual void deadReckon(double overTime, DtVector& newWorldLocation,
325  DtTaitBryan& newLocalOrientation, DtVector& newVelocity,
326  DtVector& newRotationalVelocity) const;
327 
328 protected:
330 
332 
350 
352  {
353  LocalAnimationChange() : change(0), timeDelta(0) {};
354  LocalAnimationChange(const LocalAnimationChange& orig) : change(orig.change),
355  vector(orig.vector), orientation(orig.orientation), timeDelta(orig.timeDelta) {};
356  virtual ~LocalAnimationChange() {};
357 
362  int change;
363 
366 
368  DtTaitBryan orientation;
369 
370  double timeDelta;
371  };
372 
375  typedef std::map<int, LocalAnimationChange> AnimationChanges;
377 
378  DtTaitBryan myLastOrientation;
383 
386 
389 
390  DtDeadReckoner* myDeadReckoner;
391 
393 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)