set_ambient(0.2f);
set_fog_color(Color(0.0f, 0.0f, 0.0f, 0.0f));
set_fog_density(0.0f);
+
+ for(unsigned i=0; i<8; ++i)
+ {
+ string base = format("light_sources[%d]", i);
+ shdata.uniform(base+".position", Vector4(0, 0, 1, 0));
+ shdata.uniform(base+".color", 0.0f, 0.0f, 0.0f);
+ shdata.uniform(base+".enabled", 0);
+ }
}
void Lighting::set_ambient(const Color &a)
{
auto i = find_member(lights, &l, &AttachedLight::light);
if(i!=lights.end())
+ {
lights.erase(i);
+ shdata.uniform(format("light_sources[%d].enabled", lights.size()), 0);
+ }
+}
+
+int Lighting::find_light_index(const Light &l) const
+{
+ auto i = find_member(lights, &l, &AttachedLight::light);
+ return (i!=lights.end() ? i-lights.begin() : -1);
}
const ProgramData &Lighting::get_shader_data() const
DataFile::Loader::ActionMap Lighting::Loader::shared_actions;
-Lighting::Loader::Loader(Lighting &l):
- CollectionObjectLoader<Lighting>(l, 0)
-{
- set_actions(shared_actions);
-}
-
Lighting::Loader::Loader(Lighting &l, Collection &c):
CollectionObjectLoader<Lighting>(l, &c)
{