Add public functions for adding owned keyframes to Animation
authorMikko Rasa <tdb@tdb.fi>
Sun, 23 Jun 2019 19:37:22 +0000 (22:37 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 23 Jun 2019 19:37:22 +0000 (22:37 +0300)
This is useful when constructing animations in code, to avoid the need
of storing pointers to the keyframes.

source/animation.cpp
source/animation.h

index 0d0ce75e951176dc3444b29c1b231b7f8c530735..0e4bd3e6ff26c26a4e4b7204c487fa6715148be7 100644 (file)
@@ -50,6 +50,12 @@ void Animation::add_keyframe(const Time::TimeDelta &t, const KeyFrame &kf)
        create_curves();
 }
 
+void Animation::add_keyframe_owned(const Time::TimeDelta &t, const KeyFrame *kf)
+{
+       add_keyframe(t, kf, false, true);
+       create_curves();
+}
+
 void Animation::add_keyframe(const Time::TimeDelta &t, const KeyFrame &kf, float slope)
 {
        add_keyframe(t, &kf, slope, slope, false);
@@ -70,6 +76,14 @@ void Animation::add_control_keyframe(const KeyFrame &kf)
        add_keyframe(keyframes.back().time, &kf, true, false);
 }
 
+void Animation::add_control_keyframe_owned(const KeyFrame *kf)
+{
+       if(keyframes.empty())
+               throw invalid_operation("Animation::add_control_keyframe_owned");
+
+       add_keyframe(keyframes.back().time, kf, true, true);
+}
+
 void Animation::add_keyframe(const Time::TimeDelta &t, const KeyFrame *kf, float ss, float es, bool owned)
 {
        if(keyframes.empty())
index 616d0e74e9ab8beadc2c39b4010786d2f57082cb..d053ee9004835154acd8f22f3a91ab5655148c67 100644 (file)
@@ -182,9 +182,11 @@ public:
        const std::string &get_uniform_name(unsigned) const;
 
        void add_keyframe(const Time::TimeDelta &, const KeyFrame &);
+       void add_keyframe_owned(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 &);
+       void add_control_keyframe_owned(const KeyFrame *);
 private:
        void add_keyframe(const Time::TimeDelta &, const KeyFrame *, float, float, bool);
        void add_keyframe(const Time::TimeDelta &, const KeyFrame *, bool, bool);