]> git.tdb.fi Git - libs/gl.git/blobdiff - source/lighting.h
Remove the deprecated ProgramBuilder class
[libs/gl.git] / source / lighting.h
index 40360fc588508e9cc13cfd63f1b826f972017fea..ca214fc829601c9c26fa05e73e9e6d37f08d46be 100644 (file)
@@ -3,7 +3,6 @@
 
 #include <vector>
 #include <msp/geometry/angle.h>
-#include "bindable.h"
 #include "color.h"
 #include "gl.h"
 #include "programdata.h"
@@ -17,8 +16,25 @@ class Light;
 Encapsulates global lighting parameters and any number of individual light
 sources.
 */
-class Lighting: public Bindable<Lighting>
+class Lighting
 {
+public:
+       class Loader: public DataFile::ObjectLoader<Lighting>
+       {
+       public:
+               Loader(Lighting &);
+
+       private:
+               void ambient(float, float, float);
+               void fog_color(float, float, float);
+               void fog_density(float);
+               void fog_half_distance(float);
+               void horizon_angle(float);
+               void light(unsigned);
+               void sky_color(float, float, float);
+               void zenith_direction(float, float, float);
+       };
+
 private:
        Color ambient;
        Color sky_color;
@@ -27,9 +43,11 @@ private:
        Color fog_color;
        float fog_density;
        std::vector<const Light *> lights;
+       std::vector<Light *> owned_data;
 
 public:
        Lighting();
+       ~Lighting();
 
        /** Sets the ambient lighting color.  Affects all surfaces in the scene. */
        void set_ambient(const Color &);
@@ -43,9 +61,6 @@ public:
        effect without shaders. */
        void set_zenith_direction(const Vector3 &);
 
-       /// Deprecated alias for set_zenith_direction
-       void set_sky_direction(const Vector3 &d) { set_zenith_direction(d); }
-
        /** Sets the angle where skylight cuts off, counted from the true horizon.
        Has no effect without shaders. */
        void set_horizon_angle(const Geometry::Angle<float> &);
@@ -60,8 +75,7 @@ public:
        distance is 50%. */
        void set_fog_half_distance(float);
 
-       /** Attaches a light source.  If the attachment index is greater than
-       LightUnit::get_n_units, the Lighting can't be bound for legacy mode. */
+       /** Attaches a light source. */
        void attach(unsigned, const Light &);
 
        /** Detaches a light source. */
@@ -74,10 +88,6 @@ public:
        /** Updates a ProgramData object with the uniforms for the Lighting,
        including all attached light sources.  A view matrix must be passed in. */
        void update_shader_data(ProgramData &, const Matrix &) const;
-
-       void bind() const;
-
-       static void unbind();
 };
 
 } // namespace GL