diff --git a/modules/vertex_lights_2d/doc_classes/VertexLights2DServer.xml b/modules/vertex_lights_2d/doc_classes/VertexLights2DServer.xml index 579e2ae2b..f1f41ed3d 100644 --- a/modules/vertex_lights_2d/doc_classes/VertexLights2DServer.xml +++ b/modules/vertex_lights_2d/doc_classes/VertexLights2DServer.xml @@ -245,6 +245,7 @@ + Sample the lighing information at a specific position. diff --git a/modules/vertex_lights_2d/vertex_light_data.cpp b/modules/vertex_lights_2d/vertex_light_data.cpp index 7703ffe65..8c9b397c9 100644 --- a/modules/vertex_lights_2d/vertex_light_data.cpp +++ b/modules/vertex_lights_2d/vertex_light_data.cpp @@ -39,7 +39,7 @@ void VertexLights2DServer::VertexLightQuadrant2D::get_lights(Listz_range.x || p_z_index > l->z_range.y) { + continue; + } Vector2 light_to_pos = p_position - l->position; @@ -185,7 +187,7 @@ void VertexLights2DServer::VertexLightMap2D::clear() { } } -Color VertexLights2DServer::VertexLightMap2D::sample_light(const Vector2 &p_position, const int p_item_cull_mask, const int p_layer) { +Color VertexLights2DServer::VertexLightMap2D::sample_light(const Vector2 &p_position, const int p_item_cull_mask, const int p_layer, const int p_z_index) { Color c = base_color; Vector2i quadrant_position = to_quadrant_position(p_position); @@ -197,7 +199,7 @@ Color VertexLights2DServer::VertexLightMap2D::sample_light(const Vector2 &p_posi if (quadrants.has(qp)) { VertexLightQuadrant2D *q = quadrants[qp]; - c = q->sample_light(c, p_position, p_item_cull_mask, p_layer); + c = q->sample_light(c, p_position, p_item_cull_mask, p_layer, p_z_index); } } } diff --git a/modules/vertex_lights_2d/vertex_lights_2d_server.cpp b/modules/vertex_lights_2d/vertex_lights_2d_server.cpp index cc046839f..e514ddd18 100644 --- a/modules/vertex_lights_2d/vertex_lights_2d_server.cpp +++ b/modules/vertex_lights_2d/vertex_lights_2d_server.cpp @@ -294,11 +294,11 @@ void VertexLights2DServer::light_set_item_cull_mask(RID p_light, const int p_ite // Sampling -Color VertexLights2DServer::sample_light(RID p_map, const Vector2 &p_position, const int p_item_cull_mask, const int p_layer) { +Color VertexLights2DServer::sample_light(RID p_map, const Vector2 &p_position, const int p_item_cull_mask, const int p_layer, const int p_z_index) { VertexLightMap2D *map = map_owner.getornull(p_map); ERR_FAIL_COND_V(map == NULL, Color()); - return map->sample_light(p_position, p_item_cull_mask, p_layer); + return map->sample_light(p_position, p_item_cull_mask, p_layer, p_z_index); } // Rest @@ -432,9 +432,9 @@ void VertexLights2DServer::_bind_methods() { // Sampling - ClassDB::bind_method(D_METHOD("sample_light", "map", "position", "item_cull_mask", "layer"), &VertexLights2DServer::sample_light, DEFVAL(1), DEFVAL(0)); + ClassDB::bind_method(D_METHOD("sample_light", "map", "position", "item_cull_mask", "layer", "z_index"), &VertexLights2DServer::sample_light, DEFVAL(1), DEFVAL(0), DEFVAL(0)); - // Rest + // Rest, DEFVAL(0) ClassDB::bind_method(D_METHOD("free", "rid"), &VertexLights2DServer::free); diff --git a/modules/vertex_lights_2d/vertex_lights_2d_server.h b/modules/vertex_lights_2d/vertex_lights_2d_server.h index 6a85e48e1..854b848ff 100644 --- a/modules/vertex_lights_2d/vertex_lights_2d_server.h +++ b/modules/vertex_lights_2d/vertex_lights_2d_server.h @@ -108,7 +108,7 @@ public: // Sampling - Color sample_light(RID p_map, const Vector2 &p_position, const int p_item_cull_mask = 1, const int p_layer = 0); + Color sample_light(RID p_map, const Vector2 &p_position, const int p_item_cull_mask = 1, const int p_layer = 0, const int p_z_index = 0); // Rest @@ -175,7 +175,7 @@ protected: void get_lights(List *p_lights); - Color sample_light(const Color &p_current_color, const Vector2 &p_local_position, const int p_item_cull_mask, const int p_layer); + Color sample_light(const Color &p_current_color, const Vector2 &p_local_position, const int p_item_cull_mask, const int p_layer, const int p_z_index); VertexLightQuadrant2D() { map = NULL; @@ -203,7 +203,7 @@ protected: void clear(); - Color sample_light(const Vector2 &p_position, const int p_item_cull_mask = 1, const int p_layer = 0); + Color sample_light(const Vector2 &p_position, const int p_item_cull_mask = 1, const int p_layer = 0, const int p_z_index = 0); _FORCE_INLINE_ Vector2i to_quadrant_position(const Vector2 &p_position) { return Vector2i(p_position.x / quadrant_size.x, p_position.y / quadrant_size.y);