From b2bd8e4d0624a05bb6713c59be7e2417a3f2b03a Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Thu, 10 Apr 2025 23:50:02 +0800 Subject: [PATCH] Relax the range hint for canvas layer properties --- doc/classes/CanvasLayer.xml | 1 + doc/classes/RenderingServer.xml | 7 +++++++ scene/2d/light_2d.cpp | 4 ++-- scene/main/canvas_layer.cpp | 2 +- servers/rendering_server.cpp | 2 ++ servers/rendering_server.h | 2 ++ 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml index 427cabe7819..66839e63278 100644 --- a/doc/classes/CanvasLayer.xml +++ b/doc/classes/CanvasLayer.xml @@ -54,6 +54,7 @@ Layer index for draw order. Lower values are drawn behind higher values. [b]Note:[/b] If multiple CanvasLayers have the same layer index, [CanvasItem] children of one CanvasLayer are drawn behind the [CanvasItem] children of the other CanvasLayer. Which CanvasLayer is drawn in front is non-deterministic. + [b]Note:[/b] The layer index should be between [constant RenderingServer.CANVAS_LAYER_MIN] and [constant RenderingServer.CANVAS_LAYER_MAX] (inclusive). Any other value will wrap around. The layer's base offset. diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml index 048b024e62f..3c6f1668d7e 100644 --- a/doc/classes/RenderingServer.xml +++ b/doc/classes/RenderingServer.xml @@ -3969,6 +3969,7 @@ Sets the stacking order for a viewport's canvas. [param layer] is the actual canvas layer, while [param sublayer] specifies the stacking order of the canvas among those in the same layer. + [b]Note:[/b] [param layer] should be between [constant CANVAS_LAYER_MIN] and [constant CANVAS_LAYER_MAX] (inclusive). Any other value will wrap around. @@ -4466,6 +4467,12 @@ The maximum Z-layer for canvas items. + + The minimum canvas layer. + + + The maximum canvas layer. + The maximum number of glow levels that can be used with the glow post-processing effect. diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index e354cd4c61a..62473bfe204 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -310,8 +310,8 @@ void Light2D::_bind_methods() { ADD_GROUP("Range", "range_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "range_z_min", PROPERTY_HINT_RANGE, itos(RS::CANVAS_ITEM_Z_MIN) + "," + itos(RS::CANVAS_ITEM_Z_MAX) + ",1"), "set_z_range_min", "get_z_range_min"); ADD_PROPERTY(PropertyInfo(Variant::INT, "range_z_max", PROPERTY_HINT_RANGE, itos(RS::CANVAS_ITEM_Z_MIN) + "," + itos(RS::CANVAS_ITEM_Z_MAX) + ",1"), "set_z_range_max", "get_z_range_max"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "range_layer_min", PROPERTY_HINT_RANGE, "-512,512,1"), "set_layer_range_min", "get_layer_range_min"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "range_layer_max", PROPERTY_HINT_RANGE, "-512,512,1"), "set_layer_range_max", "get_layer_range_max"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "range_layer_min", PROPERTY_HINT_RANGE, itos(RS::CANVAS_LAYER_MIN) + "," + itos(RS::CANVAS_LAYER_MAX) + ",1"), "set_layer_range_min", "get_layer_range_min"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "range_layer_max", PROPERTY_HINT_RANGE, itos(RS::CANVAS_LAYER_MIN) + "," + itos(RS::CANVAS_LAYER_MAX) + ",1"), "set_layer_range_max", "get_layer_range_max"); ADD_PROPERTY(PropertyInfo(Variant::INT, "range_item_cull_mask", PROPERTY_HINT_LAYERS_2D_RENDER), "set_item_cull_mask", "get_item_cull_mask"); ADD_GROUP("Shadow", "shadow_"); diff --git a/scene/main/canvas_layer.cpp b/scene/main/canvas_layer.cpp index 114521e6e3e..c4fd997679e 100644 --- a/scene/main/canvas_layer.cpp +++ b/scene/main/canvas_layer.cpp @@ -344,7 +344,7 @@ void CanvasLayer::_bind_methods() { ClassDB::bind_method(D_METHOD("get_canvas"), &CanvasLayer::get_canvas); ADD_GROUP("Layer", ""); - ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_RANGE, "-128,128,1"), "set_layer", "get_layer"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "layer", PROPERTY_HINT_RANGE, itos(RS::CANVAS_LAYER_MIN) + "," + itos(RS::CANVAS_LAYER_MAX) + ",1"), "set_layer", "get_layer"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible"); ADD_GROUP("Transform", ""); ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "offset", PROPERTY_HINT_NONE, "suffix:px"), "set_offset", "get_offset"); diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp index 8fb81e59f8a..8e678da6c6c 100644 --- a/servers/rendering_server.cpp +++ b/servers/rendering_server.cpp @@ -2243,6 +2243,8 @@ void RenderingServer::_bind_methods() { BIND_CONSTANT(ARRAY_WEIGHTS_SIZE); BIND_CONSTANT(CANVAS_ITEM_Z_MIN); BIND_CONSTANT(CANVAS_ITEM_Z_MAX); + BIND_CONSTANT(CANVAS_LAYER_MIN); + BIND_CONSTANT(CANVAS_LAYER_MAX); BIND_CONSTANT(MAX_GLOW_LEVELS); BIND_CONSTANT(MAX_CURSORS); BIND_CONSTANT(MAX_2D_DIRECTIONAL_LIGHTS); diff --git a/servers/rendering_server.h b/servers/rendering_server.h index af8be9db32c..beedfc5dafb 100644 --- a/servers/rendering_server.h +++ b/servers/rendering_server.h @@ -100,6 +100,8 @@ public: ARRAY_WEIGHTS_SIZE = 4, CANVAS_ITEM_Z_MIN = -4096, CANVAS_ITEM_Z_MAX = 4096, + CANVAS_LAYER_MIN = -2147483648, + CANVAS_LAYER_MAX = 2147483647, MAX_GLOW_LEVELS = 7, MAX_CURSORS = 8, MAX_2D_DIRECTIONAL_LIGHTS = 8,