+#ifndef MSP_DEMOSCENE_ACTION_H_
+#define MSP_DEMOSCENE_ACTION_H_
+
+class Action
+{
+protected:
+ Action() { }
+public:
+ virtual ~Action() { }
+
+ virtual void start(float, float) { }
+ virtual void beat(int) { }
+ virtual void tick(float, float) { }
+ virtual void end(float) { }
+};
+
+class InterpolationAction: public Action
+{
+protected:
+ bool hermite;
+ float start_beat;
+ float duration;
+
+ InterpolationAction(bool = false);
+
+public:
+ virtual void start(float, float);
+ virtual void tick(float, float);
+ virtual void end(float);
+ virtual void interpolate(float, float) { }
+};
+
+#endif