summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/classes/AnimationPlayer.xml2
-rw-r--r--doc/classes/Area2D.xml4
-rw-r--r--doc/classes/Area3D.xml6
-rw-r--r--doc/classes/Curve3D.xml2
-rw-r--r--doc/classes/Object.xml2
-rw-r--r--doc/classes/ProjectSettings.xml4
-rw-r--r--doc/classes/TabBar.xml2
-rw-r--r--doc/classes/TextureLayered.xml2
-rw-r--r--doc/classes/Vector2i.xml2
-rw-r--r--doc/classes/Vector3i.xml2
-rw-r--r--doc/classes/Viewport.xml2
-rw-r--r--editor/editor_themes.cpp4
-rw-r--r--scene/2d/area_2d.cpp6
-rw-r--r--scene/2d/area_2d.h4
-rw-r--r--scene/3d/area_3d.cpp6
-rw-r--r--scene/3d/area_3d.h4
-rw-r--r--scene/3d/navigation_region_3d.cpp83
-rw-r--r--scene/main/canvas_item.cpp4
-rw-r--r--servers/navigation_server_3d.cpp1
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(&quot;&quot;)">
- 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);