summaryrefslogtreecommitdiff
path: root/servers
diff options
context:
space:
mode:
Diffstat (limited to 'servers')
-rw-r--r--servers/visual/rasterizer.h4
-rw-r--r--servers/visual/visual_server_raster.cpp60
-rw-r--r--servers/visual/visual_server_raster.h9
-rw-r--r--servers/visual/visual_server_wrap_mt.h8
-rw-r--r--servers/visual_server.h9
5 files changed, 90 insertions, 0 deletions
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index b84e83cb0c..6038054b9d 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -528,6 +528,10 @@ public:
int octree_steps;
Vector2 octree_tex_pixel_size;
Vector2 light_tex_pixel_size;
+
+ bool realtime_color_enabled;
+ Color realtime_color;
+ float realtime_energy;
};
struct InstanceData {
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index 3675194325..7ee8431e10 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -1081,6 +1081,9 @@ RID VisualServerRaster::baked_light_create() {
baked_light->data.octree_lattice_divide=0;
baked_light->data.octree_steps=1;
baked_light->data.lightmap_multiplier=1.0;
+ baked_light->data.realtime_color_enabled=false;
+ baked_light->data.realtime_color=Color(1.0, 1.0, 1.0);
+ baked_light->data.realtime_energy = 1.0;
return baked_light_owner.make_rid( baked_light );
@@ -1326,6 +1329,63 @@ void VisualServerRaster::baked_light_clear_lightmaps(RID p_baked_light){
}
+void VisualServerRaster::baked_light_set_realtime_color_enabled(RID p_baked_light, const bool p_enabled) {
+
+ VS_CHANGED;
+ BakedLight *baked_light = baked_light_owner.get(p_baked_light);
+ ERR_FAIL_COND(!baked_light);
+
+ baked_light->data.realtime_color_enabled = p_enabled;
+
+}
+
+bool VisualServerRaster::baked_light_get_realtime_color_enabled(RID p_baked_light) const{
+
+ const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
+ ERR_FAIL_COND_V(!baked_light, false);
+
+ return baked_light->data.realtime_color_enabled;
+
+}
+
+void VisualServerRaster::baked_light_set_realtime_color(RID p_baked_light, const Color& p_color) {
+
+ VS_CHANGED;
+ BakedLight *baked_light = baked_light_owner.get(p_baked_light);
+ ERR_FAIL_COND(!baked_light);
+
+ baked_light->data.realtime_color = p_color;
+
+}
+
+Color VisualServerRaster::baked_light_get_realtime_color(RID p_baked_light) const{
+
+ const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
+ ERR_FAIL_COND_V(!baked_light, Color(1.0, 1.0, 1.0));
+
+ return baked_light->data.realtime_color;
+
+}
+
+void VisualServerRaster::baked_light_set_realtime_energy(RID p_baked_light, const float p_energy) {
+
+ VS_CHANGED;
+ BakedLight *baked_light = baked_light_owner.get(p_baked_light);
+ ERR_FAIL_COND(!baked_light);
+
+ baked_light->data.realtime_energy = p_energy;
+
+}
+
+float VisualServerRaster::baked_light_get_realtime_energy(RID p_baked_light) const{
+
+ const BakedLight *baked_light = baked_light_owner.get(p_baked_light);
+ ERR_FAIL_COND_V(!baked_light, 1.0f);
+
+ return baked_light->data.realtime_energy;
+
+}
+
/* BAKED LIGHT SAMPLER */
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index 459dc60e81..deb831b167 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -951,6 +951,15 @@ public:
virtual void baked_light_add_lightmap(RID p_baked_light,const RID p_texture,int p_id);
virtual void baked_light_clear_lightmaps(RID p_baked_light);
+ virtual void baked_light_set_realtime_color_enabled(RID p_baked_light, const bool p_enabled);
+ virtual bool baked_light_get_realtime_color_enabled(RID p_baked_light) const;
+
+ virtual void baked_light_set_realtime_color(RID p_baked_light, const Color& p_color);
+ virtual Color baked_light_get_realtime_color(RID p_baked_light) const;
+
+ virtual void baked_light_set_realtime_energy(RID p_baked_light, const float p_energy);
+ virtual float baked_light_get_realtime_energy(RID p_baked_light) const;
+
/* BAKED LIGHT SAMPLER */
virtual RID baked_light_sampler_create();
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index fb502d8a6e..14961338db 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -391,6 +391,14 @@ public:
FUNC3(baked_light_add_lightmap,RID,RID,int);
FUNC1(baked_light_clear_lightmaps,RID);
+ FUNC2(baked_light_set_realtime_color_enabled, RID, const bool);
+ FUNC1RC(bool, baked_light_get_realtime_color_enabled, RID);
+
+ FUNC2(baked_light_set_realtime_color, RID, const Color&);
+ FUNC1RC(Color, baked_light_get_realtime_color, RID);
+
+ FUNC2(baked_light_set_realtime_energy, RID, const float);
+ FUNC1RC(float, baked_light_get_realtime_energy, RID);
FUNC0R(RID,baked_light_sampler_create);
diff --git a/servers/visual_server.h b/servers/visual_server.h
index 4841720f41..656b998eae 100644
--- a/servers/visual_server.h
+++ b/servers/visual_server.h
@@ -626,6 +626,15 @@ public:
virtual void baked_light_add_lightmap(RID p_baked_light,const RID p_texture,int p_id)=0;
virtual void baked_light_clear_lightmaps(RID p_baked_light)=0;
+ virtual void baked_light_set_realtime_color_enabled(RID p_baked_light, const bool p_enabled)=0;
+ virtual bool baked_light_get_realtime_color_enabled(RID p_baked_light) const=0;
+
+ virtual void baked_light_set_realtime_color(RID p_baked_light, const Color& p_color)=0;
+ virtual Color baked_light_get_realtime_color(RID p_baked_light) const=0;
+
+ virtual void baked_light_set_realtime_energy(RID p_baked_light, const float p_energy) = 0;
+ virtual float baked_light_get_realtime_energy(RID p_baked_light) const = 0;
+
/* BAKED LIGHT SAMPLER */
virtual RID baked_light_sampler_create()=0;