X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fstage.cpp;h=94782add256f16ddc7cd2ed5c06905ae3dd4fd54;hb=7857d6ec5961f94bc926b1a969f2c841713f9650;hp=ef5cac44ca5bbdcf8429350e4f98cb35afff7bdb;hpb=35332818fc6bad98fe77831de2c51a11326e31aa;p=libs%2Fdemoscene.git diff --git a/source/stage.cpp b/source/stage.cpp index ef5cac4..94782ad 100644 --- a/source/stage.cpp +++ b/source/stage.cpp @@ -1,6 +1,8 @@ #include +#include "demo.h" #include "stage.h" +using namespace std; using namespace Msp; Stage::Stage(): @@ -13,13 +15,44 @@ Stage::~Stage() } +Stage::UseInView::UseInView(): + view(0), + stage(0) +{ } + Stage::UseInView::UseInView(GL::View &v, Stage &s): - view(v), - stage(s) + view(&v), + stage(&s) { } +void Stage::UseInView::validate() const +{ + if(!view) + throw logic_error("null view"); + if(!stage) + throw logic_error("null stage"); +} + void Stage::UseInView::start(float, float) { - view.set_camera(&stage.camera_control.get_camera()); - view.set_content(stage.pipeline); + view->set_camera(&stage->camera_control.get_camera()); + view->set_content(stage->pipeline); +} + + +Stage::UseInView::Loader::Loader(UseInView &u, Demo &d): + DataFile::DerivedObjectLoader(u, d) +{ + add("stage", &Loader::stage); + add("view", &Loader::view); +} + +void Stage::UseInView::Loader::stage(const string &n) +{ + obj.stage = &demo.get_thing(n); +} + +void Stage::UseInView::Loader::view(const string &n) +{ + obj.view = &demo.get_thing(n); }