X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Faction.h;h=dacf788fa31597d4864249ae038f5a60f5132ea9;hb=1e3954a988c6d6d946260019f25a4ad3262e01c4;hp=998885452d609b94ca2a991caaae8223344b96d3;hpb=8ffa42fba0e6a13286b465473fd399cac7c77dcf;p=libs%2Fdemoscene.git diff --git a/source/action.h b/source/action.h index 9988854..dacf788 100644 --- a/source/action.h +++ b/source/action.h @@ -1,13 +1,31 @@ #ifndef MSP_DEMOSCENE_ACTION_H_ #define MSP_DEMOSCENE_ACTION_H_ +#include + +namespace Msp { +namespace DemoScene { + +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 +35,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); @@ -30,4 +54,7 @@ public: virtual void interpolate(float, float) { } }; +} // namespace DemoScene +} // namespace Msp + #endif