diff options
Diffstat (limited to 'servers')
-rw-r--r-- | servers/visual/rasterizer.h | 4 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.cpp | 60 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.h | 9 | ||||
-rw-r--r-- | servers/visual/visual_server_wrap_mt.h | 8 | ||||
-rw-r--r-- | servers/visual_server.h | 9 |
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; |