]> git.tdb.fi Git - libs/demoscene.git/blobdiff - source/fadeoverlay.cpp
Make some simple actions loadable
[libs/demoscene.git] / source / fadeoverlay.cpp
index 46ebd58fceababa12181f6e5be65e6b005537fef..ab069c3477e79e69a339ca916cb62749eb94ead2 100644 (file)
@@ -1,9 +1,11 @@
 #include <msp/datafile/collection.h>
 #include <msp/gl/renderer.h>
 #include <msp/gl/texture2d.h>
+#include "demo.h"
 #include "fadeoverlay.h"
 
 using namespace Msp;
+using namespace std;
 
 FadeOverlay::FadeOverlay(DataFile::Collection &resources):
        mesh(get_fullscreen_quad()),
@@ -28,7 +30,36 @@ void FadeOverlay::render(GL::Renderer &renderer, const GL::Texture2D &color_buf,
 }
 
 
+FadeOverlay::Fade::Fade():
+       ColorFadeAction(GL::Color(0.0f, 0.0f, 0.0f, 0.0f)),
+       overlay(0)
+{ }
+
 FadeOverlay::Fade::Fade(FadeOverlay &o, const GL::Color &c):
        ColorFadeAction(c),
-       overlay(o)
+       overlay(&o)
 { }
+
+void FadeOverlay::Fade::validate() const
+{
+       if(!overlay)
+               throw logic_error("null overlay");
+}
+
+
+FadeOverlay::Fade::Loader::Loader(Fade &f, Demo &d):
+       DataFile::DerivedObjectLoader<Fade, Action::Loader>(f, d)
+{
+       add("overlay", &Loader::overlay);
+       add("color", &Loader::color);
+}
+
+void FadeOverlay::Fade::Loader::overlay(const string &n)
+{
+       obj.overlay = &demo.get_thing<FadeOverlay>(n);
+}
+
+void FadeOverlay::Fade::Loader::color(float r, float g, float b, float a)
+{
+       obj.end_color = GL::Color(r, g, b, a);
+}