VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtObserverAnimator.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/vrvCore.h>
13 
14 #include <vrvCore/DtUniqueID.h>
16 
17 
19 
20 #include <matrix/vlVector.h>
21 #include <matrix/vlTaitBryan.h>
22 #include <vrvUtil/DtQuat.h>
23 
24 #include <string>
25 
26 namespace makVrv
27 {
28  class DtDe;
29  class DtObserver;
30  class DtEaser;
31 
38  {
39  public:
42  DtObserverAnimator(DtDe& de, DtObserver& obs, DtVector geocEndPos,
43  DtTaitBryan geocEndOri, double endZoom, float smoothTime = 3.0f);
44 
47  DtObserverAnimator(DtDe& de, DtObserver& obs, DtVector cigEndPos,
48  DtQuat cigEndOri, double endZoom, float smoothTime = 3.0f);
49 
52  DtObserverAnimator(DtDe& de, DtObserver& obs, DtVector relativeEndPos,
53  DtQuat relativeEndOri, double endZoom, DtUniqueID attachedTo,
54  DtUniqueID secondaryAttachedTo,
55  DtObserverObject::AttachType attachedType, float smoothTime = 3.0f);
56 
59  makArchives::DtObserverStateRecord& rec, float smoothTime = 3.0f);
60 
62  virtual ~DtObserverAnimator();
63 
66  virtual void tick();
67 
70  virtual bool isDone() const;
71 
73  virtual DtObserver* observer() const;
74 
75  protected:
78  struct EntityInfo
79  {
80  bool isValid;
83  DtTaitBryan geoOri;
85  DtTaitBryan cigOri;
86  };
87 
90  virtual EntityInfo entityInfo(makVrv::DtDe& de,
91  const std::string& displayName);
92  virtual EntityInfo entityInfo(makVrv::DtDe& de, DtUniqueID elementId);
93 
97  virtual void updateTargets();
98 
99  // onInit is not virtual, because it is called by the constructor
100  void onInit();
101 
104  virtual void updateObserver();
105 
108  virtual DtVector calcTargetPosition();
109 
112  virtual DtQuat calcTargetOrientation();
113 
116  virtual void calculateUpVector();
117 
124  virtual void interpolatePosition(double t);
125 
135  virtual void interpolateOrientation(double t);
136 
142  virtual void interpolateZoom(double t);
143 
146  virtual void finish();
147 
149 
153 
154  bool myIsDone;
155 
161 
162  //these are all geocentric locations
168 
170 
171  //these are IG orientations
176 
177  //for trying to find a target location when the attachment point is on
178  //a moving target
181 
182  //Animator needs to know if it is a 2D mode so it can use view resolution instead of zoom
184 
185  double myStartZoom;
187  double myEndZoom;
188 
189  double myStartTime;
191  double myEndTime;
192 
195 
198 
199  //helper functions to assist with the animation
202  virtual double altitude(const DtVector& geoPos);
204  virtual DtVector surfaceAt(const DtVector& geoPos);
206  virtual DtVector clampAltitude(const DtVector& geoPos);
209  virtual DtVector bounce(double dt, DtVector start, DtVector end);
213  virtual double altitudeContrib();
217  virtual double phase1Contrib(double t);
221  virtual double phase3Contrib(double t);
224  virtual double calculatePercentage(double s, double e, double t);
227  virtual double calculateEasedPercent(double t);
228  };
229 } //makVrv::
DtEaser * myEaser
Definition: DtObserverAnimator.h:148
double myStartTime
Definition: DtObserverAnimator.h:189
DtVector myPreviousPosition
Definition: DtObserverAnimator.h:164
bool myIsAttached
Definition: DtObserverAnimator.h:157
DtQuat myTargetOrientation
Definition: DtObserverAnimator.h:180
DtQuat myCurrentOrientation
Definition: DtObserverAnimator.h:173
bool myShouldUseVelocity
Definition: DtObserverAnimator.h:196
double myEndTime
Definition: DtObserverAnimator.h:191
bool myShouldFaceEarth
Definition: DtObserverAnimator.h:197
float mySmoothTime
Definition: DtObserverAnimator.h:152
DtVector geoPos
Definition: DtObserverAnimator.h:82
double myCurrentZoom
Definition: DtObserverAnimator.h:186
makVrv::DtDe & myDe
Definition: DtObserverAnimator.h:150
A DtObserverSettingsRecord contains the state of an observer.
Definition: DtObserverStateRecord.h:20
DtVector myLocationTrackAttachment
Definition: DtObserverAnimator.h:160
DtQuat myOffsetOrientation
Definition: DtObserverAnimator.h:175
DtTaitBryan cigOri
Definition: DtObserverAnimator.h:85
DtUniqueID myAttachedTo
Definition: DtObserverAnimator.h:158
DtVector myEndPosition
Definition: DtObserverAnimator.h:166
double myStartZoom
Definition: DtObserverAnimator.h:185
DtVector cigPos
Definition: DtObserverAnimator.h:84
DtVector myStartPosition
Definition: DtObserverAnimator.h:163
double myEndZoom
Definition: DtObserverAnimator.h:187
DtVector myTargetPosition
Definition: DtObserverAnimator.h:179
A facade for a DtObserverObject.
Definition: DtObserver.h:37
DtTaitBryan geoOri
Definition: DtObserverAnimator.h:83
Contains makVrv::DtObserverObject class.
DtQuat myEndOrienation
Definition: DtObserverAnimator.h:174
Data structure used to store information about an entity that the observer is moving towards and will...
Definition: DtObserverAnimator.h:78
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
double myCurrentTime
Definition: DtObserverAnimator.h:190
The easer class DtEaser return values along a bezier curve between input point 1 and point 2...
Definition: DtEaser.h:17
DtVector myOffsetPosition
Definition: DtObserverAnimator.h:167
DtQuat myStartOrientation
Definition: DtObserverAnimator.h:172
Contains makVrv::DtQuat class.
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
bool myIsDone
Definition: DtObserverAnimator.h:154
Contains makArchives::DtObserverStateRecord class.
Encapsulates the process of animating an observer to a given location.
Definition: DtObserverAnimator.h:37
bool isValid
Definition: DtObserverAnimator.h:80
DtUniqueID mySecondaryAttachedTo
Definition: DtObserverAnimator.h:159
DtObserverObject::AttachType myAttachType
Definition: DtObserverAnimator.h:156
Contains makVrv::DtUniqueID type.
bool myIs2DObsMode
Definition: DtObserverAnimator.h:183
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
makVrv::DtObserver & myObserver
Definition: DtObserverAnimator.h:151
A utility Quaternion class.
Definition: DtQuat.h:19
DtVector myCurrentPosition
Definition: DtObserverAnimator.h:165
DtVector myUpVector
Definition: DtObserverAnimator.h:169
double myTravelDistance
Definition: DtObserverAnimator.h:193
DtUniqueID elementId
Definition: DtObserverAnimator.h:81
double myCurrentAltitude
Definition: DtObserverAnimator.h:194
AttachType
Definition: DtObserverObject.h:36
Contains DLL export macros.

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)