#ifndef MSP_DEMOSCENE_STAGE_H_
#define MSP_DEMOSCENE_STAGE_H_
+#include <msp/gl/camera.h>
#include <msp/gl/pipeline.h>
-#include "cameracontrol.h"
#include "action.h"
+#include "demo.h"
-struct Stage
+class Stage
{
+public:
class UseInView: public Action
{
public:
virtual void start(float, float);
};
+ class SetCamera: public Action
+ {
+ public:
+ class Loader: public Msp::DataFile::DerivedObjectLoader<SetCamera, Action::Loader>
+ {
+ 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;
+public:
Stage();
~Stage();
+
+ virtual void add_things(Demo::ThingMap &, const std::string &);
+ void add_postprocessor(Msp::GL::PostProcessor &);
+ void set_camera(const Msp::GL::Camera &);
+ Msp::GL::Camera &get_camera() { return camera; }
};
#endif