#include <msp/gl/lighting.h>
#include <msp/gl/mesh.h>
#include <msp/gl/object.h>
-#include <msp/gl/pipeline.h>
+#include <msp/gl/sequence.h>
+#include <msp/gl/sequencebuilder.h>
+#include <msp/gl/sequencetemplate.h>
#include <msp/gl/renderer.h>
#include <msp/gl/resources.h>
#include <msp/gl/simplescene.h>
Input::Mouse mouse;
Resources resources;
GL::WindowView view;
- GL::Pipeline pipeline;
+ GL::Sequence *sequence;
GL::Renderable *renderable;
GL::AnimatedObject *anim_object;
GL::AnimationPlayer *anim_player;
gl_ctx(window, opts.gl_opts),
mouse(window),
view(window, gl_ctx),
- pipeline(view),
+ sequence(0),
renderable(0),
anim_object(0),
anim_player(0),
renderable = load<GL::Object>(opts.renderable_name);
else if(ext==".scene")
{
- GL::SimpleScene *scene = new GL::SimpleScene;
- DataFile::load(*scene, opts.renderable_name, resources);
- renderable = scene;
+ if(FS::exists(opts.renderable_name))
+ {
+ GL::Scene::GenericLoader ldr(resources);
+ IO::BufferedFile in(opts.renderable_name);
+ DataFile::Parser parser(in, opts.renderable_name);
+ ldr.load(parser);
+ renderable = ldr.get_scene();
+ }
+ else
+ renderable = &resources.get<GL::Scene>(opts.renderable_name);
+ }
+ else if(ext==".seq")
+ {
+ GL::SequenceTemplate *tmpl = load<GL::SequenceTemplate>(opts.renderable_name);
+ GL::SequenceBuilder bld(*tmpl);
+ sequence = bld.build(view);
}
else
throw usage_error("Unknown renderable type");
camera.set_up_direction(GL::Vector3(0, 0, 1));
update_camera();
- GL::Pipeline::Pass &pass = pipeline.add_pass(0, *renderable);
- pass.set_lighting(&lighting);
- pass.set_depth_test(&GL::DepthTest::lequal());
- pass.set_blend(&GL::Blend::alpha());
+ if(!sequence)
+ {
+ sequence = new GL::Sequence(view);
+ GL::Sequence::Step &step = sequence->add_step(0, *renderable);
+ step.set_lighting(&lighting);
+ step.set_depth_test(&GL::DepthTest::lequal());
+ step.set_blend(&GL::Blend::alpha());
+ }
- view.set_content(&pipeline);
+ view.set_content(sequence);
view.set_camera(&camera);
}
{
delete anim_player;
delete anim_object;
+ delete sequence;
}
int Viewer::main()