X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Faction.h;h=f43d4e1b2110f63138a9bd7ddc9fee46035a297b;hb=2a957e891f86cc692ddbb80f71b1478ea03d5a4f;hp=998885452d609b94ca2a991caaae8223344b96d3;hpb=8ffa42fba0e6a13286b465473fd399cac7c77dcf;p=libs%2Fdemoscene.git diff --git a/source/action.h b/source/action.h index 9988854..f43d4e1 100644 --- a/source/action.h +++ b/source/action.h @@ -1,13 +1,28 @@ #ifndef MSP_DEMOSCENE_ACTION_H_ #define MSP_DEMOSCENE_ACTION_H_ +#include + +class Demo; + class Action { +public: + class Loader: public Msp::DataFile::ObjectLoader + { + 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) { } @@ -17,11 +32,17 @@ public: 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);