Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_NODE_ANIMATION_H__
00009 #define __SP_NODE_ANIMATION_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013 #include "Base/spMathSpline.hpp"
00014 #include "SceneGraph/Animation/spAnimation.hpp"
00015 #include "SceneGraph/Animation/spAnimationBaseStructures.hpp"
00016
00017 #include <vector>
00018
00019
00020 namespace sp
00021 {
00022 namespace scene
00023 {
00024
00025
00032 class SP_EXPORT NodeAnimation : public Animation
00033 {
00034
00035 public:
00036
00037 NodeAnimation();
00038 virtual ~NodeAnimation();
00039
00040
00041
00043 void addKeyframe(const Transformation &Transform, u32 Duration = 1000);
00044
00046 void insertKeyframe(u32 Index, const Transformation &Transform, u32 Duration = 1000);
00047
00049 void setKeyframe(u32 Index, const Transformation &Transform, u32 Duration = 1000);
00050
00052 void removeKeyframe(u32 Index);
00053
00054 void clearKeyframes();
00055
00056 virtual void setupManualAnimation(SceneNode* Node);
00057
00058 virtual void updateAnimation(SceneNode* Node);
00059
00060 virtual u32 getKeyframeCount() const;
00061
00062 virtual void interpolate(u32 IndexFrom, u32 IndexTo, f32 Interpolation);
00063
00068 void setSplineTranslation(bool Enable);
00069 bool getSplineTranslation() const;
00070
00077 void setSplineExpansion(const f32 Expansion);
00078 f32 getSplineExpansion() const;
00079
00080 virtual void copy(const Animation* Other);
00081
00082 private:
00083
00084
00085
00086 void updateSplineTrack(bool isRebuild);
00087
00088
00089
00090 std::vector<SNodeKeyframe> Keyframes_;
00091
00092 SceneNode* Object_;
00093
00094 math::Spline3D* Spline_;
00095
00096 };
00097
00098
00099 }
00100
00101 }
00102
00103
00104 #endif
00105
00106
00107
00108