]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/sky.cpp
Use a sorted vector in place of set for small data
[libs/gl.git] / source / effects / sky.cpp
index 855509d15a3c1affb3dcc61dd41986f4decd3ae4..0744e7b9adaacda6b02be7cfaf775e9a53e97600 100644 (file)
@@ -1,6 +1,7 @@
 #include <msp/geometry/hypersphere.h>
 #include <msp/geometry/ray.h>
 #include "directionallight.h"
+#include "error.h"
 #include "mesh.h"
 #include "renderer.h"
 #include "resources.h"
@@ -131,7 +132,7 @@ void Sky::render(Renderer &renderer, Tag tag) const
 {
        renderable.render(renderer, tag);
 
-       if(!enabled_methods.count(tag))
+       if(!is_enabled_for_method(tag))
                return;
 
        Renderer::Push push(renderer);
@@ -183,5 +184,29 @@ Sky::Planet Sky::Planet::earth()
        return planet;
 }
 
+
+Sky *Sky::Template::create(const map<string, Renderable *> &renderables) const
+{
+       Renderable *content = get_item(renderables, content_name);
+       if(!content || !sun)
+               throw invalid_operation("Sky::Template::create");
+       return new Sky(*content, *sun);
+}
+
+
+DataFile::Loader::ActionMap Sky::Template::Loader::shared_actions;
+
+Sky::Template::Loader::Loader(Template &t, Collection &c):
+       DerivedObjectLoader<Template, Effect::Template::Loader>(t, c)
+{
+       set_actions(shared_actions);
+}
+
+void Sky::Template::Loader::init_actions()
+{
+       Effect::Template::Loader::init_actions();
+       add("sun", &Template::sun);
+}
+
 } // namespace GL
 } // namespace Msp