mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-12 18:59:59 +01:00
Milestone in SourceCallbacks and Keyboard callback trigger
Updated SourceCallback class to accept cloning, reversing, and visitors for saving./loading. New mechanism in Source to listen to key triggers for launching SourceCallbacks. Saving and loading in SessionVisitor and SessionCreator.
This commit is contained in:
111
SourceCallback.h
111
SourceCallback.h
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <glm/glm.hpp>
|
||||
|
||||
class Visitor;
|
||||
class Source;
|
||||
|
||||
class SourceCallback
|
||||
@@ -25,12 +26,15 @@ public:
|
||||
SourceCallback();
|
||||
virtual ~SourceCallback() {}
|
||||
|
||||
virtual void update(Source *, float) = 0;
|
||||
virtual void update (Source *, float) = 0;
|
||||
virtual SourceCallback *clone () const = 0;
|
||||
virtual SourceCallback *reverse (Source *) const { return nullptr; }
|
||||
virtual CallbackType type () { return CALLBACK_GENERIC; }
|
||||
virtual void accept (Visitor& v);
|
||||
|
||||
inline bool finished() const { return finished_; }
|
||||
inline bool active() const { return active_; }
|
||||
inline void reset() { initialized_ = false; }
|
||||
inline bool finished () const { return finished_; }
|
||||
inline bool active () const { return active_; }
|
||||
inline void reset () { initialized_ = false; }
|
||||
|
||||
protected:
|
||||
bool active_;
|
||||
@@ -38,24 +42,33 @@ protected:
|
||||
bool initialized_;
|
||||
};
|
||||
|
||||
|
||||
class ResetGeometry : public SourceCallback
|
||||
{
|
||||
|
||||
public:
|
||||
ResetGeometry() : SourceCallback() {}
|
||||
void update(Source *s, float) override;
|
||||
ResetGeometry () : SourceCallback() {}
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone () const override;
|
||||
};
|
||||
|
||||
class SetAlpha : public SourceCallback
|
||||
class GotoAlpha : public SourceCallback
|
||||
{
|
||||
float alpha_;
|
||||
glm::vec2 pos_;
|
||||
glm::vec2 step_;
|
||||
|
||||
public:
|
||||
SetAlpha(float alpha);
|
||||
void update(Source *s, float) override;
|
||||
GotoAlpha ();
|
||||
GotoAlpha (float alpha);
|
||||
|
||||
float alpha () const { return alpha_;}
|
||||
void setAlpha (float a) { alpha_ = a; }
|
||||
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone () const override;
|
||||
SourceCallback *reverse(Source *s) const override;
|
||||
CallbackType type () override { return CALLBACK_ALPHA; }
|
||||
void accept (Visitor& v) override;
|
||||
};
|
||||
|
||||
class Loom : public SourceCallback
|
||||
@@ -67,9 +80,18 @@ class Loom : public SourceCallback
|
||||
float progress_;
|
||||
|
||||
public:
|
||||
Loom(float da, float duration = 0.f);
|
||||
void update(Source *s, float) override;
|
||||
Loom ();
|
||||
Loom (float d, float duration = 0.f);
|
||||
|
||||
float delta () const { return speed_;}
|
||||
void setDelta (float d) { speed_ = d; }
|
||||
float duration () const { return duration_;}
|
||||
void setDuration (float d) { duration_ = d; }
|
||||
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone() const override;
|
||||
CallbackType type () override { return CALLBACK_LOOM; }
|
||||
void accept (Visitor& v) override;
|
||||
};
|
||||
|
||||
class SetLock : public SourceCallback
|
||||
@@ -77,12 +99,14 @@ class SetLock : public SourceCallback
|
||||
bool lock_;
|
||||
|
||||
public:
|
||||
SetLock(bool on);
|
||||
void update(Source *s, float) override;
|
||||
SetLock (bool on);
|
||||
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone() const override;
|
||||
CallbackType type () override { return CALLBACK_LOCK; }
|
||||
};
|
||||
|
||||
class SetDepth : public SourceCallback
|
||||
class GotoDepth : public SourceCallback
|
||||
{
|
||||
float duration_;
|
||||
float progress_;
|
||||
@@ -90,9 +114,19 @@ class SetDepth : public SourceCallback
|
||||
float target_;
|
||||
|
||||
public:
|
||||
SetDepth(float depth, float duration = 0.f);
|
||||
void update(Source *s, float dt) override;
|
||||
GotoDepth ();
|
||||
GotoDepth (float depth, float duration = 0.f);
|
||||
|
||||
float depth () const { return target_;}
|
||||
void setDepth (float d) { target_ = d; }
|
||||
float duration () const { return duration_;}
|
||||
void setDuration (float d) { duration_ = d; }
|
||||
|
||||
void update (Source *s, float dt) override;
|
||||
SourceCallback *clone () const override;
|
||||
SourceCallback *reverse(Source *s) const override;
|
||||
CallbackType type () override { return CALLBACK_DEPTH; }
|
||||
void accept (Visitor& v) override;
|
||||
};
|
||||
|
||||
class SetPlay : public SourceCallback
|
||||
@@ -100,17 +134,21 @@ class SetPlay : public SourceCallback
|
||||
bool play_;
|
||||
|
||||
public:
|
||||
SetPlay(bool on);
|
||||
void update(Source *s, float) override;
|
||||
SetPlay (bool on);
|
||||
bool play () const { return play_;}
|
||||
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone() const override;
|
||||
CallbackType type () override { return CALLBACK_PLAY; }
|
||||
};
|
||||
|
||||
class RePlay : public SourceCallback
|
||||
{
|
||||
|
||||
public:
|
||||
RePlay();
|
||||
|
||||
void update(Source *s, float) override;
|
||||
SourceCallback *clone() const override;
|
||||
CallbackType type () override { return CALLBACK_REPLAY; }
|
||||
};
|
||||
|
||||
@@ -122,9 +160,18 @@ class Grab : public SourceCallback
|
||||
float progress_;
|
||||
|
||||
public:
|
||||
Grab();
|
||||
Grab(float dx, float dy, float duration = 0.f);
|
||||
void update(Source *s, float) override;
|
||||
|
||||
glm::vec2 delta () { return speed_;}
|
||||
void setDelta (glm::vec2 d) { speed_ = d; }
|
||||
float duration () const { return duration_;}
|
||||
void setDuration (float d) { duration_ = d; }
|
||||
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone () const override;
|
||||
CallbackType type () override { return CALLBACK_GRAB; }
|
||||
void accept (Visitor& v) override;
|
||||
};
|
||||
|
||||
class Resize : public SourceCallback
|
||||
@@ -135,9 +182,18 @@ class Resize : public SourceCallback
|
||||
float progress_;
|
||||
|
||||
public:
|
||||
Resize();
|
||||
Resize(float dx, float dy, float duration = 0.f);
|
||||
void update(Source *s, float) override;
|
||||
|
||||
glm::vec2 delta () { return speed_;}
|
||||
void setDelta (glm::vec2 d) { speed_ = d; }
|
||||
float duration () const { return duration_;}
|
||||
void setDuration (float d) { duration_ = d; }
|
||||
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone () const override;
|
||||
CallbackType type () override { return CALLBACK_RESIZE; }
|
||||
void accept (Visitor& v) override;
|
||||
};
|
||||
|
||||
class Turn : public SourceCallback
|
||||
@@ -148,9 +204,18 @@ class Turn : public SourceCallback
|
||||
float progress_;
|
||||
|
||||
public:
|
||||
Turn();
|
||||
Turn(float da, float duration = 0.f);
|
||||
void update(Source *s, float) override;
|
||||
|
||||
float delta () { return speed_;}
|
||||
void setDelta (float d) { speed_ = d; }
|
||||
float duration () const { return duration_;}
|
||||
void setDuration (float d) { duration_ = d; }
|
||||
|
||||
void update (Source *s, float) override;
|
||||
SourceCallback *clone () const override;
|
||||
CallbackType type () override { return CALLBACK_TURN; }
|
||||
void accept (Visitor& v) override;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user