#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"
struct Stage
{
class UseInView: public Action
{
+ public:
+ class Loader: public Msp::DataFile::DerivedObjectLoader<UseInView, Action::Loader>
+ {
+ 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<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);
};
Msp::GL::Pipeline *pipeline;
- CameraControl camera_control;
+ Msp::GL::Camera camera;
Stage();
~Stage();
+
+ void set_camera(const Msp::GL::Camera &);
};
#endif