diff options
-rw-r--r-- | doc/classes/AnimationPlayer.xml | 2 | ||||
-rw-r--r-- | doc/classes/Area2D.xml | 4 | ||||
-rw-r--r-- | doc/classes/Area3D.xml | 6 | ||||
-rw-r--r-- | doc/classes/Curve3D.xml | 2 | ||||
-rw-r--r-- | doc/classes/Object.xml | 2 | ||||
-rw-r--r-- | doc/classes/ProjectSettings.xml | 4 | ||||
-rw-r--r-- | doc/classes/TabBar.xml | 2 | ||||
-rw-r--r-- | doc/classes/TextureLayered.xml | 2 | ||||
-rw-r--r-- | doc/classes/Vector2i.xml | 2 | ||||
-rw-r--r-- | doc/classes/Vector3i.xml | 2 | ||||
-rw-r--r-- | doc/classes/Viewport.xml | 2 | ||||
-rw-r--r-- | editor/editor_themes.cpp | 4 | ||||
-rw-r--r-- | scene/2d/area_2d.cpp | 6 | ||||
-rw-r--r-- | scene/2d/area_2d.h | 4 | ||||
-rw-r--r-- | scene/3d/area_3d.cpp | 6 | ||||
-rw-r--r-- | scene/3d/area_3d.h | 4 | ||||
-rw-r--r-- | scene/3d/navigation_region_3d.cpp | 83 | ||||
-rw-r--r-- | scene/main/canvas_item.cpp | 4 | ||||
-rw-r--r-- | servers/navigation_server_3d.cpp | 1 |
19 files changed, 89 insertions, 53 deletions
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml index 2f84c8aa87..77770a0f7e 100644 --- a/doc/classes/AnimationPlayer.xml +++ b/doc/classes/AnimationPlayer.xml @@ -230,7 +230,7 @@ </methods> <members> <member name="assigned_animation" type="String" setter="set_assigned_animation" getter="get_assigned_animation"> - If playing, the the current animation's key, otherwise, the animation last played. When set, this changes the animation, but will not play it unless already playing. See also [member current_animation]. + If playing, the current animation's key, otherwise, the animation last played. When set, this changes the animation, but will not play it unless already playing. See also [member current_animation]. </member> <member name="audio_max_polyphony" type="int" setter="set_audio_max_polyphony" getter="get_audio_max_polyphony" default="32"> The number of possible simultaneous sounds for each of the assigned AudioStreamPlayers. diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml index b7d311d827..e197e7d04d 100644 --- a/doc/classes/Area2D.xml +++ b/doc/classes/Area2D.xml @@ -107,8 +107,8 @@ <member name="monitoring" type="bool" setter="set_monitoring" getter="is_monitoring" default="true"> If [code]true[/code], the area detects bodies or areas entering and exiting it. </member> - <member name="priority" type="float" setter="set_priority" getter="get_priority" default="0.0"> - The area's priority. Higher priority areas are processed first. + <member name="priority" type="int" setter="set_priority" getter="get_priority" default="0"> + The area's priority. Higher priority areas are processed first. The [World2D]'s physics is always processed last, after all areas. </member> </members> <signals> diff --git a/doc/classes/Area3D.xml b/doc/classes/Area3D.xml index 38d7519f73..e009d35eeb 100644 --- a/doc/classes/Area3D.xml +++ b/doc/classes/Area3D.xml @@ -106,8 +106,8 @@ <member name="monitoring" type="bool" setter="set_monitoring" getter="is_monitoring" default="true"> If [code]true[/code], the area detects bodies or areas entering and exiting it. </member> - <member name="priority" type="float" setter="set_priority" getter="get_priority" default="0.0"> - The area's priority. Higher priority areas are processed first. + <member name="priority" type="int" setter="set_priority" getter="get_priority" default="0"> + The area's priority. Higher priority areas are processed first. The [World3D]'s physics is always processed last, after all areas. </member> <member name="reverb_bus_amount" type="float" setter="set_reverb_amount" getter="get_reverb_amount" default="0.0"> The degree to which this area applies reverb to its associated audio. Ranges from [code]0[/code] to [code]1[/code] with [code]0.1[/code] precision. @@ -128,7 +128,7 @@ The magnitude of area-specific wind force. </member> <member name="wind_source_path" type="NodePath" setter="set_wind_source_path" getter="get_wind_source_path" default="NodePath("")"> - The [Node3D] which is used to specify the the direction and origin of an area-specific wind force. The direction is opposite to the z-axis of the [Node3D]'s local transform, and its origin is the origin of the [Node3D]'s local transform. + The [Node3D] which is used to specify the direction and origin of an area-specific wind force. The direction is opposite to the z-axis of the [Node3D]'s local transform, and its origin is the origin of the [Node3D]'s local transform. </member> </members> <signals> diff --git a/doc/classes/Curve3D.xml b/doc/classes/Curve3D.xml index 4166de74b3..4134df25dd 100644 --- a/doc/classes/Curve3D.xml +++ b/doc/classes/Curve3D.xml @@ -138,7 +138,7 @@ <param index="1" name="cubic" type="bool" default="false" /> <param index="2" name="apply_tilt" type="bool" default="false" /> <description> - Similar with [code]interpolate_baked()[/code]. The the return value is [code]Transform3D[/code], with [code]origin[/code] as point position, [code]basis.x[/code] as sideway vector, [code]basis.y[/code] as up vector, [code]basis.z[/code] as forward vector. When the curve length is 0, there is no reasonable way to calculate the rotation, all vectors aligned with global space axes. + Similar with [code]interpolate_baked()[/code]. The return value is [code]Transform3D[/code], with [code]origin[/code] as point position, [code]basis.x[/code] as sideway vector, [code]basis.y[/code] as up vector, [code]basis.z[/code] as forward vector. When the curve length is 0, there is no reasonable way to calculate the rotation, all vectors aligned with global space axes. </description> </method> <method name="samplef" qualifiers="const"> diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml index 46c1229bb3..eea0161799 100644 --- a/doc/classes/Object.xml +++ b/doc/classes/Object.xml @@ -662,7 +662,7 @@ <return type="bool" /> <param index="0" name="method" type="StringName" /> <description> - Returns [code]true[/code] if the the given [param method] name exists in the object. + Returns [code]true[/code] if the given [param method] name exists in the object. [b]Note:[/b] In C#, [param method] must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the [code]MethodName[/code] class to avoid allocating a new [StringName] on each call. </description> </method> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 710b9889f1..6eed8434ac 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -1004,7 +1004,7 @@ macOS specific override for the shortcut to add a caret below every caret. </member> <member name="input/ui_text_caret_document_end" type="Dictionary" setter="" getter=""> - Default [InputEventAction] to move the text cursor the the end of the text. + Default [InputEventAction] to move the text cursor to the end of the text. [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_document_end.macos" type="Dictionary" setter="" getter=""> @@ -2384,7 +2384,7 @@ [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]). </member> <member name="rendering/textures/vram_compression/import_s3tc_bptc" type="bool" setter="" getter=""> - If [code]true[/code], the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm (DXT1-5) for lower quality textures and the the BPTC algorithm (BC6H and BC7) for high quality textures. This algorithm is only supported on PC desktop platforms and consoles. + If [code]true[/code], the texture importer will import VRAM-compressed textures using the S3 Texture Compression algorithm (DXT1-5) for lower quality textures and the BPTC algorithm (BC6H and BC7) for high quality textures. This algorithm is only supported on PC desktop platforms and consoles. [b]Note:[/b] Changing this setting does [i]not[/i] impact textures that were already imported before. To make this setting apply to textures that were already imported, exit the editor, remove the [code].godot/imported/[/code] folder located inside the project folder then restart the editor (see [member application/config/use_hidden_project_data_directory]). </member> <member name="rendering/textures/webp_compression/compression_method" type="int" setter="" getter="" default="2"> diff --git a/doc/classes/TabBar.xml b/doc/classes/TabBar.xml index 7211fc2137..4bbd74cd11 100644 --- a/doc/classes/TabBar.xml +++ b/doc/classes/TabBar.xml @@ -212,7 +212,7 @@ Sets the maximum width which all tabs should be limited to. Unlimited if set to [code]0[/code]. </member> <member name="scroll_to_selected" type="bool" setter="set_scroll_to_selected" getter="get_scroll_to_selected" default="true"> - If [code]true[/code], the tab offset will be changed to keep the the currently selected tab visible. + If [code]true[/code], the tab offset will be changed to keep the currently selected tab visible. </member> <member name="scrolling_enabled" type="bool" setter="set_scrolling_enabled" getter="get_scrolling_enabled" default="true"> if [code]true[/code], the mouse's scroll wheel can be used to navigate the scroll view. diff --git a/doc/classes/TextureLayered.xml b/doc/classes/TextureLayered.xml index 52f3b9aca2..eea5e13557 100644 --- a/doc/classes/TextureLayered.xml +++ b/doc/classes/TextureLayered.xml @@ -22,7 +22,7 @@ <method name="_get_height" qualifiers="virtual const"> <return type="int" /> <description> - Called when the the [TextureLayered]'s height is queried. + Called when the [TextureLayered]'s height is queried. </description> </method> <method name="_get_layer_data" qualifiers="virtual const"> diff --git a/doc/classes/Vector2i.xml b/doc/classes/Vector2i.xml index 8db6bcc1b9..6ce7c2e7b3 100644 --- a/doc/classes/Vector2i.xml +++ b/doc/classes/Vector2i.xml @@ -159,7 +159,7 @@ <return type="Vector2i" /> <param index="0" name="right" type="int" /> <description> - Gets the remainder of each component of the [Vector2i] with the the given [int]. This operation uses truncated division, which is often not desired as it does not work well with negative numbers. Consider using [method @GlobalScope.posmod] instead if you want to handle negative numbers. + Gets the remainder of each component of the [Vector2i] with the given [int]. This operation uses truncated division, which is often not desired as it does not work well with negative numbers. Consider using [method @GlobalScope.posmod] instead if you want to handle negative numbers. [codeblock] print(Vector2i(10, -20) % 7) # Prints "(3, -6)" [/codeblock] diff --git a/doc/classes/Vector3i.xml b/doc/classes/Vector3i.xml index 248b47db92..5b86fba30e 100644 --- a/doc/classes/Vector3i.xml +++ b/doc/classes/Vector3i.xml @@ -166,7 +166,7 @@ <return type="Vector3i" /> <param index="0" name="right" type="int" /> <description> - Gets the remainder of each component of the [Vector3i] with the the given [int]. This operation uses truncated division, which is often not desired as it does not work well with negative numbers. Consider using [method @GlobalScope.posmod] instead if you want to handle negative numbers. + Gets the remainder of each component of the [Vector3i] with the given [int]. This operation uses truncated division, which is often not desired as it does not work well with negative numbers. Consider using [method @GlobalScope.posmod] instead if you want to handle negative numbers. [codeblock] print(Vector3i(10, -20, 30) % 7) # Prints "(3, -6, 2)" [/codeblock] diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml index 7c3694b32a..da898dbfef 100644 --- a/doc/classes/Viewport.xml +++ b/doc/classes/Viewport.xml @@ -258,7 +258,7 @@ If [code]true[/code], the GUI controls on the viewport will lay pixel perfectly. </member> <member name="handle_input_locally" type="bool" setter="set_handle_input_locally" getter="is_handling_input_locally" default="true"> - If [code]true[/code], this viewport will mark incoming input events as handled by itself. If [code]false[/code], this is instead done by the the first parent viewport that is set to handle input locally. + If [code]true[/code], this viewport will mark incoming input events as handled by itself. If [code]false[/code], this is instead done by the first parent viewport that is set to handle input locally. A [SubViewportContainer] will automatically set this property to [code]false[/code] for the [Viewport] contained inside of it. See also [method set_input_as_handled] and [method is_input_handled]. </member> diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 43c5d1d6cd..5cd5ff05c5 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -1446,7 +1446,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_color("selection_color", "LineEdit", selection_color); theme->set_color("clear_button_color", "LineEdit", font_color); theme->set_color("clear_button_color_pressed", "LineEdit", accent_color); + + theme->set_constant("minimum_character_width", "LineEdit", 4); theme->set_constant("outline_size", "LineEdit", 0); + theme->set_constant("caret_width", "LineEdit", 1); // TextEdit theme->set_stylebox("normal", "TextEdit", style_line_edit); @@ -1464,6 +1467,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_constant("line_spacing", "TextEdit", 4 * EDSCALE); theme->set_constant("outline_size", "TextEdit", 0); + theme->set_constant("caret_width", "TextEdit", 1); theme->set_icon("h_grabber", "SplitContainer", theme->get_icon(SNAME("GuiHsplitter"), SNAME("EditorIcons"))); theme->set_icon("v_grabber", "SplitContainer", theme->get_icon(SNAME("GuiVsplitter"), SNAME("EditorIcons"))); diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp index a37fabf21f..84877b13c2 100644 --- a/scene/2d/area_2d.cpp +++ b/scene/2d/area_2d.cpp @@ -123,12 +123,12 @@ real_t Area2D::get_angular_damp() const { return angular_damp; } -void Area2D::set_priority(real_t p_priority) { +void Area2D::set_priority(int p_priority) { priority = p_priority; PhysicsServer2D::get_singleton()->area_set_param(get_rid(), PhysicsServer2D::AREA_PARAM_PRIORITY, p_priority); } -real_t Area2D::get_priority() const { +int Area2D::get_priority() const { return priority; } @@ -617,7 +617,7 @@ void Area2D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "monitoring"), "set_monitoring", "is_monitoring"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "monitorable"), "set_monitorable", "is_monitorable"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "priority", PROPERTY_HINT_RANGE, "0,128,1"), "set_priority", "get_priority"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "priority", PROPERTY_HINT_RANGE, "0,100000,1,or_greater,or_less"), "set_priority", "get_priority"); ADD_GROUP("Gravity", "gravity_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "gravity_space_override", PROPERTY_HINT_ENUM, "Disabled,Combine,Combine-Replace,Replace,Replace-Combine", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_gravity_space_override_mode", "get_gravity_space_override_mode"); diff --git a/scene/2d/area_2d.h b/scene/2d/area_2d.h index 8f4bbe3219..421c29f758 100644 --- a/scene/2d/area_2d.h +++ b/scene/2d/area_2d.h @@ -168,8 +168,8 @@ public: void set_angular_damp(real_t p_angular_damp); real_t get_angular_damp() const; - void set_priority(real_t p_priority); - real_t get_priority() const; + void set_priority(int p_priority); + int get_priority() const; void set_monitoring(bool p_enable); bool is_monitoring() const; diff --git a/scene/3d/area_3d.cpp b/scene/3d/area_3d.cpp index 5901e38bb4..47912ad261 100644 --- a/scene/3d/area_3d.cpp +++ b/scene/3d/area_3d.cpp @@ -123,12 +123,12 @@ real_t Area3D::get_angular_damp() const { return angular_damp; } -void Area3D::set_priority(real_t p_priority) { +void Area3D::set_priority(int p_priority) { priority = p_priority; PhysicsServer3D::get_singleton()->area_set_param(get_rid(), PhysicsServer3D::AREA_PARAM_PRIORITY, p_priority); } -real_t Area3D::get_priority() const { +int Area3D::get_priority() const { return priority; } @@ -736,7 +736,7 @@ void Area3D::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::BOOL, "monitoring"), "set_monitoring", "is_monitoring"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "monitorable"), "set_monitorable", "is_monitorable"); - ADD_PROPERTY(PropertyInfo(Variant::INT, "priority", PROPERTY_HINT_RANGE, "0,128,1"), "set_priority", "get_priority"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "priority", PROPERTY_HINT_RANGE, "0,100000,1,or_greater,or_less"), "set_priority", "get_priority"); ADD_GROUP("Gravity", "gravity_"); ADD_PROPERTY(PropertyInfo(Variant::INT, "gravity_space_override", PROPERTY_HINT_ENUM, "Disabled,Combine,Combine-Replace,Replace,Replace-Combine", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED), "set_gravity_space_override_mode", "get_gravity_space_override_mode"); diff --git a/scene/3d/area_3d.h b/scene/3d/area_3d.h index 607e0d2af8..454c8c2960 100644 --- a/scene/3d/area_3d.h +++ b/scene/3d/area_3d.h @@ -179,8 +179,8 @@ public: void set_linear_damp(real_t p_linear_damp); real_t get_linear_damp() const; - void set_priority(real_t p_priority); - real_t get_priority() const; + void set_priority(int p_priority); + int get_priority() const; void set_wind_force_magnitude(real_t p_wind_force_magnitude); real_t get_wind_force_magnitude() const; diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp index 22a6ec3517..6af8999b89 100644 --- a/scene/3d/navigation_region_3d.cpp +++ b/scene/3d/navigation_region_3d.cpp @@ -431,9 +431,6 @@ void NavigationRegion3D::_update_debug_mesh() { debug_mesh->clear_surfaces(); - bool enabled_geometry_face_random_color = NavigationServer3D::get_singleton()->get_debug_navigation_enable_geometry_face_random_color(); - bool enabled_edge_lines = NavigationServer3D::get_singleton()->get_debug_navigation_enable_edge_lines(); - Vector<Vector3> vertices = navigation_mesh->get_vertices(); if (vertices.size() == 0) { return; @@ -444,55 +441,89 @@ void NavigationRegion3D::_update_debug_mesh() { return; } + bool enabled_geometry_face_random_color = NavigationServer3D::get_singleton()->get_debug_navigation_enable_geometry_face_random_color(); + bool enabled_edge_lines = NavigationServer3D::get_singleton()->get_debug_navigation_enable_edge_lines(); + + int vertex_count = 0; + int line_count = 0; + + for (int i = 0; i < polygon_count; i++) { + const Vector<int> &polygon = navigation_mesh->get_polygon(i); + int polygon_size = polygon.size(); + if (polygon_size < 3) { + continue; + } + line_count += polygon_size * 2; + vertex_count += (polygon_size - 2) * 3; + } + Vector<Vector3> face_vertex_array; - face_vertex_array.resize(polygon_count * 3); + face_vertex_array.resize(vertex_count); Vector<Color> face_color_array; if (enabled_geometry_face_random_color) { - face_color_array.resize(polygon_count * 3); + face_color_array.resize(vertex_count); } Vector<Vector3> line_vertex_array; if (enabled_edge_lines) { - line_vertex_array.resize(polygon_count * 6); + line_vertex_array.resize(line_count); } Color debug_navigation_geometry_face_color = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_face_color(); - Ref<StandardMaterial3D> face_material = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_face_material(); - Ref<StandardMaterial3D> line_material = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_edge_material(); - RandomPCG rand; Color polygon_color = debug_navigation_geometry_face_color; - for (int i = 0; i < polygon_count; i++) { + int face_vertex_index = 0; + int line_vertex_index = 0; + + Vector3 *face_vertex_array_ptrw = face_vertex_array.ptrw(); + Color *face_color_array_ptrw = face_color_array.ptrw(); + Vector3 *line_vertex_array_ptrw = line_vertex_array.ptrw(); + + for (int polygon_index = 0; polygon_index < polygon_count; polygon_index++) { + const Vector<int> &polygon_indices = navigation_mesh->get_polygon(polygon_index); + int polygon_indices_size = polygon_indices.size(); + if (polygon_indices_size < 3) { + continue; + } + if (enabled_geometry_face_random_color) { // Generate the polygon color, slightly randomly modified from the settings one. polygon_color.set_hsv(debug_navigation_geometry_face_color.get_h() + rand.random(-1.0, 1.0) * 0.1, debug_navigation_geometry_face_color.get_s(), debug_navigation_geometry_face_color.get_v() + rand.random(-1.0, 1.0) * 0.2); polygon_color.a = debug_navigation_geometry_face_color.a; } - Vector<int> polygon = navigation_mesh->get_polygon(i); - - face_vertex_array.push_back(vertices[polygon[0]]); - face_vertex_array.push_back(vertices[polygon[1]]); - face_vertex_array.push_back(vertices[polygon[2]]); - if (enabled_geometry_face_random_color) { - face_color_array.push_back(polygon_color); - face_color_array.push_back(polygon_color); - face_color_array.push_back(polygon_color); + for (int polygon_indices_index = 0; polygon_indices_index < polygon_indices_size - 2; polygon_indices_index++) { + face_vertex_array_ptrw[face_vertex_index] = vertices[polygon_indices[0]]; + face_vertex_array_ptrw[face_vertex_index + 1] = vertices[polygon_indices[polygon_indices_index + 1]]; + face_vertex_array_ptrw[face_vertex_index + 2] = vertices[polygon_indices[polygon_indices_index + 2]]; + if (enabled_geometry_face_random_color) { + face_color_array_ptrw[face_vertex_index] = polygon_color; + face_color_array_ptrw[face_vertex_index + 1] = polygon_color; + face_color_array_ptrw[face_vertex_index + 2] = polygon_color; + } + face_vertex_index += 3; } if (enabled_edge_lines) { - line_vertex_array.push_back(vertices[polygon[0]]); - line_vertex_array.push_back(vertices[polygon[1]]); - line_vertex_array.push_back(vertices[polygon[1]]); - line_vertex_array.push_back(vertices[polygon[2]]); - line_vertex_array.push_back(vertices[polygon[2]]); - line_vertex_array.push_back(vertices[polygon[0]]); + for (int polygon_indices_index = 0; polygon_indices_index < polygon_indices_size; polygon_indices_index++) { + line_vertex_array_ptrw[line_vertex_index] = vertices[polygon_indices[polygon_indices_index]]; + line_vertex_index += 1; + if (polygon_indices_index + 1 == polygon_indices_size) { + line_vertex_array_ptrw[line_vertex_index] = vertices[polygon_indices[0]]; + line_vertex_index += 1; + } else { + line_vertex_array_ptrw[line_vertex_index] = vertices[polygon_indices[polygon_indices_index + 1]]; + line_vertex_index += 1; + } + } } } + Ref<StandardMaterial3D> face_material = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_face_material(); + Array face_mesh_array; face_mesh_array.resize(Mesh::ARRAY_MAX); face_mesh_array[Mesh::ARRAY_VERTEX] = face_vertex_array; @@ -503,6 +534,8 @@ void NavigationRegion3D::_update_debug_mesh() { debug_mesh->surface_set_material(0, face_material); if (enabled_edge_lines) { + Ref<StandardMaterial3D> line_material = NavigationServer3D::get_singleton()->get_debug_navigation_geometry_edge_material(); + Array line_mesh_array; line_mesh_array.resize(Mesh::ARRAY_MAX); line_mesh_array[Mesh::ARRAY_VERTEX] = line_vertex_array; diff --git a/scene/main/canvas_item.cpp b/scene/main/canvas_item.cpp index e7f33782d9..6be610c083 100644 --- a/scene/main/canvas_item.cpp +++ b/scene/main/canvas_item.cpp @@ -350,9 +350,7 @@ void CanvasItem::update_draw_order() { } void CanvasItem::_window_visibility_changed() { - if (visible) { - _propagate_visibility_changed(window->is_visible()); - } + _propagate_visibility_changed(window->is_visible()); } void CanvasItem::queue_redraw() { diff --git a/servers/navigation_server_3d.cpp b/servers/navigation_server_3d.cpp index f180ceaa6b..10f5e71c91 100644 --- a/servers/navigation_server_3d.cpp +++ b/servers/navigation_server_3d.cpp @@ -226,6 +226,7 @@ Ref<StandardMaterial3D> NavigationServer3D::get_debug_navigation_geometry_face_m face_material->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED); face_material->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA); face_material->set_albedo(get_debug_navigation_geometry_face_color()); + face_material->set_cull_mode(StandardMaterial3D::CULL_DISABLED); if (enabled_geometry_face_random_color) { face_material->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true); face_material->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true); |