Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/util/animation/animation3d.h @ 5027

Last change on this file since 5027 was 4906, checked in by bensch, 19 years ago

orxonox/trunk: states are now flow'n through

File size: 3.1 KB
RevLine 
[4597]1/*!
[3851]2    \file animation3d.h
3*/
4
[3863]5
[3851]6#include "animation.h"
7
8#include "vector.h"
9class PNode;
10
[4906]11#define DELTA_X_3D 0.05  //!< the percentag of the distance that doesn't have to be done by neg_exp (asymptotical) ~ maschinendelta
[3964]12
[3851]13//! KeyFrame3D Struct
14/**
15   This represents one point with direction of the animation
16*/
17typedef struct KeyFrame3D {
[4485]18  float             duration;              //!< The duration of this KeyFrame
19  Vector            position;              //!< The position of this KeyFrame
20  Vector            lastPosition;          //!< The last known position
21  Quaternion        direction;             //!< The direction of this KeyFrame
22  ANIM_FUNCTION     animFuncMov;           //!< with whitch function to iterate movement to the next KeyFrame3D
23  ANIM_FUNCTION     animFuncRot;           //!< with whitch function to iterate rotation to the next KeyFrame3D
[3851]24};
25
[4485]26//! Animation Class for 3D-transformations (movement and rotation)
[3851]27/**
28   This represents an animation for a object
29*/
30class Animation3D : public Animation
31{
32 public:
[3852]33  Animation3D(PNode* object);
[4746]34  virtual ~Animation3D();
[4597]35
[4746]36  virtual void rewind();
[3851]37
[4906]38  void addKeyFrame(Vector position, Quaternion direction,
39                   float time, ANIM_FUNCTION animFuncMov = ANIM_DEFAULT_FUNCTION,
40                   ANIM_FUNCTION animFuncRot = ANIM_NULL);
[3855]41  //  void addKeyFrame(KeyFrame3D* frame);
[3851]42
[3852]43  virtual void tick(float dt);
[4597]44
[3859]45 private:
[3851]46  // animation functions
[3973]47  void setAnimFuncMov(ANIM_FUNCTION animFunc);
48  void setAnimFuncRot(ANIM_FUNCTION animFunc);
49  void mConstant(float timePassed) const;
50  void mLinear(float timePassed) const;
51  void mSine(float timePassed) const;
52  void mCosine(float timePassed) const;
53  void mExp(float timePassed) const;
54  void mNegExp(float timePassed) const;
55  void mQuadratic(float timePassed) const;
56  void mRandom(float timePassed) const;
57  void rConstant(float timePassed) const;
58  void rLinear(float timePassed) const;
59  void rSine(float timePassed) const;
60  void rCosine(float timePassed) const;
61  void rExp(float timePassed) const;
62  void rNegExp(float timePassed) const;
63  void rQuadratic(float timePassed) const;
64  void rRandom(float timePassed) const;
[3851]65  //  ANIM_FUNCTION animFunc;
[3973]66  void (Animation3D::*animFuncMov)(float) const;      //!< A Function for the AnimationType
67  void (Animation3D::*animFuncRot)(float) const;      //!< A Function for the AnimationType
[3851]68
[3855]69
[4485]70 private:
71  KeyFrame3D*          currentKeyFrame;               //!< The current KeyFrame
72  KeyFrame3D*          nextKeyFrame;                  //!< The KeyFrame we iterate to
73  tList<KeyFrame3D>*   keyFrameList;                  //!< The KeyFrameList
74
75
[3851]76  // more class-local description
[4485]77  PNode*               object;                        //!< The Object from which to Animate something
78  Vector               lastPosition;                  //!< last Object
79  Vector               tmpVect;                       //!< temporary vector
80  float                deltaT;                        //!< time passed since last
81  float                expFactorMov;                  //!< exponential Factor for movement
82  float                expFactorRot;                  //!< exponential Factor for rotation
[3851]83};
Note: See TracBrowser for help on using the repository browser.