]> git.tdb.fi Git - libs/gl.git/blobdiff - source/animation.h
Check the flat qualifier from the correct member
[libs/gl.git] / source / animation.h
diff --git a/source/animation.h b/source/animation.h
deleted file mode 100644 (file)
index 7c277f4..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-#ifndef MSP_GL_ANIMATION_H_
-#define MSP_GL_ANIMATION_H_
-
-#include <msp/core/refptr.h>
-#include <msp/datafile/objectloader.h>
-#include <msp/interpolate/spline.h>
-#include <msp/time/timedelta.h>
-#include "keyframe.h"
-
-namespace Msp {
-namespace GL {
-
-class AnimationEventObserver;
-class Armature;
-class Matrix;
-class Pose;
-
-/**
-An Animation is a sequence of KeyFrames combined with timing information.  The
-state at any point in the animation can be interpolated from the keyframes.
-*/
-class Animation
-{
-public:
-       class Loader: public DataFile::CollectionObjectLoader<Animation>
-       {
-       private:
-               Time::TimeDelta current_time;
-               float start_slope;
-               float end_slope;
-               int slopes_set;
-
-       public:
-               Loader(Animation &);
-               Loader(Animation &, Collection &);
-       private:
-               void init();
-               virtual void finish();
-
-               void check_slopes_and_control(bool, bool);
-               void add_kf(const KeyFrame *, bool, bool);
-               void load_kf(const std::string &, bool);
-               void load_kf_inline(bool);
-
-               void control_keyframe(const std::string &);
-               void control_keyframe_inline();
-               void event(const std::string &);
-               void event1i(const std::string &, int);
-               void event1f(const std::string &, float);
-               void event2f(const std::string &, float, float);
-               void event3f(const std::string &, float, float, float);
-               void event4f(const std::string &, float, float, float, float);
-               void interval(float);
-               void keyframe(const std::string &);
-               void keyframe_inline();
-               void slopes(float, float);
-       };
-
-private:
-       enum CurveTarget
-       {
-               POSITION,
-               EULER,
-               SCALE,
-               UNIFORM
-       };
-
-       class Curve
-       {
-       protected:
-               CurveTarget target;
-
-               Curve(CurveTarget);
-       public:
-               virtual ~Curve() { }
-
-               virtual void apply(float, Matrix &) const = 0;
-               virtual void apply(float, KeyFrame::AnimatedUniform &) const = 0;
-       };
-
-       template<unsigned N>
-       class ValueCurve: public Curve
-       {
-       public:
-               typedef typename Interpolate::SplineKnot<float, N> Knot;
-
-       private:
-               Interpolate::Spline<float, 3, N> spline;
-
-       public:
-               ValueCurve(CurveTarget, const std::vector<Knot> &);
-
-               virtual void apply(float, Matrix &) const;
-               virtual void apply(float, KeyFrame::AnimatedUniform &) const;
-       };
-
-       template<unsigned N>
-       struct ExtractUniform
-       {
-               const std::string &name;
-
-               ExtractUniform(const std::string &n): name(n) { }
-
-               bool operator()(const KeyFrame &, typename Interpolate::SplineValue<float, N>::Type &) const;
-       };
-
-       struct TimedKeyFrame
-       {
-               Time::TimeDelta time;
-               RefPtr<const KeyFrame> keyframe;
-               bool control;
-       };
-
-       struct Event
-       {
-               Time::TimeDelta time;
-               std::string name;
-               Variant value;
-       };
-
-       struct UniformInfo
-       {
-               std::string name;
-               unsigned size;
-
-               UniformInfo(const std::string &, unsigned);
-       };
-
-public:
-       class Iterator
-       {
-       private:
-               const Animation *animation;
-               Time::TimeDelta elapsed;
-               std::vector<Event>::const_iterator event_iter;
-               bool end;
-
-       public:
-               Iterator(const Animation &);
-
-               Iterator &operator+=(const Time::TimeDelta &);
-               void dispatch_events(AnimationEventObserver &);
-
-               bool is_end() const { return end; }
-               Matrix get_matrix() const;
-               KeyFrame::AnimatedUniform get_uniform(unsigned) const;
-               Matrix get_pose_matrix(unsigned) const;
-       };
-
-private:
-       const Armature *armature;
-       std::vector<TimedKeyFrame> keyframes;
-       std::vector<Event> events;
-       bool looping;
-       std::vector<UniformInfo> uniforms;
-       std::vector<Curve *> curves;
-
-public:
-       Animation();
-       ~Animation();
-
-       void set_armature(const Armature &);
-       const Armature *get_armature() const { return armature; }
-
-       unsigned get_n_uniforms() const { return uniforms.size(); }
-       unsigned get_slot_for_uniform(const std::string &) const;
-       const std::string &get_uniform_name(unsigned) const;
-
-       void add_keyframe(const Time::TimeDelta &, const KeyFrame &);
-       DEPRECATED void add_keyframe(const Time::TimeDelta &, const KeyFrame &, float);
-       DEPRECATED void add_keyframe(const Time::TimeDelta &, const KeyFrame &, float, float);
-       void add_control_keyframe(const KeyFrame &);
-private:
-       void add_keyframe(const Time::TimeDelta &, const KeyFrame *, float, float, bool);
-       void add_keyframe(const Time::TimeDelta &, const KeyFrame *, bool, bool);
-       void prepare_keyframe(TimedKeyFrame &);
-       void create_curves();
-       template<unsigned N, typename T>
-       void create_curve(CurveTarget target, const T &);
-       static bool extract_position(const KeyFrame &, Vector3 &);
-       static bool extract_euler(const KeyFrame &, Vector3 &);
-       static bool extract_scale(const KeyFrame &, Vector3 &);
-public:
-       void add_event(const Time::TimeDelta &, const std::string &, const Variant & = Variant());
-
-       const Msp::Time::TimeDelta &get_duration() const;
-
-       void set_looping(bool);
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif