#ifndef MSP_DEMOSCENE_ACTION_H_
#define MSP_DEMOSCENE_ACTION_H_
+#include <msp/datafile/objectloader.h>
+
+namespace Msp {
+namespace DemoScene {
+
+class Demo;
+
class Action
{
+public:
+ class Loader: public Msp::DataFile::ObjectLoader<Action>
+ {
+ protected:
+ Demo &demo;
+
+ Loader(Action &, Demo &);
+ };
+
protected:
Action() { }
public:
virtual ~Action() { }
+ virtual void validate() const = 0;
+
virtual void start(float, float) { }
virtual void beat(int) { }
virtual void tick(float, float) { }
class InterpolationAction: public Action
{
protected:
- bool hermite;
+ enum Mode
+ {
+ LINEAR,
+ HERMITE
+ };
+
+ Mode mode;
float start_beat;
float duration;
- InterpolationAction(bool = false);
+ InterpolationAction(Mode = LINEAR);
public:
virtual void start(float, float);
virtual void interpolate(float, float) { }
};
+} // namespace DemoScene
+} // namespace Msp
+
#endif