diff options
Diffstat (limited to 'doc/classes')
37 files changed, 269 insertions, 334 deletions
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index 7e7cb07cef..4fdb7d82c5 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -1767,30 +1767,15 @@ <constant name="KEY_KP_9" value="4194447" enum="Key"> Number 9 on the numeric keypad. </constant> - <constant name="KEY_SUPER_L" value="4194368" enum="Key"> - Left Super key (Windows key). - </constant> - <constant name="KEY_SUPER_R" value="4194369" enum="Key"> - Right Super key (Windows key). - </constant> <constant name="KEY_MENU" value="4194370" enum="Key"> Context menu key. </constant> - <constant name="KEY_HYPER_L" value="4194371" enum="Key"> - Left Hyper key. - </constant> - <constant name="KEY_HYPER_R" value="4194372" enum="Key"> - Right Hyper key. + <constant name="KEY_HYPER" value="4194371" enum="Key"> + Hyper key. (On Linux/X11 only). </constant> <constant name="KEY_HELP" value="4194373" enum="Key"> Help key. </constant> - <constant name="KEY_DIRECTION_L" value="4194374" enum="Key"> - Left Direction key. - </constant> - <constant name="KEY_DIRECTION_R" value="4194375" enum="Key"> - Right Direction key. - </constant> <constant name="KEY_BACK" value="4194376" enum="Key"> Media back key. Not to be confused with the Back button on an Android device. </constant> @@ -1812,21 +1797,6 @@ <constant name="KEY_VOLUMEUP" value="4194382" enum="Key"> Volume up key. </constant> - <constant name="KEY_BASSBOOST" value="4194383" enum="Key"> - Bass Boost key. - </constant> - <constant name="KEY_BASSUP" value="4194384" enum="Key"> - Bass up key. - </constant> - <constant name="KEY_BASSDOWN" value="4194385" enum="Key"> - Bass down key. - </constant> - <constant name="KEY_TREBLEUP" value="4194386" enum="Key"> - Treble up key. - </constant> - <constant name="KEY_TREBLEDOWN" value="4194387" enum="Key"> - Treble down key. - </constant> <constant name="KEY_MEDIAPLAY" value="4194388" enum="Key"> Media play key. </constant> @@ -1911,7 +1881,7 @@ <constant name="KEY_LAUNCHF" value="4194415" enum="Key"> Launch Shortcut F key. </constant> - <constant name="KEY_UNKNOWN" value="16777215" enum="Key"> + <constant name="KEY_UNKNOWN" value="8388607" enum="Key"> Unknown key. </constant> <constant name="KEY_SPACE" value="32" enum="Key"> @@ -2121,203 +2091,23 @@ <constant name="KEY_ASCIITILDE" value="126" enum="Key"> ~ key. </constant> - <constant name="KEY_NOBREAKSPACE" value="160" enum="Key"> - Non-breakable space key. - </constant> - <constant name="KEY_EXCLAMDOWN" value="161" enum="Key"> - ¡ key. - </constant> - <constant name="KEY_CENT" value="162" enum="Key"> - ¢ key. - </constant> - <constant name="KEY_STERLING" value="163" enum="Key"> - £ key. - </constant> - <constant name="KEY_CURRENCY" value="164" enum="Key"> - ¤ key. - </constant> <constant name="KEY_YEN" value="165" enum="Key"> ¥ key. </constant> - <constant name="KEY_BROKENBAR" value="166" enum="Key"> - ¦ key. - </constant> <constant name="KEY_SECTION" value="167" enum="Key"> § key. </constant> - <constant name="KEY_DIAERESIS" value="168" enum="Key"> - ¨ key. - </constant> - <constant name="KEY_COPYRIGHT" value="169" enum="Key"> - © key. - </constant> - <constant name="KEY_ORDFEMININE" value="170" enum="Key"> - ª key. - </constant> - <constant name="KEY_GUILLEMOTLEFT" value="171" enum="Key"> - « key. - </constant> - <constant name="KEY_NOTSIGN" value="172" enum="Key"> - ¬ key. - </constant> - <constant name="KEY_HYPHEN" value="173" enum="Key"> - Soft hyphen key. - </constant> - <constant name="KEY_REGISTERED" value="174" enum="Key"> - ® key. - </constant> - <constant name="KEY_MACRON" value="175" enum="Key"> - ¯ key. - </constant> - <constant name="KEY_DEGREE" value="176" enum="Key"> - ° key. - </constant> - <constant name="KEY_PLUSMINUS" value="177" enum="Key"> - ± key. - </constant> - <constant name="KEY_TWOSUPERIOR" value="178" enum="Key"> - ² key. - </constant> - <constant name="KEY_THREESUPERIOR" value="179" enum="Key"> - ³ key. - </constant> - <constant name="KEY_ACUTE" value="180" enum="Key"> - ´ key. - </constant> - <constant name="KEY_MU" value="181" enum="Key"> - µ key. - </constant> - <constant name="KEY_PARAGRAPH" value="182" enum="Key"> - ¶ key. - </constant> - <constant name="KEY_PERIODCENTERED" value="183" enum="Key"> - · key. - </constant> - <constant name="KEY_CEDILLA" value="184" enum="Key"> - ¸ key. - </constant> - <constant name="KEY_ONESUPERIOR" value="185" enum="Key"> - ¹ key. - </constant> - <constant name="KEY_MASCULINE" value="186" enum="Key"> - º key. - </constant> - <constant name="KEY_GUILLEMOTRIGHT" value="187" enum="Key"> - » key. - </constant> - <constant name="KEY_ONEQUARTER" value="188" enum="Key"> - ¼ key. + <constant name="KEY_GLOBE" value="4194416" enum="Key"> + "Globe" key on Mac / iPad keyboard. </constant> - <constant name="KEY_ONEHALF" value="189" enum="Key"> - ½ key. + <constant name="KEY_KEYBOARD" value="4194417" enum="Key"> + "On-screen keyboard" key iPad keyboard. </constant> - <constant name="KEY_THREEQUARTERS" value="190" enum="Key"> - ¾ key. + <constant name="KEY_JIS_EISU" value="4194418" enum="Key"> + 英数 key on Mac keyboard. </constant> - <constant name="KEY_QUESTIONDOWN" value="191" enum="Key"> - ¿ key. - </constant> - <constant name="KEY_AGRAVE" value="192" enum="Key"> - À key. - </constant> - <constant name="KEY_AACUTE" value="193" enum="Key"> - Á key. - </constant> - <constant name="KEY_ACIRCUMFLEX" value="194" enum="Key"> - Â key. - </constant> - <constant name="KEY_ATILDE" value="195" enum="Key"> - Ã key. - </constant> - <constant name="KEY_ADIAERESIS" value="196" enum="Key"> - Ä key. - </constant> - <constant name="KEY_ARING" value="197" enum="Key"> - Å key. - </constant> - <constant name="KEY_AE" value="198" enum="Key"> - Æ key. - </constant> - <constant name="KEY_CCEDILLA" value="199" enum="Key"> - Ç key. - </constant> - <constant name="KEY_EGRAVE" value="200" enum="Key"> - È key. - </constant> - <constant name="KEY_EACUTE" value="201" enum="Key"> - É key. - </constant> - <constant name="KEY_ECIRCUMFLEX" value="202" enum="Key"> - Ê key. - </constant> - <constant name="KEY_EDIAERESIS" value="203" enum="Key"> - Ë key. - </constant> - <constant name="KEY_IGRAVE" value="204" enum="Key"> - Ì key. - </constant> - <constant name="KEY_IACUTE" value="205" enum="Key"> - Í key. - </constant> - <constant name="KEY_ICIRCUMFLEX" value="206" enum="Key"> - Î key. - </constant> - <constant name="KEY_IDIAERESIS" value="207" enum="Key"> - Ï key. - </constant> - <constant name="KEY_ETH" value="208" enum="Key"> - Ð key. - </constant> - <constant name="KEY_NTILDE" value="209" enum="Key"> - Ñ key. - </constant> - <constant name="KEY_OGRAVE" value="210" enum="Key"> - Ò key. - </constant> - <constant name="KEY_OACUTE" value="211" enum="Key"> - Ó key. - </constant> - <constant name="KEY_OCIRCUMFLEX" value="212" enum="Key"> - Ô key. - </constant> - <constant name="KEY_OTILDE" value="213" enum="Key"> - Õ key. - </constant> - <constant name="KEY_ODIAERESIS" value="214" enum="Key"> - Ö key. - </constant> - <constant name="KEY_MULTIPLY" value="215" enum="Key"> - × key. - </constant> - <constant name="KEY_OOBLIQUE" value="216" enum="Key"> - Ø key. - </constant> - <constant name="KEY_UGRAVE" value="217" enum="Key"> - Ù key. - </constant> - <constant name="KEY_UACUTE" value="218" enum="Key"> - Ú key. - </constant> - <constant name="KEY_UCIRCUMFLEX" value="219" enum="Key"> - Û key. - </constant> - <constant name="KEY_UDIAERESIS" value="220" enum="Key"> - Ü key. - </constant> - <constant name="KEY_YACUTE" value="221" enum="Key"> - Ý key. - </constant> - <constant name="KEY_THORN" value="222" enum="Key"> - Þ key. - </constant> - <constant name="KEY_SSHARP" value="223" enum="Key"> - ß key. - </constant> - <constant name="KEY_DIVISION" value="247" enum="Key"> - ÷ key. - </constant> - <constant name="KEY_YDIAERESIS" value="255" enum="Key"> - ÿ key. + <constant name="KEY_JIS_KANA" value="4194419" enum="Key"> + かな key on Mac keyboard. </constant> <constant name="KEY_CODE_MASK" value="8388607" enum="KeyModifierMask" is_bitfield="true"> Key Code mask. @@ -2874,25 +2664,28 @@ <constant name="PROPERTY_USAGE_ARRAY" value="262144" enum="PropertyUsageFlags" is_bitfield="true"> The property is an array. </constant> - <constant name="PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE" value="524288" enum="PropertyUsageFlags" is_bitfield="true"> - If the property is a [Resource], a new copy of it is always created when calling [method Node.duplicate] or [method Resource.duplicate]. + <constant name="PROPERTY_USAGE_ALWAYS_DUPLICATE" value="524288" enum="PropertyUsageFlags" is_bitfield="true"> + When duplicating a resource with [method Resource.duplicate], and this flag is set on a property of that resource, the property should always be duplicated, regardless of the [code]subresources[/code] bool parameter. + </constant> + <constant name="PROPERTY_USAGE_NEVER_DUPLICATE" value="1048576" enum="PropertyUsageFlags" is_bitfield="true"> + When duplicating a resource with [method Resource.duplicate], and this flag is set on a property of that resource, the property should never be duplicated, regardless of the [code]subresources[/code] bool parameter. </constant> - <constant name="PROPERTY_USAGE_HIGH_END_GFX" value="1048576" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_HIGH_END_GFX" value="2097152" enum="PropertyUsageFlags" is_bitfield="true"> The property is only shown in the editor if modern renderers are supported (GLES3 is excluded). </constant> - <constant name="PROPERTY_USAGE_NODE_PATH_FROM_SCENE_ROOT" value="2097152" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_NODE_PATH_FROM_SCENE_ROOT" value="4194304" enum="PropertyUsageFlags" is_bitfield="true"> </constant> - <constant name="PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT" value="4194304" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT" value="8388608" enum="PropertyUsageFlags" is_bitfield="true"> </constant> - <constant name="PROPERTY_USAGE_KEYING_INCREMENTS" value="8388608" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_KEYING_INCREMENTS" value="16777216" enum="PropertyUsageFlags" is_bitfield="true"> </constant> - <constant name="PROPERTY_USAGE_DEFERRED_SET_RESOURCE" value="16777216" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_DEFERRED_SET_RESOURCE" value="33554432" enum="PropertyUsageFlags" is_bitfield="true"> </constant> - <constant name="PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT" value="33554432" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT" value="67108864" enum="PropertyUsageFlags" is_bitfield="true"> </constant> - <constant name="PROPERTY_USAGE_EDITOR_BASIC_SETTING" value="67108864" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_EDITOR_BASIC_SETTING" value="134217728" enum="PropertyUsageFlags" is_bitfield="true"> </constant> - <constant name="PROPERTY_USAGE_READ_ONLY" value="134217728" enum="PropertyUsageFlags" is_bitfield="true"> + <constant name="PROPERTY_USAGE_READ_ONLY" value="268435456" enum="PropertyUsageFlags" is_bitfield="true"> The property is read-only in the [EditorInspector]. </constant> <constant name="PROPERTY_USAGE_DEFAULT" value="6" enum="PropertyUsageFlags" is_bitfield="true"> diff --git a/doc/classes/AnimationNodeTransition.xml b/doc/classes/AnimationNodeTransition.xml index bca94a568a..90bae41586 100644 --- a/doc/classes/AnimationNodeTransition.xml +++ b/doc/classes/AnimationNodeTransition.xml @@ -16,18 +16,21 @@ <return type="int" /> <param index="0" name="caption" type="String" /> <description> + Returns the input index which corresponds to [param caption]. If not found, returns [code]-1[/code]. </description> </method> <method name="get_input_caption" qualifiers="const"> <return type="String" /> <param index="0" name="input" type="int" /> <description> + Returns the name of the input at the given [param input] index. This name is displayed in the editor next to the node input. </description> </method> <method name="is_input_set_as_auto_advance" qualifiers="const"> <return type="bool" /> <param index="0" name="input" type="int" /> <description> + Returns [code]true[/code] if auto-advance is enabled for the given [param input] index. </description> </method> <method name="set_input_as_auto_advance"> @@ -35,6 +38,7 @@ <param index="0" name="input" type="int" /> <param index="1" name="enable" type="bool" /> <description> + Enables or disables auto-advance for the given [param input] index. If enabled, state changes to the next input after playing the animation once. If enabled for the last input state, it loops to the first. </description> </method> <method name="set_input_caption"> @@ -42,17 +46,19 @@ <param index="0" name="input" type="int" /> <param index="1" name="caption" type="String" /> <description> + Sets the name of the input at the given [param input] index. This name is displayed in the editor next to the node input. </description> </method> </methods> <members> <member name="enabled_inputs" type="int" setter="set_enabled_inputs" getter="get_enabled_inputs" default="0"> - The number of enabled input ports for this node. + The number of enabled input ports for this node. The maximum is [code]31[/code]. </member> <member name="reset" type="bool" setter="set_reset" getter="is_reset" default="true"> If [code]true[/code], the destination animation is played back from the beginning when switched. </member> <member name="xfade_curve" type="Curve" setter="set_xfade_curve" getter="get_xfade_curve"> + Determines how cross-fading between animations is eased. If empty, the transition will be linear. </member> <member name="xfade_time" type="float" setter="set_xfade_time" getter="get_xfade_time" default="0.0"> Cross-fading time (in seconds) between each animation connected to the inputs. diff --git a/doc/classes/Callable.xml b/doc/classes/Callable.xml index 79e65f3472..8fc44d7536 100644 --- a/doc/classes/Callable.xml +++ b/doc/classes/Callable.xml @@ -18,17 +18,19 @@ callable.call("invalid") # Invalid call, should have at least 2 arguments. [/gdscript] [csharp] - public void PrintArgs(object arg1, object arg2, object arg3 = null) + // Default parameter values are not supported. + public void PrintArgs(Variant arg1, Variant arg2, Variant arg3 = default) { GD.PrintS(arg1, arg2, arg3); } public void Test() { - Callable callable = new Callable(this, nameof(PrintArgs)); - callable.Call("hello", "world"); // Prints "hello world null". + // Invalid calls fail silently. + Callable callable = new Callable(this, MethodName.PrintArgs); + callable.Call("hello", "world"); // Default parameter values are not supported, should have 3 arguments. callable.Call(Vector2.Up, 42, callable); // Prints "(0, -1) 42 Node(Node.cs)::PrintArgs". - callable.Call("invalid"); // Invalid call, should have at least 2 arguments. + callable.Call("invalid"); // Invalid call, should have 3 arguments. } [/csharp] [/codeblocks] diff --git a/doc/classes/Cubemap.xml b/doc/classes/Cubemap.xml index 46ddede9b1..01ec4c40d7 100644 --- a/doc/classes/Cubemap.xml +++ b/doc/classes/Cubemap.xml @@ -11,4 +11,12 @@ </description> <tutorials> </tutorials> + <methods> + <method name="create_placeholder" qualifiers="const"> + <return type="Resource" /> + <description> + Creates a placeholder version of this resource ([PlaceholderCubemap]). + </description> + </method> + </methods> </class> diff --git a/doc/classes/CubemapArray.xml b/doc/classes/CubemapArray.xml index 2fd55b66c6..1b410671c1 100644 --- a/doc/classes/CubemapArray.xml +++ b/doc/classes/CubemapArray.xml @@ -12,4 +12,12 @@ </description> <tutorials> </tutorials> + <methods> + <method name="create_placeholder" qualifiers="const"> + <return type="Resource" /> + <description> + Creates a placeholder version of this resource ([PlaceholderCubemapArray]). + </description> + </method> + </methods> </class> diff --git a/doc/classes/Curve2D.xml b/doc/classes/Curve2D.xml index b5e75dff68..fe597d0955 100644 --- a/doc/classes/Curve2D.xml +++ b/doc/classes/Curve2D.xml @@ -162,6 +162,8 @@ <param index="0" name="max_stages" type="int" default="5" /> <param index="1" name="tolerance_length" type="float" default="20.0" /> <description> + Returns a list of points along the curve, with almost uniform density. [param max_stages] controls how many subdivisions a curve segment may face before it is considered approximate enough. Each subdivision splits the segment in half, so the default 5 stages may mean up to 32 subdivisions per curve segment. Increase with care! + [param tolerance_length] controls the maximal distance between two neighboring points, before the segment has to be subdivided. </description> </method> </methods> diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml index 832adb6e98..b77ec4c517 100644 --- a/doc/classes/DisplayServer.xml +++ b/doc/classes/DisplayServer.xml @@ -1434,9 +1434,9 @@ <param index="0" name="vsync_mode" type="int" enum="DisplayServer.VSyncMode" /> <param index="1" name="window_id" type="int" default="0" /> <description> - Sets the V-Sync mode of the given window. + Sets the V-Sync mode of the given window. See also [member ProjectSettings.display/window/vsync/vsync_mode]. See [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application. - Depending on the platform and used renderer, the engine will fall back to [constant VSYNC_ENABLED], if the desired mode is not supported. + Depending on the platform and used renderer, the engine will fall back to [constant VSYNC_ENABLED] if the desired mode is not supported. </description> </method> <method name="window_set_window_buttons_offset"> diff --git a/doc/classes/EditorCommandPalette.xml b/doc/classes/EditorCommandPalette.xml index 380c79fc1a..448a622ae4 100644 --- a/doc/classes/EditorCommandPalette.xml +++ b/doc/classes/EditorCommandPalette.xml @@ -16,7 +16,7 @@ [csharp] EditorCommandPalette commandPalette = GetEditorInterface().GetCommandPalette(); // ExternalCommand is a function that will be called with the command is executed. - Callable commandCallable = new Callable(this, nameof(ExternalCommand)); + Callable commandCallable = new Callable(this, MethodName.ExternalCommand); commandPalette.AddCommand("command", "test/command", commandCallable) [/csharp] [/codeblocks] diff --git a/doc/classes/Expression.xml b/doc/classes/Expression.xml index 4670e0c382..2c7d83a811 100644 --- a/doc/classes/Expression.xml +++ b/doc/classes/Expression.xml @@ -28,7 +28,7 @@ public override void _Ready() { - GetNode("LineEdit").TextSubmitted += OnTextEntered; + GetNode<LineEdit>("LineEdit").TextSubmitted += OnTextEntered; } private void OnTextEntered(string command) diff --git a/doc/classes/FileSystemDock.xml b/doc/classes/FileSystemDock.xml index 00f5c7ddff..f76bc2c279 100644 --- a/doc/classes/FileSystemDock.xml +++ b/doc/classes/FileSystemDock.xml @@ -51,5 +51,10 @@ <description> </description> </signal> + <signal name="resource_removed"> + <param index="0" name="resource" type="Resource" /> + <description> + </description> + </signal> </signals> </class> diff --git a/doc/classes/GPUParticles2D.xml b/doc/classes/GPUParticles2D.xml index c7d10078e8..29779e4a77 100644 --- a/doc/classes/GPUParticles2D.xml +++ b/doc/classes/GPUParticles2D.xml @@ -5,7 +5,8 @@ </brief_description> <description> 2D particle node used to create a variety of particle systems and effects. [GPUParticles2D] features an emitter that generates some number of particles at a given rate. - Use the [code]process_material[/code] property to add a [ParticleProcessMaterial] to configure particle appearance and behavior. Alternatively, you can add a [ShaderMaterial] which will be applied to all particles. + Use the [member process_material] property to add a [ParticleProcessMaterial] to configure particle appearance and behavior. Alternatively, you can add a [ShaderMaterial] which will be applied to all particles. + 2D particles can optionally collide with [LightOccluder2D] nodes (note: they don't collide with [PhysicsBody2D] nodes). </description> <tutorials> <link title="Particle systems (2D)">$DOCS_URL/tutorials/2d/particle_systems_2d.html</link> @@ -42,6 +43,7 @@ Number of particles emitted in one emission cycle. </member> <member name="collision_base_size" type="float" setter="set_collision_base_size" getter="get_collision_base_size" default="1.0"> + Multiplier for particle's collision radius. [code]1.0[/code] corresponds to the size of the sprite. </member> <member name="draw_order" type="int" setter="set_draw_order" getter="get_draw_order" enum="GPUParticles2D.DrawOrder" default="1"> Particle draw order. Uses [enum DrawOrder] values. diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml index c504e26d58..3dbc024b14 100644 --- a/doc/classes/HTTPRequest.xml +++ b/doc/classes/HTTPRequest.xml @@ -69,7 +69,7 @@ } // Called when the HTTP request is completed. - private void HttpRequestCompleted(int result, int response_code, string[] headers, byte[] body) + private void HttpRequestCompleted(int result, int responseCode, string[] headers, byte[] body) { var json = new JSON(); json.Parse(body.GetStringFromUTF8()); @@ -128,7 +128,7 @@ } // Called when the HTTP request is completed. - private void HttpRequestCompleted(int result, int response_code, string[] headers, byte[] body) + private void HttpRequestCompleted(int result, int responseCode, string[] headers, byte[] body) { if (result != (int)HTTPRequest.Result.Success) { diff --git a/doc/classes/HeightMapShape3D.xml b/doc/classes/HeightMapShape3D.xml index 206981e547..f34870c500 100644 --- a/doc/classes/HeightMapShape3D.xml +++ b/doc/classes/HeightMapShape3D.xml @@ -14,10 +14,10 @@ Height map data, pool array must be of [member map_width] * [member map_depth] size. </member> <member name="map_depth" type="int" setter="set_map_depth" getter="get_map_depth" default="2"> - Depth of the height map data. Changing this will resize the [member map_data]. + Number of vertices in the depth of the height map. Changing this will resize the [member map_data]. </member> <member name="map_width" type="int" setter="set_map_width" getter="get_map_width" default="2"> - Width of the height map data. Changing this will resize the [member map_data]. + Number of vertices in the width of the height map. Changing this will resize the [member map_data]. </member> </members> </class> diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index 6ecf903fde..3b0cfb3825 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -224,11 +224,18 @@ Returns [code]true[/code] if the system knows the specified device. This means that it sets all button and axis indices. Unknown joypads are not expected to match these constants, but you can still retrieve events from them. </description> </method> + <method name="is_key_label_pressed" qualifiers="const"> + <return type="bool" /> + <param index="0" name="keycode" type="int" enum="Key" /> + <description> + Returns [code]true[/code] if you are pressing the key with the [param keycode] printed on it. You can pass a [enum Key] constant or any Unicode character code. + </description> + </method> <method name="is_key_pressed" qualifiers="const"> <return type="bool" /> <param index="0" name="keycode" type="int" enum="Key" /> <description> - Returns [code]true[/code] if you are pressing the key in the current keyboard layout. You can pass a [enum Key] constant. + Returns [code]true[/code] if you are pressing the Latin key in the current keyboard layout. You can pass a [enum Key] constant. [method is_key_pressed] is only recommended over [method is_physical_key_pressed] in non-game applications. This ensures that shortcut keys behave as expected depending on the user's keyboard layout, as keyboard shortcuts are generally dependent on the keyboard layout in non-game applications. If in doubt, use [method is_physical_key_pressed]. [b]Note:[/b] Due to keyboard ghosting, [method is_key_pressed] may return [code]false[/code] even if one of the action's keys is pressed. See [url=$DOCS_URL/tutorials/inputs/input_examples.html#keyboard-events]Input examples[/url] in the documentation for more information. </description> diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml index c3d682de9e..4d10a183d4 100644 --- a/doc/classes/InputEventKey.xml +++ b/doc/classes/InputEventKey.xml @@ -5,15 +5,42 @@ </brief_description> <description> Stores key presses on the keyboard. Supports key presses, key releases and [member echo] events. + [b]Note:[/b] Events received from the keyboard usually have all properties set. Event mappings should have only one of the [member keycode], [member physical_keycode] or [member unicode] set. + When events are compared, properties are checked in the following priority - [member keycode], [member physical_keycode] and [member unicode], events with the first matching value will be considered equal. </description> <tutorials> <link title="InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link> </tutorials> <methods> + <method name="as_text_key_label" qualifiers="const"> + <return type="String" /> + <description> + Returns a [String] representation of the event's [member key_label] and modifiers. + </description> + </method> + <method name="as_text_keycode" qualifiers="const"> + <return type="String" /> + <description> + Returns a [String] representation of the event's [member keycode] and modifiers. + </description> + </method> + <method name="as_text_physical_keycode" qualifiers="const"> + <return type="String" /> + <description> + Returns a [String] representation of the event's [member physical_keycode] and modifiers. + </description> + </method> + <method name="get_key_label_with_modifiers" qualifiers="const"> + <return type="int" enum="Key" /> + <description> + Returns the localized key label combined with modifier keys such as [kbd]Shift[/kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers]. + To get a human-readable representation of the [InputEventKey] with modifiers, use [code]OS.get_keycode_string(event.get_key_label_with_modifiers())[/code] where [code]event[/code] is the [InputEventKey]. + </description> + </method> <method name="get_keycode_with_modifiers" qualifiers="const"> <return type="int" enum="Key" /> <description> - Returns the keycode combined with modifier keys such as [kbd]Shift[/kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers]. + Returns the Latin keycode combined with modifier keys such as [kbd]Shift[/kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers]. To get a human-readable representation of the [InputEventKey] with modifiers, use [code]OS.get_keycode_string(event.get_keycode_with_modifiers())[/code] where [code]event[/code] is the [InputEventKey]. </description> </method> @@ -29,19 +56,36 @@ <member name="echo" type="bool" setter="set_echo" getter="is_echo" default="false"> If [code]true[/code], the key was already pressed before this event. It means the user is holding the key down. </member> + <member name="key_label" type="int" setter="set_key_label" getter="get_key_label" enum="Key" default="0"> + Represents the localized label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants or any valid Unicode character. + For keyboard layouts with a single label on the key, it is equivalent to [member keycode]. + To get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.key_label)[/code] where [code]event[/code] is the [InputEventKey]. + [codeblock] + +-----+ +-----+ + | Q | | Q | - "Q" - keycode + | Й | | ض | - "Й" and "ض" - key_label + +-----+ +-----+ + [/codeblock] + </member> <member name="keycode" type="int" setter="set_keycode" getter="get_keycode" enum="Key" default="0"> - The key keycode, which corresponds to one of the [enum Key] constants. Represent key in the current keyboard layout. + Latin label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants. To get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.keycode)[/code] where [code]event[/code] is the [InputEventKey]. + [codeblock] + +-----+ +-----+ + | Q | | Q | - "Q" - keycode + | Й | | ض | - "Й" and "ض" - key_label + +-----+ +-----+ + [/codeblock] </member> <member name="physical_keycode" type="int" setter="set_physical_keycode" getter="get_physical_keycode" enum="Key" default="0"> - Key physical keycode, which corresponds to one of the [enum Key] constants. Represent the physical location of a key on the 101/102-key US QWERTY keyboard. + Represents the physical location of a key on the 101/102-key US QWERTY keyboard, which corresponds to one of the [enum Key] constants. To get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.keycode)[/code] where [code]event[/code] is the [InputEventKey]. </member> <member name="pressed" type="bool" setter="set_pressed" getter="is_pressed" default="false"> If [code]true[/code], the key's state is pressed. If [code]false[/code], the key's state is released. </member> <member name="unicode" type="int" setter="set_unicode" getter="get_unicode" default="0"> - The key Unicode identifier (when relevant). Unicode identifiers for the composite characters and complex scripts may not be available unless IME input mode is active. See [method Window.set_ime_active] for more information. + The key Unicode character code (when relevant), shifted by modifier keys. Unicode character codes for composite characters and complex scripts may not be available unless IME input mode is active. See [method Window.set_ime_active] for more information. </member> </members> </class> diff --git a/doc/classes/InputEventWithModifiers.xml b/doc/classes/InputEventWithModifiers.xml index c6311d780c..26b88e6ff2 100644 --- a/doc/classes/InputEventWithModifiers.xml +++ b/doc/classes/InputEventWithModifiers.xml @@ -10,6 +10,12 @@ <link title="InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link> </tutorials> <methods> + <method name="get_modifiers_mask" qualifiers="const"> + <return type="int" enum="KeyModifierMask" /> + <description> + Returns the keycode combination of modifier keys. + </description> + </method> <method name="is_command_or_control_pressed" qualifiers="const"> <return type="bool" /> <description> diff --git a/doc/classes/LightmapGI.xml b/doc/classes/LightmapGI.xml index 53dae1a8e6..723e6bbf21 100644 --- a/doc/classes/LightmapGI.xml +++ b/doc/classes/LightmapGI.xml @@ -93,22 +93,28 @@ <constant name="BAKE_ERROR_OK" value="0" enum="BakeError"> Lightmap baking was successful. </constant> - <constant name="BAKE_ERROR_NO_LIGHTMAPPER" value="1" enum="BakeError"> + <constant name="BAKE_ERROR_NO_SCENE_ROOT" value="1" enum="BakeError"> + Lightmap baking failed because the root node for the edited scene could not be accessed. + </constant> + <constant name="BAKE_ERROR_FOREIGN_DATA" value="2" enum="BakeError"> + Lightmap baking failed as the lightmap data resource is embedded in a foreign resource. + </constant> + <constant name="BAKE_ERROR_NO_LIGHTMAPPER" value="3" enum="BakeError"> Lightmap baking failed as there is no lightmapper available in this Godot build. </constant> - <constant name="BAKE_ERROR_NO_SAVE_PATH" value="2" enum="BakeError"> + <constant name="BAKE_ERROR_NO_SAVE_PATH" value="4" enum="BakeError"> Lightmap baking failed as the [LightmapGIData] save path isn't configured in the resource. </constant> - <constant name="BAKE_ERROR_NO_MESHES" value="3" enum="BakeError"> + <constant name="BAKE_ERROR_NO_MESHES" value="5" enum="BakeError"> Lightmap baking failed as there are no meshes whose [member GeometryInstance3D.gi_mode] is [constant GeometryInstance3D.GI_MODE_STATIC] and with valid UV2 mapping in the current scene. You may need to select 3D scenes in the Import dock and change their global illumination mode accordingly. </constant> - <constant name="BAKE_ERROR_MESHES_INVALID" value="4" enum="BakeError"> + <constant name="BAKE_ERROR_MESHES_INVALID" value="6" enum="BakeError"> Lightmap baking failed as the lightmapper failed to analyze some of the meshes marked as static for baking. </constant> - <constant name="BAKE_ERROR_CANT_CREATE_IMAGE" value="5" enum="BakeError"> + <constant name="BAKE_ERROR_CANT_CREATE_IMAGE" value="7" enum="BakeError"> Lightmap baking failed as the resulting image couldn't be saved or imported by Godot after it was saved. </constant> - <constant name="BAKE_ERROR_USER_ABORTED" value="6" enum="BakeError"> + <constant name="BAKE_ERROR_USER_ABORTED" value="8" enum="BakeError"> The user aborted the lightmap baking operation (typically by clicking the [b]Cancel[/b] button in the progress dialog). </constant> <constant name="ENVIRONMENT_MODE_DISABLED" value="0" enum="EnvironmentMode"> diff --git a/doc/classes/Material.xml b/doc/classes/Material.xml index c5d567c1fe..bdd5cee797 100644 --- a/doc/classes/Material.xml +++ b/doc/classes/Material.xml @@ -31,6 +31,12 @@ <description> </description> </method> + <method name="create_placeholder" qualifiers="const"> + <return type="Resource" /> + <description> + Creates a placeholder version of this resource ([PlaceholderMaterial]). + </description> + </method> <method name="inspect_native_shader_code"> <return type="void" /> <description> diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml index 1c1f48588f..ece3199aab 100644 --- a/doc/classes/Mesh.xml +++ b/doc/classes/Mesh.xml @@ -114,6 +114,12 @@ [b]Note:[/b] This method typically returns the vertices in reverse order (e.g. clockwise to counterclockwise). </description> </method> + <method name="create_placeholder" qualifiers="const"> + <return type="Resource" /> + <description> + Creates a placeholder version of this resource ([PlaceholderMesh]). + </description> + </method> <method name="create_trimesh_shape" qualifiers="const"> <return type="ConcavePolygonShape3D" /> <description> diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index 02fd6dae30..7b27f16d82 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -909,6 +909,9 @@ <constant name="NOTIFICATION_ENABLED" value="29"> Notification received when the node is enabled again after being disabled. See [constant PROCESS_MODE_DISABLED]. </constant> + <constant name="NOTIFICATION_NODE_RECACHE_REQUESTED" value="30"> + Notification received when other nodes in the tree may have been removed/replaced and node pointers may require re-caching. + </constant> <constant name="NOTIFICATION_EDITOR_PRE_SAVE" value="9001"> Notification received right before the scene with the node is saved in the editor. This notification is only sent in the Godot editor and will not occur in exported projects. </constant> diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml index 1a805007e6..e4607456ca 100644 --- a/doc/classes/Object.xml +++ b/doc/classes/Object.xml @@ -305,7 +305,7 @@ [/gdscript] [csharp] var node = new Node3D(); - node.Call("rotate", new Vector3(1f, 0f, 0f), 1.571f); + node.Call(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f); [/csharp] [/codeblocks] [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. @@ -323,7 +323,7 @@ [/gdscript] [csharp] var node = new Node3D(); - node.CallDeferred("rotate", new Vector3(1f, 0f, 0f), 1.571f); + node.CallDeferred(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f); [/csharp] [/codeblocks] [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. @@ -342,7 +342,7 @@ [/gdscript] [csharp] var node = new Node3D(); - node.Callv("rotate", new Godot.Collections.Array { new Vector3(1f, 0f, 0f), 1.571f }); + node.Callv(Node3D.MethodName.Rotate, new Godot.Collections.Array { new Vector3(1f, 0f, 0f), 1.571f }); [/csharp] [/codeblocks] [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 @@ -394,8 +394,8 @@ // This assumes that a `Player` class exists, which defines a `Hit` signal. var player = new Player(); - // Signals as events (`player.Hit += OnPlayerHit;`) do not support argument binding. You have to use: - player.Hit.Connect(OnPlayerHit, new Godot.Collections.Array {"sword", 100 }); + // We can use lambdas when we need to bind additional parameters. + player.Hit += () => OnPlayerHit("sword", 100); } private void OnButtonDown() @@ -405,7 +405,7 @@ private void OnPlayerHit(string weaponType, int damage) { - GD.Print(String.Format("Hit with weapon {0} for {1} damage.", weaponType, damage)); + GD.Print($"Hit with weapon {weaponType} for {damage} damage."); } [/csharp] [/codeblocks] @@ -431,16 +431,12 @@ public override void _Ready() { var button = new Button(); - // Option 1: Object.Connect() with an implicit Callable for the defined function. - button.Connect("button_down", OnButtonDown); - // Option 2: Object.connect() with a constructed Callable using a target object and method name. - button.Connect("button_down", new Callable(self, nameof(OnButtonDown))); - // Option 3: Signal.connect() with an implicit Callable for the defined function. - button.ButtonDown.Connect(OnButtonDown); - // Option 3b: In C#, we can use signals as events and connect with this more idiomatic syntax: + // Option 1: In C#, we can use signals as events and connect with this idiomatic syntax: button.ButtonDown += OnButtonDown; - // Option 4: Signal.connect() with a constructed Callable using a target object and method name. - button.ButtonDown.Connect(new Callable(self, nameof(OnButtonDown))); + // Option 2: Object.Connect() with a constructed Callable from a method group. + button.Connect(Button.SignalName.ButtonDown, Callable.From(OnButtonDown)); + // Option 3: Object.Connect() with a constructed Callable using a target object and method name. + button.Connect(Button.SignalName.ButtonDown, new Callable(this, MethodName.OnButtonDown)); } private void OnButtonDown() @@ -458,6 +454,7 @@ func _ready(): # This assumes that a `Player` class exists, which defines a `hit` signal. var player = Player.new() + # Using Callable.bind(). player.hit.connect(_on_player_hit.bind("sword", 100)) # Parameters added when emitting the signal are passed first. @@ -473,20 +470,19 @@ { // This assumes that a `Player` class exists, which defines a `Hit` signal. var player = new Player(); - // Option 1: Using Callable.Bind(). This way we can still use signals as events. - player.Hit += OnPlayerHit.Bind("sword", 100); - // Option 2: Using a `binds` Array in Signal.Connect(). - player.Hit.Connect(OnPlayerHit, new Godot.Collections.Array{ "sword", 100 }); + // Using lambda expressions that create a closure that captures the additional parameters. + // The lambda only receives the parameters defined by the signal's delegate. + player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, "sword", 100); // Parameters added when emitting the signal are passed first. - player.EmitSignal("hit", "Dark lord", 5); + player.EmitSignal(SignalName.Hit, "Dark lord", 5); } // We pass two arguments when emitting (`hit_by`, `level`), // and bind two more arguments when connecting (`weapon_type`, `damage`). private void OnPlayerHit(string hitBy, int level, string weaponType, int damage) { - GD.Print(String.Format("Hit by {0} (level {1}) with weapon {2} for {3} damage.", hitBy, level, weaponType, damage)); + GD.Print($"Hit by {hitBy} (level {level}) with weapon {weaponType} for {damage} damage."); } [/csharp] [/codeblocks] @@ -512,8 +508,8 @@ emit_signal("game_over") [/gdscript] [csharp] - EmitSignal("Hit", "sword", 100); - EmitSignal("GameOver"); + EmitSignal(SignalName.Hit, "sword", 100); + EmitSignal(SignalName.GameOver); [/csharp] [/codeblocks] [b]Note:[/b] In C#, [param signal] must be in snake_case when referring to built-in Godot signals. Prefer using the names exposed in the [code]SignalName[/code] class to avoid allocating a new [StringName] on each call. @@ -581,7 +577,7 @@ var b = node.GetIndexed("position:y"); // b is -10 [/csharp] [/codeblocks] - [b]Note:[/b] In C#, [param property_path] must be in snake_case when referring to built-in Godot properties. + [b]Note:[/b] In C#, [param property_path] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the [code]PropertyName[/code] class to avoid allocating a new [StringName] on each call. [b]Note:[/b] This method does not support actual paths to nodes in the [SceneTree], only sub-property paths. In the context of nodes, use [method Node.get_node_and_resource] instead. </description> </method> @@ -868,7 +864,7 @@ GD.Print(node.Position); // Prints (42, -10) [/csharp] [/codeblocks] - [b]Note:[/b] In C#, [param property_path] must be in snake_case when referring to built-in Godot properties. + [b]Note:[/b] In C#, [param property_path] must be in snake_case when referring to built-in Godot properties. Prefer using the names exposed in the [code]PropertyName[/code] class to avoid allocating a new [StringName] on each call. </description> </method> <method name="set_message_translation"> diff --git a/doc/classes/ParticleProcessMaterial.xml b/doc/classes/ParticleProcessMaterial.xml index d4050e3bd1..d046d52ed1 100644 --- a/doc/classes/ParticleProcessMaterial.xml +++ b/doc/classes/ParticleProcessMaterial.xml @@ -123,7 +123,8 @@ </member> <member name="collision_mode" type="int" setter="set_collision_mode" getter="get_collision_mode" enum="ParticleProcessMaterial.CollisionMode" default="0"> The particles' collision mode. - [b]Note:[/b] Particles can only collide with [GPUParticlesCollision3D] nodes, not [PhysicsBody3D] nodes. To make particles collide with various objects, you can add [GPUParticlesCollision3D] nodes as children of [PhysicsBody3D] nodes. + [b]Note:[/b] 3D Particles can only collide with [GPUParticlesCollision3D] nodes, not [PhysicsBody3D] nodes. To make particles collide with various objects, you can add [GPUParticlesCollision3D] nodes as children of [PhysicsBody3D] nodes. + [b]Note:[/b] 2D Particles can only collide with [LightOccluder2D] nodes, not [PhysicsBody2D] nodes. </member> <member name="collision_use_scale" type="bool" setter="set_collision_use_scale" getter="is_collision_using_scale" default="false"> Should collision take scale into account. diff --git a/doc/classes/Performance.xml b/doc/classes/Performance.xml index 6b7daa534e..493af8aff2 100644 --- a/doc/classes/Performance.xml +++ b/doc/classes/Performance.xml @@ -45,7 +45,7 @@ [csharp] public override void _Ready() { - var monitorValue = new Callable(this, nameof(GetMonitorValue)); + var monitorValue = new Callable(this, MethodName.GetMonitorValue); // Adds monitor with name "MyName" to category "MyCategory". Performance.AddCustomMonitor("MyCategory/MyMonitor", monitorValue); diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index ec05be368c..430f1c60fd 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -662,7 +662,8 @@ <member name="display/window/vsync/vsync_mode" type="int" setter="" getter="" default="1"> Sets the V-Sync mode for the main game window. See [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application. - Depending on the platform and used renderer, the engine will fall back to [code]Enabled[/code], if the desired mode is not supported. + Depending on the platform and used renderer, the engine will fall back to [code]Enabled[/code] if the desired mode is not supported. + [b]Note:[/b] This property is only read when the project starts. To change the V-Sync mode at runtime, call [method DisplayServer.window_set_vsync_mode] instead. </member> <member name="dotnet/project/assembly_name" type="String" setter="" getter="" default=""""> Name of the .NET assembly. This name is used as the name of the [code].csproj[/code] and [code].sln[/code] files. By default, it's set to the name of the project ([member application/config/name]) allowing to change it in the future without affecting the .NET assembly. @@ -697,10 +698,16 @@ <member name="editor/movie_writer/speaker_mode" type="int" setter="" getter="" default="0"> The speaker mode to use in the recorded audio when writing a movie. See [enum AudioServer.SpeakerMode] for possible values. </member> - <member name="editor/node_naming/name_casing" type="int" setter="" getter="" default="0"> + <member name="editor/naming/default_signal_callback_name" type="String" setter="" getter="" default=""_on_{node_name}_{signal_name}""> + The format of the default signal callback name (in the Signal Connection Dialog). The following substitutions are available: [code]{NodeName}[/code], [code]{nodeName}[/code], [code]{node_name}[/code], [code]{SignalName}[/code], [code]{signalName}[/code], and [code]{signal_name}[/code]. + </member> + <member name="editor/naming/default_signal_callback_to_self_name" type="String" setter="" getter="" default=""_on_{signal_name}""> + The format of the default signal callback name when a signal connects to the same node that emits it (in the Signal Connection Dialog). The following substitutions are available: [code]{NodeName}[/code], [code]{nodeName}[/code], [code]{node_name}[/code], [code]{SignalName}[/code], [code]{signalName}[/code], and [code]{signal_name}[/code]. + </member> + <member name="editor/naming/node_name_casing" type="int" setter="" getter="" default="0"> When creating node names automatically, set the type of casing in this project. This is mostly an editor setting. </member> - <member name="editor/node_naming/name_num_separator" type="int" setter="" getter="" default="0"> + <member name="editor/naming/node_name_num_separator" type="int" setter="" getter="" default="0"> What to use to separate node name from number. This is mostly an editor setting. </member> <member name="editor/run/main_run_args" type="String" setter="" getter="" default=""""> diff --git a/doc/classes/Projection.xml b/doc/classes/Projection.xml index 602833bca5..99e3f1725f 100644 --- a/doc/classes/Projection.xml +++ b/doc/classes/Projection.xml @@ -149,7 +149,7 @@ <param index="4" name="flip_fov" type="bool" /> <param index="5" name="eye" type="int" /> <param index="6" name="intraocular_dist" type="float" /> - <param index="7" name=" convergence_dist" type="float" /> + <param index="7" name="convergence_dist" type="float" /> <description> Creates a new [Projection] that projects positions using a perspective projection with the given Y-axis field of view (in degrees), X:Y aspect ratio, and clipping distances. The projection is adjusted for a head-mounted display with the given distance between eyes and distance to a point that can be focused on. [param eye] creates the projection for the left eye when set to 1, or the right eye when set to 2. diff --git a/doc/classes/RemoteTransform2D.xml b/doc/classes/RemoteTransform2D.xml index 20fa41a3f0..6f100541be 100644 --- a/doc/classes/RemoteTransform2D.xml +++ b/doc/classes/RemoteTransform2D.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="RemoteTransform2D" inherits="Node2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - RemoteTransform2D pushes its own [Transform2D] to another [CanvasItem] derived Node in the scene. + RemoteTransform2D pushes its own [Transform2D] to another [Node2D] derived node in the scene. </brief_description> <description> - RemoteTransform2D pushes its own [Transform2D] to another [CanvasItem] derived Node (called the remote node) in the scene. - It can be set to update another Node's position, rotation and/or scale. It can use either global or local coordinates. + RemoteTransform2D pushes its own [Transform2D] to another [Node2D] derived node (called the remote node) in the scene. + It can be set to update another node's position, rotation and/or scale. It can use either global or local coordinates. </description> <tutorials> </tutorials> diff --git a/doc/classes/Resource.xml b/doc/classes/Resource.xml index e533fc1e32..67f466ad4c 100644 --- a/doc/classes/Resource.xml +++ b/doc/classes/Resource.xml @@ -24,7 +24,8 @@ <param index="0" name="subresources" type="bool" default="false" /> <description> Duplicates this resource, returning a new resource with its [code]export[/code]ed or [constant PROPERTY_USAGE_STORAGE] properties copied from the original. - If [param subresources] is [code]false[/code], a shallow copy is returned. Nested resources within subresources are not duplicated and are shared from the original resource. This behavior can be overridden by the [constant PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE] flag. + If [param subresources] is [code]false[/code], a shallow copy is returned; nested resources within subresources are not duplicated and are shared from the original resource. If [param subresources] is [code]true[/code], a deep copy is returned; nested subresources will be duplicated and are not shared. + Subresource properties with the [constant PROPERTY_USAGE_ALWAYS_DUPLICATE] flag are always duplicated even with [param subresources] set to [code]false[/code], and properties with the [constant PROPERTY_USAGE_NEVER_DUPLICATE] flag are never duplicated even with [param subresources] set to [code]true[/code]. [b]Note:[/b] For custom resources, this method will fail if [method Object._init] has been defined with required parameters. </description> </method> diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml index 5550bf0955..8c0b16c76f 100644 --- a/doc/classes/RichTextLabel.xml +++ b/doc/classes/RichTextLabel.xml @@ -8,7 +8,7 @@ [b]Note:[/b] Assignments to [member text] clear the tag stack and reconstruct it from the property's contents. Any edits made to [member text] will erase previous edits made from other manual sources such as [method append_text] and the [code]push_*[/code] / [method pop] methods. [b]Note:[/b] RichTextLabel doesn't support entangled BBCode tags. For example, instead of using [code][b]bold[i]bold italic[/b]italic[/i][/code], use [code][b]bold[i]bold italic[/i][/b][i]italic[/i][/code]. [b]Note:[/b] [code]push_*/pop[/code] functions won't affect BBCode. - [b]Note:[/b] Unlike [Label], RichTextLabel doesn't have a [i]property[/i] to horizontally align text to the center. Instead, enable [member bbcode_enabled] and surround the text in a [code][center][/code] tag as follows: [code][center]Example[/center][/code]. There is currently no built-in way to vertically align text either, but this can be emulated by relying on anchors/containers and the [member fit_content_height] property. + [b]Note:[/b] Unlike [Label], RichTextLabel doesn't have a [i]property[/i] to horizontally align text to the center. Instead, enable [member bbcode_enabled] and surround the text in a [code][center][/code] tag as follows: [code][center]Example[/center][/code]. There is currently no built-in way to vertically align text either, but this can be emulated by relying on anchors/containers and the [member fit_content] property. </description> <tutorials> <link title="BBCode in RichTextLabel">$DOCS_URL/tutorials/ui/bbcode_in_richtextlabel.html</link> @@ -474,9 +474,8 @@ <member name="deselect_on_focus_loss_enabled" type="bool" setter="set_deselect_on_focus_loss_enabled" getter="is_deselect_on_focus_loss_enabled" default="true"> If [code]true[/code], the selected text will be deselected when focus is lost. </member> - <member name="fit_content_height" type="bool" setter="set_fit_content_height" getter="is_fit_content_height_enabled" default="false"> - If [code]true[/code], the label's height will be automatically updated to fit its content. - [b]Note:[/b] This property is used as a workaround to fix issues with [RichTextLabel] in [Container]s, but it's unreliable in some cases and will be removed in future versions. + <member name="fit_content" type="bool" setter="set_fit_content" getter="is_fit_content_enabled" default="false"> + If [code]true[/code], the label's minimum size will be automatically updated to fit its content, matching the behavior of [Label]. </member> <member name="hint_underlined" type="bool" setter="set_hint_underline" getter="is_hint_underlined" default="true"> If [code]true[/code], the label underlines hint tags such as [code][hint=description]{text}[/hint][/code]. diff --git a/doc/classes/Signal.xml b/doc/classes/Signal.xml index 3412cd2140..71905e8b2e 100644 --- a/doc/classes/Signal.xml +++ b/doc/classes/Signal.xml @@ -16,12 +16,12 @@ [/gdscript] [csharp] [Signal] - delegate void Attacked(); + delegate void AttackedEventHandler(); // Additional arguments may be declared. // These arguments must be passed when the signal is emitted. [Signal] - delegate void ItemDropped(itemName: string, amount: int); + delegate void ItemDroppedEventHandler(string itemName, int amount); [/csharp] [/codeblocks] </description> diff --git a/doc/classes/Texture2D.xml b/doc/classes/Texture2D.xml index aac197090a..7329ebb868 100644 --- a/doc/classes/Texture2D.xml +++ b/doc/classes/Texture2D.xml @@ -74,6 +74,12 @@ Called when a pixel's opaque state in the [Texture2D] is queried at the specified [code](x, y)[/code] position. </description> </method> + <method name="create_placeholder" qualifiers="const"> + <return type="Resource" /> + <description> + Creates a placeholder version of this resource ([PlaceholderTexture2D]). + </description> + </method> <method name="draw" qualifiers="const"> <return type="void" /> <param index="0" name="canvas_item" type="RID" /> diff --git a/doc/classes/Texture2DArray.xml b/doc/classes/Texture2DArray.xml index ec00198db1..6c9fb55bef 100644 --- a/doc/classes/Texture2DArray.xml +++ b/doc/classes/Texture2DArray.xml @@ -10,4 +10,12 @@ </description> <tutorials> </tutorials> + <methods> + <method name="create_placeholder" qualifiers="const"> + <return type="Resource" /> + <description> + Creates a placeholder version of this resource ([PlaceholderTexture2DArray]). + </description> + </method> + </methods> </class> diff --git a/doc/classes/Texture3D.xml b/doc/classes/Texture3D.xml index 1a66932d62..d2df82a74d 100644 --- a/doc/classes/Texture3D.xml +++ b/doc/classes/Texture3D.xml @@ -47,6 +47,12 @@ Called when the presence of mipmaps in the [Texture3D] is queried. </description> </method> + <method name="create_placeholder" qualifiers="const"> + <return type="Resource" /> + <description> + Creates a placeholder version of this resource ([PlaceholderTexture3D]). + </description> + </method> <method name="get_data" qualifiers="const"> <return type="Image[]" /> <description> diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index ff5a665bfd..cf28dafcc9 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -401,7 +401,7 @@ </signal> <signal name="item_activated"> <description> - Emitted when an item's label is double-clicked. + Emitted when an item is double-clicked, or selected with a [code]ui_accept[/code] input event (e.g. using [kbd]Enter[/kbd] or [kbd]Space[/kbd] on the keyboard). </description> </signal> <signal name="item_collapsed"> @@ -415,14 +415,14 @@ Emitted when a custom button is pressed (i.e. in a [constant TreeItem.CELL_MODE_CUSTOM] mode cell). </description> </signal> - <signal name="item_double_clicked"> + <signal name="item_edited"> <description> - Emitted when an item's icon is double-clicked. + Emitted when an item is edited. </description> </signal> - <signal name="item_edited"> + <signal name="item_icon_double_clicked"> <description> - Emitted when an item is edited. + Emitted when an item's icon is double-clicked. For a signal that emits when any part of the item is double-clicked, see [signal item_activated]. </description> </signal> <signal name="item_mouse_selected"> diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml index fc0dd9f05d..9bb92cf362 100644 --- a/doc/classes/Tween.xml +++ b/doc/classes/Tween.xml @@ -19,7 +19,7 @@ Tween tween = GetTree().CreateTween(); tween.TweenProperty(GetNode("Sprite"), "modulate", Colors.Red, 1.0f); tween.TweenProperty(GetNode("Sprite"), "scale", Vector2.Zero, 1.0f); - tween.TweenCallback(new Callable(GetNode("Sprite").QueueFree)); + tween.TweenCallback(Callable.From(GetNode("Sprite").QueueFree)); [/csharp] [/codeblocks] This sequence will make the [code]$Sprite[/code] node turn red, then shrink, before finally calling [method Node.queue_free] to free the sprite. [Tweener]s are executed one after another by default. This behavior can be changed using [method parallel] and [method set_parallel]. @@ -35,7 +35,7 @@ Tween tween = GetTree().CreateTween(); tween.TweenProperty(GetNode("Sprite"), "modulate", Colors.Red, 1.0f).SetTrans(Tween.TransitionType.Sine); tween.TweenProperty(GetNode("Sprite"), "scale", Vector2.Zero, 1.0f).SetTrans(Tween.TransitionType.Bounce); - tween.TweenCallback(new Callable(GetNode("Sprite").QueueFree)); + tween.TweenCallback(Callable.From(GetNode("Sprite").QueueFree)); [/csharp] [/codeblocks] Most of the [Tween] methods can be chained this way too. In the following example the [Tween] is bound to the running script's node and a default transition is set for its [Tweener]s: @@ -50,7 +50,7 @@ var tween = GetTree().CreateTween().BindNode(this).SetTrans(Tween.TransitionType.Elastic); tween.TweenProperty(GetNode("Sprite"), "modulate", Colors.Red, 1.0f); tween.TweenProperty(GetNode("Sprite"), "scale", Vector2.Zero, 1.0f); - tween.TweenCallback(new Callable(GetNode("Sprite").QueueFree)); + tween.TweenCallback(Callable.From(GetNode("Sprite").QueueFree)); [/csharp] [/codeblocks] Another interesting use for [Tween]s is animating arbitrary sets of objects: @@ -281,7 +281,7 @@ [/gdscript] [csharp] Tween tween = GetTree().CreateTween().SetLoops(); - tween.TweenCallback(new Callable(Shoot)).SetDelay(1.0f); + tween.TweenCallback(Callable.From(Shoot)).SetDelay(1.0f); [/csharp] [/codeblocks] [b]Example:[/b] Turning a sprite red and then blue, with 2 second delay: @@ -294,8 +294,8 @@ [csharp] Tween tween = GetTree().CreateTween(); Sprite2D sprite = GetNode<Sprite2D>("Sprite"); - tween.TweenCallback(new Callable(() => sprite.Modulate = Colors.Red)).SetDelay(2.0f); - tween.TweenCallback(new Callable(() => sprite.Modulate = Colors.Blue)).SetDelay(2.0f); + tween.TweenCallback(Callable.From(() => sprite.Modulate = Colors.Red)).SetDelay(2.0f); + tween.TweenCallback(Callable.From(() => sprite.Modulate = Colors.Blue)).SetDelay(2.0f); [/csharp] [/codeblocks] </description> @@ -332,10 +332,10 @@ [csharp] Tween tween = CreateTween().SetLoops(); tween.TweenProperty(GetNode("Sprite"), "position:x", 200.0f, 1.0f).AsRelative(); - tween.TweenCallback(new Callable(Jump)); + tween.TweenCallback(Callable.From(Jump)); tween.TweenInterval(2.0f); tween.TweenProperty(GetNode("Sprite"), "position:x", -200.0f, 1.0f).AsRelative(); - tween.TweenCallback(new Callable(Jump)); + tween.TweenCallback(Callable.From(Jump)); tween.TweenInterval(2.0f); [/csharp] [/codeblocks] @@ -357,7 +357,7 @@ [/gdscript] [csharp] Tween tween = CreateTween(); - tween.TweenMethod(new Callable(() => LookAt(Vector3.Up)), new Vector3(-1.0f, 0.0f, -1.0f), new Vector3(1.0f, 0.0f, -1.0f), 1.0f); // The LookAt() method takes up vector as second argument. + tween.TweenMethod(Callable.From(() => LookAt(Vector3.Up)), new Vector3(-1.0f, 0.0f, -1.0f), new Vector3(1.0f, 0.0f, -1.0f), 1.0f); // The LookAt() method takes up vector as second argument. [/csharp] [/codeblocks] [b]Example:[/b] Setting the text of a [Label], using an intermediate method and after a delay: @@ -376,7 +376,7 @@ base._Ready(); Tween tween = CreateTween(); - tween.TweenMethod(new Callable(SetLabelText), 0.0f, 10.0f, 1.0f).SetDelay(1.0f); + tween.TweenMethod(Callable.From<int>(SetLabelText), 0.0f, 10.0f, 1.0f).SetDelay(1.0f); } private void SetLabelText(int value) diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml index 42baf7728d..6c151ef958 100644 --- a/doc/classes/UndoRedo.xml +++ b/doc/classes/UndoRedo.xml @@ -48,10 +48,10 @@ { var node = GetNode<Node2D>("MyNode2D"); UndoRedo.CreateAction("Move the node"); - UndoRedo.AddDoMethod(this, nameof(DoSomething)); - UndoRedo.AddUndoMethod(this, nameof(UndoSomething)); - UndoRedo.AddDoProperty(node, "position", new Vector2(100, 100)); - UndoRedo.AddUndoProperty(node, "position", node.Position); + UndoRedo.AddDoMethod(this, MethodName.DoSomething); + UndoRedo.AddUndoMethod(this, MethodName.UndoSomething); + UndoRedo.AddDoProperty(node, Node2D.PropertyName.Position, new Vector2(100, 100)); + UndoRedo.AddUndoProperty(node, Node2D.PropertyName.Position, node.Position); UndoRedo.CommitAction(); } [/csharp] diff --git a/doc/classes/XRController3D.xml b/doc/classes/XRController3D.xml index 9e192177e5..0b21002893 100644 --- a/doc/classes/XRController3D.xml +++ b/doc/classes/XRController3D.xml @@ -13,11 +13,18 @@ <link title="XR documentation index">$DOCS_URL/tutorials/xr/index.html</link> </tutorials> <methods> - <method name="get_axis" qualifiers="const"> - <return type="Vector2" /> + <method name="get_float" qualifiers="const"> + <return type="float" /> <param index="0" name="name" type="StringName" /> <description> - Returns a [Vector2] for the input with the given [param name]. This is used for thumbsticks and thumbpads found on many controllers. + Returns a numeric value for the input with the given [param name]. This is used for triggers and grip sensors. + </description> + </method> + <method name="get_input" qualifiers="const"> + <return type="Variant" /> + <param index="0" name="name" type="StringName" /> + <description> + Returns a [Variant] for the input with the given [param name]. This works for any input type, the variant will be typed according to the actions configuration. </description> </method> <method name="get_tracker_hand" qualifiers="const"> @@ -26,11 +33,11 @@ Returns the hand holding this controller, if known. See [enum XRPositionalTracker.TrackerHand]. </description> </method> - <method name="get_value" qualifiers="const"> - <return type="float" /> + <method name="get_vector2" qualifiers="const"> + <return type="Vector2" /> <param index="0" name="name" type="StringName" /> <description> - Returns a numeric value for the input with the given [param name]. This is used for triggers and grip sensors. + Returns a [Vector2] for the input with the given [param name]. This is used for thumbsticks and thumbpads found on many controllers. </description> </method> <method name="is_button_pressed" qualifiers="const"> @@ -54,18 +61,18 @@ Emitted when a button on this controller is released. </description> </signal> - <signal name="input_axis_changed"> + <signal name="input_float_changed"> <param index="0" name="name" type="String" /> - <param index="1" name="value" type="Vector2" /> + <param index="1" name="value" type="float" /> <description> - Emitted when a thumbstick or thumbpad on this controller is moved. + Emitted when a trigger or similar input on this controller changes value. </description> </signal> - <signal name="input_value_changed"> + <signal name="input_vector2_changed"> <param index="0" name="name" type="String" /> - <param index="1" name="value" type="float" /> + <param index="1" name="value" type="Vector2" /> <description> - Emitted when a trigger or similar input on this controller changes value. + Emitted when a thumbstick or thumbpad on this controller is moved. </description> </signal> </signals> diff --git a/doc/classes/XRPositionalTracker.xml b/doc/classes/XRPositionalTracker.xml index db2910f25e..93e6a5497c 100644 --- a/doc/classes/XRPositionalTracker.xml +++ b/doc/classes/XRPositionalTracker.xml @@ -92,18 +92,18 @@ Emitted when a button on this tracker is released. </description> </signal> - <signal name="input_axis_changed"> + <signal name="input_float_changed"> <param index="0" name="name" type="String" /> - <param index="1" name="vector" type="Vector2" /> + <param index="1" name="value" type="float" /> <description> - Emitted when a thumbstick or thumbpad on this tracker moves. + Emitted when a trigger or similar input on this tracker changes value. </description> </signal> - <signal name="input_value_changed"> + <signal name="input_vector2_changed"> <param index="0" name="name" type="String" /> - <param index="1" name="value" type="float" /> + <param index="1" name="vector" type="Vector2" /> <description> - Emitted when a trigger or similar input on this tracker changes value. + Emitted when a thumbstick or thumbpad on this tracker moves. </description> </signal> <signal name="pose_changed"> |