Files
vimix/UpdateCallback.h
brunoherbelin 066b40723f Stabilized implementation of fading control, with change of view and
trigger of smooth transition. Bugfix with image processing shader
change.
2020-07-30 23:24:59 +02:00

80 lines
1.5 KiB
C++

#ifndef UPDATECALLBACK_H
#define UPDATECALLBACK_H
#include "GlmToolkit.h"
class Node;
class UpdateCallback
{
public:
UpdateCallback();
virtual ~UpdateCallback() {}
virtual void update(Node *, float) = 0;
inline bool finished() const { return finished_; }
inline bool enabled() const { return enabled_; }
protected:
bool enabled_;
bool finished_;
};
class MoveToCallback : public UpdateCallback
{
float duration_;
float progress_;
bool initialized_;
glm::vec3 startingpoint_;
glm::vec3 target_;
public:
MoveToCallback(glm::vec3 target, float duration = 1000.f);
void update(Node *n, float dt);
inline void reset() { initialized_ = false; }
};
class RotateToCallback : public UpdateCallback
{
float duration_;
float progress_;
bool initialized_;
float startingangle_;
float target_;
public:
RotateToCallback(float target, float speed = 1000.f);
void update(Node *n, float dt);
inline void reset() { initialized_ = false; }
};
class BounceScaleCallback : public UpdateCallback
{
float duration_;
float progress_;
bool initialized_;
glm::vec3 initial_scale_;
public:
BounceScaleCallback(float duration = 100.f);
void update(Node *n, float dt);
};
class InfiniteGlowCallback : public UpdateCallback
{
float amplitude_;
float time_;
bool initialized_;
glm::vec3 initial_scale_;
public:
InfiniteGlowCallback(float amplitude = 0.5f);
void update(Node *n, float dt);
};
#endif // UPDATECALLBACK_H