X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstage.h;h=9026d03681b7dc0fb05078216e1c92a00227de48;hb=HEAD;hp=dad846dea73d4dd4f443161b8a0f8972ea988dd3;hpb=2a957e891f86cc692ddbb80f71b1478ea03d5a4f;p=libs%2Fdemoscene.git diff --git a/source/stage.h b/source/stage.h index dad846d..9026d03 100644 --- a/source/stage.h +++ b/source/stage.h @@ -1,31 +1,89 @@ #ifndef MSP_DEMOSCENE_STAGE_H_ #define MSP_DEMOSCENE_STAGE_H_ +#include #include -#include "cameracontrol.h" #include "action.h" +#include "demo.h" -struct Stage +namespace Msp { +namespace DemoScene { + +class Stage { +public: class UseInView: public Action { + public: + class Loader: public Msp::DataFile::DerivedObjectLoader + { + public: + Loader(UseInView &, Demo &); + + private: + void stage(const std::string &); + void view(const std::string &); + }; + private: - Msp::GL::View &view; - Stage &stage; + Msp::GL::View *view; + Stage *stage; public: + UseInView(); UseInView(Msp::GL::View &, Stage &); - virtual void validate() const { } + virtual void validate() const; + + virtual void start(float, float); + }; + + class SetCamera: public Action + { + public: + class Loader: public Msp::DataFile::DerivedObjectLoader + { + public: + Loader(SetCamera &, Demo &); + + private: + void camera(const std::string &); + void stage(const std::string &); + }; + + private: + Stage *stage; + const Msp::GL::Camera *camera; + + public: + SetCamera(); + SetCamera(Stage &, const Msp::GL::Camera &); + + virtual void validate() const; virtual void start(float, float); }; +protected: Msp::GL::Pipeline *pipeline; - CameraControl camera_control; + Msp::GL::Camera camera; + Msp::GL::View *last_view; +public: Stage(); ~Stage(); + + virtual void add_things(Demo::ThingMap &, const std::string &); + virtual void define_actions(Sequencer &, const std::string &) { } + + void set_camera(const Msp::GL::Camera &); + Msp::GL::Camera &get_camera() { return camera; } + +protected: + virtual void create_pipeline(Msp::GL::View &) = 0; }; +} // namespace DemoScene +} // namespace Msp + #endif