]> git.tdb.fi Git - libs/gl.git/blobdiff - tools/viewer.cpp
Rename Pipeline to Sequence
[libs/gl.git] / tools / viewer.cpp
index e19353c8adbf0c4e52b7fc90c701ddc715caa837..ffdc4ec6eb513e4ad2955ddfedc8004f53032692 100644 (file)
@@ -16,7 +16,7 @@
 #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/renderer.h>
 #include <msp/gl/resources.h>
 #include <msp/gl/simplescene.h>
@@ -65,7 +65,7 @@ private:
        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;
@@ -121,7 +121,7 @@ Viewer::Viewer(int argc, char **argv):
        gl_ctx(window, opts.gl_opts),
        mouse(window),
        view(window, gl_ctx),
-       pipeline(view),
+       sequence(view),
        renderable(0),
        anim_object(0),
        anim_player(0),
@@ -175,9 +175,16 @@ Viewer::Viewer(int argc, char **argv):
                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
                throw usage_error("Unknown renderable type");
@@ -205,12 +212,12 @@ Viewer::Viewer(int argc, char **argv):
        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());
+       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);
 }