diff options
Diffstat (limited to 'doc')
51 files changed, 262 insertions, 213 deletions
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index 3d22c5c6ed..74c364bad5 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -4,7 +4,7 @@ Global scope constants and variables. </brief_description> <description> - Global scope constants and variables. This is all that resides in the globals, constants regarding error codes, scancodes, property hints, etc. + Global scope constants and variables. This is all that resides in the globals, constants regarding error codes, keycodes, property hints, etc. Singletons are also documented here, since they can be accessed from anywhere. </description> <tutorials> @@ -146,7 +146,7 @@ Vertical bottom alignment, usually for text-derived classes. </constant> <constant name="SPKEY" value="16777216"> - Scancodes with this bit applied are non-printable. + Keycodes with this bit applied are non-printable. </constant> <constant name="KEY_ESCAPE" value="16777217" enum="KeyList"> Escape key. diff --git a/doc/classes/ARVRController.xml b/doc/classes/ARVRController.xml index e485bd6f1a..ebae25feb7 100644 --- a/doc/classes/ARVRController.xml +++ b/doc/classes/ARVRController.xml @@ -57,7 +57,7 @@ </description> </method> <method name="is_button_pressed" qualifiers="const"> - <return type="int"> + <return type="bool"> </return> <argument index="0" name="button" type="int"> </argument> diff --git a/doc/classes/ARVRPositionalTracker.xml b/doc/classes/ARVRPositionalTracker.xml index 9225717978..640b721d37 100644 --- a/doc/classes/ARVRPositionalTracker.xml +++ b/doc/classes/ARVRPositionalTracker.xml @@ -54,6 +54,13 @@ Returns the world-space controller position. </description> </method> + <method name="get_tracker_id" qualifiers="const"> + <return type="int"> + </return> + <description> + Returns the internal tracker ID. This uniquely identifies the tracker per tracker type and matches the ID you need to specify for nodes such as the [ARVRController] and [ARVRAnchor] nodes. + </description> + </method> <method name="get_tracks_orientation" qualifiers="const"> <return type="bool"> </return> diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml index a294967fc9..6401feb95c 100644 --- a/doc/classes/Array.xml +++ b/doc/classes/Array.xml @@ -14,6 +14,12 @@ array[2] = "Three" print(array[-2]) # Three. [/codeblock] + Arrays can be concatenated using the [code]+[/code] operator: + [codeblock] + var array1 = ["One", 2] + var array2 = [3, "Four"] + print(array1 + array2) # ["One", 2, 3, "Four"] + [/codeblock] Arrays are always passed by reference. </description> <tutorials> @@ -121,7 +127,7 @@ </return> <argument index="0" name="value" type="Variant"> </argument> - <argument index="1" name="before" type="bool" default="True"> + <argument index="1" name="before" type="bool" default="true"> </argument> <description> Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a [code]before[/code] specifier can be passed. If [code]false[/code], the returned index comes after all existing entries of the value in the array. @@ -137,7 +143,7 @@ </argument> <argument index="2" name="func" type="String"> </argument> - <argument index="3" name="before" type="bool" default="True"> + <argument index="3" name="before" type="bool" default="true"> </argument> <description> Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search and a custom comparison method. Optionally, a [code]before[/code] specifier can be passed. If [code]false[/code], the returned index comes after all existing entries of the value in the array. The custom method receives two arguments (an element from the array and the value searched for) and must return [code]true[/code] if the first argument is less than the second, and return [code]false[/code] otherwise. @@ -163,7 +169,7 @@ <method name="duplicate"> <return type="Array"> </return> - <argument index="0" name="deep" type="bool" default="False"> + <argument index="0" name="deep" type="bool" default="false"> </argument> <description> Returns a copy of the array. @@ -351,7 +357,7 @@ </argument> <argument index="2" name="step" type="int" default="1"> </argument> - <argument index="3" name="deep" type="bool" default="False"> + <argument index="3" name="deep" type="bool" default="false"> </argument> <description> Duplicates the subset described in the function and returns it in an array, deeply copying the array if [code]deep[/code] is [code]true[/code]. Lower and upper index are inclusive, with the [code]step[/code] describing the change between indices while slicing. diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml index e2b5c23c11..3952ea2d27 100644 --- a/doc/classes/Basis.xml +++ b/doc/classes/Basis.xml @@ -100,7 +100,7 @@ </return> <argument index="0" name="b" type="Basis"> </argument> - <argument index="1" name="epsilon" type="float" default="0.00001"> + <argument index="1" name="epsilon" type="float" default="1e-05"> </argument> <description> Returns [code]true[/code] if this basis and [code]b[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component. diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml index c29f089bce..9c42091eb8 100644 --- a/doc/classes/CheckBox.xml +++ b/doc/classes/CheckBox.xml @@ -4,7 +4,7 @@ Binary choice user interface widget. See also [CheckButton]. </brief_description> <description> - A checkbox allows the user to make a binary choice (choosing only one of two possible options). It's similar to [CheckButton] in functionality, but it has a different apperance. To follow established UX patterns, it's recommended to use CheckBox when toggling it has [b]no[/b] immediate effect on something. For instance, it should be used when toggling it will only do something once a confirmation button is pressed. + A checkbox allows the user to make a binary choice (choosing only one of two possible options). It's similar to [CheckButton] in functionality, but it has a different appearance. To follow established UX patterns, it's recommended to use CheckBox when toggling it has [b]no[/b] immediate effect on something. For instance, it should be used when toggling it will only do something once a confirmation button is pressed. </description> <tutorials> </tutorials> diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml index 616940a494..514ff9a691 100644 --- a/doc/classes/CheckButton.xml +++ b/doc/classes/CheckButton.xml @@ -4,7 +4,7 @@ Checkable button. See also [CheckBox]. </brief_description> <description> - CheckButton is a toggle button displayed as a check field. It's similar to [CheckBox] in functionality, but it has a different apperance. To follow established UX patterns, it's recommended to use CheckButton when toggling it has an [b]immediate[/b] effect on something. For instance, it should be used if toggling it enables/disables a setting without requiring the user to press a confirmation button. + CheckButton is a toggle button displayed as a check field. It's similar to [CheckBox] in functionality, but it has a different appearance. To follow established UX patterns, it's recommended to use CheckButton when toggling it has an [b]immediate[/b] effect on something. For instance, it should be used if toggling it enables/disables a setting without requiring the user to press a confirmation button. </description> <tutorials> </tutorials> diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml index 7335ff5a2e..8587acade3 100644 --- a/doc/classes/Color.xml +++ b/doc/classes/Color.xml @@ -119,7 +119,7 @@ </argument> <argument index="2" name="v" type="float"> </argument> - <argument index="3" name="a" type="float" default="1"> + <argument index="3" name="a" type="float" default="1.0"> </argument> <description> Constructs a color from an HSV profile. [code]h[/code], [code]s[/code], and [code]v[/code] are values between 0 and 1. @@ -224,7 +224,7 @@ <method name="to_html"> <return type="String"> </return> - <argument index="0" name="with_alpha" type="bool" default="True"> + <argument index="0" name="with_alpha" type="bool" default="true"> </argument> <description> Returns the color's HTML hexadecimal color string in ARGB format (ex: [code]ff34f822[/code]). diff --git a/doc/classes/ConcavePolygonShape.xml b/doc/classes/ConcavePolygonShape.xml index 21f2f681b9..47f2276c63 100644 --- a/doc/classes/ConcavePolygonShape.xml +++ b/doc/classes/ConcavePolygonShape.xml @@ -5,6 +5,7 @@ </brief_description> <description> Concave polygon shape resource, which can be set into a [PhysicsBody] or area. This shape is created by feeding a list of triangles. + Note: when used for collision, [ConcavePolygonShape] is intended to work with static [PhysicsBody] nodes like [StaticBody] and will not work with [KinematicBody] or [RigidBody] with a mode other than Static. </description> <tutorials> </tutorials> diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml index 00d98130f3..a16326d55a 100644 --- a/doc/classes/ConfigFile.xml +++ b/doc/classes/ConfigFile.xml @@ -37,7 +37,7 @@ <argument index="0" name="section" type="String"> </argument> <description> - Deletes the specified section along with all the key-value pairs inside. + Deletes the specified section along with all the key-value pairs inside. Raises an error if the section does not exist. </description> </method> <method name="erase_section_key"> @@ -48,6 +48,7 @@ <argument index="1" name="key" type="String"> </argument> <description> + Deletes the specified key in a section. Raises an error if either the section or the key do not exist. </description> </method> <method name="get_section_keys" qualifiers="const"> @@ -56,7 +57,7 @@ <argument index="0" name="section" type="String"> </argument> <description> - Returns an array of all defined key identifiers in the specified section. + Returns an array of all defined key identifiers in the specified section. Raises an error and returns an empty array if the section does not exist. </description> </method> <method name="get_sections" qualifiers="const"> @@ -76,7 +77,7 @@ <argument index="2" name="default" type="Variant" default="null"> </argument> <description> - Returns the current value for the specified section and key. If the section and/or the key do not exist, the method returns the value of the optional [code]default[/code] argument, or [code]null[/code] if it is omitted. + Returns the current value for the specified section and key. If either the section or the key do not exist, the method returns the fallback [code]default[/code] value. If [code]default[/code] is not specified or set to [code]null[/code], an error is also raised. </description> </method> <method name="has_section" qualifiers="const"> @@ -105,7 +106,7 @@ <argument index="0" name="path" type="String"> </argument> <description> - Loads the config file specified as a parameter. The file's contents are parsed and loaded in the ConfigFile object which the method was called on. + Loads the config file specified as a parameter. The file's contents are parsed and loaded in the [ConfigFile] object which the method was called on. Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> @@ -117,6 +118,8 @@ <argument index="1" name="key" type="PackedByteArray"> </argument> <description> + Loads the encrypted config file specified as a parameter, using the provided [code]key[/code] to decrypt it. The file's contents are parsed and loaded in the [ConfigFile] object which the method was called on. + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="load_encrypted_pass"> @@ -124,9 +127,11 @@ </return> <argument index="0" name="path" type="String"> </argument> - <argument index="1" name="pass" type="String"> + <argument index="1" name="password" type="String"> </argument> <description> + Loads the encrypted config file specified as a parameter, using the provided [code]password[/code] to decrypt it. The file's contents are parsed and loaded in the [ConfigFile] object which the method was called on. + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="parse"> @@ -145,7 +150,7 @@ <argument index="0" name="path" type="String"> </argument> <description> - Saves the contents of the ConfigFile object to the file specified as a parameter. The output file uses an INI-style structure. + Saves the contents of the [ConfigFile] object to the file specified as a parameter. The output file uses an INI-style structure. Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> @@ -157,6 +162,8 @@ <argument index="1" name="key" type="PackedByteArray"> </argument> <description> + Saves the contents of the [ConfigFile] object to the AES-256 encrypted file specified as a parameter, using the provided [code]key[/code] to encrypt it. The output file uses an INI-style structure. + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="save_encrypted_pass"> @@ -164,9 +171,11 @@ </return> <argument index="0" name="path" type="String"> </argument> - <argument index="1" name="pass" type="String"> + <argument index="1" name="password" type="String"> </argument> <description> + Saves the contents of the [ConfigFile] object to the AES-256 encrypted file specified as a parameter, using the provided [code]password[/code] to encrypt it. The output file uses an INI-style structure. + Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> <method name="set_value"> @@ -179,7 +188,7 @@ <argument index="2" name="value" type="Variant"> </argument> <description> - Assigns a value to the specified key of the specified section. If the section and/or the key do not exist, they are created. Passing a [code]null[/code] value deletes the specified key if it exists, and deletes the section if it ends up empty once the key has been removed. + Assigns a value to the specified key of the specified section. If either the section or the key do not exist, they are created. Passing a [code]null[/code] value deletes the specified key if it exists, and deletes the section if it ends up empty once the key has been removed. </description> </method> </methods> diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml index 6104cf165e..062e72388f 100644 --- a/doc/classes/Dictionary.xml +++ b/doc/classes/Dictionary.xml @@ -75,7 +75,7 @@ <method name="duplicate"> <return type="Dictionary"> </return> - <argument index="0" name="deep" type="bool" default="False"> + <argument index="0" name="deep" type="bool" default="false"> </argument> <description> Creates a copy of the dictionary, and returns it. @@ -102,7 +102,7 @@ </return> <argument index="0" name="key" type="Variant"> </argument> - <argument index="1" name="default" type="Variant" default="Null"> + <argument index="1" name="default" type="Variant" default="null"> </argument> <description> Returns the current value for the specified key in the [Dictionary]. If the key does not exist, the method returns the value of the optional default argument, or [code]null[/code] if it is omitted. diff --git a/doc/classes/Directory.xml b/doc/classes/Directory.xml index ed4257a809..cb59a69876 100644 --- a/doc/classes/Directory.xml +++ b/doc/classes/Directory.xml @@ -77,8 +77,11 @@ <method name="get_current_dir"> <return type="String"> </return> + <argument index="0" name="include_drive" type="bool" default="true"> + </argument> <description> Returns the absolute path to the currently opened directory (e.g. [code]res://folder[/code] or [code]C:\tmp\folder[/code]). + On Windows, if [code]include_drive[/code] is [code]false[/code], the leading drive specificator is omitted from the returned value (e.g. [code]\tmp\folder[/code]). </description> </method> <method name="get_current_drive"> diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml index d17fd0a661..587fd51f1e 100644 --- a/doc/classes/EditorPlugin.xml +++ b/doc/classes/EditorPlugin.xml @@ -267,15 +267,27 @@ </description> </method> <method name="get_plugin_icon" qualifiers="virtual"> - <return type="Object"> + <return type="Texture2D"> </return> <description> + Override this method in your plugin to return a [Texture2D] in order to give it an icon. + For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", and "AssetLib" buttons. + Ideally, the plugin icon should be white with a transparent background and 16x16 pixels in size. + [codeblock] + func get_plugin_icon(): + # You can use a custom icon: + return preload("res://addons/my_plugin/my_plugin_icon.svg") + # Or use a built-in icon: + return get_editor_interface().get_base_control().get_icon("Node", "EditorIcons") + [/codeblock] </description> </method> <method name="get_plugin_name" qualifiers="virtual"> <return type="String"> </return> <description> + Override this method in your plugin to provide the name of the plugin when displayed in the Godot editor. + For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", and "AssetLib" buttons. </description> </method> <method name="get_script_create_dialog"> diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml index 8cdb9c1c3f..45c153b6dc 100644 --- a/doc/classes/Engine.xml +++ b/doc/classes/Engine.xml @@ -147,10 +147,10 @@ If [code]true[/code], it is running inside the editor. Useful for tool scripts. </member> <member name="iterations_per_second" type="int" setter="set_iterations_per_second" getter="get_iterations_per_second" default="60"> - The number of fixed iterations per second (for fixed process and physics). + The number of fixed iterations per second. This controls how often physics simulation and [method Node._physics_process] methods are run. This value should generally always be set to [code]60[/code] or above, as Godot doesn't interpolate the physics step. As a result, values lower than [code]60[/code] will look stuttery. This value can be increased to make input more reactive or work around tunneling issues, but keep in mind doing so will increase CPU usage. </member> <member name="physics_jitter_fix" type="float" setter="set_physics_jitter_fix" getter="get_physics_jitter_fix" default="0.5"> - Controls how much physic ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of in-game clock and real clock, but allows to smooth out framerate jitters. The default value of 0.5 should be fine for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended. + Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of in-game clock and real clock, but allows to smooth out framerate jitters. The default value of 0.5 should be fine for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended. </member> <member name="target_fps" type="int" setter="set_target_fps" getter="get_target_fps" default="0"> The desired frames per second. If the hardware cannot keep up, this setting may not be respected. A value of 0 means no limit. diff --git a/doc/classes/Geometry.xml b/doc/classes/Geometry.xml index b2d77f6f92..4d6f7b60a3 100644 --- a/doc/classes/Geometry.xml +++ b/doc/classes/Geometry.xml @@ -70,7 +70,7 @@ </argument> <description> Clips [code]polygon_a[/code] against [code]polygon_b[/code] and returns an array of clipped polygons. This performs [constant OPERATION_DIFFERENCE] between polygons. Returns an empty array if [code]polygon_b[/code] completely overlaps [code]polygon_a[/code]. - If [code]polygon_b[/code] is enclosed by [code]polygon_a[/code], returns an outer polygon (boundary) and inner polygon (hole) which could be distiguished by calling [method is_polygon_clockwise]. + If [code]polygon_b[/code] is enclosed by [code]polygon_a[/code], returns an outer polygon (boundary) and inner polygon (hole) which could be distinguished by calling [method is_polygon_clockwise]. </description> </method> <method name="clip_polyline_with_polygon_2d"> @@ -102,7 +102,7 @@ </argument> <description> Mutually excludes common area defined by intersection of [code]polygon_a[/code] and [code]polygon_b[/code] (see [method intersect_polygons_2d]) and returns an array of excluded polygons. This performs [constant OPERATION_XOR] between polygons. In other words, returns all but common area between polygons. - The operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distiguished by calling [method is_polygon_clockwise]. + The operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise]. </description> </method> <method name="get_closest_point_to_segment"> diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index c6de27a775..0f212e7498 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -250,10 +250,10 @@ <method name="is_key_pressed" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="scancode" type="int"> + <argument index="0" name="keycode" type="int"> </argument> <description> - Returns [code]true[/code] if you are pressing the key. You can pass a [enum KeyList] constant. + Returns [code]true[/code] if you are pressing the key in the current keyboard layout. You can pass a [enum KeyList] constant. </description> </method> <method name="is_mouse_button_pressed" qualifiers="const"> @@ -349,7 +349,8 @@ <argument index="0" name="enable" type="bool"> </argument> <description> - Whether to accumulate similar input events sent by the operating system. Enabled by default. + Enables or disables the accumulation of similar input events sent by the operating system. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS. + Input accumulation is enabled by default. It can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage. In applications where drawing freehand lines is required, input accumulation should generally be disabled while the user is drawing the line to get results that closely follow the actual input. </description> </method> <method name="start_joy_vibration"> diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml index 637f697f01..c8d0769b90 100644 --- a/doc/classes/InputEventKey.xml +++ b/doc/classes/InputEventKey.xml @@ -10,12 +10,20 @@ <link>https://docs.godotengine.org/en/latest/tutorials/inputs/inputevent.html</link> </tutorials> <methods> - <method name="get_scancode_with_modifiers" qualifiers="const"> + <method name="get_keycode_with_modifiers" qualifiers="const"> <return type="int"> </return> <description> - Returns the scancode combined with modifier keys such as [code]Shift[/code] or [code]Alt[/code]. See also [InputEventWithModifiers]. - To get a human-readable representation of the [InputEventKey] with modifiers, use [code]OS.get_scancode_string(event.get_scancode_with_modifiers())[/code] where [code]event[/code] is the [InputEventKey]. + Returns the keycode combined with modifier keys such as [code]Shift[/code] or [code]Alt[/code]. 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> + <method name="get_physical_keycode_with_modifiers" qualifiers="const"> + <return type="int"> + </return> + <description> + Returns the physical keycode combined with modifier keys such as [code]Shift[/code] or [code]Alt[/code]. See also [InputEventWithModifiers]. + To get a human-readable representation of the [InputEventKey] with modifiers, use [code]OS.get_keycode_string(event.get_physical_keycode_with_modifiers())[/code] where [code]event[/code] is the [InputEventKey]. </description> </method> </methods> @@ -23,13 +31,17 @@ <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="keycode" type="int" setter="set_keycode" getter="get_keycode" default="0"> + The key keycode, which corresponds to one of the [enum KeyList] constants. Represent key in the current keyboard layout. + 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="physical_keycode" type="int" setter="set_physical_keycode" getter="get_physical_keycode" default="0"> + Key physical keycode, which corresponds to one of the [enum KeyList] constants. Represent the physical location of a key on the 101/102-key US QWERTY keyboard. + 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="scancode" type="int" setter="set_scancode" getter="get_scancode" default="0"> - The key scancode, which corresponds to one of the [enum KeyList] constants. - To get a human-readable representation of the [InputEventKey], use [code]OS.get_scancode_string(event.scancode)[/code] where [code]event[/code] is the [InputEventKey]. - </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 OS.set_ime_active] for more information. </member> diff --git a/doc/classes/KinematicBody.xml b/doc/classes/KinematicBody.xml index 2cf49f417c..4ccbc679bf 100644 --- a/doc/classes/KinematicBody.xml +++ b/doc/classes/KinematicBody.xml @@ -105,7 +105,8 @@ </argument> <description> Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [KinematicBody] or [RigidBody], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes. - [code]linear_velocity[/code] is the velocity vector (typically meters per second). Unlike in [method move_and_collide], you should [i]not[/i] multiply it by [code]delta[/code] — the physics engine handles applying the velocity. + This method should be used in [method Node._physics_process] (or in a method called by [method Node._physics_process]), as it uses the physics step's [code]delta[/code] value automatically in calculations. Otherwise, the simulation will run at an incorrect speed. + [code]linear_velocity[/code] is the velocity vector (typically meters per second). Unlike in [method move_and_collide], you should [i]not[/i] multiply it by [code]delta[/code] — the physics engine handles applying the velocity. [code]up_direction[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector3(0, 0, 0)[/code], everything is considered a wall. If [code]stop_on_slope[/code] is [code]true[/code], body will not slide on slopes if you include gravity in [code]linear_velocity[/code]. If the body collides, it will change direction a maximum of [code]max_slides[/code] times before it stops. diff --git a/doc/classes/KinematicBody2D.xml b/doc/classes/KinematicBody2D.xml index 58d7b1f831..6b2bbeb895 100644 --- a/doc/classes/KinematicBody2D.xml +++ b/doc/classes/KinematicBody2D.xml @@ -103,7 +103,8 @@ </argument> <description> Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [KinematicBody2D] or [RigidBody2D], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes. - [code]linear_velocity[/code] is the velocity vector in pixels per second. Unlike in [method move_and_collide], you should [i]not[/i] multiply it by [code]delta[/code] — the physics engine handles applying the velocity. + This method should be used in [method Node._physics_process] (or in a method called by [method Node._physics_process]), as it uses the physics step's [code]delta[/code] value automatically in calculations. Otherwise, the simulation will run at an incorrect speed. + [code]linear_velocity[/code] is the velocity vector in pixels per second. Unlike in [method move_and_collide], you should [i]not[/i] multiply it by [code]delta[/code] — the physics engine handles applying the velocity. [code]up_direction[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector2(0, 0)[/code], everything is considered a wall. This is useful for topdown games. If [code]stop_on_slope[/code] is [code]true[/code], body will not slide on slopes when you include gravity in [code]linear_velocity[/code] and the body is standing still. If the body collides, it will change direction a maximum of [code]max_slides[/code] times before it stops. diff --git a/doc/classes/MainLoop.xml b/doc/classes/MainLoop.xml index b12d4d9978..af71c30936 100644 --- a/doc/classes/MainLoop.xml +++ b/doc/classes/MainLoop.xml @@ -26,9 +26,9 @@ func _input_event(event): # Record keys. if event is InputEventKey and event.pressed and !event.echo: - keys_typed.append(OS.get_scancode_string(event.scancode)) + keys_typed.append(OS.get_keycode_string(event.keycode)) # Quit on Escape press. - if event.scancode == KEY_ESCAPE: + if event.keycode == KEY_ESCAPE: quit = true # Quit on any mouse click. if event is InputEventMouseButton: diff --git a/doc/classes/MeshLibrary.xml b/doc/classes/MeshLibrary.xml index e8431e64f4..a96f6d7231 100644 --- a/doc/classes/MeshLibrary.xml +++ b/doc/classes/MeshLibrary.xml @@ -84,8 +84,7 @@ <argument index="0" name="id" type="int"> </argument> <description> - Returns a generated item preview (a 3D rendering in isometric perspective). - [b]Note:[/b] Since item previews are only generated in an editor context, this function will return an empty [Texture2D] in a running project. + When running in the editor, returns a generated item preview (a 3D rendering in isometric perspective). When used in a running project, returns the manually-defined item preview which can be set using [method set_item_preview]. Returns an empty [Texture2D] if no preview was manually set in a running project. </description> </method> <method name="get_item_shapes" qualifiers="const"> diff --git a/doc/classes/Navigation.xml b/doc/classes/Navigation.xml index 0000ca6bd5..93170bca4a 100644 --- a/doc/classes/Navigation.xml +++ b/doc/classes/Navigation.xml @@ -4,7 +4,7 @@ Mesh-based navigation and pathfinding node. </brief_description> <description> - Provides navigation and pathfinding within a collection of [NavigationMesh]es. These will be automatically collected from child [NavigationMeshInstance] nodes. In addition to basic pathfinding, this class also assists with aligning navigation agents with the meshes they are navigating on. + Provides navigation and pathfinding within a collection of [NavigationMesh]es. These will be automatically collected from child [NavigationRegion] nodes. In addition to basic pathfinding, this class also assists with aligning navigation agents with the meshes they are navigating on. </description> <tutorials> </tutorials> diff --git a/doc/classes/Navigation2D.xml b/doc/classes/Navigation2D.xml index 0d016a3210..dcbfbc2350 100644 --- a/doc/classes/Navigation2D.xml +++ b/doc/classes/Navigation2D.xml @@ -4,7 +4,7 @@ 2D navigation and pathfinding node. </brief_description> <description> - Navigation2D provides navigation and pathfinding within a 2D area, specified as a collection of [NavigationPolygon] resources. These are automatically collected from child [NavigationPolygonInstance] nodes. + Navigation2D provides navigation and pathfinding within a 2D area, specified as a collection of [NavigationPolygon] resources. These are automatically collected from child [NavigationRegion2D] nodes. </description> <tutorials> </tutorials> diff --git a/doc/classes/NavigationAgent.xml b/doc/classes/NavigationAgent.xml index f896bf6d15..c6c9abec13 100644 --- a/doc/classes/NavigationAgent.xml +++ b/doc/classes/NavigationAgent.xml @@ -124,7 +124,7 @@ The distance to search for other agents. </member> <member name="path_max_distance" type="float" setter="set_path_max_distance" getter="get_path_max_distance" default="3.0"> - The maximum distance the agent is allowed away from the ideal path to the final location. This can happen due to trying to avoid collisions. When the maximum distance is exceded, it recalculates the ideal path. + The maximum distance the agent is allowed away from the ideal path to the final location. This can happen due to trying to avoid collisions. When the maximum distance is exceeded, it recalculates the ideal path. </member> <member name="radius" type="float" setter="set_radius" getter="get_radius" default="1.0"> The radius of the agent. diff --git a/doc/classes/NavigationAgent2D.xml b/doc/classes/NavigationAgent2D.xml index 116db76cc5..5a9c31ef67 100644 --- a/doc/classes/NavigationAgent2D.xml +++ b/doc/classes/NavigationAgent2D.xml @@ -118,7 +118,7 @@ The distance to search for other agents. </member> <member name="path_max_distance" type="float" setter="set_path_max_distance" getter="get_path_max_distance" default="3.0"> - The maximum distance the agent is allowed away from the ideal path to the final location. This can happen due to trying to avoid collisions. When the maximum distance is exceded, it recalculates the ideal path. + The maximum distance the agent is allowed away from the ideal path to the final location. This can happen due to trying to avoid collisions. When the maximum distance is exceeded, it recalculates the ideal path. </member> <member name="radius" type="float" setter="set_radius" getter="get_radius" default="10.0"> The radius of the agent. diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml index da291b7337..b0f77dff83 100644 --- a/doc/classes/NavigationPolygon.xml +++ b/doc/classes/NavigationPolygon.xml @@ -11,7 +11,7 @@ var outline = PackedVector2Array([Vector2(0, 0), Vector2(0, 50), Vector2(50, 50), Vector2(50, 0)]) polygon.add_outline(outline) polygon.make_polygons_from_outlines() - $NavigationPolygonInstance.navpoly = polygon + $NavigationRegion2D.navpoly = polygon [/codeblock] Using [method add_polygon] and indices of the vertices array. [codeblock] @@ -20,7 +20,7 @@ polygon.set_vertices(vertices) var indices = PackedInt32Array(0, 3, 1) polygon.add_polygon(indices) - $NavigationPolygonInstance.navpoly = polygon + $NavigationRegion2D.navpoly = polygon [/codeblock] </description> <tutorials> diff --git a/doc/classes/NavigationMeshInstance.xml b/doc/classes/NavigationRegion.xml index 75bd62e278..a32ded2878 100644 --- a/doc/classes/NavigationMeshInstance.xml +++ b/doc/classes/NavigationRegion.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NavigationMeshInstance" inherits="Spatial" version="4.0"> +<class name="NavigationRegion" inherits="Spatial" version="4.0"> <brief_description> - An instance of a [NavigationMesh]. + A region of the navigation map. </brief_description> <description> - An instance of a [NavigationMesh]. It tells the [Navigation] node what can be navigated and what cannot, based on the [NavigationMesh] resource. This should be a child of a [Navigation] node. + A region of the navigation map. It tells the [Navigation] node what can be navigated and what cannot, based on the [NavigationMesh] resource. This should be a child of a [Navigation] node (even not a direct child). </description> <tutorials> </tutorials> @@ -13,13 +13,13 @@ <return type="void"> </return> <description> - Bakes the [NavigationMesh]. The baking is done in a seperate thread because navigation baking is not a cheap operation. This can be done at runtime. When it is completed, it automatically sets the new [NavigationMesh]. + Bakes the [NavigationMesh]. The baking is done in a separate thread because navigation baking is not a cheap operation. This can be done at runtime. When it is completed, it automatically sets the new [NavigationMesh]. </description> </method> </methods> <members> <member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true"> - Determines if the [NavigationMeshInstance] is enabled or disabled. + Determines if the [NavigationRegion] is enabled or disabled. </member> <member name="navmesh" type="NavigationMesh" setter="set_navigation_mesh" getter="get_navigation_mesh"> The [NavigationMesh] resource to use. diff --git a/doc/classes/NavigationPolygonInstance.xml b/doc/classes/NavigationRegion2D.xml index 34c6b09859..aef114e1db 100644 --- a/doc/classes/NavigationPolygonInstance.xml +++ b/doc/classes/NavigationRegion2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="NavigationPolygonInstance" inherits="Node2D" version="4.0"> +<class name="NavigationRegion2D" inherits="Node2D" version="4.0"> <brief_description> </brief_description> <description> diff --git a/doc/classes/NavigationServer.xml b/doc/classes/NavigationServer.xml index 1f65a6004e..1b534b8458 100644 --- a/doc/classes/NavigationServer.xml +++ b/doc/classes/NavigationServer.xml @@ -298,6 +298,17 @@ Sets the map up direction. </description> </method> + <method name="process"> + <return type="void"> + </return> + <argument index="0" name="delta_time" type="float"> + </argument> + <description> + Process the collision avoidance agents. + The result of this process is needed by the physics server, so this must be called in the main thread. + Note: This function is not thread safe. + </description> + </method> <method name="region_bake_navmesh" qualifiers="const"> <return type="void"> </return> @@ -358,17 +369,6 @@ Control activation of this server. </description> </method> - <method name="process"> - <return type="void"> - </return> - <argument index="0" name="delta_time" type="float"> - </argument> - <description> - Process the collision avoidance agents. - The result of this process is needed by the physics server, so this must be called in the main thread. - Note: This function is not thread safe. - </description> - </method> </methods> <constants> </constants> diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index 3ddc3af200..717130728d 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -129,21 +129,23 @@ child_node.get_parent().remove_child(child_node) add_child(child_node) [/codeblock] + If you need the child node to be added below a specific node in the list of children, use [method add_child_below_node] instead of this method. [b]Note:[/b] If you want a child to be persisted to a [PackedScene], you must set [member owner] in addition to calling [method add_child]. This is typically relevant for [url=https://godot.readthedocs.io/en/latest/tutorials/misc/running_code_in_the_editor.html]tool scripts[/url] and [url=https://godot.readthedocs.io/en/latest/tutorials/plugins/editor/index.html]editor plugins[/url]. If [method add_child] is called without setting [member owner], the newly added [Node] will not be visible in the scene tree, though it will be visible in the 2D/3D view. </description> </method> <method name="add_child_below_node"> <return type="void"> </return> - <argument index="0" name="node" type="Node"> + <argument index="0" name="preceding_node" type="Node"> </argument> - <argument index="1" name="child_node" type="Node"> + <argument index="1" name="node" type="Node"> </argument> <argument index="2" name="legible_unique_name" type="bool" default="false"> </argument> <description> - Adds a child node. The child is placed below the given node in the list of children. + Adds a child node below the [code]preceding_node[/code]. If [code]legible_unique_name[/code] is [code]true[/code], the child node will have an human-readable name based on the name of the node being instanced instead of its type. + Use [method add_child] instead of this method if you don't need the child node to be added below a specific node in the list of children. </description> </method> <method name="add_to_group"> @@ -326,7 +328,7 @@ <return type="float"> </return> <description> - Returns the time elapsed since the last physics-bound frame (see [method _physics_process]). This is always a constant value in physics processing unless the frames per second is changed via [member Engine.target_fps]. + Returns the time elapsed since the last physics-bound frame (see [method _physics_process]). This is always a constant value in physics processing unless the frames per second is changed via [member Engine.iterations_per_second]. </description> </method> <method name="get_position_in_parent" qualifiers="const"> @@ -745,7 +747,7 @@ <argument index="0" name="enable" type="bool"> </argument> <description> - Enables or disables physics (i.e. fixed framerate) processing. When a node is being processed, it will receive a [constant NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine.target_fps] to change) interval (and the [method _physics_process] callback will be called if exists). Enabled automatically if [method _physics_process] is overridden. Any calls to this before [method _ready] will be ignored. + Enables or disables physics (i.e. fixed framerate) processing. When a node is being processed, it will receive a [constant NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine.iterations_per_second] to change) interval (and the [method _physics_process] callback will be called if exists). Enabled automatically if [method _physics_process] is overridden. Any calls to this before [method _ready] will be ignored. </description> </method> <method name="set_physics_process_internal"> diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 6ce2d4bcbb..d43c395433 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -124,13 +124,13 @@ [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows. </description> </method> - <method name="find_scancode_from_string" qualifiers="const"> + <method name="find_keycode_from_string" qualifiers="const"> <return type="int"> </return> <argument index="0" name="string" type="String"> </argument> <description> - Returns the scancode of the given string (e.g. "Escape"). + Returns the keycode of the given string (e.g. "Escape"). </description> </method> <method name="get_audio_driver_count" qualifiers="const"> @@ -242,6 +242,16 @@ [b]Note:[/b] This method is implemented on macOS. </description> </method> + <method name="get_keycode_string" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="code" type="int"> + </argument> + <description> + Returns the given keycode as a string (e.g. Return values: [code]"Escape"[/code], [code]"Shift+Escape"[/code]). + See also [member InputEventKey.keycode] and [method InputEventKey.get_keycode_with_modifiers]. + </description> + </method> <method name="get_latin_keyboard_variant" qualifiers="const"> <return type="String"> </return> @@ -295,16 +305,6 @@ Returns the window size including decorations like window borders. </description> </method> - <method name="get_scancode_string" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="code" type="int"> - </argument> - <description> - Returns the given scancode as a string (e.g. Return values: [code]"Escape"[/code], [code]"Shift+Escape"[/code]). - See also [member InputEventKey.scancode] and [method InputEventKey.get_scancode_with_modifiers]. - </description> - </method> <method name="get_screen_count" qualifiers="const"> <return type="int"> </return> @@ -588,20 +588,20 @@ To check whether the Godot binary used to run the project is an export template (debug or release), use [code]OS.has_feature("standalone")[/code] instead. </description> </method> - <method name="is_ok_left_and_cancel_right" qualifiers="const"> + <method name="is_keycode_unicode" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="code" type="int"> + </argument> <description> - Returns [code]true[/code] if the [b]OK[/b] button should appear on the left and [b]Cancel[/b] on the right. + Returns [code]true[/code] if the input keycode corresponds to a Unicode character. </description> </method> - <method name="is_scancode_unicode" qualifiers="const"> + <method name="is_ok_left_and_cancel_right" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="code" type="int"> - </argument> <description> - Returns [code]true[/code] if the input scancode corresponds to a Unicode character. + Returns [code]true[/code] if the [b]OK[/b] button should appear on the left and [b]Cancel[/b] on the right. </description> </method> <method name="is_stdout_verbose" qualifiers="const"> diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml index aa5599a3fb..668655b725 100644 --- a/doc/classes/PacketPeerUDP.xml +++ b/doc/classes/PacketPeerUDP.xml @@ -25,7 +25,7 @@ </argument> <description> Calling this method connects this UDP peer to the given [code]host[/code]/[code]port[/code] pair. UDP is in reality connectionless, so this option only means that incoming packets from different addresses are automatically discarded, and that outgoing packets are always sent to the connected address (future calls to [method set_dest_address] are not allowed). This method does not send any data to the remote peer, to do that, use [method PacketPeer.put_var] or [method PacketPeer.put_packet] as usual. See also [UDPServer]. - Note: Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like SSL or DTLS if you feel like your application is transfering sensitive information. + Note: Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like SSL or DTLS if you feel like your application is transferring sensitive information. </description> </method> <method name="get_packet_ip" qualifiers="const"> diff --git a/doc/classes/PhysicsServer.xml b/doc/classes/PhysicsServer.xml index 592d3d8e4e..1b9ce80a1b 100644 --- a/doc/classes/PhysicsServer.xml +++ b/doc/classes/PhysicsServer.xml @@ -1388,7 +1388,7 @@ </constant> <constant name="CONE_TWIST_JOINT_SWING_SPAN" value="0" enum="ConeTwistJointParam"> Swing is rotation from side to side, around the axis perpendicular to the twist axis. - The swing span defines, how much rotation will not get corrected allong the swing axis. + The swing span defines, how much rotation will not get corrected along the swing axis. Could be defined as looseness in the [ConeTwistJoint]. If below 0.05, this behavior is locked. </constant> @@ -1467,7 +1467,7 @@ If [code]set[/code] there is a linear motor on this axis that targets a specific velocity. </constant> <constant name="SHAPE_PLANE" value="0" enum="ShapeType"> - The [Shape] is a [PlaneShape]. + The [Shape] is a [WorldMarginShape]. </constant> <constant name="SHAPE_RAY" value="1" enum="ShapeType"> The [Shape] is a [RayShape]. diff --git a/doc/classes/Plane.xml b/doc/classes/Plane.xml index 8f0043fb86..292acd8b5d 100644 --- a/doc/classes/Plane.xml +++ b/doc/classes/Plane.xml @@ -77,7 +77,7 @@ </return> <argument index="0" name="point" type="Vector3"> </argument> - <argument index="1" name="epsilon" type="float" default="0.00001"> + <argument index="1" name="epsilon" type="float" default="1e-05"> </argument> <description> Returns [code]true[/code] if [code]point[/code] is inside the plane (by a very minimum [code]epsilon[/code] threshold). diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 236931f877..af594c36d1 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -179,9 +179,6 @@ </method> </methods> <members> - <member name="android/modules" type="String" setter="" getter="" default=""""> - Comma-separated list of custom Android modules (which must have been built in the Android export templates) using their Java package path, e.g. [code]org/godotengine/org/GodotPaymentV3,org/godotengine/godot/MyCustomSingleton"[/code]. - </member> <member name="application/boot_splash/bg_color" type="Color" setter="" getter="" default="Color( 0.14, 0.14, 0.14, 1 )"> Background color for the boot splash. </member> @@ -827,17 +824,17 @@ </member> <member name="mono/unhandled_exception_policy" type="int" setter="" getter="" default="0"> </member> - <member name="network/limits/debugger_stdout/max_chars_per_second" type="int" setter="" getter="" default="2048"> + <member name="network/limits/debugger/max_chars_per_second" type="int" setter="" getter="" default="2048"> Maximum amount of characters allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> - <member name="network/limits/debugger_stdout/max_errors_per_second" type="int" setter="" getter="" default="100"> - Maximum number of errors allowed to be sent as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. + <member name="network/limits/debugger/max_errors_per_second" type="int" setter="" getter="" default="100"> + Maximum number of errors allowed to be sent from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> - <member name="network/limits/debugger_stdout/max_messages_per_frame" type="int" setter="" getter="" default="10"> - Maximum amount of messages allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. + <member name="network/limits/debugger/max_queued_messages" type="int" setter="" getter="" default="10"> + Maximum amount of messages in the debugger queue. Over this value, content is dropped. This helps to limit the debugger memory usage. </member> - <member name="network/limits/debugger_stdout/max_warnings_per_second" type="int" setter="" getter="" default="100"> - Maximum number of warnings allowed to be sent as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. + <member name="network/limits/debugger/max_warnings_per_second" type="int" setter="" getter="" default="100"> + Maximum number of warnings allowed to be sent from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> <member name="network/limits/packet_peer_stream/max_buffer_po2" type="int" setter="" getter="" default="16"> Default size of packet peer stream for deserializing Godot data. Over this size, data is dropped. @@ -968,10 +965,12 @@ Enables [member Viewport.physics_object_picking] on the root viewport. </member> <member name="physics/common/physics_fps" type="int" setter="" getter="" default="60"> - Frames per second used in the physics. Physics always needs a fixed amount of frames per second. + The number of fixed iterations per second. This controls how often physics simulation and [method Node._physics_process] methods are run. + [b]Note:[/b] This property is only read when the project starts. To change the physics FPS at runtime, set [member Engine.iterations_per_second] instead. </member> <member name="physics/common/physics_jitter_fix" type="float" setter="" getter="" default="0.5"> Fix to improve physics jitter, specially on monitors where refresh rate is different than the physics FPS. + [b]Note:[/b] This property is only read when the project starts. To change the physics FPS at runtime, set [member Engine.physics_jitter_fix] instead. </member> <member name="rendering/environment/default_clear_color" type="Color" setter="" getter="" default="Color( 0.3, 0.3, 0.3, 1 )"> Default background clear color. Overridable per [Viewport] using its [Environment]. See [member Environment.background_mode] and [member Environment.background_color] in particular. To change this default color programmatically, use [method VisualServer.set_default_clear_color]. @@ -1035,23 +1034,28 @@ Lower-end override for [member rendering/quality/intended_usage/framebuffer_allocation] on mobile devices, due to performance concerns or driver support. </member> <member name="rendering/quality/reflection_atlas/reflection_count" type="int" setter="" getter="" default="64"> + Number of cubemaps to store in the reflection atlas. The number of [ReflectionProbe]s in a scene will be limited by this amount. A higher number requires more VRAM. </member> - <member name="rendering/quality/reflection_atlas/reflection_size" type="int" setter="" getter="" default="256"> + <member name="rendering/quality/reflection_atlas/reflection_size" type="int" setter="" getter="" default="128"> + Size of cubemap faces for [ReflectionProbe]s. A higher number requires more VRAM and may make reflection probe updating slower. </member> <member name="rendering/quality/reflection_atlas/reflection_size.mobile" type="int" setter="" getter="" default="128"> + Lower-end override for [member rendering/quality/reflection_atlas/reflection_size] on mobile devices, due to performance concerns or driver support. + </member> + <member name="rendering/quality/reflections/fast_filter_high_quality" type="bool" setter="" getter="" default="false"> + Use a higher quality variant of the fast filtering algorithm. Significantly slower than using default quality, but results in smoother reflections. Should only be used when the scene is especially detailed. </member> <member name="rendering/quality/reflections/ggx_samples" type="int" setter="" getter="" default="1024"> + Sets the number of samples to take when using importance sampling for [Sky]s and [ReflectionProbe]s. A higher value will result in smoother, higher quality reflections, but increases time to calculate radiance maps. In general, fewer samples are needed for simpler, low dynamic range environments while more samples are needed for HDR environments and environments with a high level of detail. </member> <member name="rendering/quality/reflections/ggx_samples.mobile" type="int" setter="" getter="" default="128"> - </member> - <member name="rendering/quality/reflections/ggx_samples_realtime" type="int" setter="" getter="" default="64"> - </member> - <member name="rendering/quality/reflections/ggx_samples_realtime.mobile" type="int" setter="" getter="" default="16"> + Lower-end override for [member rendering/quality/reflections/ggx_samples] on mobile devices, due to performance concerns or driver support. </member> <member name="rendering/quality/reflections/roughness_layers" type="int" setter="" getter="" default="6"> + Limits the number of layers to use in radiance maps when using importance sampling. A lower number will be slightly faster and take up less VRAM. </member> <member name="rendering/quality/reflections/texture_array_reflections" type="bool" setter="" getter="" default="true"> - If [code]true[/code], uses texture arrays instead of mipmaps for reflection probes and panorama backgrounds (sky). This reduces jitter noise on reflections, but costs more performance and memory. + If [code]true[/code], uses texture arrays instead of mipmaps for reflection probes and panorama backgrounds (sky). This reduces jitter noise and upscaling artifacts on reflections, but is significantly slower to compute and uses [member rendering/quality/reflections/roughness_layers] times more memory. </member> <member name="rendering/quality/reflections/texture_array_reflections.mobile" type="bool" setter="" getter="" default="false"> Lower-end override for [member rendering/quality/reflections/texture_array_reflections] on mobile devices, due to performance concerns or driver support. diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml index 26abfb538b..dbf461cdf1 100644 --- a/doc/classes/Rect2.xml +++ b/doc/classes/Rect2.xml @@ -143,8 +143,11 @@ </return> <argument index="0" name="b" type="Rect2"> </argument> + <argument index="1" name="include_borders" type="bool" default="false"> + </argument> <description> - Returns [code]true[/code] if the [Rect2] overlaps with another. + Returns [code]true[/code] if the [Rect2] overlaps with [code]b[/code] (i.e. they have at least one point in common). + If [code]include_borders[/code] is [code]true[/code], they will also be considered overlapping if their borders touch, even without intersection. </description> </method> <method name="is_equal_approx"> diff --git a/doc/classes/ReflectionProbe.xml b/doc/classes/ReflectionProbe.xml index 9c7a645fec..e138af6841 100644 --- a/doc/classes/ReflectionProbe.xml +++ b/doc/classes/ReflectionProbe.xml @@ -4,7 +4,7 @@ Captures its surroundings to create reflections. </brief_description> <description> - Capture its surroundings as a dual parabolid image, and stores versions of it with increasing levels of blur to simulate different material roughnesses. + Captures its surroundings as a cubemap, and stores versions of it with increasing levels of blur to simulate different material roughnesses. The [ReflectionProbe] is used to create high-quality reflections at the cost of performance. It can be combined with [GIProbe]s and Screen Space Reflections to achieve high quality reflections. [ReflectionProbe]s render all objects within their [member cull_mask], so updating them can be quite expensive. It is best to update them once with the important static objects and then leave them. </description> <tutorials> @@ -52,7 +52,7 @@ </members> <constants> <constant name="UPDATE_ONCE" value="0" enum="UpdateMode"> - Update the probe once on the next frame. + Update the probe once on the next frame. The corresponding radiance map will be generated over the following six frames. This is slower to update than [constant UPDATE_ALWAYS] but can result in higher quality reflections. </constant> <constant name="UPDATE_ALWAYS" value="1" enum="UpdateMode"> Update the probe every frame. This is needed when you want to capture dynamic objects. However, it results in an increased render time. Use [constant UPDATE_ONCE] whenever possible. diff --git a/doc/classes/ResourceInteractiveLoader.xml b/doc/classes/ResourceInteractiveLoader.xml deleted file mode 100644 index 64e94c4f2d..0000000000 --- a/doc/classes/ResourceInteractiveLoader.xml +++ /dev/null @@ -1,55 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="ResourceInteractiveLoader" inherits="Reference" version="4.0"> - <brief_description> - Interactive [Resource] loader. - </brief_description> - <description> - Interactive [Resource] loader. This object is returned by [ResourceLoader] when performing an interactive load. It allows loading resources with high granularity, which makes it mainly useful for displaying loading bars or percentages. - </description> - <tutorials> - </tutorials> - <methods> - <method name="get_resource"> - <return type="Resource"> - </return> - <description> - Returns the loaded resource if the load operation completed successfully, [code]null[/code] otherwise. - </description> - </method> - <method name="get_stage" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the load stage. The total amount of stages can be queried with [method get_stage_count]. - </description> - </method> - <method name="get_stage_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the total amount of stages (calls to [method poll]) needed to completely load this resource. - </description> - </method> - <method name="poll"> - <return type="int" enum="Error"> - </return> - <description> - Polls the loading operation, i.e. loads a data chunk up to the next stage. - Returns [constant OK] if the poll is successful but the load operation has not finished yet (intermediate stage). This means [method poll] will have to be called again until the last stage is completed. - Returns [constant ERR_FILE_EOF] if the load operation has completed successfully. The loaded resource can be obtained by calling [method get_resource]. - Returns another [enum Error] code if the poll has failed. - </description> - </method> - <method name="wait"> - <return type="int" enum="Error"> - </return> - <description> - Polls the loading operation successively until the resource is completely loaded or a [method poll] fails. - Returns [constant ERR_FILE_EOF] if the load operation has completed successfully. The loaded resource can be obtained by calling [method get_resource]. - Returns another [enum Error] code if a poll has failed, aborting the operation. - </description> - </method> - </methods> - <constants> - </constants> -</class> diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml index d2a0ac22d6..533bc9ec28 100644 --- a/doc/classes/ResourceLoader.xml +++ b/doc/classes/ResourceLoader.xml @@ -48,7 +48,7 @@ </argument> <description> Returns whether a cached resource is available for the given [code]path[/code]. - Once a resource has been loaded by the engine, it is cached in memory for faster access, and future calls to the [method load] or [method load_interactive] methods will use the cached version. The cached resource can be overridden by using [method Resource.take_over_path] on a new resource for that same path. + Once a resource has been loaded by the engine, it is cached in memory for faster access, and future calls to the [method load] method will use the cached version. The cached resource can be overridden by using [method Resource.take_over_path] on a new resource for that same path. </description> </method> <method name="load"> @@ -68,16 +68,34 @@ Returns an empty resource if no ResourceFormatLoader could handle the file. </description> </method> - <method name="load_interactive"> - <return type="ResourceInteractiveLoader"> + <method name="load_threaded_get"> + <return type="Resource"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <description> + </description> + </method> + <method name="load_threaded_get_status"> + <return type="int" enum="ResourceLoader.ThreadLoadStatus"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="progress" type="Array" default="[ ]"> + </argument> + <description> + </description> + </method> + <method name="load_threaded_request"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> <argument index="1" name="type_hint" type="String" default=""""> </argument> + <argument index="2" name="use_sub_threads" type="bool" default="false"> + </argument> <description> - Starts loading a resource interactively. The returned [ResourceInteractiveLoader] object allows to load with high granularity, calling its [method ResourceInteractiveLoader.poll] method successively to load chunks. - An optional [code]type_hint[/code] can be used to further specify the [Resource] type that should be handled by the [ResourceFormatLoader]. </description> </method> <method name="set_abort_on_missing_resources"> @@ -91,5 +109,13 @@ </method> </methods> <constants> + <constant name="THREAD_LOAD_INVALID_RESOURCE" value="0" enum="ThreadLoadStatus"> + </constant> + <constant name="THREAD_LOAD_IN_PROGRESS" value="1" enum="ThreadLoadStatus"> + </constant> + <constant name="THREAD_LOAD_FAILED" value="2" enum="ThreadLoadStatus"> + </constant> + <constant name="THREAD_LOAD_LOADED" value="3" enum="ThreadLoadStatus"> + </constant> </constants> </class> diff --git a/doc/classes/Semaphore.xml b/doc/classes/Semaphore.xml index eca98fb10e..c9745acfcd 100644 --- a/doc/classes/Semaphore.xml +++ b/doc/classes/Semaphore.xml @@ -11,17 +11,24 @@ </tutorials> <methods> <method name="post"> + <return type="void"> + </return> + <description> + Lowers the [Semaphore], allowing one more thread in. + </description> + </method> + <method name="try_wait"> <return type="int" enum="Error"> </return> <description> - Lowers the [Semaphore], allowing one more thread in. Returns [constant OK] on success, [constant ERR_BUSY] otherwise. + Like [method wait], but won't block, so if the value is zero, fails immediately and returns [constant ERR_BUSY]. If non-zero, it returns [constant OK] to report success. </description> </method> <method name="wait"> - <return type="int" enum="Error"> + <return type="void"> </return> <description> - Tries to wait for the [Semaphore], if its value is zero, blocks until non-zero. Returns [constant OK] on success, [constant ERR_BUSY] otherwise. + Waits for the [Semaphore], if its value is zero, blocks until non-zero. </description> </method> </methods> diff --git a/doc/classes/Signal.xml b/doc/classes/Signal.xml index ff428b887d..350ab40c0e 100644 --- a/doc/classes/Signal.xml +++ b/doc/classes/Signal.xml @@ -22,7 +22,7 @@ </return> <argument index="0" name="callable" type="Callable"> </argument> - <argument index="1" name="binds" type="Array" default="[]"> + <argument index="1" name="binds" type="Array" default="[ ]"> </argument> <argument index="2" name="flags" type="int" default="0"> </argument> diff --git a/doc/classes/Sky.xml b/doc/classes/Sky.xml index 72599a323d..ba9c5ee661 100644 --- a/doc/classes/Sky.xml +++ b/doc/classes/Sky.xml @@ -12,6 +12,7 @@ </methods> <members> <member name="process_mode" type="int" setter="set_process_mode" getter="get_process_mode" enum="Sky.ProcessMode" default="0"> + Sets the method for generating the radiance map from the sky. The radiance map is a cubemap with increasingly blurry versions of the sky corresponding to different levels of roughness. Radiance maps can be expensive to calculate. See [enum ProcessMode] for options. </member> <member name="radiance_size" type="int" setter="set_radiance_size" getter="get_radiance_size" enum="Sky.RadianceSize" default="2"> The [Sky]'s radiance map size. The higher the radiance map size, the more detailed the lighting from the [Sky] will be. @@ -45,8 +46,11 @@ Represents the size of the [enum RadianceSize] enum. </constant> <constant name="PROCESS_MODE_QUALITY" value="0" enum="ProcessMode"> + Uses high quality importance sampling to process the radiance map. In general, this results in much higher quality than [constant PROCESS_MODE_REALTIME] but takes much longer to generate. This should not be used if you plan on changing the sky at runtime. </constant> <constant name="PROCESS_MODE_REALTIME" value="1" enum="ProcessMode"> + Uses the fast filtering algorithm to process the radiance map. In general this results in lower quality, but substantially faster run times. + [b]Note:[/b] The fast filtering algorithm is limited to 128x128 cubemaps, so [member radiance_size] must be set to [constant RADIANCE_SIZE_128]. </constant> </constants> </class> diff --git a/doc/classes/SpringArm.xml b/doc/classes/SpringArm.xml index f426cfc352..780ed5077d 100644 --- a/doc/classes/SpringArm.xml +++ b/doc/classes/SpringArm.xml @@ -18,14 +18,14 @@ <argument index="0" name="RID" type="RID"> </argument> <description> - Adds the object with the given [RID] to the list of objects excluded from the collision check. + Adds the [PhysicsBody] object with the given [RID] to the list of [PhysicsBody] objects excluded from the collision check. </description> </method> <method name="clear_excluded_objects"> <return type="void"> </return> <description> - Clears the list of objects excluded from the collision check. + Clears the list of [PhysicsBody] objects excluded from the collision check. </description> </method> <method name="get_hit_length"> @@ -41,7 +41,7 @@ <argument index="0" name="RID" type="RID"> </argument> <description> - Removes the given [RID] from the list of objects excluded from the collision check. + Removes the given [RID] from the list of [PhysicsBody] objects excluded from the collision check. </description> </method> </methods> diff --git a/doc/classes/Sprite3D.xml b/doc/classes/Sprite3D.xml index 4c12399761..63958eeb7b 100644 --- a/doc/classes/Sprite3D.xml +++ b/doc/classes/Sprite3D.xml @@ -5,6 +5,7 @@ </brief_description> <description> A node that displays a 2D texture in a 3D environment. The texture displayed can be a region from a larger atlas texture, or a frame from a sprite sheet animation. + [b]Note:[/b] There are [url=https://github.com/godotengine/godot/issues/20855]known performance issues[/url] when using [Sprite3D]. Consider using a [MeshInstance] with a [QuadMesh] as the mesh instead. You can still have billboarding by enabling billboard properties in the QuadMesh's [StandardMaterial3D]. </description> <tutorials> </tutorials> diff --git a/doc/classes/String.xml b/doc/classes/String.xml index 1a5182b76e..a72b8f05d8 100644 --- a/doc/classes/String.xml +++ b/doc/classes/String.xml @@ -440,7 +440,7 @@ </return> <argument index="0" name="values" type="Variant"> </argument> - <argument index="1" name="placeholder" type="String" default="{_}"> + <argument index="1" name="placeholder" type="String" default=""{_}""> </argument> <description> Formats the string by replacing all occurrences of [code]placeholder[/code] with [code]values[/code]. @@ -586,7 +586,7 @@ <method name="is_valid_hex_number"> <return type="bool"> </return> - <argument index="0" name="with_prefix" type="bool" default="False"> + <argument index="0" name="with_prefix" type="bool" default="false"> </argument> <description> Returns [code]true[/code] if this string contains a valid hexadecimal number. If [code]with_prefix[/code] is [code]true[/code], then a validity of the hexadecimal number is determined by [code]0x[/code] prefix, for instance: [code]0xDEADC0DE[/code]. @@ -810,7 +810,7 @@ </return> <argument index="0" name="delimiter" type="String"> </argument> - <argument index="1" name="allow_empty" type="bool" default="True"> + <argument index="1" name="allow_empty" type="bool" default="true"> </argument> <argument index="2" name="maxsplit" type="int" default="0"> </argument> @@ -879,7 +879,7 @@ </return> <argument index="0" name="delimiter" type="String"> </argument> - <argument index="1" name="allow_empty" type="bool" default="True"> + <argument index="1" name="allow_empty" type="bool" default="true"> </argument> <argument index="2" name="maxsplit" type="int" default="0"> </argument> @@ -901,7 +901,7 @@ </return> <argument index="0" name="delimiter" type="String"> </argument> - <argument index="1" name="allow_empty" type="bool" default="True"> + <argument index="1" name="allow_empty" type="bool" default="true"> </argument> <description> Splits the string in floats by using a delimiter string and returns an array of the substrings. @@ -911,9 +911,9 @@ <method name="strip_edges"> <return type="String"> </return> - <argument index="0" name="left" type="bool" default="True"> + <argument index="0" name="left" type="bool" default="true"> </argument> - <argument index="1" name="right" type="bool" default="True"> + <argument index="1" name="right" type="bool" default="true"> </argument> <description> Returns a copy of the string stripped of any non-printable character (including tabulations, spaces and line breaks) at the beginning and the end. The optional arguments are used to toggle stripping on the left and right edges respectively. diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml index 342acaae96..371b027534 100644 --- a/doc/classes/Tween.xml +++ b/doc/classes/Tween.xml @@ -21,7 +21,7 @@ </tutorials> <methods> <method name="follow_method"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -47,7 +47,7 @@ </description> </method> <method name="follow_property"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -80,7 +80,7 @@ </description> </method> <method name="interpolate_callback"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -103,7 +103,7 @@ </description> </method> <method name="interpolate_deferred_callback"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -126,7 +126,7 @@ </description> </method> <method name="interpolate_method"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -150,7 +150,7 @@ </description> </method> <method name="interpolate_property"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -182,7 +182,7 @@ </description> </method> <method name="remove"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -193,14 +193,14 @@ </description> </method> <method name="remove_all"> - <return type="bool"> + <return type="void"> </return> <description> Stops animation and removes all tweens. </description> </method> <method name="reset"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -211,14 +211,14 @@ </description> </method> <method name="reset_all"> - <return type="bool"> + <return type="void"> </return> <description> Resets all tweens to their initial values (the ones given, not those before the tween). </description> </method> <method name="resume"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -229,14 +229,14 @@ </description> </method> <method name="resume_all"> - <return type="bool"> + <return type="void"> </return> <description> Continues animating all stopped tweens. </description> </method> <method name="seek"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="time" type="float"> </argument> @@ -254,14 +254,14 @@ </description> </method> <method name="start"> - <return type="bool"> + <return type="void"> </return> <description> Starts the tween. You can define animations both before and after this. </description> </method> <method name="stop"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -272,14 +272,14 @@ </description> </method> <method name="stop_all"> - <return type="bool"> + <return type="void"> </return> <description> Stops animating all tweens. </description> </method> <method name="targeting_method"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -305,7 +305,7 @@ </description> </method> <method name="targeting_property"> - <return type="bool"> + <return type="void"> </return> <argument index="0" name="object" type="Object"> </argument> diff --git a/doc/classes/VisualShader.xml b/doc/classes/VisualShader.xml index 27ba54cb68..0dd8ec0064 100644 --- a/doc/classes/VisualShader.xml +++ b/doc/classes/VisualShader.xml @@ -183,6 +183,8 @@ <member name="code" type="String" setter="set_code" getter="get_code" override="true" default=""shader_type spatial;void vertex() {// Output:0}void fragment() {// Output:0}void light() {// Output:0}"" /> <member name="graph_offset" type="Vector2" setter="set_graph_offset" getter="get_graph_offset" default="Vector2( 0, 0 )"> </member> + <member name="version" type="String" setter="set_version" getter="get_version" default=""""> + </member> </members> <constants> <constant name="TYPE_VERTEX" value="0" enum="Type"> diff --git a/doc/classes/VisualShaderNodeCompare.xml b/doc/classes/VisualShaderNodeCompare.xml index 32f7be3ec3..9c2331edea 100644 --- a/doc/classes/VisualShaderNodeCompare.xml +++ b/doc/classes/VisualShaderNodeCompare.xml @@ -25,13 +25,16 @@ <constant name="CTYPE_SCALAR" value="0" enum="ComparisonType"> A floating-point scalar. </constant> - <constant name="CTYPE_VECTOR" value="1" enum="ComparisonType"> + <constant name="CTYPE_SCALAR_INT" value="1" enum="ComparisonType"> + An integer scalar. + </constant> + <constant name="CTYPE_VECTOR" value="2" enum="ComparisonType"> A 3D vector type. </constant> - <constant name="CTYPE_BOOLEAN" value="2" enum="ComparisonType"> + <constant name="CTYPE_BOOLEAN" value="3" enum="ComparisonType"> A boolean type. </constant> - <constant name="CTYPE_TRANSFORM" value="3" enum="ComparisonType"> + <constant name="CTYPE_TRANSFORM" value="4" enum="ComparisonType"> A transform ([code]mat4[/code]) type. </constant> <constant name="FUNC_EQUAL" value="0" enum="Function"> diff --git a/doc/classes/VisualShaderNodeIf.xml b/doc/classes/VisualShaderNodeIf.xml index 1ebd945d42..ad0b21a370 100644 --- a/doc/classes/VisualShaderNodeIf.xml +++ b/doc/classes/VisualShaderNodeIf.xml @@ -4,7 +4,7 @@ Compares two floating-point numbers in order to return a required vector within the visual shader graph. </brief_description> <description> - First two ports are scalar floatin-point numbers to compare, third is tolerance comparsion amount and last three ports represents a vectors returned if [code]a == b[/code], [code]a > b[/code] and [code]a < b[/code] respectivly. + First two ports are scalar floatin-point numbers to compare, third is tolerance comparison amount and last three ports represents a vectors returned if [code]a == b[/code], [code]a > b[/code] and [code]a < b[/code] respectively. </description> <tutorials> </tutorials> diff --git a/doc/classes/VisualShaderNodeIntFunc.xml b/doc/classes/VisualShaderNodeIntFunc.xml index 4b5d4ca8d2..5c68c0ec71 100644 --- a/doc/classes/VisualShaderNodeIntFunc.xml +++ b/doc/classes/VisualShaderNodeIntFunc.xml @@ -11,7 +11,7 @@ <methods> </methods> <members> - <member name="function" type="int" setter="set_function" getter="get_function" enum="VisualShaderNodeIntFunc.Function" default="0"> + <member name="function" type="int" setter="set_function" getter="get_function" enum="VisualShaderNodeIntFunc.Function" default="3"> A function to be applied to the scalar. See [enum Function] for options. </member> </members> diff --git a/doc/classes/PlaneShape.xml b/doc/classes/WorldMarginShape.xml index b40e133d00..54f76a066b 100644 --- a/doc/classes/PlaneShape.xml +++ b/doc/classes/WorldMarginShape.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="PlaneShape" inherits="Shape" version="4.0"> +<class name="WorldMarginShape" inherits="Shape" version="4.0"> <brief_description> Infinite plane shape for 3D collisions. </brief_description> <description> - An infinite plane shape for 3D collisions. Note that the [Plane]'s normal matters; anything "below" the plane will collide with it. If the [PlaneShape] is used in a [PhysicsBody], it will cause colliding objects placed "below" it to teleport "above" the plane. + An infinite plane shape for 3D collisions. Note that the [Plane]'s normal matters; anything "below" the plane will collide with it. If the [WorldMarginShape] is used in a [PhysicsBody], it will cause colliding objects placed "below" it to teleport "above" the plane. </description> <tutorials> </tutorials> @@ -12,7 +12,7 @@ </methods> <members> <member name="plane" type="Plane" setter="set_plane" getter="get_plane" default="Plane( 0, 1, 0, 0 )"> - The [Plane] used by the [PlaneShape] for collision. + The [Plane] used by the [WorldMarginShape] for collision. </member> </members> <constants> |