diff options
Diffstat (limited to 'doc/classes')
119 files changed, 2350 insertions, 927 deletions
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index 3d01c60aea..5bb10d162f 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -2818,6 +2818,9 @@ </constant> <constant name="PROPERTY_USAGE_EDITOR_BASIC_SETTING" value="134217728" enum="PropertyUsageFlags"> </constant> + <constant name="PROPERTY_USAGE_READ_ONLY" value="268435456" enum="PropertyUsageFlags"> + The property is read-only in the editor inspector. + </constant> <constant name="PROPERTY_USAGE_ARRAY" value="536870912" enum="PropertyUsageFlags"> </constant> <constant name="PROPERTY_USAGE_DEFAULT" value="6" enum="PropertyUsageFlags"> diff --git a/doc/classes/AESContext.xml b/doc/classes/AESContext.xml index 69cd54a79b..7f582e4be7 100644 --- a/doc/classes/AESContext.xml +++ b/doc/classes/AESContext.xml @@ -45,6 +45,7 @@ public class Example : Node { public AESContext Aes = new AESContext(); + public override void _Ready() { string key = "My secret key!!!"; // Key must be either 16 or 32 bytes. diff --git a/doc/classes/AStarGrid2D.xml b/doc/classes/AStarGrid2D.xml index 19cd9d21d7..8dde3748d7 100644 --- a/doc/classes/AStarGrid2D.xml +++ b/doc/classes/AStarGrid2D.xml @@ -6,14 +6,24 @@ <description> Compared to [AStar2D] you don't need to manually create points or connect them together. It also supports multiple type of heuristics and modes for diagonal movement. This class also provides a jumping mode which is faster to calculate than without it in the [AStar2D] class. In contrast to [AStar2D], you only need set the [member size] of the grid, optionally set the [member cell_size] and then call the [method update] method: - [codeblock] + [codeblocks] + [gdscript] var astar_grid = AStarGrid2D.new() astar_grid.size = Vector2i(32, 32) astar_grid.cell_size = Vector2(16, 16) astar_grid.update() print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, 0), (1, 1), (2, 2), (3, 3), (3, 4) print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64) - [/codeblock] + [/gdscript] + [csharp] + AStarGrid2D astarGrid = new AStarGrid2D(); + astarGrid.Size = new Vector2i(32, 32); + astarGrid.CellSize = new Vector2i(16, 16); + astarGrid.Update(); + GD.Print(astarGrid.GetIdPath(Vector2i.Zero, new Vector2i(3, 4))); // prints (0, 0), (1, 1), (2, 2), (3, 3), (3, 4) + GD.Print(astarGrid.GetPointPath(Vector2i.Zero, new Vector2i(3, 4))); // prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64) + [/csharp] + [/codeblocks] </description> <tutorials> </tutorials> @@ -43,7 +53,7 @@ </description> </method> <method name="get_id_path"> - <return type="PackedVector2Array" /> + <return type="Vector2i[]" /> <param index="0" name="from_id" type="Vector2i" /> <param index="1" name="to_id" type="Vector2i" /> <description> diff --git a/doc/classes/AnimatedSprite2D.xml b/doc/classes/AnimatedSprite2D.xml index b207eda27f..afbe34816a 100644 --- a/doc/classes/AnimatedSprite2D.xml +++ b/doc/classes/AnimatedSprite2D.xml @@ -5,6 +5,8 @@ </brief_description> <description> [AnimatedSprite2D] is similar to the [Sprite2D] node, except it carries multiple textures as animation frames. Animations are created using a [SpriteFrames] resource, which allows you to import image files (or a folder containing said files) to provide the animation frames for the sprite. The [SpriteFrames] resource can be configured in the editor via the SpriteFrames bottom panel. + After setting up [member frames], [method play] may be called. It's also possible to select an [member animation] and toggle [member playing], even within the editor. + To pause the current animation, call [method stop] or set [member playing] to [code]false[/code]. Alternatively, setting [member speed_scale] to [code]0[/code] also preserves the current frame's elapsed time. [b]Note:[/b] You can associate a set of normal or specular maps by creating additional [SpriteFrames] resources with a [code]_normal[/code] or [code]_specular[/code] suffix. For example, having 3 [SpriteFrames] resources [code]run[/code], [code]run_normal[/code], and [code]run_specular[/code] will make it so the [code]run[/code] animation uses normal and specular maps. </description> <tutorials> @@ -17,13 +19,14 @@ <param index="0" name="anim" type="StringName" default="&""" /> <param index="1" name="backwards" type="bool" default="false" /> <description> - Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. If [code]backwards[/code] is [code]true[/code], the animation will be played in reverse. + Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. If [param backwards] is [code]true[/code], the animation is played in reverse. </description> </method> <method name="stop"> <return type="void" /> <description> - Stops the current animation (does not reset the frame counter). + Stops the current [member animation] at the current [member frame]. + [b]Note:[/b] This method resets the current frame's elapsed time. If this behavior is undesired, consider setting [member speed_scale] to [code]0[/code], instead. </description> </method> </methods> @@ -50,10 +53,10 @@ The texture's drawing offset. </member> <member name="playing" type="bool" setter="set_playing" getter="is_playing" default="false"> - If [code]true[/code], the [member animation] is currently playing. + If [code]true[/code], the [member animation] is currently playing. Setting this property to [code]false[/code] is the equivalent of calling [method stop]. </member> <member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale" default="1.0"> - The animation speed is multiplied by this value. + The animation speed is multiplied by this value. If set to a negative value, the animation is played in reverse. If set to [code]0[/code], the animation is paused, preserving the current frame's elapsed time. </member> </members> <signals> diff --git a/doc/classes/AnimatedSprite3D.xml b/doc/classes/AnimatedSprite3D.xml index 0bc5484e3a..09baf882fb 100644 --- a/doc/classes/AnimatedSprite3D.xml +++ b/doc/classes/AnimatedSprite3D.xml @@ -4,7 +4,9 @@ 2D sprite node in 3D world, that can use multiple 2D textures for animation. </brief_description> <description> - Animations are created using a [SpriteFrames] resource, which can be configured in the editor via the SpriteFrames panel. + [AnimatedSprite3D] is similar to the [Sprite3D] node, except it carries multiple textures as animation [member frames]. Animations are created using a [SpriteFrames] resource, which allows you to import image files (or a folder containing said files) to provide the animation frames for the sprite. The [SpriteFrames] resource can be configured in the editor via the SpriteFrames bottom panel. + After setting up [member frames], [method play] may be called. It's also possible to select an [member animation] and toggle [member playing], even within the editor. + To pause the current animation, call [method stop] or set [member playing] to [code]false[/code]. Alternatively, setting [member speed_scale] to [code]0[/code] also preserves the current frame's elapsed time. </description> <tutorials> <link title="2D Sprite animation (also applies to 3D)">$DOCS_URL/tutorials/2d/2d_sprite_animation.html</link> @@ -13,14 +15,16 @@ <method name="play"> <return type="void" /> <param index="0" name="anim" type="StringName" default="&""" /> + <param index="1" name="backwards" type="bool" default="false" /> <description> - Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. + Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. If [param backwards] is [code]true[/code], the animation is played in reverse. </description> </method> <method name="stop"> <return type="void" /> <description> - Stops the current animation (does not reset the frame counter). + Stops the current [member animation] at the current [member frame]. + [b]Note:[/b] This method resets the current frame's elapsed time. If this behavior is undesired, consider setting [member speed_scale] to [code]0[/code], instead. </description> </method> </methods> @@ -35,7 +39,10 @@ The [SpriteFrames] resource containing the animation(s). </member> <member name="playing" type="bool" setter="set_playing" getter="is_playing" default="false"> - If [code]true[/code], the [member animation] is currently playing. + If [code]true[/code], the [member animation] is currently playing. Setting this property to [code]false[/code] is the equivalent of calling [method stop]. + </member> + <member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale" default="1.0"> + The animation speed is multiplied by this value. If set to a negative value, the animation is played in reverse. If set to [code]0[/code], the animation is paused, preserving the current frame's elapsed time. </member> </members> <signals> diff --git a/doc/classes/AnimationLibrary.xml b/doc/classes/AnimationLibrary.xml index 75fe393dbb..769b338063 100644 --- a/doc/classes/AnimationLibrary.xml +++ b/doc/classes/AnimationLibrary.xml @@ -15,7 +15,7 @@ <param index="0" name="name" type="StringName" /> <param index="1" name="animation" type="Animation" /> <description> - Adds the [param animation] to the library, accesible by the key [param name]. + Adds the [param animation] to the library, accessible by the key [param name]. </description> </method> <method name="get_animation" qualifiers="const"> diff --git a/doc/classes/AnimationNodeBlendTree.xml b/doc/classes/AnimationNodeBlendTree.xml index 4c7943ece3..2a765ac8d6 100644 --- a/doc/classes/AnimationNodeBlendTree.xml +++ b/doc/classes/AnimationNodeBlendTree.xml @@ -87,6 +87,14 @@ The global offset of all sub-nodes. </member> </members> + <signals> + <signal name="node_changed"> + <param index="0" name="node_name" type="StringName" /> + <description> + Emitted when the input port information is changed. + </description> + </signal> + </signals> <constants> <constant name="CONNECTION_OK" value="0"> The connection was successful. diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml index 710dc55a4b..b7ac1ff7f8 100644 --- a/doc/classes/AnimationPlayer.xml +++ b/doc/classes/AnimationPlayer.xml @@ -5,7 +5,7 @@ </brief_description> <description> An animation player is used for general-purpose playback of [Animation] resources. It contains a dictionary of [AnimationLibrary] resources and custom blend times between animation transitions. - Some methods and properties use a single key to refence an animation directly. These keys are formatted as the key for the library, followed by a forward slash, then the key for the animation whithin the library, for example [code]"movement/run"[/code]. If the library's key is an empty string (known as the default library), the forward slash is omitted, being the same key used by the library. + Some methods and properties use a single key to reference an animation directly. These keys are formatted as the key for the library, followed by a forward slash, then the key for the animation within the library, for example [code]"movement/run"[/code]. If the library's key is an empty string (known as the default library), the forward slash is omitted, being the same key used by the library. [AnimationPlayer] is more suited than [Tween] for animations where you know the final values in advance. For example, fading a screen in and out is more easily done with an [AnimationPlayer] node thanks to the animation tools provided by the editor. That particular example can also be implemented with a [Tween], but it requires doing everything by code. Updating the target properties of animations occurs at process time. </description> @@ -170,7 +170,7 @@ <return type="void" /> <param index="0" name="name" type="StringName" /> <description> - Removes the [AnimationLibrary] assosiated with the key [param name]. + Removes the [AnimationLibrary] associated with the key [param name]. </description> </method> <method name="rename_animation_library"> @@ -268,6 +268,11 @@ [b]Note:[/b] This signal is not emitted if an animation is looping. </description> </signal> + <signal name="animation_list_changed"> + <description> + Notifies when an animation list is changed. + </description> + </signal> <signal name="animation_started"> <param index="0" name="anim_name" type="StringName" /> <description> diff --git a/doc/classes/AnimationTree.xml b/doc/classes/AnimationTree.xml index f2bf74f495..27797b00b5 100644 --- a/doc/classes/AnimationTree.xml +++ b/doc/classes/AnimationTree.xml @@ -54,6 +54,13 @@ The root animation node of this [AnimationTree]. See [AnimationNode]. </member> </members> + <signals> + <signal name="animation_player_changed"> + <description> + Emitted when the [member anim_player] is changed. + </description> + </signal> + </signals> <constants> <constant name="ANIMATION_PROCESS_PHYSICS" value="0" enum="AnimationProcessCallback"> The animations will progress during the physics frame (i.e. [method Node._physics_process]). diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml index f1e40d4979..29592f133d 100644 --- a/doc/classes/Area2D.xml +++ b/doc/classes/Area2D.xml @@ -25,10 +25,24 @@ <method name="get_overlapping_bodies" qualifiers="const"> <return type="Node2D[]" /> <description> - Returns a list of intersecting [PhysicsBody2D]s. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. + Returns a list of intersecting [PhysicsBody2D]s and [TileMap]s. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> + <method name="has_overlapping_areas" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [Area2D]s, otherwise returns [code]false[/code]. The overlapping area's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping areas is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> + <method name="has_overlapping_bodies" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [PhysicsBody2D]s or [TileMap]s, otherwise returns [code]false[/code]. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping bodies is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> <method name="overlaps_area" qualifiers="const"> <return type="bool" /> <param index="0" name="area" type="Node" /> diff --git a/doc/classes/Area3D.xml b/doc/classes/Area3D.xml index 14081918cf..ce49be9bc1 100644 --- a/doc/classes/Area3D.xml +++ b/doc/classes/Area3D.xml @@ -23,10 +23,24 @@ <method name="get_overlapping_bodies" qualifiers="const"> <return type="Node3D[]" /> <description> - Returns a list of intersecting [PhysicsBody3D]s. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. + Returns a list of intersecting [PhysicsBody3D]s and [GridMap]s. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> + <method name="has_overlapping_areas" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [Area3D]s, otherwise returns [code]false[/code]. The overlapping area's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping areas is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> + <method name="has_overlapping_bodies" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [PhysicsBody3D]s or [GridMap]s, otherwise returns [code]false[/code]. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping bodies is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> <method name="overlaps_area" qualifiers="const"> <return type="bool" /> <param index="0" name="area" type="Node" /> diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml index f6d926031d..d8c4b8fdb5 100644 --- a/doc/classes/Array.xml +++ b/doc/classes/Array.xml @@ -53,6 +53,15 @@ </constructor> <constructor name="Array"> <return type="Array" /> + <param index="0" name="base" type="Array" /> + <param index="1" name="type" type="int" /> + <param index="2" name="class_name" type="StringName" /> + <param index="3" name="script" type="Variant" /> + <description> + </description> + </constructor> + <constructor name="Array"> + <return type="Array" /> <param index="0" name="from" type="Array" /> <description> Constructs an [Array] as a copy of the given [Array]. @@ -303,6 +312,21 @@ [b]Note:[/b] Calling this function is not the same as writing [code]array[0][/code]. If the array is empty, accessing by index will pause project execution when running from the editor. </description> </method> + <method name="get_typed_builtin" qualifiers="const"> + <return type="int" /> + <description> + </description> + </method> + <method name="get_typed_class_name" qualifiers="const"> + <return type="StringName" /> + <description> + </description> + </method> + <method name="get_typed_script" qualifiers="const"> + <return type="Variant" /> + <description> + </description> + </method> <method name="has" qualifiers="const"> <return type="bool" /> <param index="0" name="value" type="Variant" /> @@ -366,6 +390,16 @@ Returns [code]true[/code] if the array is empty. </description> </method> + <method name="is_read_only" qualifiers="const"> + <return type="bool" /> + <description> + </description> + </method> + <method name="is_typed" qualifiers="const"> + <return type="bool" /> + <description> + </description> + </method> <method name="map" qualifiers="const"> <return type="Array" /> <param index="0" name="method" type="Callable" /> @@ -479,6 +513,20 @@ Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. </description> </method> + <method name="set_read_only"> + <return type="void" /> + <param index="0" name="enable" type="bool" /> + <description> + </description> + </method> + <method name="set_typed"> + <return type="void" /> + <param index="0" name="type" type="int" /> + <param index="1" name="class_name" type="StringName" /> + <param index="2" name="script" type="Variant" /> + <description> + </description> + </method> <method name="shuffle"> <return type="void" /> <description> @@ -556,6 +604,12 @@ [/codeblocks] </description> </method> + <method name="typed_assign"> + <return type="bool" /> + <param index="0" name="array" type="Array" /> + <description> + </description> + </method> </methods> <operators> <operator name="operator !="> diff --git a/doc/classes/AtlasTexture.xml b/doc/classes/AtlasTexture.xml index 759acff773..4794c8ef14 100644 --- a/doc/classes/AtlasTexture.xml +++ b/doc/classes/AtlasTexture.xml @@ -1,26 +1,27 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="AtlasTexture" inherits="Texture2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - Crops out one part of a texture, such as a texture from a texture atlas. + A texture that crops out part of another Texture2D. </brief_description> <description> - [Texture2D] resource that crops out one part of the [member atlas] texture, defined by [member region]. The main use case is cropping out textures from a texture atlas, which is a big texture file that packs multiple smaller textures. Consists of a [Texture2D] for the [member atlas], a [member region] that defines the area of [member atlas] to use, and a [member margin] that defines the border width. - [AtlasTexture] cannot be used in an [AnimatedTexture], cannot be tiled in nodes such as [TextureRect], and does not work properly if used inside of other [AtlasTexture] resources. Multiple [AtlasTexture] resources can be used to crop multiple textures from the atlas. Using a texture atlas helps to optimize video memory costs and render calls compared to using multiple small files. + [Texture2D] resource that draws only part of its [member atlas] texture, as defined by the [member region]. An additional [member margin] can also be set, which is useful for small adjustments. + Multiple [AtlasTexture] resources can be cropped from the same [member atlas]. Packing many smaller textures into a singular large texture helps to optimize video memory costs and render calls. + [b]Note:[/b] [AtlasTexture] cannot be used in an [AnimatedTexture], and does not work properly if used inside of other [AtlasTexture] resources. </description> <tutorials> </tutorials> <members> <member name="atlas" type="Texture2D" setter="set_atlas" getter="get_atlas"> - The texture that contains the atlas. Can be any [Texture2D] subtype. + The texture that contains the atlas. Can be any type inheriting from [Texture2D]. Nesting [AtlasTexture] resources is not supported. </member> <member name="filter_clip" type="bool" setter="set_filter_clip" getter="has_filter_clip" default="false"> - If [code]true[/code], clips the area outside of the region to avoid bleeding of the surrounding texture pixels. + If [code]true[/code], the area outside of the [member region] is clipped to avoid bleeding of the surrounding texture pixels. </member> <member name="margin" type="Rect2" setter="set_margin" getter="get_margin" default="Rect2(0, 0, 0, 0)"> - The margin around the region. The [Rect2]'s [member Rect2.size] parameter ("w" and "h" in the editor) resizes the texture so it fits within the margin. + The margin around the [member region]. Useful for small adjustments. If the [member Rect2.size] of this property ("w" and "h" in the editor) is set, the drawn texture is resized to fit within the margin. </member> <member name="region" type="Rect2" setter="set_region" getter="get_region" default="Rect2(0, 0, 0, 0)"> - The AtlasTexture's used region. + The region used to draw the [member atlas]. </member> </members> </class> diff --git a/doc/classes/BaseMaterial3D.xml b/doc/classes/BaseMaterial3D.xml index ee28675d89..cbb58a3e1e 100644 --- a/doc/classes/BaseMaterial3D.xml +++ b/doc/classes/BaseMaterial3D.xml @@ -28,7 +28,7 @@ <return type="Texture2D" /> <param index="0" name="param" type="int" enum="BaseMaterial3D.TextureParam" /> <description> - Returns the [Texture] associated with the specified [enum TextureParam]. + Returns the [Texture2D] associated with the specified [enum TextureParam]. </description> </method> <method name="set_feature"> diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml index d62f704528..6d9b679fbc 100644 --- a/doc/classes/Basis.xml +++ b/doc/classes/Basis.xml @@ -83,7 +83,7 @@ <return type="Vector3" /> <param index="0" name="order" type="int" default="2" /> <description> - Returns the basis's rotation in the form of Euler angles (in the YXZ convention: when decomposing, first Z, then X, and Y last). The returned vector contains the rotation angles in the format (X angle, Y angle, Z angle). + Returns the basis's rotation in the form of Euler angles. The Euler order depends on the [param order] parameter, by default it uses the YXZ convention: when decomposing, first Z, then X, and Y last. The returned vector contains the rotation angles in the format (X angle, Y angle, Z angle). Consider using the [method get_rotation_quaternion] method instead, which returns a [Quaternion] quaternion instead of Euler angles. </description> </method> diff --git a/doc/classes/BoneAttachment3D.xml b/doc/classes/BoneAttachment3D.xml index dc3d448621..f29525038e 100644 --- a/doc/classes/BoneAttachment3D.xml +++ b/doc/classes/BoneAttachment3D.xml @@ -16,10 +16,11 @@ Returns the [NodePath] to the external [Skeleton3D] node, if one has been set. </description> </method> - <method name="get_override_mode" qualifiers="const"> + <method name="get_override_mode" qualifiers="const" is_deprecated="true"> <return type="int" /> <description> - Returns the override mode for the BoneAttachment3D node. + Deprecated. Local pose overrides will be removed. + Returns the override mode for the BoneAttachment3D node (0=global / 1=local). </description> </method> <method name="get_override_pose" qualifiers="const"> @@ -48,11 +49,12 @@ Sets the [NodePath] to the external skeleton that the BoneAttachment3D node should use. The external [Skeleton3D] node is only used when [code]use_external_skeleton[/code] is set to [code]true[/code]. </description> </method> - <method name="set_override_mode"> + <method name="set_override_mode" is_deprecated="true"> <return type="void" /> <param index="0" name="override_mode" type="int" /> <description> - Sets the override mode for the BoneAttachment3D node. The override mode defines which of the bone poses the BoneAttachment3D node will override. + Deprecated. Local pose overrides will be removed. + Sets the override mode for the BoneAttachment3D node (0=global / 1=local). The override mode defines which of the bone poses the BoneAttachment3D node will override. </description> </method> <method name="set_override_pose"> diff --git a/doc/classes/Callable.xml b/doc/classes/Callable.xml index 1fcaf6d866..dd48ee6790 100644 --- a/doc/classes/Callable.xml +++ b/doc/classes/Callable.xml @@ -81,6 +81,13 @@ [/codeblock] </description> </method> + <method name="callv" qualifiers="const"> + <return type="Variant" /> + <param index="0" name="arguments" type="Array" /> + <description> + Calls the method represented by this [Callable]. Contrary to [method call], this method does not take a variable number of arguments but expects all arguments to be passed via a single [Array]. + </description> + </method> <method name="get_method" qualifiers="const"> <return type="StringName" /> <description> diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml index bb78d537ad..a1d24f778d 100644 --- a/doc/classes/Camera2D.xml +++ b/doc/classes/Camera2D.xml @@ -124,6 +124,9 @@ <member name="editor_draw_screen" type="bool" setter="set_screen_drawing_enabled" getter="is_screen_drawing_enabled" default="true"> If [code]true[/code], draws the camera's screen rectangle in the editor. </member> + <member name="ignore_rotation" type="bool" setter="set_ignore_rotation" getter="is_ignoring_rotation" default="true"> + If [code]true[/code], the camera's rendered view is not affected by its [member Node2D.rotation] and [member Node2D.global_rotation]. + </member> <member name="limit_bottom" type="int" setter="set_limit" getter="get_limit" default="10000000"> Bottom scroll limit in pixels. The camera stops moving when reaching this value, but [member offset] can push the view past the limit. </member> @@ -147,9 +150,6 @@ <member name="process_callback" type="int" setter="set_process_callback" getter="get_process_callback" enum="Camera2D.Camera2DProcessCallback" default="1"> The camera's process callback. See [enum Camera2DProcessCallback]. </member> - <member name="rotating" type="bool" setter="set_rotating" getter="is_rotating" default="false"> - If [code]true[/code], the camera view rotates with the target. - </member> <member name="smoothing_enabled" type="bool" setter="set_enable_follow_smoothing" getter="is_follow_smoothing_enabled" default="false"> If [code]true[/code], the camera smoothly moves towards the target at [member smoothing_speed]. </member> diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml index 70d825efac..d74f49c897 100644 --- a/doc/classes/CanvasItem.xml +++ b/doc/classes/CanvasItem.xml @@ -310,16 +310,16 @@ # If using this method in a script that redraws constantly, move the # `default_font` declaration to a member variable assigned in `_ready()` # so the Control is only created once. - var default_font = Control.new().get_font("font") - var default_font_size = Control.new().get_font_size("font_size") - draw_string(default_font, Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, font_size) + var default_font = ThemeDB.fallback_font + var default_font_size = ThemeDB.fallback_font_size + draw_string(default_font, Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size) [/gdscript] [csharp] // If using this method in a script that redraws constantly, move the - // `default_font` declaration to a member variable assigned in `_ready()` + // `default_font` declaration to a member variable assigned in `_Ready()` // so the Control is only created once. - Font defaultFont = new Control().GetFont("font"); - int defaultFontSize = new Control().GetFontSize("font_size"); + Font defaultFont = ThemeDB.FallbackFont; + int defaultFontSize = ThemeDB.FallbackFontSize; DrawString(defaultFont, new Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize); [/csharp] [/codeblocks] diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml index fa8fbd0d3e..75530370bc 100644 --- a/doc/classes/CollisionShape2D.xml +++ b/doc/classes/CollisionShape2D.xml @@ -14,6 +14,10 @@ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link> </tutorials> <members> + <member name="debug_color" type="Color" setter="set_debug_color" getter="get_debug_color" default="Color(0, 0, 0, 1)"> + The collision shape debug color. + [b]Note:[/b] The default value is [member ProjectSettings.debug/shapes/collision/shape_color]. The [code]Color(0, 0, 0, 1)[/code] value documented here is a placeholder, and not the actual default debug color. + </member> <member name="disabled" type="bool" setter="set_disabled" getter="is_disabled" default="false"> A disabled collision shape has no effect in the world. This property should be changed with [method Object.set_deferred]. </member> diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index 71798d2574..bf449ade77 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -528,7 +528,7 @@ <param index="0" name="at_position" type="Vector2" default="Vector2(0, 0)" /> <description> Returns the tooltip text [param at_position] in local coordinates, which will typically appear when the cursor is resting over this control. By default, it returns [member tooltip_text]. - [b]Note:[/b] This method can be overriden to customise its behaviour. If this method returns an empty [String], no tooltip is displayed. + [b]Note:[/b] This method can be overridden to customise its behaviour. If this method returns an empty [String], no tooltip is displayed. </description> </method> <method name="grab_click_focus"> @@ -972,7 +972,7 @@ <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" default="false"> Enables whether rendering of [CanvasItem] based children should be clipped to this control's rectangle. If [code]true[/code], parts of a child which would be visibly outside of this control's rectangle will not be rendered and won't receive input. </member> - <member name="custom_minimum_size" type="Vector2" setter="set_custom_minimum_size" getter="get_custom_minimum_size" default="Vector2(0, 0)"> + <member name="custom_minimum_size" type="Vector2i" setter="set_custom_minimum_size" getter="get_custom_minimum_size" default="Vector2i(0, 0)"> The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes. </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode" default="0"> diff --git a/doc/classes/Cubemap.xml b/doc/classes/Cubemap.xml index 7173388027..0cdebeda95 100644 --- a/doc/classes/Cubemap.xml +++ b/doc/classes/Cubemap.xml @@ -4,9 +4,9 @@ 6-sided texture typically used in 3D rendering. </brief_description> <description> - A cubemap is a 6-sided texture typically used for faking reflections in 3D rendering. It can be used to make an object look as if it's reflecting its surroundings. This usually delivers much better performance than other reflection methods. + A cubemap is made of 6 textures organized in layers. They are typically used for faking reflections (see [ReflectionProbe]) in 3D rendering. It can be used to make an object look as if it's reflecting its surroundings. This usually delivers much better performance than other reflection methods. This resource is typically used as a uniform in custom shaders. Few core Godot methods make use of Cubemap resources. - [b]Note:[/b] Godot doesn't support using cubemaps as a [PanoramaSkyMaterial]. You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cube map to an equirectangular sky map. + [b]Note:[/b] Godot doesn't support using cubemaps in a [PanoramaSkyMaterial]. You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cubemap to an equirectangular sky map. </description> <tutorials> </tutorials> diff --git a/doc/classes/CubemapArray.xml b/doc/classes/CubemapArray.xml index 4fca842b5a..07e401a13d 100644 --- a/doc/classes/CubemapArray.xml +++ b/doc/classes/CubemapArray.xml @@ -1,8 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="CubemapArray" inherits="ImageTextureLayered" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + A single composite texture resource which consists of multiple [Cubemap]s. </brief_description> <description> + [CubemapArray]s are made of an array of [Cubemap]s. Accordingly, like [Cubemap]s they are made of multiple textures the amount of which must be divisible by 6 (one image for each face of the cube). The primary benefit of [CubemapArray]s is that they can be accessed in shader code using a single texture reference. In other words, you can pass multiple [Cubemap]s into a shader using a single [CubemapArray]. + Generally, [CubemapArray]s provide a more efficient way for storing multiple [Cubemap]s, than storing multiple [Cubemap]s themselves in an array. + Internally Godot, uses [CubemapArray]s for many effects including the [Sky], if you set [member ProjectSettings.rendering/reflections/sky_reflections/texture_array_reflections] to [code]true[/code]. + [b]Note:[/b] [CubemapArray] is not supported in the OpenGL 3 rendering backend. </description> <tutorials> </tutorials> diff --git a/doc/classes/Directory.xml b/doc/classes/DirAccess.xml index c9a9f346a5..7d1612e59c 100644 --- a/doc/classes/Directory.xml +++ b/doc/classes/DirAccess.xml @@ -1,18 +1,26 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Directory" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="DirAccess" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Type used to handle the filesystem. </brief_description> <description> Directory type. It is used to manage directories and their content (not restricted to the project folder). - When creating a new [Directory], it must be explicitly opened using [method open] before most methods can be used. However, [method file_exists] and [method dir_exists] can be used without opening a directory. If so, they use a path relative to [code]res://[/code]. + [DirAccess] can't be instantiated directly. Instead it is created with a static method that takes a path for which it will be opened. + Most of the methods have a static alternative that can be used without creating a [DirAccess]. Static methods only support absolute paths (including [code]res://[/code] and [code]user://[/code]). + [codeblock] + # Standard + var dir = DirAccess.open("user://levels") + dir.make_dir("world1") + # Static + DirAccess.make_dir_absolute("user://levels/world1") + [/codeblock] [b]Note:[/b] Many resources types are imported (e.g. textures or sound files), and their source asset will not be included in the exported game, as only the imported version is used. Use [ResourceLoader] to access imported resources. Here is an example on how to iterate through the files of a directory: [codeblocks] [gdscript] func dir_contents(path): - var dir = Directory.new() - if dir.open(path) == OK: + var dir = DirAccess.open(path) + if dir: dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": @@ -27,8 +35,8 @@ [csharp] public void DirContents(string path) { - var dir = new Directory(); - if (dir.Open(path) == Error.Ok) + using var dir = DirAccess.Open(path); + if (dir != null) { dir.ListDirBegin(); string fileName = dir.GetNext(); @@ -59,7 +67,7 @@ <methods> <method name="change_dir"> <return type="int" enum="Error" /> - <param index="0" name="todir" type="String" /> + <param index="0" name="to_dir" type="String" /> <description> Changes the currently opened directory to the one passed as an argument. The argument can be relative to the current directory (e.g. [code]newdir[/code] or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/code] or [code]res://somedir/newdir[/code]). Returns one of the [enum Error] code constants ([code]OK[/code] on success). @@ -69,11 +77,22 @@ <return type="int" enum="Error" /> <param index="0" name="from" type="String" /> <param index="1" name="to" type="String" /> + <param index="2" name="chmod_flags" type="int" default="-1" /> <description> Copies the [param from] file to the [param to] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten. + If [param chmod_flags] is different than [code]-1[/code], the Unix permissions for the destination path will be set to the provided value, if available on the current operating system. Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="copy_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="from" type="String" /> + <param index="1" name="to" type="String" /> + <param index="2" name="chmod_flags" type="int" default="-1" /> + <description> + Static version of [method copy]. Supports only absolute paths. + </description> + </method> <method name="current_is_dir" qualifiers="const"> <return type="bool" /> <description> @@ -85,7 +104,13 @@ <param index="0" name="path" type="String" /> <description> Returns whether the target directory exists. The argument can be relative to the current directory, or an absolute path. - If the [Directory] is not open, the path is relative to [code]res://[/code]. + </description> + </method> + <method name="dir_exists_absolute" qualifiers="static"> + <return type="bool" /> + <param index="0" name="path" type="String" /> + <description> + Static version of [method dir_exists]. Supports only absolute paths. </description> </method> <method name="file_exists"> @@ -93,11 +118,12 @@ <param index="0" name="path" type="String" /> <description> Returns whether the target file exists. The argument can be relative to the current directory, or an absolute path. - If the [Directory] is not open, the path is relative to [code]res://[/code]. + For a static equivalent, use [method FileAccess.file_exists]. </description> </method> - <method name="get_current_dir"> + <method name="get_current_dir" qualifiers="const"> <return type="String" /> + <param index="0" name="include_drive" type="bool" default="true" /> <description> Returns the absolute path to the currently opened directory (e.g. [code]res://folder[/code] or [code]C:\tmp\folder[/code]). </description> @@ -105,7 +131,7 @@ <method name="get_current_drive"> <return type="int" /> <description> - Returns the currently opened directory's drive index. See [method get_drive] to convert returned index to the name of the drive. + Returns the currently opened directory's drive index. See [method get_drive_name] to convert returned index to the name of the drive. </description> </method> <method name="get_directories"> @@ -115,17 +141,15 @@ Affected by [member include_hidden] and [member include_navigational]. </description> </method> - <method name="get_drive"> - <return type="String" /> - <param index="0" name="idx" type="int" /> + <method name="get_directories_at" qualifiers="static"> + <return type="PackedStringArray" /> + <param index="0" name="path" type="String" /> <description> - On Windows, returns the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]). - On macOS, returns the path to the mounted volume passed as an argument. - On Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument. - On other platforms, or if the requested drive does not exist, the method returns an empty String. + Returns a [PackedStringArray] containing filenames of the directory contents, excluding files, at the given [param path]. The array is sorted alphabetically. + Use [method get_directories] if you want more control of what gets included. </description> </method> - <method name="get_drive_count"> + <method name="get_drive_count" qualifiers="static"> <return type="int" /> <description> On Windows, returns the number of drives (partitions) mounted on the current filesystem. @@ -134,6 +158,16 @@ On other platforms, the method returns 0. </description> </method> + <method name="get_drive_name" qualifiers="static"> + <return type="String" /> + <param index="0" name="idx" type="int" /> + <description> + On Windows, returns the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]). + On macOS, returns the path to the mounted volume passed as an argument. + On Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument. + On other platforms, or if the requested drive does not exist, the method returns an empty String. + </description> + </method> <method name="get_files"> <return type="PackedStringArray" /> <description> @@ -141,17 +175,31 @@ Affected by [member include_hidden]. </description> </method> + <method name="get_files_at" qualifiers="static"> + <return type="PackedStringArray" /> + <param index="0" name="path" type="String" /> + <description> + Returns a [PackedStringArray] containing filenames of the directory contents, excluding directories, at the given [param path]. The array is sorted alphabetically. + Use [method get_files] if you want more control of what gets included. + </description> + </method> <method name="get_next"> <return type="String" /> <description> - Returns the next element (file or directory) in the current directory (including [code].[/code] and [code]..[/code], unless [code]skip_navigational[/code] was given to [method list_dir_begin]). - The name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty String and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case). + Returns the next element (file or directory) in the current directory. + The name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty [String] and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case). + </description> + </method> + <method name="get_open_error" qualifiers="static"> + <return type="int" enum="Error" /> + <description> + Returns the result of the last [method open] call in the current thread. </description> </method> <method name="get_space_left"> <return type="int" /> <description> - On UNIX desktop systems, returns the available space on the current directory's disk. On other platforms, this information is not available and the method returns 0 or -1. + Returns the available space on the current directory's disk, in bytes. Returns [code]0[/code] if the platform-specific method to query the available space fails. </description> </method> <method name="list_dir_begin"> @@ -176,6 +224,13 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="make_dir_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="path" type="String" /> + <description> + Static version of [method make_dir]. Supports only absolute paths. + </description> + </method> <method name="make_dir_recursive"> <return type="int" enum="Error" /> <param index="0" name="path" type="String" /> @@ -184,12 +239,19 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> - <method name="open"> + <method name="make_dir_recursive_absolute" qualifiers="static"> <return type="int" enum="Error" /> <param index="0" name="path" type="String" /> <description> - Opens an existing directory of the filesystem. The [param path] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]). - Returns one of the [enum Error] code constants ([code]OK[/code] on success). + Static version of [method make_dir_recursive]. Supports only absolute paths. + </description> + </method> + <method name="open" qualifiers="static"> + <return type="DirAccess" /> + <param index="0" name="path" type="String" /> + <description> + Creates a new [DirAccess] object and opens an existing directory of the filesystem. The [param path] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]). + Returns [code]null[/code] if opening the directory failed. You can use [method get_open_error] to check the error that occurred. </description> </method> <method name="remove"> @@ -201,6 +263,13 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="remove_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="path" type="String" /> + <description> + Static version of [method remove]. Supports only absolute paths. + </description> + </method> <method name="rename"> <return type="int" enum="Error" /> <param index="0" name="from" type="String" /> @@ -210,13 +279,21 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="rename_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="from" type="String" /> + <param index="1" name="to" type="String" /> + <description> + Static version of [method rename]. Supports only absolute paths. + </description> + </method> </methods> <members> - <member name="include_hidden" type="bool" setter="set_include_hidden" getter="get_include_hidden" default="false"> + <member name="include_hidden" type="bool" setter="set_include_hidden" getter="get_include_hidden"> If [code]true[/code], hidden files are included when the navigating directory. Affects [method list_dir_begin], [method get_directories] and [method get_files]. </member> - <member name="include_navigational" type="bool" setter="set_include_navigational" getter="get_include_navigational" default="false"> + <member name="include_navigational" type="bool" setter="set_include_navigational" getter="get_include_navigational"> If [code]true[/code], [code].[/code] and [code]..[/code] are included when navigating the directory. Affects [method list_dir_begin] and [method get_directories]. </member> diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml index d22d64c276..6d3f3a7362 100644 --- a/doc/classes/DisplayServer.xml +++ b/doc/classes/DisplayServer.xml @@ -1324,6 +1324,7 @@ <param index="0" name="window_id" type="int" /> <param index="1" name="parent_window_id" type="int" /> <description> + Sets window transient parent. Transient window is will be destroyed with its transient parent and displayed on top of non-exclusive full-screen parent window. Transient windows can't enter full-screen mode. </description> </method> <method name="window_set_vsync_mode"> @@ -1336,6 +1337,15 @@ 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"> + <return type="void" /> + <param index="0" name="offset" type="Vector2i" /> + <param index="1" name="window_id" type="int" default="0" /> + <description> + When [constant WINDOW_FLAG_EXTEND_TO_TITLE] flag is set, set offset to the center of the first titlebar button. + [b]Note:[/b] This flag is implemented on macOS. + </description> + </method> <method name="window_set_window_event_callback"> <return type="void" /> <param index="0" name="callback" type="Callable" /> @@ -1509,7 +1519,8 @@ Window is floating above other regular windows. This flag is ignored for full-screen windows. </constant> <constant name="WINDOW_FLAG_TRANSPARENT" value="3" enum="WindowFlags"> - Window is will be destroyed with its transient parent and displayed on top of non-exclusive full-screen parent window. Transient windows can't enter full-screen mode. + Window background can be transparent. + [b]Note:[/b] This flag has no effect if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to [code]false[/code]. </constant> <constant name="WINDOW_FLAG_NO_FOCUS" value="4" enum="WindowFlags"> Window can't be focused. No-focus window will ignore all input, except mouse clicks. @@ -1537,6 +1548,8 @@ </constant> <constant name="WINDOW_EVENT_DPI_CHANGE" value="6" enum="WindowEvent"> </constant> + <constant name="WINDOW_EVENT_TITLEBAR_CHANGE" value="7" enum="WindowEvent"> + </constant> <constant name="VSYNC_DISABLED" value="0" enum="VSyncMode"> No vertical synchronization, which means the engine will display frames as fast as possible (tearing may be visible). </constant> diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml index 348347c4ef..c395815117 100644 --- a/doc/classes/EditorImportPlugin.xml +++ b/doc/classes/EditorImportPlugin.xml @@ -9,7 +9,7 @@ Below is an example EditorImportPlugin that imports a [Mesh] from a file with the extension ".special" or ".spec": [codeblocks] [gdscript] - tool + @tool extends EditorImportPlugin func _get_importer_name(): @@ -44,7 +44,7 @@ # Fill the Mesh with data read in "file", left as an exercise to the reader. var filename = save_path + "." + _get_save_extension() - return ResourceSaver.save(filename, mesh) + return ResourceSaver.save(mesh, filename) [/gdscript] [csharp] using Godot; @@ -103,7 +103,7 @@ var mesh = new ArrayMesh(); // Fill the Mesh with data read in "file", left as an exercise to the reader. String filename = savePath + "." + GetSaveExtension(); - return (int)ResourceSaver.Save(filename, mesh); + return (int)ResourceSaver.Save(mesh, filename); } } [/csharp] diff --git a/doc/classes/EditorInspector.xml b/doc/classes/EditorInspector.xml index 280a7bf34a..a1a43dd5bf 100644 --- a/doc/classes/EditorInspector.xml +++ b/doc/classes/EditorInspector.xml @@ -13,6 +13,14 @@ </description> <tutorials> </tutorials> + <methods> + <method name="get_selected_path" qualifiers="const"> + <return type="String" /> + <description> + Gets the path of the currently selected property. + </description> + </method> + </methods> <members> <member name="horizontal_scroll_mode" type="int" setter="set_horizontal_scroll_mode" getter="get_horizontal_scroll_mode" overrides="ScrollContainer" enum="ScrollContainer.ScrollMode" default="0" /> </members> diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml index 3c0d3ec6be..27cf410c15 100644 --- a/doc/classes/EditorPlugin.xml +++ b/doc/classes/EditorPlugin.xml @@ -64,8 +64,8 @@ if event is InputEventMouseMotion: # Redraw viewport when cursor is moved. update_overlays() - return true - return false + return EditorPlugin.AFTER_GUI_INPUT_STOP + return EditorPlugin.AFTER_GUI_INPUT_PASS [/gdscript] [csharp] public override void _Forward3dDrawOverViewport(Godot.Control overlay) @@ -74,15 +74,15 @@ overlay.DrawCircle(overlay.GetLocalMousePosition(), 64, Colors.White); } - public override bool _Forward3dGuiInput(Godot.Camera3D camera, InputEvent @event) + public override EditorPlugin.AfterGUIInput _Forward3dGuiInput(Godot.Camera3D camera, InputEvent @event) { if (@event is InputEventMouseMotion) { // Redraw viewport when cursor is moved. UpdateOverlays(); - return true; + return EditorPlugin.AFTER_GUI_INPUT_STOP; } - return false; + return EditorPlugin.AFTER_GUI_INPUT_PASS; [/csharp] [/codeblocks] </description> @@ -100,33 +100,33 @@ <param index="0" name="viewport_camera" type="Camera3D" /> <param index="1" name="event" type="InputEvent" /> <description> - Called when there is a root node in the current edited scene, [method _handles] is implemented and an [InputEvent] happens in the 3D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [param event], otherwise forwards [param event] to other Editor classes. Example: + Called when there is a root node in the current edited scene, [method _handles] is implemented, and an [InputEvent] happens in the 3D viewport. The return value decides whether the [InputEvent] is consumed or forwarded to other [EditorPlugin]s. See [enum AfterGUIInput] for options. Example: [codeblocks] [gdscript] - # Prevents the InputEvent to reach other Editor classes. + # Prevents the InputEvent from reaching other Editor classes. func _forward_3d_gui_input(camera, event): return EditorPlugin.AFTER_GUI_INPUT_STOP [/gdscript] [csharp] - // Prevents the InputEvent to reach other Editor classes. - public override bool _Forward3dGuiInput(Camera3D camera, InputEvent @event) + // Prevents the InputEvent from reaching other Editor classes. + public override EditorPlugin.AfterGUIInput _Forward3dGuiInput(Camera3D camera, InputEvent @event) { return EditorPlugin.AFTER_GUI_INPUT_STOP; } [/csharp] [/codeblocks] - Must [code]return false[/code] in order to forward the [InputEvent] to other Editor classes. Example: + Must [code]return EditorPlugin.AFTER_GUI_INPUT_PASS[/code] in order to forward the [InputEvent] to other Editor classes. Example: [codeblocks] [gdscript] # Consumes InputEventMouseMotion and forwards other InputEvent types. func _forward_3d_gui_input(camera, event): - return event is InputEventMouseMotion + return EditorPlugin.AFTER_GUI_INPUT_STOP if event is InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS [/gdscript] [csharp] // Consumes InputEventMouseMotion and forwards other InputEvent types. - public override bool _Forward3dGuiInput(Camera3D camera, InputEvent @event) + public override EditorPlugin.AfterGUIInput _Forward3dGuiInput(Camera3D camera, InputEvent @event) { - return @event is InputEventMouseMotion; + return @event is InputEventMouseMotion ? EditorPlugin.AFTER_GUI_INPUT_STOP : EditorPlugin.AFTER_GUI_INPUT_PASS; } [/csharp] [/codeblocks] @@ -185,12 +185,12 @@ Called when there is a root node in the current edited scene, [method _handles] is implemented and an [InputEvent] happens in the 2D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [param event], otherwise forwards [param event] to other Editor classes. Example: [codeblocks] [gdscript] - # Prevents the InputEvent to reach other Editor classes. + # Prevents the InputEvent from reaching other Editor classes. func _forward_canvas_gui_input(event): return true [/gdscript] [csharp] - // Prevents the InputEvent to reach other Editor classes. + // Prevents the InputEvent from reaching other Editor classes. public override bool ForwardCanvasGuiInput(InputEvent @event) { return true; @@ -237,7 +237,7 @@ # 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") + return get_editor_interface().get_base_control().get_theme_icon("Node", "EditorIcons") [/gdscript] [csharp] public override Texture2D GetPluginIcon() @@ -245,7 +245,7 @@ // You can use a custom icon: return ResourceLoader.Load<Texture2D>("res://addons/my_plugin/my_plugin_icon.svg"); // Or use a built-in icon: - return GetEditorInterface().GetBaseControl().GetIcon("Node", "EditorIcons"); + return GetEditorInterface().GetBaseControl().GetThemeIcon("Node", "EditorIcons"); } [/csharp] [/codeblocks] @@ -755,5 +755,14 @@ <constant name="DOCK_SLOT_MAX" value="8" enum="DockSlot"> Represents the size of the [enum DockSlot] enum. </constant> + <constant name="AFTER_GUI_INPUT_PASS" value="0" enum="AfterGUIInput"> + Forwards the [InputEvent] to other EditorPlugins. + </constant> + <constant name="AFTER_GUI_INPUT_STOP" value="1" enum="AfterGUIInput"> + Prevents the [InputEvent] from reaching other Editor classes. + </constant> + <constant name="AFTER_GUI_INPUT_CUSTOM" value="2" enum="AfterGUIInput"> + Pass the [InputEvent] to other editor plugins except the main [Node3D] one. This can be used to prevent node selection changes and work with sub-gizmos instead. + </constant> </constants> </class> diff --git a/doc/classes/EditorProperty.xml b/doc/classes/EditorProperty.xml index 7bac4bf7ac..9170c449bf 100644 --- a/doc/classes/EditorProperty.xml +++ b/doc/classes/EditorProperty.xml @@ -9,6 +9,13 @@ <tutorials> </tutorials> <methods> + <method name="_set_read_only" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="read_only" type="bool" /> + <description> + Called when the read-only status of the property is changed. It may be used to change custom controls into a read-only or modifiable state. + </description> + </method> <method name="_update_property" qualifiers="virtual"> <return type="void" /> <description> diff --git a/doc/classes/EditorScenePostImport.xml b/doc/classes/EditorScenePostImport.xml index 395b094bf2..2bf2accf17 100644 --- a/doc/classes/EditorScenePostImport.xml +++ b/doc/classes/EditorScenePostImport.xml @@ -8,7 +8,7 @@ The [method _post_import] callback receives the imported scene's root node and returns the modified version of the scene. Usage example: [codeblocks] [gdscript] - tool # Needed so it runs in editor. + @tool # Needed so it runs in editor. extends EditorScenePostImport # This sample changes all node names. # Called right after the scene is imported and gets the root node. diff --git a/doc/classes/EditorScript.xml b/doc/classes/EditorScript.xml index 2ff8a7ba2a..dfc04c9cde 100644 --- a/doc/classes/EditorScript.xml +++ b/doc/classes/EditorScript.xml @@ -9,7 +9,7 @@ [b]Example script:[/b] [codeblocks] [gdscript] - tool + @tool extends EditorScript func _run(): diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml index 329cd3fe63..7f3ffce9b7 100644 --- a/doc/classes/EditorSettings.xml +++ b/doc/classes/EditorSettings.xml @@ -314,8 +314,8 @@ <member name="editors/3d/navigation/navigation_scheme" type="int" setter="" getter=""> The navigation scheme to use in the 3D editor. Changing this setting will affect the mouse buttons that must be held down to perform certain operations in the 3D editor viewport. - [b]Godot[/b] Middle mouse button to orbit, [kbd]Shift + Middle mouse button[/kbd] to pan. [kbd]Mouse wheel[/kbd] to zoom. - - [b]Maya:[/b] [kbd]Alt + Left mouse buttton[/kbd] to orbit. [kbd]Middle mouse button[/kbd] to pan, [kbd]Shift + Middle mouse button[/kbd] to pan 10 times faster. [kbd]Mouse wheel[/kbd] to zoom. - - [b]Modo:[/b] [kbd]Alt + Left mouse buttton[/kbd] to orbit. [kbd]Alt + Shift + Left mouse button[/kbd] to pan. [kbd]Ctrl + Alt + Left mouse button[/kbd] to zoom. + - [b]Maya:[/b] [kbd]Alt + Left mouse button[/kbd] to orbit. [kbd]Middle mouse button[/kbd] to pan, [kbd]Shift + Middle mouse button[/kbd] to pan 10 times faster. [kbd]Mouse wheel[/kbd] to zoom. + - [b]Modo:[/b] [kbd]Alt + Left mouse button[/kbd] to orbit. [kbd]Alt + Shift + Left mouse button[/kbd] to pan. [kbd]Ctrl + Alt + Left mouse button[/kbd] to zoom. See also [member editors/3d/freelook/freelook_navigation_scheme]. [b]Note:[/b] On certain window managers on Linux, the [kbd]Alt[/kbd] key will be intercepted by the window manager when clicking a mouse button at the same time. This means Godot will not see the modifier key as being pressed. </member> @@ -405,7 +405,7 @@ If [code]true[/code], allows panning by holding down [kbd]Space[/kbd] in the 2D editor viewport (in addition to panning with the middle or right mouse buttons). If [code]false[/code], the left mouse button must be held down while holding down [kbd]Space[/kbd] to pan in the 2D editor viewport. </member> <member name="editors/panning/sub_editors_panning_scheme" type="int" setter="" getter=""> - Controls whether the mouse wheel scroll zooms or pans in subeditors. The list of affected subeditors is: animation blend tree editor, [Polygon2D] editor, tileset editor, texture region editor, visual shader editor and visual script editor. See also [member editors/panning/2d_editor_panning_scheme] and [member editors/panning/animation_editors_panning_scheme]. + Controls whether the mouse wheel scroll zooms or pans in subeditors. The list of affected subeditors is: animation blend tree editor, [Polygon2D] editor, tileset editor, texture region editor and visual shader editor. See also [member editors/panning/2d_editor_panning_scheme] and [member editors/panning/animation_editors_panning_scheme]. </member> <member name="editors/panning/warped_mouse_panning" type="bool" setter="" getter=""> If [code]true[/code], warps the mouse around the 2D viewport while panning in the 2D editor. This makes it possible to pan over a large area without having to exit panning then mouse the mouse back constantly. @@ -424,10 +424,10 @@ [b]Note:[/b] Only effective if [member editors/tiles_editor/display_grid] is [code]true[/code]. </member> <member name="editors/visual_editors/lines_curvature" type="float" setter="" getter=""> - The curvature to use for connection lines in the visual script and visual shader editors. Higher values will make connection lines appear more curved, with values above [code]0.5[/code] resulting in more "angular" turns in the middle of connection lines. + The curvature to use for connection lines in the visual shader editor. Higher values will make connection lines appear more curved, with values above [code]0.5[/code] resulting in more "angular" turns in the middle of connection lines. </member> <member name="editors/visual_editors/minimap_opacity" type="float" setter="" getter=""> - The opacity of the minimap displayed in the bottom-right corner of the visual script and visual shader editors. + The opacity of the minimap displayed in the bottom-right corner of the visual shader editor. </member> <member name="editors/visual_editors/visual_shader/port_preview_size" type="int" setter="" getter=""> The size to use for port previews in the visual shader uniforms (toggled by clicking the "eye" icon next to an output). The value is defined in pixels at 100% zoom, and will scale with zoom automatically. diff --git a/doc/classes/EditorTranslationParserPlugin.xml b/doc/classes/EditorTranslationParserPlugin.xml index d028996db8..df10c645ef 100644 --- a/doc/classes/EditorTranslationParserPlugin.xml +++ b/doc/classes/EditorTranslationParserPlugin.xml @@ -11,7 +11,7 @@ Below shows an example of a custom parser that extracts strings from a CSV file to write into a POT. [codeblocks] [gdscript] - tool + @tool extends EditorTranslationParserPlugin func _parse_file(path, msgids, msgids_context_plural): @@ -72,7 +72,7 @@ msgidsContextPlural.Add(new Godot.Collections.Array{"Only with context", "a friendly context", ""}); [/csharp] [/codeblocks] - [b]Note:[/b] If you override parsing logic for standard script types (GDScript, C#, etc.), it would be better to load the [code]path[/code] argument using [method ResourceLoader.load]. This is because built-in scripts are loaded as [Resource] type, not [File] type. + [b]Note:[/b] If you override parsing logic for standard script types (GDScript, C#, etc.), it would be better to load the [code]path[/code] argument using [method ResourceLoader.load]. This is because built-in scripts are loaded as [Resource] type, not [FileAccess] type. For example: [codeblocks] [gdscript] diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml index 301a3e55fb..2b8663e039 100644 --- a/doc/classes/Engine.xml +++ b/doc/classes/Engine.xml @@ -14,12 +14,20 @@ <description> Returns the name of the CPU architecture the Godot binary was built for. Possible return values are [code]x86_64[/code], [code]x86_32[/code], [code]arm64[/code], [code]armv7[/code], [code]rv64[/code], [code]riscv[/code], [code]ppc64[/code], [code]ppc[/code], [code]wasm64[/code] and [code]wasm32[/code]. To detect whether the current CPU architecture is 64-bit, you can use the fact that all 64-bit architecture names have [code]64[/code] in their name: - [codeblock] + [codeblocks] + [gdscript] if "64" in Engine.get_architecture_name(): print("Running on 64-bit CPU.") else: print("Running on 32-bit CPU.") - [/codeblock] + [/gdscript] + [csharp] + if (Engine.GetArchitectureName().Contains("64")) + GD.Print("Running on 64-bit CPU."); + else + GD.Print("Running on 32-bit CPU."); + [/csharp] + [/codeblocks] [b]Note:[/b] [method get_architecture_name] does [i]not[/i] return the name of the host CPU architecture. For example, if running an x86_32 Godot binary on a x86_64 system, the returned value will be [code]x86_32[/code]. </description> </method> @@ -83,11 +91,24 @@ <description> Returns the total number of frames passed since engine initialization which is advanced on each [b]physics frame[/b]. See also [method get_process_frames]. [method get_physics_frames] can be used to run expensive logic less often without relying on a [Timer]: - [codeblock] + [codeblocks] + [gdscript] func _physics_process(_delta): if Engine.get_physics_frames() % 2 == 0: pass # Run expensive logic only once every 2 physics frames here. - [/codeblock] + [/gdscript] + [csharp] + public override void _PhysicsProcess(double delta) + { + base._PhysicsProcess(delta); + + if (Engine.GetPhysicsFrames() % 2 == 0) + { + // Run expensive logic only once every 2 physics frames here. + } + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_physics_interpolation_fraction" qualifiers="const"> @@ -101,11 +122,24 @@ <description> Returns the total number of frames passed since engine initialization which is advanced on each [b]process frame[/b], regardless of whether the render loop is enabled. See also [method get_frames_drawn] and [method get_physics_frames]. [method get_process_frames] can be used to run expensive logic less often without relying on a [Timer]: - [codeblock] + [codeblocks] + [gdscript] func _process(_delta): if Engine.get_process_frames() % 2 == 0: pass # Run expensive logic only once every 2 process (render) frames here. - [/codeblock] + [/gdscript] + [csharp] + public override void _Process(double delta) + { + base._Process(delta); + + if (Engine.GetProcessFrames() % 2 == 0) + { + // Run expensive logic only once every 2 physics frames here. + } + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_script_language" qualifiers="const"> @@ -182,12 +216,20 @@ <return type="bool" /> <description> Returns [code]true[/code] if the script is currently running inside the editor, [code]false[/code] otherwise. This is useful for [code]@tool[/code] scripts to conditionally draw editor helpers, or prevent accidentally running "game" code that would affect the scene state while in the editor: - [codeblock] + [codeblocks] + [gdscript] if Engine.is_editor_hint(): draw_gizmos() else: simulate_physics() - [/codeblock] + [/gdscript] + [csharp] + if (Engine.IsEditorHint()) + DrawGizmos(); + else + SimulatePhysics(); + [/csharp] + [/codeblocks] See [url=$DOCS_URL/tutorials/plugins/running_code_in_the_editor.html]Running code in the editor[/url] in the documentation for more information. [b]Note:[/b] To detect whether the script is run from an editor [i]build[/i] (e.g. when pressing [kbd]F5[/kbd]), use [method OS.has_feature] with the [code]"editor"[/code] argument instead. [code]OS.has_feature("editor")[/code] will evaluate to [code]true[/code] both when the code is running in the editor and when running the project from the editor, but it will evaluate to [code]false[/code] when the code is run from an exported project. </description> @@ -219,12 +261,20 @@ </method> </methods> <members> + <member name="max_fps" type="int" setter="set_max_fps" getter="get_max_fps" default="0"> + The maximum number of frames per second that can be rendered. A value of [code]0[/code] means "no limit". The actual number of frames per second may still be below this value if the CPU or GPU cannot keep up with the project logic and rendering. + Limiting the FPS can be useful to reduce system power consumption, which reduces heat and noise emissions (and improves battery life on mobile devices). + If [member ProjectSettings.display/window/vsync/vsync_mode] is [code]Enabled[/code] or [code]Adaptive[/code], it takes precedence and the forced FPS number cannot exceed the monitor's refresh rate. + If [member ProjectSettings.display/window/vsync/vsync_mode] is [code]Enabled[/code], on monitors with variable refresh rate enabled (G-Sync/FreeSync), using a FPS limit a few frames lower than the monitor's refresh rate will [url=https://blurbusters.com/howto-low-lag-vsync-on/]reduce input lag while avoiding tearing[/url]. + If [member ProjectSettings.display/window/vsync/vsync_mode] is [code]Disabled[/code], limiting the FPS to a high value that can be consistently reached on the system can reduce input lag compared to an uncapped framerate. Since this works by ensuring the GPU load is lower than 100%, this latency reduction is only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked scenarios. + See also [member physics_ticks_per_second] and [member ProjectSettings.application/run/max_fps]. + </member> <member name="physics_jitter_fix" type="float" setter="set_physics_jitter_fix" getter="get_physics_jitter_fix" default="0.5"> 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 the in-game clock and real clock but 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. [b]Note:[/b] For best results, when using a custom physics interpolation solution, the physics jitter fix should be disabled by setting [member physics_jitter_fix] to [code]0[/code]. </member> <member name="physics_ticks_per_second" type="int" setter="set_physics_ticks_per_second" getter="get_physics_ticks_per_second" default="60"> - 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 collision tunneling issues, but keep in mind doing so will increase CPU usage. See also [member target_fps] and [member ProjectSettings.physics/common/physics_ticks_per_second]. + 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 collision tunneling issues, but keep in mind doing so will increase CPU usage. See also [member max_fps] and [member ProjectSettings.physics/common/physics_ticks_per_second]. [b]Note:[/b] Only 8 physics ticks may be simulated per rendered frame at most. If more than 8 physics ticks have to be simulated per rendered frame to keep up with rendering, the game will appear to slow down (even if [code]delta[/code] is used consistently in physics calculations). Therefore, it is recommended not to increase [member physics_ticks_per_second] above 240. Otherwise, the game will slow down when the rendering framerate goes below 30 FPS. </member> <member name="print_error_messages" type="bool" setter="set_print_error_messages" getter="is_printing_error_messages" default="true"> @@ -232,9 +282,6 @@ [b]Warning:[/b] If you set this to [code]false[/code] anywhere in the project, important error messages may be hidden even if they are emitted from other scripts. If this is set to [code]false[/code] in a [code]@tool[/code] script, this will also impact the editor itself. Do [i]not[/i] report bugs before ensuring error messages are enabled (as they are by default). [b]Note:[/b] This property does not impact the editor's Errors tab when running a project from the editor. </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. See also [member physics_ticks_per_second] and [member ProjectSettings.debug/settings/fps/force_fps]. - </member> <member name="time_scale" type="float" setter="set_time_scale" getter="get_time_scale" default="1.0"> Controls how fast or slow the in-game clock ticks versus the real life one. It defaults to 1.0. A value of 2.0 means the game moves twice as fast as real life, whilst a value of 0.5 means the game moves at half the regular speed. </member> diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml index 695f2cbc66..243a28e73d 100644 --- a/doc/classes/Environment.xml +++ b/doc/classes/Environment.xml @@ -86,7 +86,7 @@ This is useful to simulate [url=https://en.wikipedia.org/wiki/Aerial_perspective]aerial perspective[/url] in large scenes with low density fog. However, it is not very useful for high-density fog, as the sky will shine through. When set to [code]1.0[/code], the fog color comes completely from the [Sky]. If set to [code]0.0[/code], aerial perspective is disabled. </member> <member name="fog_density" type="float" setter="set_fog_density" getter="get_fog_density" default="0.01"> - The exponential fog density to use. Higher values result in a more dense fog. + The [i]exponential[/i] fog density to use. Higher values result in a more dense fog. Fog rendering is exponential as in real life. </member> <member name="fog_enabled" type="bool" setter="set_fog_enabled" getter="is_fog_enabled" default="false"> If [code]true[/code], fog effects are enabled. @@ -292,13 +292,15 @@ The [Color] of the volumetric fog when interacting with lights. Mist and fog have an albedo close to [code]Color(1, 1, 1, 1)[/code] while smoke has a darker albedo. </member> <member name="volumetric_fog_ambient_inject" type="float" setter="set_volumetric_fog_ambient_inject" getter="get_volumetric_fog_ambient_inject" default="0.0"> - Scales the strength of ambient light used in the volumetric fog. A value of [code]0[/code] means that ambient light will not impact the volumetric fog. + Scales the strength of ambient light used in the volumetric fog. A value of [code]0.0[/code] means that ambient light will not impact the volumetric fog. [member volumetric_fog_ambient_inject] has a small performance cost when set above [code]0.0[/code]. + [b]Note:[/b] This has no visible effect if [member volumetric_fog_density] is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black color. </member> <member name="volumetric_fog_anisotropy" type="float" setter="set_volumetric_fog_anisotropy" getter="get_volumetric_fog_anisotropy" default="0.2"> - The direction of scattered light as it goes through the volumetric fog. A value close [code]1[/code] means almost all light is scattered forward. A value close to [code]0[/code] means light is scattered equally in all directions. A value close to [code]-1[/code] means light is scattered mostly backward. Fog and mist scatter light slightly forward, while smoke scatters light equally in all directions. + The direction of scattered light as it goes through the volumetric fog. A value close to [code]1.0[/code] means almost all light is scattered forward. A value close to [code]0.0[/code] means light is scattered equally in all directions. A value close to [code]-1.0[/code] means light is scattered mostly backward. Fog and mist scatter light slightly forward, while smoke scatters light equally in all directions. </member> <member name="volumetric_fog_density" type="float" setter="set_volumetric_fog_density" getter="get_volumetric_fog_density" default="0.05"> - The base density of the volumetric fog. Set this to the lowest density you want to have globally. + The base [i]exponential[/i] density of the volumetric fog. Set this to the lowest density you want to have globally. [FogVolume]s can be used to add to or subtract from this density in specific areas. Fog rendering is exponential as in real life. + A value of [code]0.0[/code] disables global volumetric fog while allowing [FogVolume]s to display volumetric fog in specific areas. </member> <member name="volumetric_fog_detail_spread" type="float" setter="set_volumetric_fog_detail_spread" getter="get_volumetric_fog_detail_spread" default="2.0"> The distribution of size down the length of the froxel buffer. A higher value compresses the froxels closer to the camera and places more detail closer to the camera. @@ -311,22 +313,25 @@ </member> <member name="volumetric_fog_enabled" type="bool" setter="set_volumetric_fog_enabled" getter="is_volumetric_fog_enabled" default="false"> Enables the volumetric fog effect. Volumetric fog uses a screen-aligned froxel buffer to calculate accurate volumetric scattering in the short to medium range. Volumetric fog interacts with [FogVolume]s and lights to calculate localized and global fog. Volumetric fog uses a PBR single-scattering model based on extinction, scattering, and emission which it exposes to users as density, albedo, and emission. + [b]Note:[/b] Volumetric fog is only available in the forward plus renderer. It is not available in the mobile renderer or the compatibility renderer. </member> <member name="volumetric_fog_gi_inject" type="float" setter="set_volumetric_fog_gi_inject" getter="get_volumetric_fog_gi_inject" default="1.0"> - Scales the strength of Global Illumination used in the volumetric fog. A value of [code]0.0[/code] means that Global Illumination will not impact the volumetric fog. + Scales the strength of Global Illumination used in the volumetric fog's albedo color. A value of [code]0.0[/code] means that Global Illumination will not impact the volumetric fog. [member volumetric_fog_gi_inject] has a small performance cost when set above [code]0.0[/code]. + [b]Note:[/b] This has no visible effect if [member volumetric_fog_density] is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black color. [b]Note:[/b] Only [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) are taken into account when using [member volumetric_fog_gi_inject]. Global illumination from [LightmapGI], [ReflectionProbe] and SSIL (see [member ssil_enabled]) will be ignored by volumetric fog. </member> <member name="volumetric_fog_length" type="float" setter="set_volumetric_fog_length" getter="get_volumetric_fog_length" default="64.0"> - The distance over which the volumetric fog is computed. Increase to compute fog over a greater range, decrease to add more detail when a long range is not needed. For best quality fog, keep this as low as possible. + The distance over which the volumetric fog is computed. Increase to compute fog over a greater range, decrease to add more detail when a long range is not needed. For best quality fog, keep this as low as possible. See also [member ProjectSettings.rendering/environment/volumetric_fog/volume_depth]. </member> <member name="volumetric_fog_sky_affect" type="float" setter="set_volumetric_fog_sky_affect" getter="get_volumetric_fog_sky_affect" default="1.0"> The factor to use when affecting the sky with volumetric fog. [code]1.0[/code] means that volumetric fog can fully obscure the sky. Lower values reduce the impact of volumetric fog on sky rendering, with [code]0.0[/code] not affecting sky rendering at all. + [b]Note:[/b] [member volumetric_fog_sky_affect] also affects [FogVolume]s, even if [member volumetric_fog_density] is [code]0.0[/code]. If you notice [FogVolume]s are disappearing when looking towards the sky, set [member volumetric_fog_sky_affect] to [code]1.0[/code]. </member> <member name="volumetric_fog_temporal_reprojection_amount" type="float" setter="set_volumetric_fog_temporal_reprojection_amount" getter="get_volumetric_fog_temporal_reprojection_amount" default="0.9"> The amount by which to blend the last frame with the current frame. A higher number results in smoother volumetric fog, but makes "ghosting" much worse. A lower value reduces ghosting but can result in the per-frame temporal jitter becoming visible. </member> <member name="volumetric_fog_temporal_reprojection_enabled" type="bool" setter="set_volumetric_fog_temporal_reprojection_enabled" getter="is_volumetric_fog_temporal_reprojection_enabled" default="true"> - Enables temporal reprojection in the volumetric fog. Temporal reprojection blends the current frame's volumetric fog with the last frame's volumetric fog to smooth out jagged edges. The performance cost is minimal, however it does lead to moving [FogVolume]s and [Light3D]s "ghosting" and leaving a trail behind them. When temporal reprojection is enabled, try to avoid moving [FogVolume]s or [Light3D]s too fast. + Enables temporal reprojection in the volumetric fog. Temporal reprojection blends the current frame's volumetric fog with the last frame's volumetric fog to smooth out jagged edges. The performance cost is minimal; however, it leads to moving [FogVolume]s and [Light3D]s "ghosting" and leaving a trail behind them. When temporal reprojection is enabled, try to avoid moving [FogVolume]s or [Light3D]s too fast. Short-lived dynamic lighting effects should have [member Light3D.light_volumetric_fog_energy] set to [code]0.0[/code] to avoid ghosting. </member> </members> <constants> diff --git a/doc/classes/File.xml b/doc/classes/FileAccess.xml index 76c6a4871c..e52f897164 100644 --- a/doc/classes/File.xml +++ b/doc/classes/FileAccess.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="File" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="FileAccess" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Type to handle file reading and writing operations. </brief_description> @@ -9,39 +9,42 @@ [codeblocks] [gdscript] func save(content): - var file = File.new() - file.open("user://save_game.dat", File.WRITE) + var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE) file.store_string(content) - file.close() func load(): - var file = File.new() - file.open("user://save_game.dat", File.READ) + var file = FileAccess.open("user://save_game.dat", FileAccess.READ) var content = file.get_as_text() - file.close() return content [/gdscript] [csharp] public void Save(string content) { - var file = new File(); - file.Open("user://save_game.dat", File.ModeFlags.Write); + using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Write); file.StoreString(content); - file.Close(); } public string Load() { - var file = new File(); - file.Open("user://save_game.dat", File.ModeFlags.Read); + using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Read); string content = file.GetAsText(); - file.Close(); return content; } [/csharp] [/codeblocks] In the example above, the file will be saved in the user data folder as specified in the [url=$DOCS_URL/tutorials/io/data_paths.html]Data paths[/url] documentation. - [b]Note:[/b] To access project resources once exported, it is recommended to use [ResourceLoader] instead of the [File] API, as some files are converted to engine-specific formats and their original source files might not be present in the exported PCK package. + There is no method to close a file in order to free it from use. Instead, [FileAccess] will close when it's freed, which happens when it goes out of scope or when it gets assigned with [code]null[/code]. In C# the reference must be disposed after we are done using it, this can be done with the [code]using[/code] statement or calling the [code]Dispose[/code] method directly. + [codeblocks] + [gdscript] + var file = FileAccess.open("res://something") # File is opened and locked for use. + file = null # File is closed. + [/gdscript] + [csharp] + using var file = FileAccess.Open("res://something"); // File is opened and locked for use. + // The using statement calls Dispose when going out of scope. + [/csharp] + [/codeblocks] + [b]Note:[/b] To access project resources once exported, it is recommended to use [ResourceLoader] instead of the [FileAccess] API, as some files are converted to engine-specific formats and their original source files might not be present in the exported PCK package. [b]Note:[/b] Files are automatically closed only if the process exits "normally" (such as by clicking the window manager's close button or pressing [b]Alt + F4[/b]). If you stop the project execution by pressing [b]F8[/b] while the project is running, the file won't be closed as the game process will be killed. You can work around this by calling [method flush] at regular intervals. </description> <tutorials> @@ -49,12 +52,6 @@ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link> </tutorials> <methods> - <method name="close"> - <return type="void" /> - <description> - Closes the currently opened file and prevents subsequent read/write operations. Use [method flush] to persist the data to disk without closing the file. - </description> - </method> <method name="eof_reached" qualifiers="const"> <return type="bool" /> <description> @@ -80,12 +77,13 @@ <description> Returns [code]true[/code] if the file exists in the given path. [b]Note:[/b] Many resources types are imported (e.g. textures or sound files), and their source asset will not be included in the exported game, as only the imported version is used. See [method ResourceLoader.exists] for an alternative approach that takes resource remapping into account. + For a non-static, relative equivalent, use [method DirAccess.file_exists]. </description> </method> <method name="flush"> <return type="void" /> <description> - Writes the file's buffer to disk. Flushing is automatically performed when the file is closed. This means you don't need to call [method flush] manually before closing a file using [method close]. Still, calling [method flush] can be used to ensure the data is safe even if the project crashes instead of being closed gracefully. + Writes the file's buffer to disk. Flushing is automatically performed when the file is closed. This means you don't need to call [method flush] manually before closing a file. Still, calling [method flush] can be used to ensure the data is safe even if the project crashes instead of being closed gracefully. [b]Note:[/b] Only call [method flush] when you actually need it. Otherwise, it will decrease performance due to constant disk writes. </description> </method> @@ -174,20 +172,26 @@ Text is interpreted as being UTF-8 encoded. </description> </method> - <method name="get_md5" qualifiers="const"> + <method name="get_md5" qualifiers="static"> <return type="String" /> <param index="0" name="path" type="String" /> <description> Returns an MD5 String representing the file at the given path or an empty [String] on failure. </description> </method> - <method name="get_modified_time" qualifiers="const"> + <method name="get_modified_time" qualifiers="static"> <return type="int" /> <param index="0" name="file" type="String" /> <description> Returns the last time the [param file] was modified in Unix timestamp format or returns a [String] "ERROR IN [code]file[/code]". This Unix timestamp can be converted to another format using the [Time] singleton. </description> </method> + <method name="get_open_error" qualifiers="static"> + <return type="int" enum="Error" /> + <description> + Returns the result of the last [method open] call in the current thread. + </description> + </method> <method name="get_pascal_string"> <return type="String" /> <description> @@ -219,7 +223,7 @@ Returns the next bits from the file as a floating-point number. </description> </method> - <method name="get_sha256" qualifiers="const"> + <method name="get_sha256" qualifiers="static"> <return type="String" /> <param index="0" name="path" type="String" /> <description> @@ -240,41 +244,45 @@ Returns [code]true[/code] if the file is currently opened. </description> </method> - <method name="open"> - <return type="int" enum="Error" /> + <method name="open" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="flags" type="int" enum="File.ModeFlags" /> + <param index="1" name="flags" type="int" enum="FileAccess.ModeFlags" /> <description> - Opens the file for writing or reading, depending on the flags. + Creates a new [FileAccess] object and opens the file for writing or reading, depending on the flags. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that occurred. </description> </method> - <method name="open_compressed"> - <return type="int" enum="Error" /> + <method name="open_compressed" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="mode_flags" type="int" enum="File.ModeFlags" /> - <param index="2" name="compression_mode" type="int" enum="File.CompressionMode" default="0" /> + <param index="1" name="mode_flags" type="int" enum="FileAccess.ModeFlags" /> + <param index="2" name="compression_mode" type="int" enum="FileAccess.CompressionMode" default="0" /> <description> - Opens a compressed file for reading or writing. + Creates a new [FileAccess] object and opens a compressed file for reading or writing. [b]Note:[/b] [method open_compressed] can only read files that were saved by Godot, not third-party compression formats. See [url=https://github.com/godotengine/godot/issues/28999]GitHub issue #28999[/url] for a workaround. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that occurred. </description> </method> - <method name="open_encrypted"> - <return type="int" enum="Error" /> + <method name="open_encrypted" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="mode_flags" type="int" enum="File.ModeFlags" /> + <param index="1" name="mode_flags" type="int" enum="FileAccess.ModeFlags" /> <param index="2" name="key" type="PackedByteArray" /> <description> - Opens an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it. + Creates a new [FileAccess] object and opens an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it. [b]Note:[/b] The provided key must be 32 bytes long. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that occurred. </description> </method> - <method name="open_encrypted_with_pass"> - <return type="int" enum="Error" /> + <method name="open_encrypted_with_pass" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="mode_flags" type="int" enum="File.ModeFlags" /> + <param index="1" name="mode_flags" type="int" enum="FileAccess.ModeFlags" /> <param index="2" name="pass" type="String" /> <description> - Opens an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it. + Creates a new [FileAccess] object and opens an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that occurred. </description> </method> <method name="seek"> @@ -308,8 +316,7 @@ return (unsigned + MAX_15B) % MAX_16B - MAX_15B func _ready(): - var f = File.new() - f.open("user://file.dat", File.WRITE_READ) + var f = FileAccess.open("user://file.dat", FileAccess.WRITE_READ) f.store_16(-42) # This wraps around and stores 65494 (2^16 - 42). f.store_16(121) # In bounds, will store 121. f.seek(0) # Go back to start to read the stored value. @@ -321,8 +328,7 @@ [csharp] public override void _Ready() { - var f = new File(); - f.Open("user://file.dat", File.ModeFlags.WriteRead); + using var f = FileAccess.Open("user://file.dat", FileAccess.ModeFlags.WriteRead); f.Store16(unchecked((ushort)-42)); // This wraps around and stores 65494 (2^16 - 42). f.Store16(121); // In bounds, will store 121. f.Seek(0); // Go back to start to read the stored value. @@ -432,7 +438,7 @@ </method> </methods> <members> - <member name="big_endian" type="bool" setter="set_big_endian" getter="is_big_endian" default="false"> + <member name="big_endian" type="bool" setter="set_big_endian" getter="is_big_endian"> If [code]true[/code], the file is read with big-endian [url=https://en.wikipedia.org/wiki/Endianness]endianness[/url]. If [code]false[/code], the file is read with little-endian endianness. If in doubt, leave this to [code]false[/code] as most files are written with little-endian endianness. [b]Note:[/b] [member big_endian] is only about the file format, not the CPU type. The CPU endianness doesn't affect the default endianness for files written. [b]Note:[/b] This is always reset to [code]false[/code] whenever you open the file. Therefore, you must set [member big_endian] [i]after[/i] opening the file, not before. diff --git a/doc/classes/FogMaterial.xml b/doc/classes/FogMaterial.xml index e63d4ddf3e..7428d6169a 100644 --- a/doc/classes/FogMaterial.xml +++ b/doc/classes/FogMaterial.xml @@ -5,27 +5,28 @@ </brief_description> <description> A [Material] resource that can be used by [FogVolume]s to draw volumetric effects. + If you need more advanced effects, use a custom [url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]fog shader[/url]. </description> <tutorials> </tutorials> <members> <member name="albedo" type="Color" setter="set_albedo" getter="get_albedo" default="Color(1, 1, 1, 1)"> - Sets the single-scattering [Color] of the [FogVolume]. Internally [member albedo] is converted into single-scattering which is additively blended with other [FogVolume]s and the [member Environment.volumetric_fog_albedo]. + The single-scattering [Color] of the [FogVolume]. Internally, [member albedo] is converted into single-scattering, which is additively blended with other [FogVolume]s and the [member Environment.volumetric_fog_albedo]. </member> <member name="density" type="float" setter="set_density" getter="get_density" default="1.0"> - Sets the density of the [FogVolume]. Denser objects are more opaque, but may suffer from under-sampling artifacts that look like stripes. + The density of the [FogVolume]. Denser objects are more opaque, but may suffer from under-sampling artifacts that look like stripes. Negative values can be used to subtract fog from other [FogVolume]s or global volumetric fog. </member> <member name="density_texture" type="Texture3D" setter="set_density_texture" getter="get_density_texture"> - Sets a 3D texture that is used to scale the [member density] of the [FogVolume]. + The 3D texture that is used to scale the [member density] of the [FogVolume]. This can be used to vary fog density within the [FogVolume] with any kind of static pattern. For animated effects, consider using a custom [url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]fog shader[/url]. </member> <member name="edge_fade" type="float" setter="set_edge_fade" getter="get_edge_fade" default="0.1"> - Sets the hardness of the edges of the [FogVolume]. A higher number will result in softer edges while a lower number will result in harder edges. + The hardness of the edges of the [FogVolume]. A higher value will result in softer edges, while a lower value will result in harder edges. </member> <member name="emission" type="Color" setter="set_emission" getter="get_emission" default="Color(0, 0, 0, 1)"> - Sets the [Color] of the light emitted by the [FogVolume]. Emitted light will not cast light or shadows on other objects, but can be useful for modulating the [Color] of the [FogVolume] independently from light sources. + The [Color] of the light emitted by the [FogVolume]. Emitted light will not cast light or shadows on other objects, but can be useful for modulating the [Color] of the [FogVolume] independently from light sources. </member> <member name="height_falloff" type="float" setter="set_height_falloff" getter="get_height_falloff" default="0.0"> - Sets the rate by which the height-based fog decreases in density as height increases in world space. A high falloff will result in a sharp transition, while a low falloff will result in a smoother transition. A value of [code]0[/code] results in uniform-density fog. The height threshold is determined by the height of the associated [FogVolume]. + The rate by which the height-based fog decreases in density as height increases in world space. A high falloff will result in a sharp transition, while a low falloff will result in a smoother transition. A value of [code]0.0[/code] results in uniform-density fog. The height threshold is determined by the height of the associated [FogVolume]. </member> </members> </class> diff --git a/doc/classes/FogVolume.xml b/doc/classes/FogVolume.xml index 3f2ee3035c..d9fa2e6ebb 100644 --- a/doc/classes/FogVolume.xml +++ b/doc/classes/FogVolume.xml @@ -4,22 +4,23 @@ A node used to add local fog with the volumetric fog effect. </brief_description> <description> - [FogVolume]s are used to add localized fog into the global volumetric fog effect. + [FogVolume]s are used to add localized fog into the global volumetric fog effect. [FogVolume]s can also remove volumetric fog from specific areas if using a [FogMaterial] with a negative [member FogMaterial.density]. Performance of [FogVolume]s is directly related to their relative size on the screen and the complexity of their attached [FogMaterial]. It is best to keep [FogVolume]s relatively small and simple where possible. + [b]Note:[/b] [FogVolume]s only have a visible effect if [member Environment.volumetric_fog_enabled] is [code]true[/code]. If you don't want fog to be globally visible (but only within [FogVolume] nodes), set [member Environment.volumetric_fog_density] to [code]0.0[/code]. </description> <tutorials> </tutorials> <members> <member name="extents" type="Vector3" setter="set_extents" getter="get_extents" default="Vector3(1, 1, 1)"> - Sets the size of the [FogVolume] when [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX]. + The size of the [FogVolume] when [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX]. [b]Note:[/b] Thin fog volumes may appear to flicker when the camera moves or rotates. This can be alleviated by increasing [member ProjectSettings.rendering/environment/volumetric_fog/volume_depth] (at a performance cost) or by decreasing [member Environment.volumetric_fog_length] (at no performance cost, but at the cost of lower fog range). Alternatively, the [FogVolume] can be made thicker and use a lower density in the [member material]. [b]Note:[/b] If [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_CONE] or [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], the cone/cylinder will be adjusted to fit within the extents. Non-uniform scaling of cone/cylinder shapes via the [member extents] property is not supported, but you can scale the [FogVolume] node instead. </member> <member name="material" type="Material" setter="set_material" getter="get_material"> - Sets the [Material] to be used by the [FogVolume]. Can be either a [FogMaterial] or a custom [ShaderMaterial]. + The [Material] used by the [FogVolume]. Can be either a built-in [FogMaterial] or a custom [ShaderMaterial]. </member> <member name="shape" type="int" setter="set_shape" getter="get_shape" enum="RenderingServer.FogVolumeShape" default="3"> - Sets the shape of the [FogVolume] to either [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]. + The shape of the [FogVolume]. This can be set to either [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]. </member> </members> </class> diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml index ad3a16afbb..6a42b62bcf 100644 --- a/doc/classes/Font.xml +++ b/doc/classes/Font.xml @@ -228,9 +228,15 @@ <description> Returns the size of a bounding box of a single-line string, taking kerning and advance into account. See also [method get_multiline_string_size] and [method draw_string]. For example, to get the string size as displayed by a single-line Label, use: - [codeblock] + [codeblocks] + [gdscript] var string_size = $Label.get_theme_font("font").get_string_size($Label.text, HORIZONTAL_ALIGNMENT_LEFT, -1, $Label.get_theme_font_size("font_size")) - [/codeblock] + [/gdscript] + [csharp] + Label label = GetNode<Label>("Label"); + Vector2 stringSize = label.GetThemeFont("font").GetStringSize(label.Text, HorizontalAlignment.Left, -1, label.GetThemeFontSize("font_size")); + [/csharp] + [/codeblocks] [b]Note:[/b] Real height of the string is context-dependent and can be significantly different from the value returned by [method get_height]. </description> </method> diff --git a/doc/classes/Geometry2D.xml b/doc/classes/Geometry2D.xml index 392ca2cabb..0142018f1a 100644 --- a/doc/classes/Geometry2D.xml +++ b/doc/classes/Geometry2D.xml @@ -33,6 +33,13 @@ Given an array of [Vector2]s, returns the convex hull as a list of points in counterclockwise order. The last point is the same as the first one. </description> </method> + <method name="decompose_polygon_in_convex"> + <return type="PackedVector2Array[]" /> + <param index="0" name="polygon" type="PackedVector2Array" /> + <description> + Decomposes the [param polygon] into multiple convex hulls and returns an array of [PackedVector2Array]. + </description> + </method> <method name="exclude_polygons"> <return type="PackedVector2Array[]" /> <param index="0" name="polygon_a" type="PackedVector2Array" /> @@ -126,7 +133,7 @@ <return type="Dictionary" /> <param index="0" name="sizes" type="PackedVector2Array" /> <description> - Given an array of [Vector2]s representing tiles, builds an atlas. The returned dictionary has two keys: [code]points[/code] is an array of [Vector2] that specifies the positions of each tile, [code]size[/code] contains the overall size of the whole atlas as [Vector2]. + Given an array of [Vector2]s representing tiles, builds an atlas. The returned dictionary has two keys: [code]points[/code] is a [PackedVector2Array] that specifies the positions of each tile, [code]size[/code] contains the overall size of the whole atlas as [Vector2i]. </description> </method> <method name="merge_polygons"> diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml index dc093acdcd..5050ce7715 100644 --- a/doc/classes/GraphEdit.xml +++ b/doc/classes/GraphEdit.xml @@ -1,37 +1,38 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="GraphEdit" inherits="Control" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - GraphEdit is an area capable of showing various GraphNodes. It manages connection events between them. + GraphEdit is a control responsible for displaying and manipulating graph-like data using [GraphNode]s. It provides access to creation, removal, connection, and disconnection of nodes. </brief_description> <description> - GraphEdit manages the showing of GraphNodes it contains, as well as connections and disconnections between them. Signals are sent for each of these two events. Disconnection between GraphNode slots is disabled by default. - It is greatly advised to enable low-processor usage mode (see [member OS.low_processor_usage_mode]) when using GraphEdits. + GraphEdit provides tools for creation, manipulation, and display of various graphs. Its main purpose in the engine is to power the visual programming systems, such as visual shaders, but it is also available for use in user projects. + GraphEdit by itself is only an empty container, representing an infinite grid where [GraphNode]s can be placed. Each [GraphNode] represent a node in the graph, a single unit of data in the connected scheme. GraphEdit, in turn, helps to control various interactions with nodes and between nodes. When the user attempts to connect, disconnect, or close a [GraphNode], a signal is emitted in the GraphEdit, but no action is taken by default. It is the responsibility of the programmer utilizing this control to implement the necessary logic to determine how each request should be handled. + [b]Performance:[/b] It is greatly advised to enable low-processor usage mode (see [member OS.low_processor_usage_mode]) when using GraphEdits. </description> <tutorials> </tutorials> <methods> <method name="_get_connection_line" qualifiers="virtual const"> <return type="PackedVector2Array" /> - <param index="0" name="from" type="Vector2" /> - <param index="1" name="to" type="Vector2" /> + <param index="0" name="from_position" type="Vector2" /> + <param index="1" name="to_position" type="Vector2" /> <description> Virtual method which can be overridden to customize how connections are drawn. </description> </method> <method name="_is_in_input_hotzone" qualifiers="virtual"> <return type="bool" /> - <param index="0" name="graph_node" type="Object" /> - <param index="1" name="slot_index" type="int" /> + <param index="0" name="in_node" type="Object" /> + <param index="1" name="in_port" type="int" /> <param index="2" name="mouse_position" type="Vector2" /> <description> Returns whether the [param mouse_position] is in the input hot zone. - By default, a hot zone is a [Rect2] positioned such that its center is at [param graph_node].[method GraphNode.get_connection_input_position]([param slot_index]) (For output's case, call [method GraphNode.get_connection_output_position] instead). The hot zone's width is twice the Theme Property [code]port_grab_distance_horizontal[/code], and its height is twice the [code]port_grab_distance_vertical[/code]. + By default, a hot zone is a [Rect2] positioned such that its center is at [param in_node].[method GraphNode.get_connection_input_position]([param in_port]) (For output's case, call [method GraphNode.get_connection_output_position] instead). The hot zone's width is twice the Theme Property [code]port_grab_distance_horizontal[/code], and its height is twice the [code]port_grab_distance_vertical[/code]. Below is a sample code to help get started: [codeblock] - func _is_in_input_hotzone(graph_node, slot_index, mouse_position): - var slot_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) - var slot_pos : Vector2 = graph_node.get_position() + graph_node.get_connection_input_position(slot_index) - slot_size / 2 - var rect = Rect2(slot_pos, slot_size) + func _is_in_input_hotzone(in_node, in_port, mouse_position): + var port_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) + var port_pos : Vector2 = in_node.get_position() + in_node.get_connection_input_position(in_port) - port_size / 2 + var rect = Rect2(port_pos, port_size) return rect.has_point(mouse_position) [/codeblock] @@ -39,17 +40,17 @@ </method> <method name="_is_in_output_hotzone" qualifiers="virtual"> <return type="bool" /> - <param index="0" name="graph_node" type="Object" /> - <param index="1" name="slot_index" type="int" /> + <param index="0" name="in_node" type="Object" /> + <param index="1" name="in_port" type="int" /> <param index="2" name="mouse_position" type="Vector2" /> <description> Returns whether the [param mouse_position] is in the output hot zone. For more information on hot zones, see [method _is_in_input_hotzone]. Below is a sample code to help get started: [codeblock] - func _is_in_output_hotzone(graph_node, slot_index, mouse_position): - var slot_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) - var slot_pos : Vector2 = graph_node.get_position() + graph_node.get_connection_output_position(slot_index) - slot_size / 2 - var rect = Rect2(slot_pos, slot_size) + func _is_in_output_hotzone(in_node, in_port, mouse_position): + var port_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) + var port_pos : Vector2 = in_node.get_position() + in_node.get_connection_output_position(in_port) - port_size / 2 + var rect = Rect2(port_pos, port_size) return rect.has_point(mouse_position) [/codeblock] @@ -57,17 +58,17 @@ </method> <method name="_is_node_hover_valid" qualifiers="virtual"> <return type="bool" /> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> - <param index="2" name="to" type="StringName" /> - <param index="3" name="to_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> + <param index="2" name="to_node" type="StringName" /> + <param index="3" name="to_port" type="int" /> <description> This virtual method can be used to insert additional error detection while the user is dragging a connection over a valid port. Return [code]true[/code] if the connection is indeed valid or return [code]false[/code] if the connection is impossible. If the connection is impossible, no snapping to the port and thus no connection request to that port will happen. In this example a connection to same node is suppressed: [codeblocks] [gdscript] - func _is_node_hover_valid(from, from_slot, to, to_slot): + func _is_node_hover_valid(from, from_port, to, to_port): return from != to [/gdscript] [csharp] @@ -83,21 +84,22 @@ <param index="0" name="from_type" type="int" /> <param index="1" name="to_type" type="int" /> <description> - Makes possible the connection between two different slot types. The type is defined with the [method GraphNode.set_slot] method. + Allows the connection between two different port types. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method. + See also [method is_valid_connection_type] and [method remove_valid_connection_type]. </description> </method> <method name="add_valid_left_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Makes possible to disconnect nodes when dragging from the slot at the left if it has the specified type. + Allows to disconnect nodes when dragging from the left port of the [GraphNode]'s slot if it has the specified type. See also [method remove_valid_left_disconnect_type]. </description> </method> <method name="add_valid_right_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Makes possible to disconnect nodes when dragging from the slot at the right if it has the specified type. + Allows to disconnect nodes when dragging from the right port of the [GraphNode]'s slot if it has the specified type. See also [method remove_valid_right_disconnect_type]. </description> </method> <method name="arrange_nodes"> @@ -114,22 +116,22 @@ </method> <method name="connect_node"> <return type="int" enum="Error" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <description> - Create a connection between the [param from_port] slot of the [param from] GraphNode and the [param to_port] slot of the [param to] GraphNode. If the connection already exists, no connection is created. + Create a connection between the [param from_port] of the [param from_node] [GraphNode] and the [param to_port] of the [param to_node] [GraphNode]. If the connection already exists, no connection is created. </description> </method> <method name="disconnect_node"> <return type="void" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <description> - Removes the connection between the [param from_port] slot of the [param from] GraphNode and the [param to_port] slot of the [param to] GraphNode. If the connection does not exist, no connection is removed. + Removes the connection between the [param from_port] of the [param from_node] [GraphNode] and the [param to_port] of the [param to_node] [GraphNode]. If the connection does not exist, no connection is removed. </description> </method> <method name="force_connection_drag_end"> @@ -142,10 +144,10 @@ </method> <method name="get_connection_line"> <return type="PackedVector2Array" /> - <param index="0" name="from" type="Vector2" /> - <param index="1" name="to" type="Vector2" /> + <param index="0" name="from_node" type="Vector2" /> + <param index="1" name="to_node" type="Vector2" /> <description> - Returns the points which would make up a connection between [param from] and [param to]. + Returns the points which would make up a connection between [param from_node] and [param to_node]. </description> </method> <method name="get_connection_list" qualifiers="const"> @@ -163,12 +165,12 @@ </method> <method name="is_node_connected"> <return type="bool" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <description> - Returns [code]true[/code] if the [param from_port] slot of the [param from] GraphNode is connected to the [param to_port] slot of the [param to] GraphNode. + Returns [code]true[/code] if the [param from_port] of the [param from_node] [GraphNode] is connected to the [param to_port] of the [param to_node] [GraphNode]. </description> </method> <method name="is_valid_connection_type" qualifiers="const"> @@ -176,7 +178,8 @@ <param index="0" name="from_type" type="int" /> <param index="1" name="to_type" type="int" /> <description> - Returns whether it's possible to connect slots of the specified types. + Returns whether it's possible to make a connection between two different port types. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method. + See also [method add_valid_connection_type] and [method remove_valid_connection_type]. </description> </method> <method name="remove_valid_connection_type"> @@ -184,32 +187,33 @@ <param index="0" name="from_type" type="int" /> <param index="1" name="to_type" type="int" /> <description> - Makes it not possible to connect between two different slot types. The type is defined with the [method GraphNode.set_slot] method. + Disallows the connection between two different port types previously allowed by [method add_valid_connection_type]. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method. + See also [method is_valid_connection_type]. </description> </method> <method name="remove_valid_left_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Removes the possibility to disconnect nodes when dragging from the slot at the left if it has the specified type. + Disallows to disconnect nodes when dragging from the left port of the [GraphNode]'s slot if it has the specified type. Use this to disable disconnection previously allowed with [method add_valid_left_disconnect_type]. </description> </method> <method name="remove_valid_right_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Removes the possibility to disconnect nodes when dragging from the slot at the right if it has the specified type. + Disallows to disconnect nodes when dragging from the right port of the [GraphNode]'s slot if it has the specified type. Use this to disable disconnection previously allowed with [method add_valid_right_disconnect_type]. </description> </method> <method name="set_connection_activity"> <return type="void" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <param index="4" name="amount" type="float" /> <description> - Sets the coloration of the connection between [param from]'s [param from_port] and [param to]'s [param to_port] with the color provided in the [theme_item activity] theme property. + Sets the coloration of the connection between [param from_node]'s [param from_port] and [param to_node]'s [param to_port] with the color provided in the [theme_item activity] theme property. </description> </method> <method name="set_selected"> @@ -287,36 +291,36 @@ </description> </signal> <signal name="connection_drag_started"> - <param index="0" name="from" type="String" /> - <param index="1" name="slot" type="int" /> + <param index="0" name="from_node" type="String" /> + <param index="1" name="from_port" type="int" /> <param index="2" name="is_output" type="bool" /> <description> Emitted at the beginning of a connection drag. </description> </signal> <signal name="connection_from_empty"> - <param index="0" name="to" type="StringName" /> - <param index="1" name="to_slot" type="int" /> + <param index="0" name="to_node" type="StringName" /> + <param index="1" name="to_port" type="int" /> <param index="2" name="release_position" type="Vector2" /> <description> - Emitted when user dragging connection from input port into empty space of the graph. + Emitted when user drags a connection from an input port into the empty space of the graph. </description> </signal> <signal name="connection_request"> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> - <param index="2" name="to" type="StringName" /> - <param index="3" name="to_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> + <param index="2" name="to_node" type="StringName" /> + <param index="3" name="to_port" type="int" /> <description> - Emitted to the GraphEdit when the connection between the [param from_slot] slot of the [param from] GraphNode and the [param to_slot] slot of the [param to] GraphNode is attempted to be created. + Emitted to the GraphEdit when the connection between the [param from_port] of the [param from_node] [GraphNode] and the [param to_port] of the [param to_node] [GraphNode] is attempted to be created. </description> </signal> <signal name="connection_to_empty"> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> <param index="2" name="release_position" type="Vector2" /> <description> - Emitted when user dragging connection from output port into empty space of the graph. + Emitted when user drags a connection from an output port into the empty space of the graph. </description> </signal> <signal name="copy_nodes_request"> @@ -331,12 +335,12 @@ </description> </signal> <signal name="disconnection_request"> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> - <param index="2" name="to" type="StringName" /> - <param index="3" name="to_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> + <param index="2" name="to_node" type="StringName" /> + <param index="3" name="to_port" type="int" /> <description> - Emitted to the GraphEdit when the connection between [param from_slot] slot of [param from] GraphNode and [param to_slot] slot of [param to] GraphNode is attempted to be removed. + Emitted to the GraphEdit when the connection between [param from_port] of [param from_node] [GraphNode] and [param to_port] of [param to_node] [GraphNode] is attempted to be removed. </description> </signal> <signal name="duplicate_nodes_request"> diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml index a80dd0d47f..16386ff81b 100644 --- a/doc/classes/GraphNode.xml +++ b/doc/classes/GraphNode.xml @@ -1,12 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="GraphNode" inherits="Container" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A GraphNode is a container with potentially several input and output slots allowing connections between GraphNodes. Slots can have different, incompatible types. + GraphNode is a [Container] control that represents a single data unit in a [GraphEdit] graph. You can customize the number, type, and color of left- and right-side connection ports. </brief_description> <description> - A GraphNode is a container. Each GraphNode can have several input and output slots, sometimes referred to as ports, allowing connections between GraphNodes. To add a slot to GraphNode, add any [Control]-derived child node to it. - After adding at least one child to GraphNode new sections will be automatically created in the Inspector called 'Slot'. When 'Slot' is expanded you will see list with index number for each slot. You can click on each of them to expand further. - In the Inspector you can enable (show) or disable (hide) slots. By default, all slots are disabled so you may not see any slots on your GraphNode initially. You can assign a type to each slot. Only slots of the same type will be able to connect to each other. You can also assign colors to slots. A tuple of input and output slots is defined for each GUI element included in the GraphNode. Input connections are on the left and output connections are on the right side of GraphNode. Only enabled slots are counted as connections. + GraphNode allows to create nodes for a [GraphEdit] graph with customizable content based on its child [Control]s. GraphNode is a [Container] and is responsible for placing its children on screen. This works similar to [VBoxContainer]. Children, in turn, provide GraphNode with so-called slots, each of which can have a connection port on either side. This is similar to how [TabContainer] uses children to create the tabs. + Each GraphNode slot is defined by its index and can provide the node with up to two ports: one on the left, and one on the right. By convention the left port is also referred to as the input port and the right port is referred to as the output port. Each port can be enabled and configured individually, using different type and color. The type is an arbitrary value that you can define using your own considerations. The parent [GraphEdit] will receive this information on each connect and disconnect request. + Slots can be configured in the Inspector dock once you add at least one child [Control]. The properties are grouped by each slot's index in the "Slot" section. + [b]Note:[/b] While GraphNode is set up using slots and slot indices, connections are made between the ports which are enabled. Because of that [GraphEdit] uses port's index and not slot's index. You can use [method get_connection_input_slot] and [method get_connection_output_slot] to get the slot index from the port index. </description> <tutorials> </tutorials> @@ -19,16 +20,16 @@ </method> <method name="clear_slot"> <return type="void" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Disables input and output slot whose index is [param idx]. + Disables input and output slot whose index is [param slot_index]. </description> </method> <method name="get_connection_input_color"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the [Color] of the input connection [param idx]. + Returns the [Color] of the input connection [param port]. </description> </method> <method name="get_connection_input_count"> @@ -39,30 +40,37 @@ </method> <method name="get_connection_input_height"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the height of the input connection [param idx]. + Returns the height of the input connection [param port]. </description> </method> <method name="get_connection_input_position"> <return type="Vector2" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> + <description> + Returns the position of the input connection [param port]. + </description> + </method> + <method name="get_connection_input_slot"> + <return type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the position of the input connection [param idx]. + Returns the corresponding slot index of the input connection [param port]. </description> </method> <method name="get_connection_input_type"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the type of the input connection [param idx]. + Returns the type of the input connection [param port]. </description> </method> <method name="get_connection_output_color"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the [Color] of the output connection [param idx]. + Returns the [Color] of the output connection [param port]. </description> </method> <method name="get_connection_output_count"> @@ -73,150 +81,157 @@ </method> <method name="get_connection_output_height"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the height of the output connection [param idx]. + Returns the height of the output connection [param port]. </description> </method> <method name="get_connection_output_position"> <return type="Vector2" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> + <description> + Returns the position of the output connection [param port]. + </description> + </method> + <method name="get_connection_output_slot"> + <return type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the position of the output connection [param idx]. + Returns the corresponding slot index of the output connection [param port]. </description> </method> <method name="get_connection_output_type"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the type of the output connection [param idx]. + Returns the type of the output connection [param port]. </description> </method> <method name="get_slot_color_left" qualifiers="const"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the left (input) [Color] of the slot [param idx]. + Returns the left (input) [Color] of the slot [param slot_index]. </description> </method> <method name="get_slot_color_right" qualifiers="const"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the right (output) [Color] of the slot [param idx]. + Returns the right (output) [Color] of the slot [param slot_index]. </description> </method> <method name="get_slot_type_left" qualifiers="const"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the left (input) type of the slot [param idx]. + Returns the left (input) type of the slot [param slot_index]. </description> </method> <method name="get_slot_type_right" qualifiers="const"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the right (output) type of the slot [param idx]. + Returns the right (output) type of the slot [param slot_index]. </description> </method> <method name="is_slot_draw_stylebox" qualifiers="const"> <return type="bool" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns true if the background [StyleBox] of the slot [param idx] is drawn. + Returns true if the background [StyleBox] of the slot [param slot_index] is drawn. </description> </method> <method name="is_slot_enabled_left" qualifiers="const"> <return type="bool" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns [code]true[/code] if left (input) side of the slot [param idx] is enabled. + Returns [code]true[/code] if left (input) side of the slot [param slot_index] is enabled. </description> </method> <method name="is_slot_enabled_right" qualifiers="const"> <return type="bool" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns [code]true[/code] if right (output) side of the slot [param idx] is enabled. + Returns [code]true[/code] if right (output) side of the slot [param slot_index] is enabled. </description> </method> <method name="set_slot"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="enable_left" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable_left_port" type="bool" /> <param index="2" name="type_left" type="int" /> <param index="3" name="color_left" type="Color" /> - <param index="4" name="enable_right" type="bool" /> + <param index="4" name="enable_right_port" type="bool" /> <param index="5" name="type_right" type="int" /> <param index="6" name="color_right" type="Color" /> - <param index="7" name="custom_left" type="Texture2D" default="null" /> - <param index="8" name="custom_right" type="Texture2D" default="null" /> - <param index="9" name="enable" type="bool" default="true" /> - <description> - Sets properties of the slot with ID [param idx]. - If [param enable_left]/[param enable_right], a port will appear and the slot will be able to be connected from this side. - [param type_left]/[param type_right] is an arbitrary type of the port. Only ports with the same type values can be connected and negative values will disallow all connections to be made via user inputs. - [param color_left]/[param color_right] is the tint of the port's icon on this side. - [param custom_left]/[param custom_right] is a custom texture for this side's port. - [b]Note:[/b] This method only sets properties of the slot. To create the slot, add a [Control]-derived child to the GraphNode. - Individual properties can be set using one of the [code]set_slot_*[/code] methods. You must enable at least one side of the slot to do so. + <param index="7" name="custom_icon_left" type="Texture2D" default="null" /> + <param index="8" name="custom_icon_right" type="Texture2D" default="null" /> + <param index="9" name="draw_stylebox" type="bool" default="true" /> + <description> + Sets properties of the slot with the [param slot_index] index. + If [param enable_left_port]/[param enable_right_port] is [code]true[/code], a port will appear and the slot will be able to be connected from this side. + With [param type_left]/[param type_right] an arbitrary type can be assigned to each port. Two ports can be connected if they share the same type, or if the connection between their types is allowed in the parent [GraphEdit] (see [method GraphEdit.add_valid_connection_type]). Keep in mind that the [GraphEdit] has the final say in accepting the connection. Type compatibility simply allows the [signal GraphEdit.connection_request] signal to be emitted. + Ports can be further customized using [param color_left]/[param color_right] and [param custom_icon_left]/[param custom_icon_right]. The color parameter adds a tint to the icon. The custom icon can be used to override the default port dot. + Additionally, [param draw_stylebox] can be used to enable or disable drawing of the background stylebox for each slot. See [theme_item slot]. + Individual properties can also be set using one of the [code]set_slot_*[/code] methods. + [b]Note:[/b] This method only sets properties of the slot. To create the slot itself, add a [Control]-derived child to the GraphNode. </description> </method> <method name="set_slot_color_left"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="color_left" type="Color" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="color" type="Color" /> <description> - Sets the [Color] of the left (input) side of the slot [param idx] to [param color_left]. + Sets the [Color] of the left (input) side of the slot [param slot_index] to [param color]. </description> </method> <method name="set_slot_color_right"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="color_right" type="Color" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="color" type="Color" /> <description> - Sets the [Color] of the right (output) side of the slot [param idx] to [param color_right]. + Sets the [Color] of the right (output) side of the slot [param slot_index] to [param color]. </description> </method> <method name="set_slot_draw_stylebox"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="draw_stylebox" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable" type="bool" /> <description> - Toggles the background [StyleBox] of the slot [param idx]. + Toggles the background [StyleBox] of the slot [param slot_index]. </description> </method> <method name="set_slot_enabled_left"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="enable_left" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable" type="bool" /> <description> - Toggles the left (input) side of the slot [param idx]. If [param enable_left] is [code]true[/code], a port will appear on the left side and the slot will be able to be connected from this side. + Toggles the left (input) side of the slot [param slot_index]. If [param enable] is [code]true[/code], a port will appear on the left side and the slot will be able to be connected from this side. </description> </method> <method name="set_slot_enabled_right"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="enable_right" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable" type="bool" /> <description> - Toggles the right (output) side of the slot [param idx]. If [param enable_right] is [code]true[/code], a port will appear on the right side and the slot will be able to be connected from this side. + Toggles the right (output) side of the slot [param slot_index]. If [param enable] is [code]true[/code], a port will appear on the right side and the slot will be able to be connected from this side. </description> </method> <method name="set_slot_type_left"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="type_left" type="int" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="type" type="int" /> <description> - Sets the left (input) type of the slot [param idx] to [param type_left]. If the value is negative, all connections will be disallowed to be created via user inputs. + Sets the left (input) type of the slot [param slot_index] to [param type]. If the value is negative, all connections will be disallowed to be created via user inputs. </description> </method> <method name="set_slot_type_right"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="type_right" type="int" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="type" type="int" /> <description> - Sets the right (output) type of the slot [param idx] to [param type_right]. If the value is negative, all connections will be disallowed to be created via user inputs. + Sets the right (output) type of the slot [param slot_index] to [param type]. If the value is negative, all connections will be disallowed to be created via user inputs. </description> </method> </methods> diff --git a/doc/classes/HMACContext.xml b/doc/classes/HMACContext.xml index 52d4fce28f..706ee30963 100644 --- a/doc/classes/HMACContext.xml +++ b/doc/classes/HMACContext.xml @@ -32,22 +32,22 @@ public class CryptoNode : Node { private HMACContext ctx = new HMACContext(); + public override void _Ready() { - PackedByteArray key = String("supersecret").to_utf8(); - Error err = ctx.Start(HashingContext.HASH_SHA256, key); - GD.Assert(err == OK); - PackedByteArray msg1 = String("this is ").to_utf8(); - PackedByteArray msg2 = String("super duper secret").to_utf8(); + byte[] key = "supersecret".ToUTF8(); + Error err = ctx.Start(HashingContext.HashType.Sha256, key); + Debug.Assert(err == Error.Ok); + byte[] msg1 = "this is ".ToUTF8(); + byte[] msg2 = "super duper secret".ToUTF8(); err = ctx.Update(msg1); - GD.Assert(err == OK); + Debug.Assert(err == Error.Ok); err = ctx.Update(msg2); - GD.Assert(err == OK); - PackedByteArray hmac = ctx.Finish(); + Debug.Assert(err == Error.Ok); + byte[] hmac = ctx.Finish(); GD.Print(hmac.HexEncode()); } } - [/csharp] [/codeblocks] </description> diff --git a/doc/classes/ImageFormatLoader.xml b/doc/classes/ImageFormatLoader.xml new file mode 100644 index 0000000000..c6b1ec922a --- /dev/null +++ b/doc/classes/ImageFormatLoader.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="ImageFormatLoader" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Base class to add support for specific image formats. + </brief_description> + <description> + The engine supports multiple image formats out of the box (PNG, SVG, JPEG, WebP to name a few), but you can choose to implement support for additional image formats by extending [ImageFormatLoaderExtension]. + </description> + <tutorials> + </tutorials> + <constants> + <constant name="FLAG_NONE" value="0" enum="LoaderFlags" is_bitfield="true"> + </constant> + <constant name="FLAG_FORCE_LINEAR" value="1" enum="LoaderFlags" is_bitfield="true"> + </constant> + <constant name="FLAG_CONVERT_COLORS" value="2" enum="LoaderFlags" is_bitfield="true"> + </constant> + </constants> +</class> diff --git a/doc/classes/ImageFormatLoaderExtension.xml b/doc/classes/ImageFormatLoaderExtension.xml new file mode 100644 index 0000000000..9d18ee8b84 --- /dev/null +++ b/doc/classes/ImageFormatLoaderExtension.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="ImageFormatLoaderExtension" inherits="ImageFormatLoader" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Base class for creating [ImageFormatLoader] extensions (adding support for extra image formats). + </brief_description> + <description> + The engine supports multiple image formats out of the box (PNG, SVG, JPEG, WebP to name a few), but you can choose to implement support for additional image formats by extending this class. + Be sure to respect the documented return types and values. You should create an instance of it, and call [method add_format_loader] to register that loader during the initialization phase. + </description> + <tutorials> + </tutorials> + <methods> + <method name="_get_recognized_extensions" qualifiers="virtual const"> + <return type="PackedStringArray" /> + <description> + Returns the list of file extensions for this image format. Files with the given extensions will be treated as image file and loaded using this class. + </description> + </method> + <method name="_load_image" qualifiers="virtual"> + <return type="int" enum="Error" /> + <param index="0" name="image" type="Image" /> + <param index="1" name="fileaccess" type="FileAccess" /> + <param index="2" name="flags" type="int" enum="ImageFormatLoader.LoaderFlags" /> + <param index="3" name="scale" type="float" /> + <description> + Loads the content of [param fileaccess] into the provided [param image]. + </description> + </method> + <method name="add_format_loader"> + <return type="void" /> + <description> + Add this format loader to the engine, allowing it to recognize the file extensions returned by [method _get_recognized_extensions]. + </description> + </method> + <method name="remove_format_loader"> + <return type="void" /> + <description> + Remove this format loader from the engine. + </description> + </method> + </methods> +</class> diff --git a/doc/classes/ImageTextureLayered.xml b/doc/classes/ImageTextureLayered.xml index f5b338542b..f5786f070a 100644 --- a/doc/classes/ImageTextureLayered.xml +++ b/doc/classes/ImageTextureLayered.xml @@ -11,6 +11,8 @@ <return type="int" enum="Error" /> <param index="0" name="images" type="Image[]" /> <description> + Creates an [ImageTextureLayered] from an array of [Image]s. The first image decides the width, height, image format and mipmapping setting. The other images must have the same width, height, image format and mipmapping setting. + Each [Image] represents one [code]layer[/code]. </description> </method> <method name="update_layer"> @@ -18,6 +20,10 @@ <param index="0" name="image" type="Image" /> <param index="1" name="layer" type="int" /> <description> + Replaces the existing [Image] data at the given [code]layer[/code] with this new image. + The given [Image] must have the same width, height, image format and mipmapping setting (a [code]bool[/code] value) as the rest of the referenced images. + If the image format is unsupported, it will be decompressed and converted to a similar and supported [enum Image.Format]. + The update is immediate: synced with the draw. </description> </method> </methods> diff --git a/doc/classes/ImporterMesh.xml b/doc/classes/ImporterMesh.xml index 3c3dbe4d87..1c9655c266 100644 --- a/doc/classes/ImporterMesh.xml +++ b/doc/classes/ImporterMesh.xml @@ -43,10 +43,12 @@ <return type="void" /> <param index="0" name="normal_merge_angle" type="float" /> <param index="1" name="normal_split_angle" type="float" /> + <param index="2" name="bone_transform_array" type="Array" /> <description> Generates all lods for this ImporterMesh. [param normal_merge_angle] and [param normal_split_angle] are in degrees and used in the same way as the importer settings in [code]lods[/code]. As a good default, use 25 and 60 respectively. The number of generated lods can be accessed using [method get_surface_lod_count], and each LOD is available in [method get_surface_lod_size] and [method get_surface_lod_indices]. + [param bone_transform_array] is an [Array] which can be either empty or contain [Transform3D]s which, for each of the mesh's bone IDs, will apply mesh skinning when generating the LOD mesh variations. This is usually used to account for discrepancies in scale between the mesh itself and its skinning data. </description> </method> <method name="get_blend_shape_count" qualifiers="const"> diff --git a/doc/classes/InputEventWithModifiers.xml b/doc/classes/InputEventWithModifiers.xml index d0453156d5..c6311d780c 100644 --- a/doc/classes/InputEventWithModifiers.xml +++ b/doc/classes/InputEventWithModifiers.xml @@ -23,7 +23,7 @@ State of the [kbd]Alt[/kbd] modifier. </member> <member name="command_or_control_autoremap" type="bool" setter="set_command_or_control_autoremap" getter="is_command_or_control_autoremap" default="false"> - Automaticaly use [kbd]Meta[/kbd] ([kbd]Command[/kbd]) on macOS and [kbd]Ctrl[/kbd] on other platforms. If [code]true[/code], [member ctrl_pressed] and [member meta_pressed] cannot be set. + Automatically use [kbd]Meta[/kbd] ([kbd]Command[/kbd]) on macOS and [kbd]Ctrl[/kbd] on other platforms. If [code]true[/code], [member ctrl_pressed] and [member meta_pressed] cannot be set. </member> <member name="ctrl_pressed" type="bool" setter="set_ctrl_pressed" getter="is_ctrl_pressed" default="false"> State of the [kbd]Ctrl[/kbd] modifier. diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml index 55d794ae59..844f260971 100644 --- a/doc/classes/ItemList.xml +++ b/doc/classes/ItemList.xml @@ -349,7 +349,7 @@ The width all columns will be adjusted to. A value of zero disables the adjustment, each item will have a width equal to the width of its content and the columns will have an uneven width. </member> - <member name="fixed_icon_size" type="Vector2" setter="set_fixed_icon_size" getter="get_fixed_icon_size" default="Vector2(0, 0)"> + <member name="fixed_icon_size" type="Vector2i" setter="set_fixed_icon_size" getter="get_fixed_icon_size" default="Vector2i(0, 0)"> The size all icons will be adjusted to. If either X or Y component is not greater than zero, icon size won't be affected. </member> diff --git a/doc/classes/JSON.xml b/doc/classes/JSON.xml index 46e46cc164..125d016632 100644 --- a/doc/classes/JSON.xml +++ b/doc/classes/JSON.xml @@ -6,7 +6,7 @@ <description> The [JSON] enables all data types to be converted to and from a JSON string. This useful for serializing data to save to a file or send over the network. [method stringify] is used to convert any data type into a JSON string. - [method parse] is used to convert any existing JSON data into a [Variant] that can be used within Godot. If successfully parsed, use [method get_data] to retrieve the [Variant], and use [code]typeof[/code] to check if the Variant's type is what you expect. JSON Objects are converted into a [Dictionary], but JSON data can be used to store [Array]s, numbers, [String]s and even just a boolean. + [method parse] is used to convert any existing JSON data into a [Variant] that can be used within Godot. If successfully parsed, use [member data] to retrieve the [Variant], and use [code]typeof[/code] to check if the Variant's type is what you expect. JSON Objects are converted into a [Dictionary], but JSON data can be used to store [Array]s, numbers, [String]s and even just a boolean. [b]Example[/b] [codeblock] var data_to_send = ["a", "b", "c"] @@ -16,7 +16,7 @@ # Retrieve data var error = json.parse(json_string) if error == OK: - var data_received = json.get_data() + var data_received = json.data if typeof(data_received) == TYPE_ARRAY: print(data_received) # Prints array else: @@ -28,17 +28,15 @@ [codeblock] var data = JSON.parse_string(json_string) # Returns null if parsing failed. [/codeblock] + [b]Note:[/b] Both parse methods do not fully comply with the JSON specification: + - Trailing commas in arrays or objects are ignored, instead of causing a parser error. + - New line and tab characters are accepted in string literals, and are treated like their corresponding escape sequences [code]\n[/code] and [code]\t[/code]. + - Numbers are parsed using [method String.to_float] which is generally more lax than the JSON specification. + - Certain errors, such as invalid Unicode sequences, do not cause a parser error. Instead, the string is cleansed and an error is logged to the console. </description> <tutorials> </tutorials> <methods> - <method name="get_data" qualifiers="const"> - <return type="Variant" /> - <description> - Returns the [Variant] containing the data of a successful [method parse]. - [b]Note:[/b] It will return [code]Null[/code] if the last call to parse was unsuccessful or [method parse] has not yet been called. - </description> - </method> <method name="get_error_line" qualifiers="const"> <return type="int" /> <description> @@ -56,7 +54,7 @@ <param index="0" name="json_string" type="String" /> <description> Attempts to parse the [param json_string] provided. - Returns an [enum Error]. If the parse was successful, it returns [code]OK[/code] and the result can be retrieved using [method get_data]. If unsuccessful, use [method get_error_line] and [method get_error_message] for identifying the source of the failure. + Returns an [enum Error]. If the parse was successful, it returns [code]OK[/code] and the result can be retrieved using [member data]. If unsuccessful, use [method get_error_line] and [method get_error_message] for identifying the source of the failure. Non-static variant of [method parse_string], if you want custom error handling. </description> </method> @@ -118,4 +116,9 @@ </description> </method> </methods> + <members> + <member name="data" type="Variant" setter="set_data" getter="get_data" default="null"> + Contains the parsed JSON data in [Variant] form. + </member> + </members> </class> diff --git a/doc/classes/LightmapGI.xml b/doc/classes/LightmapGI.xml index dd8c7be489..53dae1a8e6 100644 --- a/doc/classes/LightmapGI.xml +++ b/doc/classes/LightmapGI.xml @@ -17,7 +17,7 @@ <member name="bias" type="float" setter="set_bias" getter="get_bias" default="0.0005"> The bias to use when computing shadows. Increasing [member bias] can fix shadow acne on the resulting baked lightmap, but can introduce peter-panning (shadows not connecting to their casters). Real-time [Light3D] shadows are not affected by this [member bias] property. </member> - <member name="bounces" type="int" setter="set_bounces" getter="get_bounces" default="1"> + <member name="bounces" type="int" setter="set_bounces" getter="get_bounces" default="3"> Number of light bounces that are taken into account during baking. Higher values result in brighter, more realistic lighting, at the cost of longer bake times. If set to [code]0[/code], only environment lighting, direct light and emissive lighting is baked. </member> <member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes"> @@ -36,10 +36,10 @@ <member name="environment_custom_sky" type="Sky" setter="set_environment_custom_sky" getter="get_environment_custom_sky"> The sky to use as a source of environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_SKY]. </member> - <member name="environment_mode" type="int" setter="set_environment_mode" getter="get_environment_mode" enum="LightmapGI.EnvironmentMode" default="0"> + <member name="environment_mode" type="int" setter="set_environment_mode" getter="get_environment_mode" enum="LightmapGI.EnvironmentMode" default="1"> The environment mode to use when baking lightmaps. </member> - <member name="generate_probes_subdiv" type="int" setter="set_generate_probes" getter="get_generate_probes" enum="LightmapGI.GenerateProbes" default="0"> + <member name="generate_probes_subdiv" type="int" setter="set_generate_probes" getter="get_generate_probes" enum="LightmapGI.GenerateProbes" default="2"> The level of subdivision to use when automatically generating [LightmapProbe]s for dynamic object lighting. Higher values result in more accurate indirect lighting on dynamic objects, at the cost of longer bake times and larger file sizes. [b]Note:[/b] Automatically generated [LightmapProbe]s are not visible as nodes in the Scene tree dock, and cannot be modified this way after they are generated. [b]Note:[/b] Regardless of [member generate_probes_subdiv], direct lighting on dynamic objects is always applied using [Light3D] nodes in real-time. diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml index 1f38510e83..4d5d5a011b 100644 --- a/doc/classes/MenuButton.xml +++ b/doc/classes/MenuButton.xml @@ -25,6 +25,12 @@ If [code]true[/code], shortcuts are disabled and cannot be used to trigger the button. </description> </method> + <method name="show_popup"> + <return type="void" /> + <description> + Adjusts popup position and sizing for the [MenuButton], then shows the [PopupMenu]. Prefer this over using [code]get_popup().popup()[/code]. + </description> + </method> </methods> <members> <member name="action_mode" type="int" setter="set_action_mode" getter="get_action_mode" overrides="BaseButton" enum="BaseButton.ActionMode" default="0" /> diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml index bae2335cfb..ce2b5f2584 100644 --- a/doc/classes/MultiMesh.xml +++ b/doc/classes/MultiMesh.xml @@ -1,13 +1,15 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="MultiMesh" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - Provides high-performance mesh instancing. + Provides high-performance drawing of a mesh multiple times using GPU instancing. </brief_description> <description> MultiMesh provides low-level mesh instancing. Drawing thousands of [MeshInstance3D] nodes can be slow, since each object is submitted to the GPU then drawn individually. MultiMesh is much faster as it can draw thousands of instances with a single draw call, resulting in less API overhead. As a drawback, if the instances are too far away from each other, performance may be reduced as every single instance will always render (they are spatially indexed as one, for the whole object). Since instances may have any behavior, the AABB used for visibility must be provided by the user. + [b]Note:[/b] A MultiMesh is a single object, therefore the same maximum lights per object restriction applies. This means, that once the maximum lights are consumed by one or more instances, the rest of the MultiMesh instances will [b]not[/b] receive any lighting. + [b]Note:[/b] Blend Shapes will be ignored if used in a MultiMesh. </description> <tutorials> <link title="Animating thousands of fish with MultiMeshInstance">$DOCS_URL/tutorials/performance/vertex_animation/animating_thousands_of_fish.html</link> @@ -24,7 +26,7 @@ <return type="Color" /> <param index="0" name="instance" type="int" /> <description> - Gets a specific instance's color. + Gets a specific instance's color multiplier. </description> </method> <method name="get_instance_custom_data" qualifiers="const"> @@ -53,8 +55,8 @@ <param index="0" name="instance" type="int" /> <param index="1" name="color" type="Color" /> <description> - Sets the color of a specific instance by [i]multiplying[/i] the mesh's existing vertex colors. - For the color to take effect, ensure that [member use_colors] is [code]true[/code] on the [MultiMesh] and [member BaseMaterial3D.vertex_color_use_as_albedo] is [code]true[/code] on the material. If the color doesn't look as expected, make sure the material's albedo color is set to pure white ([code]Color(1, 1, 1)[/code]). + Sets the color of a specific instance by [i]multiplying[/i] the mesh's existing vertex colors. This allows for different color tinting per instance. + For the color to take effect, ensure that [member use_colors] is [code]true[/code] on the [MultiMesh] and [member BaseMaterial3D.vertex_color_use_as_albedo] is [code]true[/code] on the material. If you intend to set an absolute color instead of tinting, make sure the material's albedo color is set to pure white ([code]Color(1, 1, 1)[/code]). </description> </method> <method name="set_instance_custom_data"> @@ -64,6 +66,7 @@ <description> Sets custom data for a specific instance. Although [Color] is used, it is just a container for 4 floating point numbers. For the custom data to be used, ensure that [member use_custom_data] is [code]true[/code]. + This custom instance data has to be manually accessed in your custom shader using [code]INSTANCE_CUSTOM[/code]. </description> </method> <method name="set_instance_transform"> @@ -87,28 +90,33 @@ <member name="buffer" type="PackedFloat32Array" setter="set_buffer" getter="get_buffer" default="PackedFloat32Array()"> </member> <member name="color_array" type="PackedColorArray" setter="_set_color_array" getter="_get_color_array"> + See [method set_instance_color]. </member> <member name="custom_data_array" type="PackedColorArray" setter="_set_custom_data_array" getter="_get_custom_data_array"> + See [method set_instance_custom_data]. </member> <member name="instance_count" type="int" setter="set_instance_count" getter="get_instance_count" default="0"> Number of instances that will get drawn. This clears and (re)sizes the buffers. Setting data format or flags afterwards will have no effect. By default, all instances are drawn but you can limit this with [member visible_instance_count]. </member> <member name="mesh" type="Mesh" setter="set_mesh" getter="get_mesh"> - Mesh to be drawn. + [Mesh] resource to be instanced. + The looks of the individual instances can be modified using [method set_instance_color] and [method set_instance_custom_data]. </member> <member name="transform_2d_array" type="PackedVector2Array" setter="_set_transform_2d_array" getter="_get_transform_2d_array"> + See [method set_instance_transform_2d]. </member> <member name="transform_array" type="PackedVector3Array" setter="_set_transform_array" getter="_get_transform_array"> + See [method set_instance_transform]. </member> <member name="transform_format" type="int" setter="set_transform_format" getter="get_transform_format" enum="MultiMesh.TransformFormat" default="0"> Format of transform used to transform mesh, either 2D or 3D. </member> <member name="use_colors" type="bool" setter="set_use_colors" getter="is_using_colors" default="false"> - If [code]true[/code], the [MultiMesh] will use color data (see [member color_array]). + If [code]true[/code], the [MultiMesh] will use color data (see [method set_instance_color]). Can only be set when [member instance_count] is [code]0[/code] or less. This means that you need to call this method before setting the instance count, or temporarily reset it to [code]0[/code]. </member> <member name="use_custom_data" type="bool" setter="set_use_custom_data" getter="is_using_custom_data" default="false"> - If [code]true[/code], the [MultiMesh] will use custom data (see [member custom_data_array]). + If [code]true[/code], the [MultiMesh] will use custom data (see [method set_instance_custom_data]). Can only be set when [member instance_count] is [code]0[/code] or less. This means that you need to call this method before setting the instance count, or temporarily reset it to [code]0[/code]. </member> <member name="visible_instance_count" type="int" setter="set_visible_instance_count" getter="get_visible_instance_count" default="-1"> Limits the number of instances drawn, -1 draws all instances. Changing this does not change the sizes of the buffers. diff --git a/doc/classes/MultiplayerAPIExtension.xml b/doc/classes/MultiplayerAPIExtension.xml index e67970cc89..c4012a920a 100644 --- a/doc/classes/MultiplayerAPIExtension.xml +++ b/doc/classes/MultiplayerAPIExtension.xml @@ -5,7 +5,7 @@ </brief_description> <description> This class can be used to augment or replace the default [MultiplayerAPI] implementation via script or extensions. - The following example augment the default implemenation ([SceneMultiplayer]) by logging every RPC being made, and every object being configured for replication. + The following example augment the default implementation ([SceneMultiplayer]) by logging every RPC being made, and every object being configured for replication. [codeblocks] [gdscript] extends MultiplayerAPIExtension diff --git a/doc/classes/NavigationObstacle2D.xml b/doc/classes/NavigationObstacle2D.xml index 4ecdc06645..6d05e220e3 100644 --- a/doc/classes/NavigationObstacle2D.xml +++ b/doc/classes/NavigationObstacle2D.xml @@ -10,12 +10,25 @@ <tutorials> </tutorials> <methods> + <method name="get_navigation_map" qualifiers="const"> + <return type="RID" /> + <description> + Returns the [RID] of the navigation map for this NavigationObstacle node. This function returns always the map set on the NavigationObstacle node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationObstacle node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationObstacle and also update the agent on the NavigationServer. + </description> + </method> <method name="get_rid" qualifiers="const"> <return type="RID" /> <description> Returns the [RID] of this obstacle on the [NavigationServer2D]. </description> </method> + <method name="set_navigation_map"> + <return type="void" /> + <param index="0" name="navigation_map" type="RID" /> + <description> + Sets the [RID] of the navigation map this NavigationObstacle node should use and also updates the [code]agent[/code] on the NavigationServer. + </description> + </method> </methods> <members> <member name="estimate_radius" type="bool" setter="set_estimate_radius" getter="is_radius_estimated" default="true"> diff --git a/doc/classes/NavigationObstacle3D.xml b/doc/classes/NavigationObstacle3D.xml index ed8af3883c..f5a0bde089 100644 --- a/doc/classes/NavigationObstacle3D.xml +++ b/doc/classes/NavigationObstacle3D.xml @@ -10,12 +10,25 @@ <tutorials> </tutorials> <methods> + <method name="get_navigation_map" qualifiers="const"> + <return type="RID" /> + <description> + Returns the [RID] of the navigation map for this NavigationObstacle node. This function returns always the map set on the NavigationObstacle node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationObstacle node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationObstacle and also update the agent on the NavigationServer. + </description> + </method> <method name="get_rid" qualifiers="const"> <return type="RID" /> <description> Returns the [RID] of this obstacle on the [NavigationServer3D]. </description> </method> + <method name="set_navigation_map"> + <return type="void" /> + <param index="0" name="navigation_map" type="RID" /> + <description> + Sets the [RID] of the navigation map this NavigationObstacle node should use and also updates the [code]agent[/code] on the NavigationServer. + </description> + </method> </methods> <members> <member name="estimate_radius" type="bool" setter="set_estimate_radius" getter="is_radius_estimated" default="true"> diff --git a/doc/classes/NavigationPathQueryParameters2D.xml b/doc/classes/NavigationPathQueryParameters2D.xml new file mode 100644 index 0000000000..397ca8b713 --- /dev/null +++ b/doc/classes/NavigationPathQueryParameters2D.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryParameters2D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Parameters to be sent to a 2D navigation path query. + </brief_description> + <description> + This class contains the start and target position and other parameters to be used with [method NavigationServer2D.query_path]. + </description> + <tutorials> + </tutorials> + <members> + <member name="map" type="RID" setter="set_map" getter="get_map"> + The navigation [code]map[/code] [RID] used in the path query. + </member> + <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1"> + The navigation layers the query will use (as a bitmask). + </member> + <member name="path_postprocessing" type="int" setter="set_path_postprocessing" getter="get_path_postprocessing" enum="NavigationPathQueryParameters2D.PathPostProcessing" default="0"> + The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]. + </member> + <member name="pathfinding_algorithm" type="int" setter="set_pathfinding_algorithm" getter="get_pathfinding_algorithm" enum="NavigationPathQueryParameters2D.PathfindingAlgorithm" default="0"> + The pathfinding algorithm used in the path query. + </member> + <member name="start_position" type="Vector2" setter="set_start_position" getter="get_start_position" default="Vector2(0, 0)"> + The pathfinding start position in global coordinates. + </member> + <member name="target_position" type="Vector2" setter="set_target_position" getter="get_target_position" default="Vector2(0, 0)"> + The pathfinding target position in global coordinates. + </member> + </members> + <constants> + <constant name="PATHFINDING_ALGORITHM_ASTAR" value="0" enum="PathfindingAlgorithm"> + The path query uses the default A* pathfinding algorithm. + </constant> + <constant name="PATH_POSTPROCESSING_CORRIDORFUNNEL" value="0" enum="PathPostProcessing"> + Applies a funnel algorithm to the raw path corridor found by the pathfinding algorithm. This will result in the shortest path possible inside the path corridor. This postprocessing very much depends on the navmesh polygon layout and the created corridor. Especially tile- or gridbased layouts can face artificial corners with diagonal movement due to a jagged path corridor imposed by the cell shapes. + </constant> + <constant name="PATH_POSTPROCESSING_EDGECENTERED" value="1" enum="PathPostProcessing"> + Centers every path position in the middle of the traveled navmesh polygon edge. This creates better paths for tile- or gridbased layouts that restrict the movement to the cells center. + </constant> + </constants> +</class> diff --git a/doc/classes/NavigationPathQueryParameters3D.xml b/doc/classes/NavigationPathQueryParameters3D.xml new file mode 100644 index 0000000000..29faa5561b --- /dev/null +++ b/doc/classes/NavigationPathQueryParameters3D.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryParameters3D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Parameters to be sent to a 3D navigation path query. + </brief_description> + <description> + This class contains the start and target position and other parameters to be used with [method NavigationServer3D.query_path]. + </description> + <tutorials> + </tutorials> + <members> + <member name="map" type="RID" setter="set_map" getter="get_map"> + The navigation [code]map[/code] [RID] used in the path query. + </member> + <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1"> + The navigation layers the query will use (as a bitmask). + </member> + <member name="path_postprocessing" type="int" setter="set_path_postprocessing" getter="get_path_postprocessing" enum="NavigationPathQueryParameters3D.PathPostProcessing" default="0"> + The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]. + </member> + <member name="pathfinding_algorithm" type="int" setter="set_pathfinding_algorithm" getter="get_pathfinding_algorithm" enum="NavigationPathQueryParameters3D.PathfindingAlgorithm" default="0"> + The pathfinding algorithm used in the path query. + </member> + <member name="start_position" type="Vector3" setter="set_start_position" getter="get_start_position" default="Vector3(0, 0, 0)"> + The pathfinding start position in global coordinates. + </member> + <member name="target_position" type="Vector3" setter="set_target_position" getter="get_target_position" default="Vector3(0, 0, 0)"> + The pathfinding target position in global coordinates. + </member> + </members> + <constants> + <constant name="PATHFINDING_ALGORITHM_ASTAR" value="0" enum="PathfindingAlgorithm"> + The path query uses the default A* pathfinding algorithm. + </constant> + <constant name="PATH_POSTPROCESSING_CORRIDORFUNNEL" value="0" enum="PathPostProcessing"> + Applies a funnel algorithm to the raw path corridor found by the pathfinding algorithm. This will result in the shortest path possible inside the path corridor. This postprocessing very much depends on the navmesh polygon layout and the created corridor. Especially tile- or gridbased layouts can face artificial corners with diagonal movement due to a jagged path corridor imposed by the cell shapes. + </constant> + <constant name="PATH_POSTPROCESSING_EDGECENTERED" value="1" enum="PathPostProcessing"> + Centers every path position in the middle of the traveled navmesh polygon edge. This creates better paths for tile- or gridbased layouts that restrict the movement to the cells center. + </constant> + </constants> +</class> diff --git a/doc/classes/NavigationPathQueryResult2D.xml b/doc/classes/NavigationPathQueryResult2D.xml new file mode 100644 index 0000000000..95b90e9383 --- /dev/null +++ b/doc/classes/NavigationPathQueryResult2D.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryResult2D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Result from a [NavigationPathQueryParameters2D] navigation path query. + </brief_description> + <description> + This class contains the result of a navigation path query from [method NavigationServer2D.query_path]. + </description> + <tutorials> + </tutorials> + <methods> + <method name="reset"> + <return type="void" /> + <description> + Reset the result object to its initial state. This is useful to reuse the object across multiple queries. + </description> + </method> + </methods> + <members> + <member name="path" type="PackedVector2Array" setter="set_path" getter="get_path" default="PackedVector2Array()"> + The resulting path array from the navigation query. All path array positions are in global coordinates. Without customized query parameters this is the same path as returned by [method NavigationServer2D.map_get_path]. + </member> + </members> +</class> diff --git a/doc/classes/NavigationPathQueryResult3D.xml b/doc/classes/NavigationPathQueryResult3D.xml new file mode 100644 index 0000000000..b4ca8288db --- /dev/null +++ b/doc/classes/NavigationPathQueryResult3D.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryResult3D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Result from a [NavigationPathQueryParameters3D] navigation path query. + </brief_description> + <description> + This class contains the result of a navigation path query from [method NavigationServer3D.query_path]. + </description> + <tutorials> + </tutorials> + <methods> + <method name="reset"> + <return type="void" /> + <description> + Reset the result object to its initial state. This is useful to reuse the object across multiple queries. + </description> + </method> + </methods> + <members> + <member name="path" type="PackedVector3Array" setter="set_path" getter="get_path" default="PackedVector3Array()"> + The resulting path array from the navigation query. All path array positions are in global coordinates. Without customized query parameters this is the same path as returned by [method NavigationServer3D.map_get_path]. + </member> + </members> +</class> diff --git a/doc/classes/NavigationRegion2D.xml b/doc/classes/NavigationRegion2D.xml index 89f7dcb4af..0f28081201 100644 --- a/doc/classes/NavigationRegion2D.xml +++ b/doc/classes/NavigationRegion2D.xml @@ -10,6 +10,7 @@ The pathfinding cost of entering this region from another region can be controlled with the [member enter_cost] value. [b]Note:[/b] This value is not added to the path cost when the start position is already inside this region. The pathfinding cost of traveling distances inside this region can be controlled with the [member travel_cost] multiplier. + [b]Note:[/b] This node caches changes to its properties, so if you make changes to the underlying region [RID] in [NavigationServer2D], they will not be reflected in this node's properties. </description> <tutorials> </tutorials> diff --git a/doc/classes/NavigationRegion3D.xml b/doc/classes/NavigationRegion3D.xml index 87e82e7b2e..85f163b3c2 100644 --- a/doc/classes/NavigationRegion3D.xml +++ b/doc/classes/NavigationRegion3D.xml @@ -10,6 +10,7 @@ The cost of entering this region from another region can be controlled with the [member enter_cost] value. [b]Note:[/b] This value is not added to the path cost when the start position is already inside this region. The cost of traveling distances inside this region can be controlled with the [member travel_cost] multiplier. + [b]Note:[/b] This node caches changes to its properties, so if you make changes to the underlying region [RID] in [NavigationServer3D], they will not be reflected in this node's properties. </description> <tutorials> </tutorials> diff --git a/doc/classes/NavigationServer2D.xml b/doc/classes/NavigationServer2D.xml index 0874e183e4..981ab8a5e1 100644 --- a/doc/classes/NavigationServer2D.xml +++ b/doc/classes/NavigationServer2D.xml @@ -368,6 +368,14 @@ Set the map's link connection radius used to connect links to navigation polygons. </description> </method> + <method name="query_path" qualifiers="const"> + <return type="void" /> + <param index="0" name="parameters" type="NavigationPathQueryParameters2D" /> + <param index="1" name="result" type="NavigationPathQueryResult2D" /> + <description> + Queries a path in a given navigation map. Start and target position and other parameters are defined through [NavigationPathQueryParameters2D]. Updates the provided [NavigationPathQueryResult2D] result object with the path among other results requested by the query. + </description> + </method> <method name="region_create" qualifiers="const"> <return type="RID" /> <description> diff --git a/doc/classes/NavigationServer3D.xml b/doc/classes/NavigationServer3D.xml index 255f2a902c..943aa03ef7 100644 --- a/doc/classes/NavigationServer3D.xml +++ b/doc/classes/NavigationServer3D.xml @@ -410,6 +410,14 @@ [b]Note:[/b] This function is not thread safe. </description> </method> + <method name="query_path" qualifiers="const"> + <return type="void" /> + <param index="0" name="parameters" type="NavigationPathQueryParameters3D" /> + <param index="1" name="result" type="NavigationPathQueryResult3D" /> + <description> + Queries a path in a given navigation map. Start and target position and other parameters are defined through [NavigationPathQueryParameters3D]. Updates the provided [NavigationPathQueryResult3D] result object with the path among other results requested by the query. + </description> + </method> <method name="region_bake_navmesh" qualifiers="const"> <return type="void" /> <param index="0" name="mesh" type="NavigationMesh" /> diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index 92beefa5fc..d9732da3a3 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -179,9 +179,14 @@ <return type="Tween" /> <description> Creates a new [Tween] and binds it to this node. This is equivalent of doing: - [codeblock] + [codeblocks] + [gdscript] get_tree().create_tween().bind_node(self) - [/codeblock] + [/gdscript] + [csharp] + GetTree().CreateTween().BindNode(this); + [/csharp] + [/codeblocks] </description> </method> <method name="duplicate" qualifiers="const"> @@ -267,13 +272,24 @@ Returns an array listing the groups that the node is a member of. [b]Note:[/b] For performance reasons, the order of node groups is [i]not[/i] guaranteed. The order of node groups should not be relied upon as it can vary across project runs. [b]Note:[/b] The engine uses some group names internally (all starting with an underscore). To avoid conflicts with internal groups, do not add custom groups whose name starts with an underscore. To exclude internal groups while looping over [method get_groups], use the following snippet: - [codeblock] + [codeblocks] + [gdscript] # Stores the node's non-internal groups only (as an array of Strings). var non_internal_groups = [] for group in get_groups(): if not group.begins_with("_"): non_internal_groups.push_back(group) - [/codeblock] + [/gdscript] + [csharp] + // Stores the node's non-internal groups only (as a List of strings). + List<string> nonInternalGroups = new List<string>(); + foreach (string group in GetGroups()) + { + if (!group.BeginsWith("_")) + nonInternalGroups.Add(group); + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_index" qualifiers="const"> @@ -514,7 +530,7 @@ <param index="0" name="child_node" type="Node" /> <param index="1" name="to_position" type="int" /> <description> - Moves a child node to a different position (order) among the other children. Since calls, signals, etc are performed by tree order, changing the order of children nodes may be useful. + Moves a child node to a different position (order) among the other children. Since calls, signals, etc are performed by tree order, changing the order of children nodes may be useful. If [param to_position] is negative, the index will be counted from the end. [b]Note:[/b] Internal children can only be moved within their expected "internal range" (see [code]internal[/code] parameter in [method add_child]). </description> </method> @@ -577,12 +593,6 @@ Queues a node for deletion at the end of the current frame. When deleted, all of its child nodes will be deleted as well. This method ensures it's safe to delete the node, contrary to [method Object.free]. Use [method Object.is_queued_for_deletion] to check whether a node will be deleted at the end of the frame. </description> </method> - <method name="remove_and_skip"> - <return type="void" /> - <description> - Removes a node and sets all its children as children of the parent node (if it exists). All event subscriptions that pass by the removed node will be unsubscribed. - </description> - </method> <method name="remove_child"> <return type="void" /> <param index="0" name="node" type="Node" /> diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml index c8e2f1ac68..3df7ec931f 100644 --- a/doc/classes/Node3D.xml +++ b/doc/classes/Node3D.xml @@ -116,7 +116,7 @@ Rotates the node so that the local forward axis (-Z) points toward the [param target] position. The local up axis (+Y) points as close to the [param up] vector as possible while staying perpendicular to the local forward axis. The resulting transform is orthogonal, and the scale is preserved. Non-uniform scaling may not work correctly. The [param target] position cannot be the same as the node's position, the [param up] vector cannot be zero, and the direction from the node's position to the [param target] vector cannot be parallel to the [param up] vector. - Operations take place in global space. + Operations take place in global space, which means that the node must be in the scene tree. </description> </method> <method name="look_at_from_position"> @@ -331,6 +331,10 @@ <constant name="NOTIFICATION_VISIBILITY_CHANGED" value="43"> Node3D nodes receives this notification when their visibility changes. </constant> + <constant name="NOTIFICATION_LOCAL_TRANSFORM_CHANGED" value="44"> + Node3D nodes receives this notification when their local transform changes. This is not received when the transform of a parent node is changed. + In order for [constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] to work, users first need to ask for it, with [method set_notify_local_transform]. + </constant> <constant name="ROTATION_EDIT_MODE_EULER" value="0" enum="RotationEditMode"> </constant> <constant name="ROTATION_EDIT_MODE_QUATERNION" value="1" enum="RotationEditMode"> diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 059766656f..bc6ac8012f 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -18,12 +18,6 @@ Displays a modal dialog box using the host OS' facilities. Execution is blocked until the dialog is closed. </description> </method> - <method name="can_use_threads" qualifiers="const"> - <return type="bool" /> - <description> - Returns [code]true[/code] if the current host platform is using multiple threads. - </description> - </method> <method name="close_midi_inputs"> <return type="void" /> <description> @@ -216,6 +210,15 @@ Not to be confused with [method get_user_data_dir], which returns the [i]project-specific[/i] user data path. </description> </method> + <method name="get_distribution_name" qualifiers="const"> + <return type="String" /> + <description> + Returns the name of the distribution for Linux and BSD platforms (e.g. Ubuntu, Manjaro, OpenBSD, etc.). + Returns the same value as [method get_name] for stock Android ROMs, but attempts to return the custom ROM name for popular Android derivatives such as LineageOS. + Returns the same value as [method get_name] for other platforms. + [b]Note:[/b] This method is not supported on the web platform. It returns an empty string. + </description> + </method> <method name="get_environment" qualifiers="const"> <return type="String" /> <param index="0" name="variable" type="String" /> @@ -430,6 +433,18 @@ Not to be confused with [method get_data_dir], which returns the [i]global[/i] (non-project-specific) user home directory. </description> </method> + <method name="get_version" qualifiers="const"> + <return type="String" /> + <description> + Returns the exact production and build version of the operating system. This is different from the branded version used in marketing. This helps to distinguish between different releases of operating systems, including minor versions, and insider and custom builds. + For Windows, the major and minor version are returned, as well as the build number. For example, the returned string can look like [code]10.0.9926[/code] for a build of Windows 10, and it can look like [code]6.1.7601[/code] for a build of Windows 7 SP1. + For rolling distributions, such as Arch Linux, an empty string is returned. + For macOS and iOS, the major and minor version are returned, as well as the patch number. + For UWP, the device family version is returned. + For Android, the SDK version and the incremental build number are returned. If it's a custom ROM, it attempts to return its version instead. + [b]Note:[/b] This method is not supported on the web platform. It returns an empty string. + </description> + </method> <method name="has_environment" qualifiers="const"> <return type="bool" /> <param index="0" name="variable" type="String" /> @@ -501,13 +516,19 @@ <return type="int" enum="Error" /> <param index="0" name="path" type="String" /> <description> - Moves the file or directory to the system's recycle bin. See also [method Directory.remove]. - The method takes only global paths, so you may need to use [method ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/code] as it will not work in exported project. + Moves the file or directory to the system's recycle bin. See also [method DirAccess.remove]. + The method takes only global paths, so you may need to use [method ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/code] as it will not work in exported projects. [b]Note:[/b] If the user has disabled the recycle bin on their system, the file will be permanently deleted instead. - [codeblock] + [codeblocks] + [gdscript] var file_to_remove = "user://slot1.sav" OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove)) - [/codeblock] + [/gdscript] + [csharp] + var fileToRemove = "user://slot1.sav"; + OS.MoveToTrash(ProjectSettings.GlobalizePath(fileToRemove)); + [/csharp] + [/codeblocks] </description> </method> <method name="open_midi_inputs"> @@ -517,6 +538,14 @@ [b]Note:[/b] This method is implemented on Linux, macOS and Windows. </description> </method> + <method name="read_string_from_stdin"> + <return type="String" /> + <param index="0" name="block" type="bool" default="true" /> + <description> + Reads a user input string from the standard input (usually the terminal). + [b]Note:[/b] This method is implemented on Linux, macOS and Windows. Non-blocking reads are not currently supported on any platform. + </description> + </method> <method name="request_permission"> <return type="bool" /> <param index="0" name="name" type="String" /> diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml index f10c096c1b..199535298c 100644 --- a/doc/classes/OptionButton.xml +++ b/doc/classes/OptionButton.xml @@ -190,6 +190,12 @@ Sets the tooltip of the item at index [param idx]. </description> </method> + <method name="show_popup"> + <return type="void" /> + <description> + Adjusts popup position and sizing for the [OptionButton], then shows the [PopupMenu]. Prefer this over using [code]get_popup().popup()[/code]. + </description> + </method> </methods> <members> <member name="action_mode" type="int" setter="set_action_mode" getter="get_action_mode" overrides="BaseButton" enum="BaseButton.ActionMode" default="0" /> diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml index efb559522a..ccf012f82c 100644 --- a/doc/classes/PackedByteArray.xml +++ b/doc/classes/PackedByteArray.xml @@ -65,7 +65,7 @@ <return type="PackedByteArray" /> <param index="0" name="compression_mode" type="int" default="0" /> <description> - Returns a new [PackedByteArray] with the data compressed. Set the compression mode using one of [enum File.CompressionMode]'s constants. + Returns a new [PackedByteArray] with the data compressed. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants. </description> </method> <method name="count" qualifiers="const"> @@ -173,7 +173,7 @@ <param index="0" name="buffer_size" type="int" /> <param index="1" name="compression_mode" type="int" default="0" /> <description> - Returns a new [PackedByteArray] with the data decompressed. Set [param buffer_size] to the size of the uncompressed data. Set the compression mode using one of [enum File.CompressionMode]'s constants. + Returns a new [PackedByteArray] with the data decompressed. Set [param buffer_size] to the size of the uncompressed data. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants. </description> </method> <method name="decompress_dynamic" qualifiers="const"> @@ -181,7 +181,7 @@ <param index="0" name="max_output_size" type="int" /> <param index="1" name="compression_mode" type="int" default="0" /> <description> - Returns a new [PackedByteArray] with the data decompressed. Set the compression mode using one of [enum File.CompressionMode]'s constants. [b]This method only accepts gzip and deflate compression modes.[/b] + Returns a new [PackedByteArray] with the data decompressed. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants. [b]This method only accepts gzip and deflate compression modes.[/b] This method is potentially slower than [code]decompress[/code], as it may have to re-allocate its output buffer multiple times while decompressing, whereas [code]decompress[/code] knows it's output buffer size from the beginning. GZIP has a maximal compression ratio of 1032:1, meaning it's very possible for a small compressed payload to decompress to a potentially very large output. To guard against this, you may provide a maximum size this function is allowed to allocate in bytes via [param max_output_size]. Passing -1 will allow for unbounded output. If any positive value is passed, and the decompression exceeds that amount in bytes, then an error will be returned. </description> diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml index 97595a6984..7ca1d5d60d 100644 --- a/doc/classes/PackedScene.xml +++ b/doc/classes/PackedScene.xml @@ -41,7 +41,7 @@ # Only `node` and `body` are now packed. var result = scene.pack(node) if result == OK: - var error = ResourceSaver.save("res://path/name.tscn", scene) # Or "user://..." + var error = ResourceSaver.save(scene, "res://path/name.tscn") # Or "user://..." if error != OK: push_error("An error occurred while saving the scene to disk.") [/gdscript] @@ -63,7 +63,7 @@ Error result = scene.Pack(node); if (result == Error.Ok) { - Error error = ResourceSaver.Save("res://path/name.tscn", scene); // Or "user://..." + Error error = ResourceSaver.Save(scene, "res://path/name.tscn"); // Or "user://..." if (error != Error.Ok) { GD.PushError("An error occurred while saving the scene to disk."); diff --git a/doc/classes/PanoramaSkyMaterial.xml b/doc/classes/PanoramaSkyMaterial.xml index 21c7f29585..0c27037f28 100644 --- a/doc/classes/PanoramaSkyMaterial.xml +++ b/doc/classes/PanoramaSkyMaterial.xml @@ -4,9 +4,9 @@ A [Material] used with [Sky] to draw a background texture. </brief_description> <description> - A resource referenced in a [Sky] that is used to draw a background. The Panorama sky material functions similar to skyboxes in other engines, except it uses an equirectangular sky map instead of a cube map. + A resource referenced in a [Sky] that is used to draw a background. The Panorama sky material functions similar to skyboxes in other engines, except it uses an equirectangular sky map instead of a cubemap. Using an HDR panorama is strongly recommended for accurate, high-quality reflections. Godot supports the Radiance HDR ([code].hdr[/code]) and OpenEXR ([code].exr[/code]) image formats for this purpose. - You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cube map to an equirectangular sky map. + You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cubemap to an equirectangular sky map. </description> <tutorials> </tutorials> diff --git a/doc/classes/PhysicsBody2D.xml b/doc/classes/PhysicsBody2D.xml index e8d7ac9920..59660b4de5 100644 --- a/doc/classes/PhysicsBody2D.xml +++ b/doc/classes/PhysicsBody2D.xml @@ -28,11 +28,13 @@ <param index="0" name="distance" type="Vector2" /> <param index="1" name="test_only" type="bool" default="false" /> <param index="2" name="safe_margin" type="float" default="0.08" /> + <param index="3" name="recovery_as_collision" type="bool" default="false" /> <description> Moves the body along the vector [param distance]. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. Returns a [KinematicCollision2D], which contains information about the collision when stopped, or when touching another body along the motion. If [param test_only] is [code]true[/code], the body does not move but the would-be collision information is given. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody2D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is used e.g. by [CharacterBody2D] for improving floor detection during floor snapping. </description> </method> <method name="remove_collision_exception_with"> @@ -48,11 +50,13 @@ <param index="1" name="distance" type="Vector2" /> <param index="2" name="collision" type="KinematicCollision2D" default="null" /> <param index="3" name="safe_margin" type="float" default="0.08" /> + <param index="4" name="recovery_as_collision" type="bool" default="false" /> <description> Checks for collisions without moving the body. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. Virtually sets the node's position, scale and rotation to that of the given [Transform2D], then tries to move the body along the vector [param distance]. Returns [code]true[/code] if a collision would stop the body from moving along the whole path. [param collision] is an optional object of type [KinematicCollision2D], which contains additional information about the collision when stopped, or when touching another body along the motion. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody2D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is useful for checking whether the body would [i]touch[/i] any other bodies. </description> </method> </methods> diff --git a/doc/classes/PhysicsBody3D.xml b/doc/classes/PhysicsBody3D.xml index 310671274f..bf7882a1ea 100644 --- a/doc/classes/PhysicsBody3D.xml +++ b/doc/classes/PhysicsBody3D.xml @@ -35,12 +35,14 @@ <param index="0" name="distance" type="Vector3" /> <param index="1" name="test_only" type="bool" default="false" /> <param index="2" name="safe_margin" type="float" default="0.001" /> - <param index="3" name="max_collisions" type="int" default="1" /> + <param index="3" name="recovery_as_collision" type="bool" default="false" /> + <param index="4" name="max_collisions" type="int" default="1" /> <description> Moves the body along the vector [param distance]. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. The body will stop if it collides. Returns a [KinematicCollision3D], which contains information about the collision when stopped, or when touching another body along the motion. If [param test_only] is [code]true[/code], the body does not move but the would-be collision information is given. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody3D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is used e.g. by [CharacterBody3D] for improving floor detection during floor snapping. [param max_collisions] allows to retrieve more than one collision result. </description> </method> @@ -65,12 +67,14 @@ <param index="1" name="distance" type="Vector3" /> <param index="2" name="collision" type="KinematicCollision3D" default="null" /> <param index="3" name="safe_margin" type="float" default="0.001" /> - <param index="4" name="max_collisions" type="int" default="1" /> + <param index="4" name="recovery_as_collision" type="bool" default="false" /> + <param index="5" name="max_collisions" type="int" default="1" /> <description> Checks for collisions without moving the body. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. Virtually sets the node's position, scale and rotation to that of the given [Transform3D], then tries to move the body along the vector [param distance]. Returns [code]true[/code] if a collision would stop the body from moving along the whole path. [param collision] is an optional object of type [KinematicCollision3D], which contains additional information about the collision when stopped, or when touching another body along the motion. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody3D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is useful for checking whether the body would [i]touch[/i] any other bodies. [param max_collisions] allows to retrieve more than one collision result. </description> </method> diff --git a/doc/classes/PhysicsServer2D.xml b/doc/classes/PhysicsServer2D.xml index 4b588033c0..18ac8a11df 100644 --- a/doc/classes/PhysicsServer2D.xml +++ b/doc/classes/PhysicsServer2D.xml @@ -53,6 +53,20 @@ <description> </description> </method> + <method name="area_get_collision_layer" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area belongs to. + </description> + </method> + <method name="area_get_collision_mask" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area can contact with. + </description> + </method> <method name="area_get_object_instance_id" qualifiers="const"> <return type="int" /> <param index="0" name="area" type="RID" /> diff --git a/doc/classes/PhysicsServer2DExtension.xml b/doc/classes/PhysicsServer2DExtension.xml index 4a5425bd63..9bb11e0d89 100644 --- a/doc/classes/PhysicsServer2DExtension.xml +++ b/doc/classes/PhysicsServer2DExtension.xml @@ -47,6 +47,18 @@ <description> </description> </method> + <method name="_area_get_collision_layer" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_collision_mask" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> <method name="_area_get_object_instance_id" qualifiers="virtual const"> <return type="int" /> <param index="0" name="area" type="RID" /> @@ -142,6 +154,13 @@ <description> </description> </method> + <method name="_area_set_pickable" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="pickable" type="bool" /> + <description> + </description> + </method> <method name="_area_set_shape" qualifiers="virtual"> <return type="void" /> <param index="0" name="area" type="RID" /> @@ -282,6 +301,19 @@ <description> </description> </method> + <method name="_body_collide_shape" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="body_shape" type="int" /> + <param index="2" name="shape" type="RID" /> + <param index="3" name="shape_xform" type="Transform2D" /> + <param index="4" name="motion" type="Vector2" /> + <param index="5" name="results" type="void*" /> + <param index="6" name="result_max" type="int" /> + <param index="7" name="result_count" type="int32_t*" /> + <description> + </description> + </method> <method name="_body_create" qualifiers="virtual"> <return type="RID" /> <description> @@ -293,6 +325,12 @@ <description> </description> </method> + <method name="_body_get_collision_exceptions" qualifiers="virtual const"> + <return type="RID[]" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_get_collision_layer" qualifiers="virtual const"> <return type="int" /> <param index="0" name="body" type="RID" /> @@ -323,6 +361,12 @@ <description> </description> </method> + <method name="_body_get_contacts_reported_depth_threshold" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_get_continuous_collision_detection_mode" qualifiers="virtual const"> <return type="int" enum="PhysicsServer2D.CCDMode" /> <param index="0" name="body" type="RID" /> @@ -461,6 +505,13 @@ <description> </description> </method> + <method name="_body_set_contacts_reported_depth_threshold" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="threshold" type="float" /> + <description> + </description> + </method> <method name="_body_set_continuous_collision_detection_mode" qualifiers="virtual"> <return type="void" /> <param index="0" name="body" type="RID" /> @@ -505,6 +556,13 @@ <description> </description> </method> + <method name="_body_set_pickable" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="pickable" type="bool" /> + <description> + </description> + </method> <method name="_body_set_shape" qualifiers="virtual"> <return type="void" /> <param index="0" name="body" type="RID" /> @@ -553,6 +611,13 @@ <description> </description> </method> + <method name="_body_set_state_sync_callback" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="callable" type="Callable" /> + <description> + </description> + </method> <method name="_body_test_motion" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="body" type="RID" /> @@ -648,6 +713,13 @@ <description> </description> </method> + <method name="_joint_disable_collisions_between_bodies" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="disable" type="bool" /> + <description> + </description> + </method> <method name="_joint_get_param" qualifiers="virtual const"> <return type="float" /> <param index="0" name="joint" type="RID" /> @@ -661,6 +733,12 @@ <description> </description> </method> + <method name="_joint_is_disabled_collisions_between_bodies" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="joint" type="RID" /> + <description> + </description> + </method> <method name="_joint_make_damped_spring" qualifiers="virtual"> <return type="void" /> <param index="0" name="joint" type="RID" /> @@ -735,6 +813,26 @@ <description> </description> </method> + <method name="_shape_collide" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="shape_A" type="RID" /> + <param index="1" name="xform_A" type="Transform2D" /> + <param index="2" name="motion_A" type="Vector2" /> + <param index="3" name="shape_B" type="RID" /> + <param index="4" name="xform_B" type="Transform2D" /> + <param index="5" name="motion_B" type="Vector2" /> + <param index="6" name="results" type="void*" /> + <param index="7" name="result_max" type="int" /> + <param index="8" name="result_count" type="int32_t*" /> + <description> + </description> + </method> + <method name="_shape_get_custom_solver_bias" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> <method name="_shape_get_data" qualifiers="virtual const"> <return type="Variant" /> <param index="0" name="shape" type="RID" /> @@ -747,6 +845,13 @@ <description> </description> </method> + <method name="_shape_set_custom_solver_bias" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="shape" type="RID" /> + <param index="1" name="bias" type="float" /> + <description> + </description> + </method> <method name="_shape_set_data" qualifiers="virtual"> <return type="void" /> <param index="0" name="shape" type="RID" /> @@ -759,6 +864,18 @@ <description> </description> </method> + <method name="_space_get_contact_count" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_space_get_contacts" qualifiers="virtual const"> + <return type="PackedVector2Array" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> <method name="_space_get_direct_state" qualifiers="virtual"> <return type="PhysicsDirectSpaceState2D" /> <param index="0" name="space" type="RID" /> @@ -785,6 +902,13 @@ <description> </description> </method> + <method name="_space_set_debug_contacts" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="space" type="RID" /> + <param index="1" name="max_contacts" type="int" /> + <description> + </description> + </method> <method name="_space_set_param" qualifiers="virtual"> <return type="void" /> <param index="0" name="space" type="RID" /> diff --git a/doc/classes/PhysicsServer3D.xml b/doc/classes/PhysicsServer3D.xml index da9e10c420..95f7fb69a2 100644 --- a/doc/classes/PhysicsServer3D.xml +++ b/doc/classes/PhysicsServer3D.xml @@ -40,6 +40,20 @@ Creates an [Area3D]. </description> </method> + <method name="area_get_collision_layer" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area belongs to. + </description> + </method> + <method name="area_get_collision_mask" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area can contact with. + </description> + </method> <method name="area_get_object_instance_id" qualifiers="const"> <return type="int" /> <param index="0" name="area" type="RID" /> diff --git a/doc/classes/PhysicsServer3DExtension.xml b/doc/classes/PhysicsServer3DExtension.xml index 46d3c8ae3e..1e9df54de5 100644 --- a/doc/classes/PhysicsServer3DExtension.xml +++ b/doc/classes/PhysicsServer3DExtension.xml @@ -34,6 +34,18 @@ <description> </description> </method> + <method name="_area_get_collision_layer" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_collision_mask" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> <method name="_area_get_object_instance_id" qualifiers="virtual const"> <return type="int" /> <param index="0" name="area" type="RID" /> @@ -274,6 +286,12 @@ <description> </description> </method> + <method name="_body_get_collision_exceptions" qualifiers="virtual const"> + <return type="RID[]" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_get_collision_layer" qualifiers="virtual const"> <return type="int" /> <param index="0" name="body" type="RID" /> @@ -304,6 +322,12 @@ <description> </description> </method> + <method name="_body_get_contacts_reported_depth_threshold" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_get_direct_state" qualifiers="virtual"> <return type="PhysicsDirectBodyState3D" /> <param index="0" name="body" type="RID" /> @@ -368,6 +392,12 @@ <description> </description> </method> + <method name="_body_get_user_flags" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_is_axis_locked" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="body" type="RID" /> @@ -457,6 +487,13 @@ <description> </description> </method> + <method name="_body_set_contacts_reported_depth_threshold" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="threshold" type="float" /> + <description> + </description> + </method> <method name="_body_set_enable_continuous_collision_detection" qualifiers="virtual"> <return type="void" /> <param index="0" name="body" type="RID" /> @@ -547,6 +584,20 @@ <description> </description> </method> + <method name="_body_set_state_sync_callback" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="callable" type="Callable" /> + <description> + </description> + </method> + <method name="_body_set_user_flags" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="flags" type="int" /> + <description> + </description> + </method> <method name="_body_test_motion" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="body" type="RID" /> @@ -763,6 +814,18 @@ <description> </description> </method> + <method name="_joint_make_hinge_simple" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="body_A" type="RID" /> + <param index="2" name="pivot_A" type="Vector3" /> + <param index="3" name="axis_A" type="Vector3" /> + <param index="4" name="body_B" type="RID" /> + <param index="5" name="pivot_B" type="Vector3" /> + <param index="6" name="axis_B" type="Vector3" /> + <description> + </description> + </method> <method name="_joint_make_pin" qualifiers="virtual"> <return type="void" /> <param index="0" name="joint" type="RID" /> @@ -842,18 +905,37 @@ <description> </description> </method> + <method name="_shape_get_custom_solver_bias" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> <method name="_shape_get_data" qualifiers="virtual const"> <return type="Variant" /> <param index="0" name="shape" type="RID" /> <description> </description> </method> + <method name="_shape_get_margin" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> <method name="_shape_get_type" qualifiers="virtual const"> <return type="int" enum="PhysicsServer3D.ShapeType" /> <param index="0" name="shape" type="RID" /> <description> </description> </method> + <method name="_shape_set_custom_solver_bias" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="shape" type="RID" /> + <param index="1" name="bias" type="float" /> + <description> + </description> + </method> <method name="_shape_set_data" qualifiers="virtual"> <return type="void" /> <param index="0" name="shape" type="RID" /> @@ -861,6 +943,13 @@ <description> </description> </method> + <method name="_shape_set_margin" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="shape" type="RID" /> + <param index="1" name="margin" type="float" /> + <description> + </description> + </method> <method name="_slider_joint_get_param" qualifiers="virtual const"> <return type="float" /> <param index="0" name="joint" type="RID" /> @@ -876,17 +965,250 @@ <description> </description> </method> + <method name="_soft_body_add_collision_exception" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="body_b" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> <method name="_soft_body_get_bounds" qualifiers="virtual const"> <return type="AABB" /> <param index="0" name="body" type="RID" /> <description> </description> </method> + <method name="_soft_body_get_collision_exceptions" qualifiers="virtual const"> + <return type="RID[]" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_collision_layer" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_collision_mask" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_damping_coefficient" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_drag_coefficient" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_linear_stiffness" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_point_global_position" qualifiers="virtual const"> + <return type="Vector3" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_get_pressure_coefficient" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_simulation_precision" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_space" qualifiers="virtual const"> + <return type="RID" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_state" qualifiers="virtual const"> + <return type="Variant" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="state" type="int" enum="PhysicsServer3D.BodyState" /> + <description> + </description> + </method> + <method name="_soft_body_get_total_mass" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_is_point_pinned" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_move_point" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <param index="2" name="global_position" type="Vector3" /> + <description> + </description> + </method> + <method name="_soft_body_pin_point" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <param index="2" name="pin" type="bool" /> + <description> + </description> + </method> + <method name="_soft_body_remove_all_pinned_points" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_remove_collision_exception" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="body_b" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_set_collision_layer" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="layer" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_set_collision_mask" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="mask" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_set_damping_coefficient" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="damping_coefficient" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_drag_coefficient" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="drag_coefficient" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_linear_stiffness" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="linear_stiffness" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_mesh" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="mesh" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_set_pressure_coefficient" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="pressure_coefficient" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_ray_pickable" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="enable" type="bool" /> + <description> + </description> + </method> + <method name="_soft_body_set_simulation_precision" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="simulation_precision" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_set_space" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_set_state" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="state" type="int" enum="PhysicsServer3D.BodyState" /> + <param index="2" name="variant" type="Variant" /> + <description> + </description> + </method> + <method name="_soft_body_set_total_mass" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="total_mass" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_transform" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="transform" type="Transform3D" /> + <description> + </description> + </method> + <method name="_soft_body_update_rendering_server" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="rendering_server_handler" type="PhysicsServer3DRenderingServerHandler" /> + <description> + </description> + </method> <method name="_space_create" qualifiers="virtual"> <return type="RID" /> <description> </description> </method> + <method name="_space_get_contact_count" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_space_get_contacts" qualifiers="virtual const"> + <return type="PackedVector3Array" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> <method name="_space_get_direct_state" qualifiers="virtual"> <return type="PhysicsDirectSpaceState3D" /> <param index="0" name="space" type="RID" /> @@ -913,6 +1235,13 @@ <description> </description> </method> + <method name="_space_set_debug_contacts" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="space" type="RID" /> + <param index="1" name="max_contacts" type="int" /> + <description> + </description> + </method> <method name="_space_set_param" qualifiers="virtual"> <return type="void" /> <param index="0" name="space" type="RID" /> diff --git a/doc/classes/PhysicsTestMotionParameters2D.xml b/doc/classes/PhysicsTestMotionParameters2D.xml index 4f2b62f2d9..d8f96511dd 100644 --- a/doc/classes/PhysicsTestMotionParameters2D.xml +++ b/doc/classes/PhysicsTestMotionParameters2D.xml @@ -29,8 +29,8 @@ Motion vector to define the length and direction of the motion to test. </member> <member name="recovery_as_collision" type="bool" setter="set_recovery_as_collision_enabled" getter="is_recovery_as_collision_enabled" default="false"> - If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [method CharacterBody2D.move_and_slide] for improving floor detection when floor snapping is disabled. - If set to [code]false[/code], only collisions resulting from the motion are reported; this is used e.g. by [method PhysicsBody2D.move_and_collide]. + If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [CharacterBody2D] for improving floor detection during floor snapping. + If set to [code]false[/code], only collisions resulting from the motion are reported, which is generally the desired behaviour. </member> </members> </class> diff --git a/doc/classes/PhysicsTestMotionParameters3D.xml b/doc/classes/PhysicsTestMotionParameters3D.xml index 5b07796a10..e8f80ae131 100644 --- a/doc/classes/PhysicsTestMotionParameters3D.xml +++ b/doc/classes/PhysicsTestMotionParameters3D.xml @@ -32,8 +32,8 @@ Motion vector to define the length and direction of the motion to test. </member> <member name="recovery_as_collision" type="bool" setter="set_recovery_as_collision_enabled" getter="is_recovery_as_collision_enabled" default="false"> - If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [method CharacterBody3D.move_and_slide] for improving floor detection when floor snapping is disabled. - If set to [code]false[/code], only collisions resulting from the motion are detected; this is used e.g. by [method PhysicsBody3D.move_and_collide]. + If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [CharacterBody3D] for improving floor detection during floor snapping. + If set to [code]false[/code], only collisions resulting from the motion are reported, which is generally the desired behaviour. </member> </members> </class> diff --git a/doc/classes/PlaneMesh.xml b/doc/classes/PlaneMesh.xml index 564b6fe743..1dceac70b0 100644 --- a/doc/classes/PlaneMesh.xml +++ b/doc/classes/PlaneMesh.xml @@ -31,10 +31,10 @@ [PlaneMesh] will face the positive X-axis. </constant> <constant name="FACE_Y" value="1" enum="Orientation"> - [PlaneMesh] will face the positive Y-axis. This matches the behaviour of the [PlaneMesh] in Godot 3.x. + [PlaneMesh] will face the positive Y-axis. This matches the behavior of the [PlaneMesh] in Godot 3.x. </constant> <constant name="FACE_Z" value="2" enum="Orientation"> - [PlaneMesh] will face the positive Z-axis. This matches the behvaiour of the QuadMesh in Godot 3.x. + [PlaneMesh] will face the positive Z-axis. This matches the behavior of the QuadMesh in Godot 3.x. </constant> </constants> </class> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 3dbf7c75e5..85bb9a64a6 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -159,6 +159,15 @@ Sets the order of a configuration value (influences when saved to the config file). </description> </method> + <method name="set_restart_if_changed"> + <return type="void" /> + <param index="0" name="name" type="String" /> + <param index="1" name="restart" type="bool" /> + <description> + Sets whether a setting requires restarting the editor to properly take effect. + [b]Note:[/b] This is just a hint to display to the user that the editor must be restarted for changes to take effect. Enabling [method set_restart_if_changed] does [i]not[/i] delay the setting being set when changed. + </description> + </method> <method name="set_setting"> <return type="void" /> <param index="0" name="name" type="String" /> @@ -267,6 +276,15 @@ <member name="application/run/main_scene" type="String" setter="" getter="" default=""""> Path to the main scene file that will be loaded when the project runs. </member> + <member name="application/run/max_fps" type="int" setter="" getter="" default="0"> + Maximum number of frames per second allowed. A value of [code]0[/code] means "no limit". The actual number of frames per second may still be below this value if the CPU or GPU cannot keep up with the project logic and rendering. + Limiting the FPS can be useful to reduce system power consumption, which reduces heat and noise emissions (and improves battery life on mobile devices). + If [member display/window/vsync/vsync_mode] is set to [code]Enabled[/code] or [code]Adaptive[/code], it takes precedence and the forced FPS number cannot exceed the monitor's refresh rate. + If [member display/window/vsync/vsync_mode] is [code]Enabled[/code], on monitors with variable refresh rate enabled (G-Sync/FreeSync), using a FPS limit a few frames lower than the monitor's refresh rate will [url=https://blurbusters.com/howto-low-lag-vsync-on/]reduce input lag while avoiding tearing[/url]. + If [member display/window/vsync/vsync_mode] is [code]Disabled[/code], limiting the FPS to a high value that can be consistently reached on the system can reduce input lag compared to an uncapped framerate. Since this works by ensuring the GPU load is lower than 100%, this latency reduction is only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked scenarios. + See also [member physics/common/physics_ticks_per_second]. + [b]Note:[/b] This property is only read when the project starts. To change the rendering FPS cap at runtime, set [member Engine.max_fps] instead. + </member> <member name="audio/buses/channel_disable_threshold_db" type="float" setter="" getter="" default="-60.0"> Audio buses will disable automatically when sound goes below a given dB threshold for a given time. This saves CPU as effects assigned to that bus will no longer do any processing. </member> @@ -330,25 +348,25 @@ Desktop override for [member debug/file_logging/enable_file_logging], as log files are not readily accessible on mobile/Web platforms. </member> <member name="debug/file_logging/log_path" type="String" setter="" getter="" default=""user://logs/godot.log""> - Path to logs within the project. Using an [code]user://[/code] path is recommended. + Path at which to store log files for the project. Using a path under [code]user://[/code] is recommended. </member> <member name="debug/file_logging/max_log_files" type="int" setter="" getter="" default="5"> Specifies the maximum number of log files allowed (used for rotation). </member> <member name="debug/gdscript/warnings/assert_always_false" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when an [code]assert[/code] call always returns false. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an [code]assert[/code] call always evaluates to false. </member> <member name="debug/gdscript/warnings/assert_always_true" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when an [code]assert[/code] call always returns true. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an [code]assert[/code] call always evaluates to true. </member> <member name="debug/gdscript/warnings/constant_used_as_function" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a constant is used as a function. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a constant is used as a function. </member> <member name="debug/gdscript/warnings/deprecated_keyword" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when deprecated keywords are used. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when deprecated keywords are used. </member> <member name="debug/gdscript/warnings/empty_file" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when an empty file is parsed. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an empty file is parsed. </member> <member name="debug/gdscript/warnings/enable" type="bool" setter="" getter="" default="true"> If [code]true[/code], enables specific GDScript warnings (see [code]debug/gdscript/warnings/*[/code] settings). If [code]false[/code], disables all GDScript warnings. @@ -357,87 +375,88 @@ If [code]true[/code], scripts in the [code]res://addons[/code] folder will not generate warnings. </member> <member name="debug/gdscript/warnings/function_used_as_property" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when using a function as if it was a property. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using a function as if it is a property. </member> <member name="debug/gdscript/warnings/incompatible_ternary" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a ternary operator may emit values with incompatible types. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a ternary operator may emit values with incompatible types. </member> <member name="debug/gdscript/warnings/int_assigned_to_enum" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when trying to assign an integer to a variable that expects an enum value. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when trying to assign an integer to a variable that expects an enum value. </member> <member name="debug/gdscript/warnings/integer_division" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when dividing an integer by another integer (the decimal part will be discarded). + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when dividing an integer by another integer (the decimal part will be discarded). </member> <member name="debug/gdscript/warnings/narrowing_conversion" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when passing a floating-point value to a function that expects an integer (it will be converted and lose precision). + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when passing a floating-point value to a function that expects an integer (it will be converted and lose precision). </member> <member name="debug/gdscript/warnings/property_used_as_function" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when using a property as if it was a function. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using a property as if it is a function. </member> <member name="debug/gdscript/warnings/redundant_await" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a function that is not a coroutine is called with await. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a function that is not a coroutine is called with await. </member> <member name="debug/gdscript/warnings/return_value_discarded" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when calling a function without using its return value (by assigning it to a variable or using it as a function argument). Such return values are sometimes used to denote possible errors using the [enum Error] enum. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a function without using its return value (by assigning it to a variable or using it as a function argument). Such return values are sometimes used to denote possible errors using the [enum Error] enum. </member> <member name="debug/gdscript/warnings/shadowed_global_identifier" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when defining a local or subclass member variable, signal, or enum that would have the same name as a built-in function or global class name, which possibly shadow it. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when defining a local or member variable, signal, or enum that would have the same name as a built-in function or global class name, thus shadowing it. </member> <member name="debug/gdscript/warnings/shadowed_variable" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when defining a local or subclass member variable that would shadow a variable at an upper level (such as a member variable). + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when defining a local or member variable that would shadow a member variable that the class defines. </member> <member name="debug/gdscript/warnings/shadowed_variable_base_class" type="int" setter="" getter="" default="1"> + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when defining a local or subclass member variable that would shadow a variable that is inherited from a parent class. </member> <member name="debug/gdscript/warnings/standalone_expression" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when calling an expression that has no effect on the surrounding code, such as writing [code]2 + 2[/code] as a statement. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling an expression that has no effect on the surrounding code, such as writing [code]2 + 2[/code] as a statement. </member> <member name="debug/gdscript/warnings/standalone_ternary" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when calling a ternary expression that has no effect on the surrounding code, such as writing [code]42 if active else 0[/code] as a statement. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a ternary expression that has no effect on the surrounding code, such as writing [code]42 if active else 0[/code] as a statement. </member> <member name="debug/gdscript/warnings/treat_warnings_as_errors" type="bool" setter="" getter="" default="false"> - If [code]true[/code], all warnings will be reported as if they were errors. + If [code]true[/code], all warnings will be reported as if they are errors. </member> <member name="debug/gdscript/warnings/unassigned_variable" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when using a variable that wasn't previously assigned. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using a variable that wasn't previously assigned. </member> <member name="debug/gdscript/warnings/unassigned_variable_op_assign" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when assigning a variable using an assignment operator like [code]+=[/code] if the variable wasn't previously assigned. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when assigning a variable using an assignment operator like [code]+=[/code] if the variable wasn't previously assigned. </member> <member name="debug/gdscript/warnings/unreachable_code" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when unreachable code is detected (such as after a [code]return[/code] statement that will always be executed). + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when unreachable code is detected (such as after a [code]return[/code] statement that will always be executed). </member> <member name="debug/gdscript/warnings/unreachable_pattern" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when an unreachable [code]match[/code] pattern is detected. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when an unreachable [code]match[/code] pattern is detected. </member> <member name="debug/gdscript/warnings/unsafe_call_argument" type="int" setter="" getter="" default="0"> - If [code]enabled[/code], prints a warning or an error when using an expression whose type may not be compatible with the function parameter expected. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when using an expression whose type may not be compatible with the function parameter expected. </member> <member name="debug/gdscript/warnings/unsafe_cast" type="int" setter="" getter="" default="0"> - If [code]enabled[/code], prints a warning or an error when performing an unsafe cast. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when performing an unsafe cast. </member> <member name="debug/gdscript/warnings/unsafe_method_access" type="int" setter="" getter="" default="0"> - If [code]enabled[/code], prints a warning or an error when calling a method whose presence is not guaranteed at compile-time in the class. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when calling a method whose presence is not guaranteed at compile-time in the class. </member> <member name="debug/gdscript/warnings/unsafe_property_access" type="int" setter="" getter="" default="0"> - If [code]enabled[/code], prints a warning or an error when accessing a property whose presence is not guaranteed at compile-time in the class. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when accessing a property whose presence is not guaranteed at compile-time in the class. </member> <member name="debug/gdscript/warnings/unused_local_constant" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a local constant is never used. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local constant is never used. </member> <member name="debug/gdscript/warnings/unused_parameter" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a function parameter is never used. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a function parameter is never used. </member> <member name="debug/gdscript/warnings/unused_private_class_variable" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a class variable is never used. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a private member variable is never used. </member> <member name="debug/gdscript/warnings/unused_signal" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a signal is unused. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a signal is declared but never emitted. </member> <member name="debug/gdscript/warnings/unused_variable" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when a local variable is unused. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a local variable is unused. </member> <member name="debug/gdscript/warnings/void_assignment" type="int" setter="" getter="" default="1"> - If [code]enabled[/code], prints a warning or an error when assigning the result of a function that returns [code]void[/code] to a variable. + When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when assigning the result of a function that returns [code]void[/code] to a variable. </member> <member name="debug/settings/crash_handler/message" type="String" setter="" getter="" default=""Please include this when reporting the bug to the project developer.""> Message to be displayed before the backtrace when the engine crashes. By default, this message is only used in exported projects due to the editor-only override applied to this setting. @@ -445,12 +464,6 @@ <member name="debug/settings/crash_handler/message.editor" type="String" setter="" getter="" default=""Please include this when reporting the bug on: https://github.com/godotengine/godot/issues""> Editor-only override for [member debug/settings/crash_handler/message]. Does not affect exported projects in debug or release mode. </member> - <member name="debug/settings/fps/force_fps" type="int" setter="" getter="" default="0"> - Maximum number of frames per second allowed. The actual number of frames per second may still be below this value if the game is lagging. - If [member display/window/vsync/vsync_mode] is set to [code]Enabled[/code] or [code]Adaptive[/code], it takes precedence and the forced FPS number cannot exceed the monitor's refresh rate. See also [member physics/common/physics_ticks_per_second]. - This setting is therefore mostly relevant for lowering the maximum FPS below VSync, e.g. to perform non-real-time rendering of static frames, or test the project under lag conditions. - [b]Note:[/b] This property is only read when the project starts. To change the rendering FPS cap at runtime, set [member Engine.target_fps] instead. - </member> <member name="debug/settings/gdscript/max_call_stack" type="int" setter="" getter="" default="1024"> Maximum call stack allowed for debugging GDScript. </member> @@ -461,6 +474,7 @@ Print frames per second to standard output every second. </member> <member name="debug/settings/stdout/print_gpu_profile" type="bool" setter="" getter="" default="false"> + Print GPU profile information to standard output every second. This includes how long each frame takes the GPU to render on average, broken down into different steps of the render pipeline, such as CanvasItems, shadows, glow, etc. </member> <member name="debug/settings/stdout/verbose_stdout" type="bool" setter="" getter="" default="false"> Print more information to standard output when running. It displays information such as memory leaks, which scenes and resources are being loaded, etc. This can also be enabled using the [code]--verbose[/code] or [code]-v[/code] command line argument, even on an exported project. See also [method OS.is_stdout_verbose] and [method @GlobalScope.print_verbose]. @@ -562,15 +576,25 @@ Forces the main window to be borderless. [b]Note:[/b] This setting is ignored on iOS, Android, and Web. </member> - <member name="display/window/size/fullscreen" type="bool" setter="" getter="" default="false"> - Sets the main window to full screen when the project starts. Note that this is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless window is used to emulate fullscreen. On macOS, a new desktop is used to display the running project. - Regardless of the platform, enabling fullscreen will change the window size to match the monitor's size. Therefore, make sure your project supports [url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple resolutions[/url] when enabling fullscreen mode. - [b]Note:[/b] This setting is ignored on iOS, Android, and Web. + <member name="display/window/size/extend_to_title" type="bool" setter="" getter="" default="false"> + Main window content is expanded to the full size of the window. Unlike a borderless window, the frame is left intact and can be used to resize the window, and the title bar is transparent, but has minimize/maximize/close buttons. + [b]Note:[/b] This setting is implemented only on macOS. + </member> + <member name="display/window/size/mode" type="int" setter="" getter="" default="0"> + Main window mode. See [enum DisplayServer.WindowMode] for possible values and how each mode behaves. + </member> + <member name="display/window/size/no_focus" type="bool" setter="" getter="" default="false"> + Main window can't be focused. No-focus window will ignore all input, except mouse clicks. </member> <member name="display/window/size/resizable" type="bool" setter="" getter="" default="true"> Allows the window to be resizable by default. [b]Note:[/b] This setting is ignored on iOS. </member> + <member name="display/window/size/transparent" type="bool" setter="" getter="" default="false"> + Main window background can be transparent. + [b]Note:[/b] To use transparent splash screen, set [member application/boot_splash/bg_color] to [code]Color(0, 0, 0, 0)[/code]. + [b]Note:[/b] This setting has no effect if [member display/window/per_pixel_transparency/allowed] is set to [code]false[/code]. + </member> <member name="display/window/size/viewport_height" type="int" setter="" getter="" default="648"> Sets the game's main viewport height. On desktop platforms, this is also the initial window height, represented by an indigo-colored rectangle in the 2D editor. Stretch mode settings also use this as a reference when using the [code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also [member display/window/size/viewport_width], [member display/window/size/window_width_override] and [member display/window/size/window_height_override]. </member> @@ -640,10 +664,22 @@ If [code]true[/code], Blender 3D scene files with the [code].blend[/code] extension will be imported by converting them to glTF 2.0. This requires configuring a path to a Blender executable in the editor settings at [code]filesystem/import/blender/blender3_path[/code]. Blender 3.0 or later is required. </member> + <member name="filesystem/import/blender/enabled.android" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/blender/enabled] on Android where Blender can't easily be accessed from Godot. + </member> + <member name="filesystem/import/blender/enabled.web" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/blender/enabled] on the Web where Blender can't easily be accessed from Godot. + </member> <member name="filesystem/import/fbx/enabled" type="bool" setter="" getter="" default="true"> If [code]true[/code], Autodesk FBX 3D scene files with the [code].fbx[/code] extension will be imported by converting them to glTF 2.0. This requires configuring a path to a FBX2glTF executable in the editor settings at [code]filesystem/import/fbx/fbx2gltf_path[/code]. </member> + <member name="filesystem/import/fbx/enabled.android" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/fbx/enabled] on Android where FBX2glTF can't easily be accessed from Godot. + </member> + <member name="filesystem/import/fbx/enabled.web" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/fbx/enabled] on the Web where FBX2glTF can't easily be accessed from Godot. + </member> <member name="gui/common/default_scroll_deadzone" type="int" setter="" getter="" default="0"> Default value for [member ScrollContainer.scroll_deadzone], which will be used for all [ScrollContainer]s unless overridden. </member> @@ -651,9 +687,10 @@ If [code]true[/code], swaps Cancel and OK buttons in dialogs on Windows and UWP to follow interface conventions. </member> <member name="gui/common/text_edit_undo_stack_max_size" type="int" setter="" getter="" default="1024"> + Maximum undo/redo history size for [TextEdit] fields. </member> <member name="gui/theme/custom" type="String" setter="" getter="" default=""""> - Path to a custom [Theme] resource file to use for the project ([code]theme[/code] or generic [code]tres[/code]/[code]res[/code] extension). + Path to a custom [Theme] resource file to use for the project ([code].theme[/code] or generic [code].tres[/code]/[code].res[/code] extension). </member> <member name="gui/theme/custom_font" type="String" setter="" getter="" default=""""> Path to a custom [Font] resource to use as default for all GUI elements of the project. @@ -678,6 +715,8 @@ Default font glyph sub-pixel positioning mode. See [member FontFile.subpixel_positioning]. </member> <member name="gui/theme/default_theme_scale" type="float" setter="" getter="" default="1.0"> + The default scale factor for [Control]s, when not overriden by a [Theme]. + [b]Note:[/b] This property is only read when the project starts. To change the default scale at runtime, set [member ThemeDB.fallback_base_scale] instead. </member> <member name="gui/theme/lcd_subpixel_layout" type="int" setter="" getter="" default="1"> LCD sub-pixel layout used for font anti-aliasing. See [enum TextServer.FontLCDSubpixelLayout]. @@ -700,8 +739,12 @@ [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_copy" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to copy a selection to the clipboard. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_cut" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to cut a selection to the clipboard. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_down" type="Dictionary" setter="" getter=""> Default [InputEventAction] to move down in the UI. @@ -712,10 +755,16 @@ [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_filedialog_refresh" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to refresh the contents of the current directory of a [FileDialog]. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_filedialog_show_hidden" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to toggle showing hidden files and directories in a [FileDialog]. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_filedialog_up_one_level" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to go up one directory in a [FileDialog]. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_focus_next" type="Dictionary" setter="" getter=""> Default [InputEventAction] to focus the next [Control] in the scene. The focus behavior can be configured via [member Control.focus_next]. @@ -726,8 +775,12 @@ [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_graph_delete" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to delete a [GraphNode] in a [GraphEdit]. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_graph_duplicate" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to duplicate a [GraphNode] in a [GraphEdit]. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_home" type="Dictionary" setter="" getter=""> Default [InputEventAction] to go to the start position of a [Control] (e.g. first item in an [ItemList] or a [Tree]), matching the behavior of [constant KEY_HOME] on typical desktop UI systems. @@ -738,6 +791,8 @@ [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_menu" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to open a context menu in a text field. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_page_down" type="Dictionary" setter="" getter=""> Default [InputEventAction] to go down a page in a [Control] (e.g. in an [ItemList] or a [Tree]), matching the behavior of [constant KEY_PAGEDOWN] on typical desktop UI systems. @@ -748,8 +803,12 @@ [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_paste" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to paste from the clipboard. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_redo" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to redo an undone action. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_right" type="Dictionary" setter="" getter=""> Default [InputEventAction] to move right in the UI. @@ -762,96 +821,172 @@ <member name="input/ui_swap_input_direction" type="Dictionary" setter="" getter=""> </member> <member name="input/ui_text_backspace" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to delete the character before the text cursor. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_backspace_all_to_left" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to delete [b]all[/b] text before the text cursor. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_backspace_all_to_left.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to delete all text before the text cursor. </member> <member name="input/ui_text_backspace_word" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to delete all characters before the cursor up until a whitespace or punctuation character. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_backspace_word.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to delete a word. </member> <member name="input/ui_text_caret_document_end" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor the the end of the text. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_document_end.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to move the text cursor to the end of the text. </member> <member name="input/ui_text_caret_document_start" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor to the start of the text. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_document_start.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to move the text cursor to the start of the text. </member> <member name="input/ui_text_caret_down" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor down. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_left" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor left. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_line_end" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor to the end of the line. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_line_end.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to move the text cursor to the end of the line. </member> <member name="input/ui_text_caret_line_start" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor to the start of the line. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_line_start.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to move the text cursor to the start of the line. </member> <member name="input/ui_text_caret_page_down" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor down one page. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_page_up" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor up one page. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_right" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor right. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_up" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor up. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_word_left" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor left to the next whitespace or punctuation. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_word_left.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to move the text cursor back one word. </member> <member name="input/ui_text_caret_word_right" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to move the text cursor right to the next whitespace or punctuation. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_caret_word_right.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to move the text cursor forward one word. </member> <member name="input/ui_text_completion_accept" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to accept an autocompetion hint. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_completion_query" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to request autocompetion. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_completion_replace" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to accept an autocompetion hint, replacing existing text. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_dedent" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to unindent text. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_delete" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to delete the character after the text cursor. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_delete_all_to_right" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to delete [b]all[/b] text after the text cursor. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_delete_all_to_right.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to delete all text after the text cursor. </member> <member name="input/ui_text_delete_word" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to delete all characters after the cursor up until a whitespace or punctuation character. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_delete_word.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to delete a word after the text cursor. </member> <member name="input/ui_text_indent" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to indent the current line. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_newline" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to insert a new line at the position of the text cursor. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_newline_above" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to insert a new line before the current one. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_newline_blank" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to insert a new line after the current one. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_scroll_down" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to scroll down one line of text. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_scroll_down.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to scroll down one line. </member> <member name="input/ui_text_scroll_up" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to scroll up one line of text. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_scroll_up.macos" type="Dictionary" setter="" getter=""> + macOS specific override for the shortcut to scroll up one line. </member> <member name="input/ui_text_select_all" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to select all text. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_select_word_under_caret" type="Dictionary" setter="" getter=""> If no selection is currently active, selects the word currently under the caret in text fields. If a selection is currently active, deselects the current selection. [b]Note:[/b] Currently, this is only implemented in [TextEdit], not [LineEdit]. </member> <member name="input/ui_text_submit" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to submit a text field. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_text_toggle_insert_mode" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to toggle [i]instert mode[/i] in a text field. While in insert mode, inserting new text overrides the character after the cursor, unless the next character is a new line. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_undo" type="Dictionary" setter="" getter=""> + Default [InputEventAction] to undo the most recent action. + [b]Note:[/b] Default [code]ui_*[/code] actions cannot be removed as they are necessary for the internal logic of several [Control]s. The events assigned to the action can however be modified. </member> <member name="input/ui_up" type="Dictionary" setter="" getter=""> Default [InputEventAction] to move up in the UI. @@ -1641,7 +1776,7 @@ [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="physics/common/physics_ticks_per_second" type="int" setter="" getter="" default="60"> - The number of fixed iterations per second. This controls how often physics simulation and [method Node._physics_process] methods are run. See also [member debug/settings/fps/force_fps]. + The number of fixed iterations per second. This controls how often physics simulation and [method Node._physics_process] methods are run. See also [member application/run/max_fps]. [b]Note:[/b] This property is only read when the project starts. To change the physics FPS at runtime, set [member Engine.physics_ticks_per_second] instead. [b]Note:[/b] Only 8 physics ticks may be simulated per rendered frame at most. If more than 8 physics ticks have to be simulated per rendered frame to keep up with rendering, the game will appear to slow down (even if [code]delta[/code] is used consistently in physics calculations). Therefore, it is recommended not to increase [member physics/common/physics_ticks_per_second] above 240. Otherwise, the game will slow down when the rendering framerate goes below 30 FPS. </member> @@ -1666,6 +1801,7 @@ Another way to combat specular aliasing is to enable [member rendering/anti_aliasing/screen_space_roughness_limiter/enabled]. </member> <member name="rendering/anti_aliasing/quality/use_debanding" type="bool" setter="" getter="" default="false"> + If [code]true[/code], uses a fast post-processing dithering filter on the default screen [Viewport] to make banding significantly less visible. In some cases, the dithering pattern may be slightly noticable. Note that this will make losslessly compressed (PNG etc.) screenshots larger. </member> <member name="rendering/anti_aliasing/quality/use_taa" type="bool" setter="" getter="" default="false"> Enables Temporal Anti-Aliasing for the default screen [Viewport]. TAA works by jittering the camera and accumulating the images of the last rendered frames, motion vector rendering is used to account for camera and object motion. Enabling TAA can make the image blurrier, which is partially counteracted by automatically using a negative mipmap LOD bias (see [member rendering/textures/default_filters/texture_mipmap_bias]). @@ -1693,13 +1829,6 @@ If [code]true[/code], performs a previous depth pass before rendering 3D materials. This increases performance significantly in scenes with high overdraw, when complex materials and lighting are used. However, in scenes with few occluded surfaces, the depth prepass may reduce performance. If your game is viewed from a fixed angle that makes it easy to avoid overdraw (such as top-down or side-scrolling perspective), consider disabling the depth prepass to improve performance. This setting can be changed at run-time to optimize performance depending on the scene currently being viewed. [b]Note:[/b] Only supported when using the Vulkan Clustered backend or the OpenGL backend. When using Vulkan Mobile there is no depth prepass performed. </member> - <member name="rendering/driver/driver_name" type="String" setter="" getter="" default=""vulkan""> - The video driver to use. - [b]Note:[/b] OpenGL support is currently incomplete. Only basic rendering is supported. - [b]Note:[/b] The backend in use can be overridden at runtime via the [code]--rendering-driver[/code] command line argument. - [b]FIXME:[/b] No longer valid after DisplayServer split: - In such cases, this property is not updated, so use [code]OS.get_current_video_driver[/code] to query it at run-time. - </member> <member name="rendering/driver/threads/thread_model" type="int" setter="" getter="" default="1"> Thread model for rendering. Rendering on a thread can vastly improve performance, but synchronizing to the main thread can cause a bit more jitter. </member> @@ -1770,11 +1899,32 @@ Enables filtering of the volumetric fog effect prior to integration. This substantially blurs the fog which reduces fine details but also smooths out harsh edges and aliasing artifacts. Disable when more detail is required. </member> <member name="rendering/environment/volumetric_fog/volume_depth" type="int" setter="" getter="" default="64"> - Number of slices to use along the depth of the froxel buffer for volumetric fog. A lower number will be more efficient but may result in artifacts appearing during camera movement. + Number of slices to use along the depth of the froxel buffer for volumetric fog. A lower number will be more efficient but may result in artifacts appearing during camera movement. See also [member Environment.volumetric_fog_length]. </member> <member name="rendering/environment/volumetric_fog/volume_size" type="int" setter="" getter="" default="64"> Base size used to determine size of froxel buffer in the camera X-axis and Y-axis. The final size is scaled by the aspect ratio of the screen, so actual values may differ from what is set. Set a larger size for more detailed fog, set a smaller size for better performance. </member> + <member name="rendering/gl_compatibility/driver" type="String" setter="" getter="" default=""opengl3""> + Sets the driver to be used by the renderer when using the Compatibility renderer. This property can not be edited directly, instead, set the driver using the platform-specific overrides. + </member> + <member name="rendering/gl_compatibility/driver.android" type="String" setter="" getter="" default=""opengl3""> + Android override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.ios" type="String" setter="" getter="" default=""opengl3""> + iOS override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.linuxbsd" type="String" setter="" getter="" default=""opengl3""> + LinuxBSD override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.macos" type="String" setter="" getter="" default=""opengl3""> + macOS override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.web" type="String" setter="" getter="" default=""opengl3""> + Web override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.windows" type="String" setter="" getter="" default=""opengl3""> + Windows override for [member rendering/gl_compatibility/driver]. + </member> <member name="rendering/global_illumination/gi/use_half_resolution" type="bool" setter="" getter="" default="false"> If [code]true[/code], renders [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) buffers at halved resolution (e.g. 960×540 when the viewport size is 1920×1080). This improves performance significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts that may be visible on polygon edges. The loss in quality becomes less noticeable as the viewport resolution increases. [LightmapGI] rendering is not affected by this setting. [b]Note:[/b] This property is only read when the project starts. To set half-resolution GI at run-time, call [method RenderingServer.gi_set_use_half_resolution] instead. @@ -1935,6 +2085,44 @@ <member name="rendering/reflections/sky_reflections/texture_array_reflections.mobile" type="bool" setter="" getter="" default="false"> Lower-end override for [member rendering/reflections/sky_reflections/texture_array_reflections] on mobile devices, due to performance concerns or driver support. </member> + <member name="rendering/renderer/rendering_method" type="String" setter="" getter="" default=""forward_plus""> + Sets the renderer that will be used by the project. Options are: + [b]Forward Plus[/b]: High-end renderer designed for Desktop devices. Has a higher base overhead, but scales well with complex scenes. Not suitable for older devices or mobile. + [b]Mobile[/b]: Modern renderer designed for mobile devices. Has a lower base overhead than Forward Plus, but does not scale as well to large scenes with many elements. + [b]GL Compatibility[/b]: Low-end renderer designed for older devices. Based on the limitations of the OpenGL 3.3/ OpenGL ES 3.0 / WebGL 2 APIs. + </member> + <member name="rendering/renderer/rendering_method.mobile" type="String" setter="" getter="" default=""mobile""> + Override for [member rendering/renderer/rendering_method] on mobile devices. + </member> + <member name="rendering/renderer/rendering_method.web" type="String" setter="" getter="" default=""gl_compatibility""> + Override for [member rendering/renderer/rendering_method] on web. + </member> + <member name="rendering/rendering_device/descriptor_pools/max_descriptors_per_pool" type="int" setter="" getter="" default="64"> + </member> + <member name="rendering/rendering_device/driver" type="String" setter="" getter="" default=""vulkan""> + Sets the driver to be used by the renderer when using a RenderingDevice-based renderer like the clustered renderer or the mobile renderer. This property can not be edited directly, instead, set the driver using the platform-specific overrides. + </member> + <member name="rendering/rendering_device/driver.android" type="String" setter="" getter="" default=""vulkan""> + Android override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.ios" type="String" setter="" getter="" default=""vulkan""> + iOS override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.linuxbsd" type="String" setter="" getter="" default=""vulkan""> + LinuxBSD override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.macos" type="String" setter="" getter="" default=""vulkan""> + macOS override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.windows" type="String" setter="" getter="" default=""vulkan""> + Windows override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/staging_buffer/block_size_kb" type="int" setter="" getter="" default="256"> + </member> + <member name="rendering/rendering_device/staging_buffer/max_size_mb" type="int" setter="" getter="" default="128"> + </member> + <member name="rendering/rendering_device/staging_buffer/texture_upload_region_size_px" type="int" setter="" getter="" default="64"> + </member> <member name="rendering/scaling_3d/fsr_sharpness" type="float" setter="" getter="" default="0.2"> Determines how sharp the upscaled image will be when using the FSR upscaling mode. Sharpness halves with every whole number. Values go from 0.0 (sharpest) to 2.0. Values above 2.0 won't make a visible difference. </member> @@ -1947,6 +2135,7 @@ <member name="rendering/shader_compiler/shader_cache/compress" type="bool" setter="" getter="" default="true"> </member> <member name="rendering/shader_compiler/shader_cache/enabled" type="bool" setter="" getter="" default="true"> + Enable the shader cache, which stores compiled shaders to disk to prevent stuttering from shader compilation the next time the shader is needed. </member> <member name="rendering/shader_compiler/shader_cache/strip_debug" type="bool" setter="" getter="" default="false"> </member> @@ -2016,18 +2205,6 @@ <member name="rendering/vrs/texture" type="String" setter="" getter="" default=""""> If [member rendering/vrs/mode] is set to texture, this is the path to default texture loaded as the VRS image. </member> - <member name="rendering/vulkan/descriptor_pools/max_descriptors_per_pool" type="int" setter="" getter="" default="64"> - </member> - <member name="rendering/vulkan/rendering/back_end" type="int" setter="" getter="" default="0"> - </member> - <member name="rendering/vulkan/rendering/back_end.mobile" type="int" setter="" getter="" default="1"> - </member> - <member name="rendering/vulkan/staging_buffer/block_size_kb" type="int" setter="" getter="" default="256"> - </member> - <member name="rendering/vulkan/staging_buffer/max_size_mb" type="int" setter="" getter="" default="128"> - </member> - <member name="rendering/vulkan/staging_buffer/texture_upload_region_size_px" type="int" setter="" getter="" default="64"> - </member> <member name="threading/worker_pool/low_priority_thread_ratio" type="float" setter="" getter="" default="0.3"> </member> <member name="threading/worker_pool/max_threads" type="int" setter="" getter="" default="-1"> diff --git a/doc/classes/QuadMesh.xml b/doc/classes/QuadMesh.xml new file mode 100644 index 0000000000..b869774601 --- /dev/null +++ b/doc/classes/QuadMesh.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="QuadMesh" inherits="PlaneMesh" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Class representing a square mesh facing the camera. + </brief_description> + <description> + Class representing a square [PrimitiveMesh]. This flat mesh does not have a thickness. By default, this mesh is aligned on the X and Y axes; this rotation is more suited for use with billboarded materials. A [QuadMesh] is equivalent to a [PlaneMesh] except its default [member PlaneMesh.orientation] is [constant PlaneMesh.FACE_Z]. + </description> + <tutorials> + <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link> + <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link> + </tutorials> + <members> + <member name="orientation" type="int" setter="set_orientation" getter="get_orientation" overrides="PlaneMesh" enum="PlaneMesh.Orientation" default="2" /> + <member name="size" type="Vector2" setter="set_size" getter="get_size" overrides="PlaneMesh" default="Vector2(1, 1)" /> + </members> +</class> diff --git a/doc/classes/Quaternion.xml b/doc/classes/Quaternion.xml index a521af5709..f21ebf57e2 100644 --- a/doc/classes/Quaternion.xml +++ b/doc/classes/Quaternion.xml @@ -71,7 +71,7 @@ <param index="0" name="to" type="Quaternion" /> <description> Returns the angle between this quaternion and [param to]. This is the magnitude of the angle you would need to rotate by to get from one to the other. - [b]Note:[/b] This method has an abnormally high number of floating-point errors, so methods such as [code]is_zero_approx[/code] will not work reliably. + [b]Note:[/b] The magnitude of the floating-point error for this method is abnormally high, so methods such as [code]is_zero_approx[/code] will not work reliably. </description> </method> <method name="dot" qualifiers="const"> diff --git a/doc/classes/RefCounted.xml b/doc/classes/RefCounted.xml index 3daf3534b0..223e572254 100644 --- a/doc/classes/RefCounted.xml +++ b/doc/classes/RefCounted.xml @@ -13,6 +13,12 @@ <link title="When and how to avoid using nodes for everything">$DOCS_URL/tutorials/best_practices/node_alternatives.html</link> </tutorials> <methods> + <method name="get_reference_count" qualifiers="const"> + <return type="int" /> + <description> + Returns the current reference count. + </description> + </method> <method name="init_ref"> <return type="bool" /> <description> diff --git a/doc/classes/ResourceSaver.xml b/doc/classes/ResourceSaver.xml index b0c9056cbc..8cd701e0d8 100644 --- a/doc/classes/ResourceSaver.xml +++ b/doc/classes/ResourceSaver.xml @@ -62,10 +62,10 @@ Do not save editor-specific metadata (identified by their [code]__editor[/code] prefix). </constant> <constant name="FLAG_SAVE_BIG_ENDIAN" value="16" enum="SaverFlags" is_bitfield="true"> - Save as big endian (see [member File.big_endian]). + Save as big endian (see [member FileAccess.big_endian]). </constant> <constant name="FLAG_COMPRESS" value="32" enum="SaverFlags" is_bitfield="true"> - Compress the resource on save using [constant File.COMPRESSION_ZSTD]. Only available for binary resource types. + Compress the resource on save using [constant FileAccess.COMPRESSION_ZSTD]. Only available for binary resource types. </constant> <constant name="FLAG_REPLACE_SUBRESOURCE_PATHS" value="64" enum="SaverFlags" is_bitfield="true"> Take over the paths of the saved subresources (see [method Resource.take_over_path]). diff --git a/doc/classes/ScriptEditorBase.xml b/doc/classes/ScriptEditorBase.xml index c365e0971b..a3fcf53228 100644 --- a/doc/classes/ScriptEditorBase.xml +++ b/doc/classes/ScriptEditorBase.xml @@ -19,14 +19,14 @@ <method name="get_base_editor" qualifiers="const"> <return type="Control" /> <description> - Returns the underlying [Control] used for editing scripts. This can be either [CodeEdit] (for text scripts) or [GraphEdit] (for visual scripts). + Returns the underlying [Control] used for editing scripts. For text scripts, this is a [CodeEdit]. </description> </method> </methods> <signals> <signal name="edited_script_changed"> <description> - Emitted after script validation. For visual scripts on modification. + Emitted after script validation. </description> </signal> <signal name="go_to_help"> @@ -35,15 +35,22 @@ Emitted when the user requests a specific documentation page. </description> </signal> + <signal name="go_to_method"> + <param index="0" name="script" type="Object" /> + <param index="1" name="method" type="String" /> + <description> + Emitted when the user requests to view a specific method of a script, similar to [signal request_open_script_at_line]. + </description> + </signal> <signal name="name_changed"> <description> - Emitted after script validation or when the edited resource has changed. Not used by visual scripts. + Emitted after script validation or when the edited resource has changed. </description> </signal> <signal name="replace_in_files_requested"> <param index="0" name="text" type="String" /> <description> - Emitted when the user request to find and replace text in the file system. Not used by visual scripts. + Emitted when the user request to find and replace text in the file system. </description> </signal> <signal name="request_help"> @@ -56,7 +63,7 @@ <param index="0" name="script" type="Object" /> <param index="1" name="line" type="int" /> <description> - Emitted when the user requests a script. + Emitted when the user requests to view a specific line of a script, similar to [signal go_to_method]. </description> </signal> <signal name="request_save_history"> @@ -67,7 +74,7 @@ <signal name="search_in_files_requested"> <param index="0" name="text" type="String" /> <description> - Emitted when the user request to search text in the file system. Not used by visual scripts. + Emitted when the user request to search text in the file system. </description> </signal> </signals> diff --git a/doc/classes/Skeleton3D.xml b/doc/classes/Skeleton3D.xml index 5a0766263a..3bd0e04b92 100644 --- a/doc/classes/Skeleton3D.xml +++ b/doc/classes/Skeleton3D.xml @@ -32,9 +32,10 @@ Removes the global pose override on all bones in the skeleton. </description> </method> - <method name="clear_bones_local_pose_override"> + <method name="clear_bones_local_pose_override" is_deprecated="true"> <return type="void" /> <description> + Deprecated. Local pose overrides will be removed. Removes the local pose override on all bones in the skeleton. </description> </method> @@ -43,7 +44,7 @@ <description> </description> </method> - <method name="execute_modifications"> + <method name="execute_modifications" is_deprecated="true"> <return type="void" /> <param index="0" name="delta" type="float" /> <param index="1" name="execution_mode" type="int" /> @@ -58,7 +59,7 @@ Returns the bone index that matches [param name] as its name. </description> </method> - <method name="force_update_all_bone_transforms"> + <method name="force_update_all_bone_transforms" is_deprecated="true"> <return type="void" /> <description> Force updates the bone transforms/poses for all bones in the skeleton. @@ -166,7 +167,7 @@ Returns the rest transform for a bone [param bone_idx]. </description> </method> - <method name="get_modification_stack"> + <method name="get_modification_stack" is_deprecated="true"> <return type="SkeletonModificationStack3D" /> <description> Returns the modification stack attached to this skeleton, if one exists. @@ -178,7 +179,7 @@ Returns an array with all of the bones that are parentless. Another way to look at this is that it returns the indexes of all the bones that are not dependent or modified by other bones in the Skeleton. </description> </method> - <method name="global_pose_to_local_pose"> + <method name="global_pose_to_local_pose" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="global_pose" type="Transform3D" /> @@ -187,15 +188,16 @@ This can be used to easily convert a global pose from [method get_bone_global_pose] to a global transform in [method set_bone_local_pose_override]. </description> </method> - <method name="global_pose_to_world_transform"> + <method name="global_pose_to_world_transform" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="global_pose" type="Transform3D" /> <description> + Deprecated. Use [Node3D] apis instead. Takes the passed-in global pose and converts it to a world transform. This can be used to easily convert a global pose from [method get_bone_global_pose] to a global transform usable with a node's transform, like [member Node3D.global_transform] for example. </description> </method> - <method name="global_pose_z_forward_to_bone_forward"> + <method name="global_pose_z_forward_to_bone_forward" is_deprecated="true"> <return type="Basis" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="basis" type="Basis" /> @@ -211,7 +213,7 @@ Returns whether the bone pose for the bone at [param bone_idx] is enabled. </description> </method> - <method name="local_pose_to_global_pose"> + <method name="local_pose_to_global_pose" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="local_pose" type="Transform3D" /> @@ -293,16 +295,17 @@ <description> Sets the global pose transform, [param pose], for the bone at [param bone_idx]. [param amount] is the interpolation strength that will be used when applying the pose, and [param persistent] determines if the applied pose will remain. - [b]Note:[/b] The pose transform needs to be a global pose! Use [method world_transform_to_global_pose] to convert a world transform, like one you can get from a [Node3D], to a global pose. + [b]Note:[/b] The pose transform needs to be a global pose! To convert a world transform from a [Node3D] to a global bone pose, multiply the [method Transform3D.affine_inverse] of the node's [member Node3D.global_transform] by the desired world transform </description> </method> - <method name="set_bone_local_pose_override"> + <method name="set_bone_local_pose_override" is_deprecated="true"> <return type="void" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="pose" type="Transform3D" /> <param index="2" name="amount" type="float" /> <param index="3" name="persistent" type="bool" default="false" /> <description> + Deprecated. Local pose overrides will be removed. Sets the local pose transform, [param pose], for the bone at [param bone_idx]. [param amount] is the interpolation strength that will be used when applying the pose, and [param persistent] determines if the applied pose will remain. [b]Note:[/b] The pose transform needs to be a local pose! Use [method global_pose_to_local_pose] to convert a global pose to a local pose. @@ -353,7 +356,7 @@ Sets the rest transform for bone [param bone_idx]. </description> </method> - <method name="set_modification_stack"> + <method name="set_modification_stack" is_deprecated="true"> <return type="void" /> <param index="0" name="modification_stack" type="SkeletonModificationStack3D" /> <description> @@ -367,10 +370,11 @@ Unparents the bone at [param bone_idx] and sets its rest position to that of its parent prior to being reset. </description> </method> - <method name="world_transform_to_global_pose"> + <method name="world_transform_to_global_pose" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="world_transform" type="Transform3D" /> <description> + Deprecated. Use [Node3D] apis instead. Takes the passed-in global transform and converts it to a global pose. This can be used to easily convert a global transform from [member Node3D.global_transform] to a global pose usable with [method set_bone_global_pose_override], for example. </description> diff --git a/doc/classes/SkeletonIK3D.xml b/doc/classes/SkeletonIK3D.xml index 788ba3e248..1d50a97954 100644 --- a/doc/classes/SkeletonIK3D.xml +++ b/doc/classes/SkeletonIK3D.xml @@ -1,8 +1,29 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonIK3D" inherits="Node" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonIK3D" inherits="Node" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + SkeletonIK3D is used to place the end bone of a [Skeleton3D] bone chain at a certain point in 3D by rotating all bones in the chain accordingly. </brief_description> <description> + SkeletonIK3D is used to place the end bone of a [Skeleton3D] bone chain at a certain point in 3D by rotating all bones in the chain accordingly. A typical scenario for IK in games is to place a characters feet on the ground or a characters hands on a currently hold object. SkeletonIK uses FabrikInverseKinematic internally to solve the bone chain and applies the results to the [Skeleton3D] [code]bones_global_pose_override[/code] property for all affected bones in the chain. If fully applied this overwrites any bone transform from [Animation]s or bone custom poses set by users. The applied amount can be controlled with the [code]interpolation[/code] property. + [codeblock] + # Apply IK effect automatically on every new frame (not the current) + skeleton_ik_node.start() + + # Apply IK effect only on the current frame + skeleton_ik_node.start(true) + + # Stop IK effect and reset bones_global_pose_override on Skeleton + skeleton_ik_node.stop() + + # Apply full IK effect + skeleton_ik_node.set_interpolation(1.0) + + # Apply half IK effect + skeleton_ik_node.set_interpolation(0.5) + + # Apply zero IK effect (a value at or below 0.01 also removes bones_global_pose_override on Skeleton) + skeleton_ik_node.set_interpolation(0.0) + [/codeblock] </description> <tutorials> <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link> @@ -11,45 +32,59 @@ <method name="get_parent_skeleton" qualifiers="const"> <return type="Skeleton3D" /> <description> + Returns the parent [Skeleton3D] Node that was present when SkeletonIK entered the [SceneTree]. Returns null if the parent node was not a [Skeleton3D] Node when SkeletonIK3D entered the [SceneTree]. </description> </method> <method name="is_running"> <return type="bool" /> <description> + Returns [code]true[/code] if SkeletonIK is applying IK effects on continues frames to the [Skeleton3D] bones. Returns [code]false[/code] if SkeletonIK is stopped or [method start] was used with the [code]one_time[/code] parameter set to [code]true[/code]. </description> </method> <method name="start"> <return type="void" /> <param index="0" name="one_time" type="bool" default="false" /> <description> + Starts applying IK effects on each frame to the [Skeleton3D] bones but will only take effect starting on the next frame. If [code]one_time[/code] is [code]true[/code], this will take effect immediately but also reset on the next frame. </description> </method> <method name="stop"> <return type="void" /> <description> + Stops applying IK effects on each frame to the [Skeleton3D] bones and also calls [method Skeleton3D.clear_bones_global_pose_override] to remove existing overrides on all bones. </description> </method> </methods> <members> <member name="interpolation" type="float" setter="set_interpolation" getter="get_interpolation" default="1.0"> + Interpolation value for how much the IK results are applied to the current skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton bone transforms completely while a value of [code]0.0[/code] will visually disable the SkeletonIK. A value at or below [code]0.01[/code] also calls [method Skeleton3D.clear_bones_global_pose_override]. </member> <member name="magnet" type="Vector3" setter="set_magnet_position" getter="get_magnet_position" default="Vector3(0, 0, 0)"> + Secondary target position (first is [member target] property or [member target_node]) for the IK chain. Use magnet position (pole target) to control the bending of the IK chain. Only works if the bone chain has more than 2 bones. The middle chain bone position will be linearly interpolated with the magnet position. </member> <member name="max_iterations" type="int" setter="set_max_iterations" getter="get_max_iterations" default="10"> + Number of iteration loops used by the IK solver to produce more accurate (and elegant) bone chain results. </member> <member name="min_distance" type="float" setter="set_min_distance" getter="get_min_distance" default="0.01"> + The minimum distance between bone and goal target. If the distance is below this value, the IK solver stops further iterations. </member> <member name="override_tip_basis" type="bool" setter="set_override_tip_basis" getter="is_override_tip_basis" default="true"> + If [code]true[/code] overwrites the rotation of the tip bone with the rotation of the [member target] (or [member target_node] if defined). </member> <member name="root_bone" type="StringName" setter="set_root_bone" getter="get_root_bone" default="&"""> + The name of the current root bone, the first bone in the IK chain. </member> <member name="target" type="Transform3D" setter="set_target_transform" getter="get_target_transform" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)"> + First target of the IK chain where the tip bone is placed and, if [member override_tip_basis] is [code]true[/code], how the tip bone is rotated. If a [member target_node] path is available the nodes transform is used instead and this property is ignored. </member> <member name="target_node" type="NodePath" setter="set_target_node" getter="get_target_node" default="NodePath("")"> + Target node [NodePath] for the IK chain. If available, the node's current [Transform3D] is used instead of the [member target] property. </member> <member name="tip_bone" type="StringName" setter="set_tip_bone" getter="get_tip_bone" default="&"""> + The name of the current tip bone, the last bone in the IK chain placed at the [member target] transform (or [member target_node] if defined). </member> <member name="use_magnet" type="bool" setter="set_use_magnet" getter="is_using_magnet" default="false"> + If [code]true[/code], instructs the IK solver to consider the secondary magnet target (pole target) when calculating the bone chain. Use the magnet position (pole target) to control the bending of the IK chain. </member> </members> </class> diff --git a/doc/classes/SkeletonModification2D.xml b/doc/classes/SkeletonModification2D.xml index 46d32aef41..77aaf0213b 100644 --- a/doc/classes/SkeletonModification2D.xml +++ b/doc/classes/SkeletonModification2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2D" inherits="Resource" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that operates on [Bone2D] nodes in a [Skeleton2D]. </brief_description> diff --git a/doc/classes/SkeletonModification2DCCDIK.xml b/doc/classes/SkeletonModification2DCCDIK.xml index c8fee3f94d..0d80b1b914 100644 --- a/doc/classes/SkeletonModification2DCCDIK.xml +++ b/doc/classes/SkeletonModification2DCCDIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DCCDIK" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DCCDIK" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses CCDIK to manipulate a series of bones to reach a target in 2D. </brief_description> diff --git a/doc/classes/SkeletonModification2DFABRIK.xml b/doc/classes/SkeletonModification2DFABRIK.xml index ff3a65fe1a..8d1cd4b4d4 100644 --- a/doc/classes/SkeletonModification2DFABRIK.xml +++ b/doc/classes/SkeletonModification2DFABRIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DFABRIK" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DFABRIK" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses FABRIK to manipulate a series of [Bone2D] nodes to reach a target. </brief_description> diff --git a/doc/classes/SkeletonModification2DJiggle.xml b/doc/classes/SkeletonModification2DJiggle.xml index 7329b2d865..3321fffe1b 100644 --- a/doc/classes/SkeletonModification2DJiggle.xml +++ b/doc/classes/SkeletonModification2DJiggle.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DJiggle" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DJiggle" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that jiggles [Bone2D] nodes as they move towards a target. </brief_description> diff --git a/doc/classes/SkeletonModification2DLookAt.xml b/doc/classes/SkeletonModification2DLookAt.xml index 4747b06056..136fed37de 100644 --- a/doc/classes/SkeletonModification2DLookAt.xml +++ b/doc/classes/SkeletonModification2DLookAt.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DLookAt" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DLookAt" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that rotates a [Bone2D] node to look at a target. </brief_description> diff --git a/doc/classes/SkeletonModification2DPhysicalBones.xml b/doc/classes/SkeletonModification2DPhysicalBones.xml index d5f46b2ea0..209602e974 100644 --- a/doc/classes/SkeletonModification2DPhysicalBones.xml +++ b/doc/classes/SkeletonModification2DPhysicalBones.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DPhysicalBones" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DPhysicalBones" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that applies the transforms of [PhysicalBone2D] nodes to [Bone2D] nodes. </brief_description> <description> This modification takes the transforms of [PhysicalBone2D] nodes and applies them to [Bone2D] nodes. This allows the [Bone2D] nodes to react to physics thanks to the linked [PhysicalBone2D] nodes. + Experimental. Physical bones may be changed in the future to perform the position update of [Bone2D] on their own. </description> <tutorials> </tutorials> diff --git a/doc/classes/SkeletonModification2DStackHolder.xml b/doc/classes/SkeletonModification2DStackHolder.xml index 791dea2fb1..85df111c0d 100644 --- a/doc/classes/SkeletonModification2DStackHolder.xml +++ b/doc/classes/SkeletonModification2DStackHolder.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DStackHolder" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DStackHolder" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that holds and executes a [SkeletonModificationStack2D]. </brief_description> diff --git a/doc/classes/SkeletonModification2DTwoBoneIK.xml b/doc/classes/SkeletonModification2DTwoBoneIK.xml index edd5431a0c..c476d71d44 100644 --- a/doc/classes/SkeletonModification2DTwoBoneIK.xml +++ b/doc/classes/SkeletonModification2DTwoBoneIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DTwoBoneIK" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DTwoBoneIK" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that rotates two bones using the law of cosigns to reach the target. </brief_description> diff --git a/doc/classes/SkeletonModification3D.xml b/doc/classes/SkeletonModification3D.xml index 8457179651..25431ea96f 100644 --- a/doc/classes/SkeletonModification3D.xml +++ b/doc/classes/SkeletonModification3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3D" inherits="Resource" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that operates on bones in a [Skeleton3D]. </brief_description> diff --git a/doc/classes/SkeletonModification3DCCDIK.xml b/doc/classes/SkeletonModification3DCCDIK.xml index dec0fbe99f..90b2e78449 100644 --- a/doc/classes/SkeletonModification3DCCDIK.xml +++ b/doc/classes/SkeletonModification3DCCDIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DCCDIK" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DCCDIK" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses CCDIK to manipulate a series of bones to reach a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DFABRIK.xml b/doc/classes/SkeletonModification3DFABRIK.xml index 325cc2a12e..a2bec2b559 100644 --- a/doc/classes/SkeletonModification3DFABRIK.xml +++ b/doc/classes/SkeletonModification3DFABRIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DFABRIK" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DFABRIK" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses FABRIK to manipulate a series of bones to reach a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DJiggle.xml b/doc/classes/SkeletonModification3DJiggle.xml index ef469d42ea..304f08bb20 100644 --- a/doc/classes/SkeletonModification3DJiggle.xml +++ b/doc/classes/SkeletonModification3DJiggle.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DJiggle" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DJiggle" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that jiggles bones as they move towards a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DLookAt.xml b/doc/classes/SkeletonModification3DLookAt.xml index 3602cfad95..aeed953ca9 100644 --- a/doc/classes/SkeletonModification3DLookAt.xml +++ b/doc/classes/SkeletonModification3DLookAt.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DLookAt" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DLookAt" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that rotates a bone to look at a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DStackHolder.xml b/doc/classes/SkeletonModification3DStackHolder.xml index 24240236a4..9448e2c783 100644 --- a/doc/classes/SkeletonModification3DStackHolder.xml +++ b/doc/classes/SkeletonModification3DStackHolder.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DStackHolder" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DStackHolder" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that holds and executes a [SkeletonModificationStack3D]. </brief_description> diff --git a/doc/classes/SkeletonModification3DTwoBoneIK.xml b/doc/classes/SkeletonModification3DTwoBoneIK.xml index 6618ebbcfb..0e7ffd5c80 100644 --- a/doc/classes/SkeletonModification3DTwoBoneIK.xml +++ b/doc/classes/SkeletonModification3DTwoBoneIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DTwoBoneIK" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DTwoBoneIK" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that moves two bones to reach the target. </brief_description> diff --git a/doc/classes/SkeletonModificationStack2D.xml b/doc/classes/SkeletonModificationStack2D.xml index 950e52e622..d96833e335 100644 --- a/doc/classes/SkeletonModificationStack2D.xml +++ b/doc/classes/SkeletonModificationStack2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModificationStack2D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModificationStack2D" inherits="Resource" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that holds a stack of [SkeletonModification2D]s. </brief_description> diff --git a/doc/classes/SkeletonModificationStack3D.xml b/doc/classes/SkeletonModificationStack3D.xml index 34c7099bca..9eaeeefd8e 100644 --- a/doc/classes/SkeletonModificationStack3D.xml +++ b/doc/classes/SkeletonModificationStack3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModificationStack3D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModificationStack3D" inherits="Resource" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that holds a stack of [SkeletonModification3D]s. </brief_description> diff --git a/doc/classes/StreamPeerBuffer.xml b/doc/classes/StreamPeerBuffer.xml index 4bef9f44b7..f33c38e595 100644 --- a/doc/classes/StreamPeerBuffer.xml +++ b/doc/classes/StreamPeerBuffer.xml @@ -4,7 +4,7 @@ Data buffer stream peer. </brief_description> <description> - Data buffer stream peer that uses a byte array as the stream. This object can be used to handle binary data from network sessions. To handle binary data stored in files, [File] can be used directly. + Data buffer stream peer that uses a byte array as the stream. This object can be used to handle binary data from network sessions. To handle binary data stored in files, [FileAccess] can be used directly. A [StreamPeerBuffer] object keeps an internal cursor which is the offset in bytes to the start of the buffer. Get and put operations are performed at the cursor position and will move the cursor accordingly. </description> <tutorials> diff --git a/doc/classes/StreamPeerGZIP.xml b/doc/classes/StreamPeerGZIP.xml new file mode 100644 index 0000000000..71dd36160d --- /dev/null +++ b/doc/classes/StreamPeerGZIP.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="StreamPeerGZIP" inherits="StreamPeer" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Stream peer handling GZIP and deflate compression/decompresison. + </brief_description> + <description> + This class allows to compress or decompress data using GZIP/deflate in a streaming fashion. This is particularly useful when compressing or decompressing files that has to be sent through the network without having to allocate them all in memory. + After starting the stream via [method start_compression] (or [method start_decompression]), calling [method StreamPeer.put_partial_data] on this stream will compress (or decompress) the data, writing it to the internal buffer. Calling [method StreamPeer.get_available_bytes] will return the pending bytes in the internal buffer, and [method StreamPeer.get_partial_data] will retrieve the compressed (or decompressed) bytes from it. When the stream is over, you must call [method finish] to ensure the internal buffer is properly flushed (make sure to call [method StreamPeer.get_available_bytes] on last time to check if more data needs to be read after that). + </description> + <tutorials> + </tutorials> + <methods> + <method name="clear"> + <return type="void" /> + <description> + Clears this stream, resetting the internal state. + </description> + </method> + <method name="finish"> + <return type="int" enum="Error" /> + <description> + Finalizes the stream, compressing or decompressing any buffered chunk left. + </description> + </method> + <method name="start_compression"> + <return type="int" enum="Error" /> + <param index="0" name="use_deflate" type="bool" default="false" /> + <param index="1" name="buffer_size" type="int" default="65535" /> + <description> + Start the stream in compression mode with the given [param buffer_size], if [param use_deflate] is [code]true[/code] uses deflate instead of GZIP. + </description> + </method> + <method name="start_decompression"> + <return type="int" enum="Error" /> + <param index="0" name="use_deflate" type="bool" default="false" /> + <param index="1" name="buffer_size" type="int" default="65535" /> + <description> + Start the stream in decompression mode with the given [param buffer_size], if [param use_deflate] is [code]true[/code] uses deflate instead of GZIP. + </description> + </method> + </methods> +</class> diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml index 0db16b491d..2512c563c5 100644 --- a/doc/classes/TextServer.xml +++ b/doc/classes/TextServer.xml @@ -1565,6 +1565,8 @@ <constant name="FONT_LCD_SUBPIXEL_LAYOUT_VBGR" value="4" enum="FontLCDSubpixelLayout"> Vertical BGR sub-pixel layout. </constant> + <constant name="FONT_LCD_SUBPIXEL_LAYOUT_MAX" value="5" enum="FontLCDSubpixelLayout"> + </constant> <constant name="DIRECTION_AUTO" value="0" enum="Direction"> Text direction is determined based on contents and current locale. </constant> @@ -1720,6 +1722,7 @@ </constant> <constant name="HINTING_NORMAL" value="2" enum="Hinting"> Use the default font hinting mode (crisper but less smooth). + [b]Note:[/b] This hinting mode changes both horizontal and vertical glyph metrics. If applied to monospace font, some glyphs might have different width. </constant> <constant name="SUBPIXEL_POSITIONING_DISABLED" value="0" enum="SubpixelPositioning"> Glyph horizontal position is rounded to the whole pixel size, each glyph is rasterized once. diff --git a/doc/classes/TextServerExtension.xml b/doc/classes/TextServerExtension.xml index 4886bf0757..37d2698dd4 100644 --- a/doc/classes/TextServerExtension.xml +++ b/doc/classes/TextServerExtension.xml @@ -9,21 +9,19 @@ <tutorials> </tutorials> <methods> - <method name="create_font" qualifiers="virtual"> + <method name="_create_font" qualifiers="virtual"> <return type="RID" /> <description> - Creates new, empty font cache entry resource. To free the resulting resourec, use [method free_rid] method. </description> </method> - <method name="create_shaped_text" qualifiers="virtual"> + <method name="_create_shaped_text" qualifiers="virtual"> <return type="RID" /> <param index="0" name="direction" type="int" enum="TextServer.Direction" /> <param index="1" name="orientation" type="int" enum="TextServer.Orientation" /> <description> - Creates new buffer for complex text layout, with the given [param direction] and [param orientation]. To free the resulting buffer, use [method free_rid] method. </description> </method> - <method name="draw_hex_code_box" qualifiers="virtual const"> + <method name="_draw_hex_code_box" qualifiers="virtual const"> <return type="void" /> <param index="0" name="canvas" type="RID" /> <param index="1" name="size" type="int" /> @@ -31,42 +29,36 @@ <param index="3" name="index" type="int" /> <param index="4" name="color" type="Color" /> <description> - Draws box displaying character hexadecimal code. Used for replacing missing characters. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="font_clear_glyphs" qualifiers="virtual"> + <method name="_font_clear_glyphs" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <description> - Removes all rendered glyphs information from the cache entry. </description> </method> - <method name="font_clear_kerning_map" qualifiers="virtual"> + <method name="_font_clear_kerning_map" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <description> - Removes all kerning overrides. </description> </method> - <method name="font_clear_size_cache" qualifiers="virtual"> + <method name="_font_clear_size_cache" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <description> - Removes all font sizes from the cache entry. </description> </method> - <method name="font_clear_textures" qualifiers="virtual"> + <method name="_font_clear_textures" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <description> - Removes all textures from font cache entry. </description> </method> - <method name="font_draw_glyph" qualifiers="virtual const"> + <method name="_font_draw_glyph" qualifiers="virtual const"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="canvas" type="RID" /> @@ -75,10 +67,9 @@ <param index="4" name="index" type="int" /> <param index="5" name="color" type="Color" /> <description> - Draws single glyph into a canvas item at the position, using [param font_rid] at the size [param size]. </description> </method> - <method name="font_draw_glyph_outline" qualifiers="virtual const"> + <method name="_font_draw_glyph_outline" qualifiers="virtual const"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="canvas" type="RID" /> @@ -88,897 +79,779 @@ <param index="5" name="index" type="int" /> <param index="6" name="color" type="Color" /> <description> - Draws single glyph outline of size [param outline_size] into a canvas item at the position, using [param font_rid] at the size [param size]. </description> </method> - <method name="font_get_antialiasing" qualifiers="virtual const"> + <method name="_font_get_antialiasing" qualifiers="virtual const"> <return type="int" enum="TextServer.FontAntialiasing" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font anti-aliasing mode. </description> </method> - <method name="font_get_ascent" qualifiers="virtual const"> + <method name="_font_get_ascent" qualifiers="virtual const"> <return type="float" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <description> - Returns the font ascent (number of pixels above the baseline). </description> </method> - <method name="font_get_descent" qualifiers="virtual const"> + <method name="_font_get_descent" qualifiers="virtual const"> <return type="float" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <description> - Returns the font descent (number of pixels below the baseline). </description> </method> - <method name="font_get_embolden" qualifiers="virtual const"> + <method name="_font_get_embolden" qualifiers="virtual const"> <return type="float" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font embolden strength. </description> </method> - <method name="font_get_face_count" qualifiers="virtual const"> + <method name="_font_get_face_count" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns number of faces in the TrueType / OpenType collection. </description> </method> - <method name="font_get_face_index" qualifiers="virtual const"> + <method name="_font_get_face_index" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns an active face index in the TrueType / OpenType collection. </description> </method> - <method name="font_get_fixed_size" qualifiers="virtual const"> + <method name="_font_get_fixed_size" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns bitmap font fixed size. </description> </method> - <method name="font_get_generate_mipmaps" qualifiers="virtual const"> + <method name="_font_get_generate_mipmaps" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns [code]true[/code] if font texture mipmap generation is enabled. </description> </method> - <method name="font_get_global_oversampling" qualifiers="virtual const"> + <method name="_font_get_global_oversampling" qualifiers="virtual const"> <return type="float" /> <description> - Returns the font oversampling factor, shared by all fonts in the TextServer. </description> </method> - <method name="font_get_glyph_advance" qualifiers="virtual const"> + <method name="_font_get_glyph_advance" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="glyph" type="int" /> <description> - Returns glyph advance (offset of the next glyph). </description> </method> - <method name="font_get_glyph_contours" qualifiers="virtual const"> + <method name="_font_get_glyph_contours" qualifiers="virtual const"> <return type="Dictionary" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="index" type="int" /> <description> - Returns outline contours of the glyph as a [code]Dictionary[/code] with the following contents: - [code]points[/code] - [PackedVector3Array], containing outline points. [code]x[/code] and [code]y[/code] are point coordinates. [code]z[/code] is the type of the point, using the [enum TextServer.ContourPointTag] values. - [code]contours[/code] - [PackedInt32Array], containing indices the end points of each contour. - [code]orientation[/code] - [bool], contour orientation. If [code]true[/code], clockwise contours must be filled. </description> </method> - <method name="font_get_glyph_index" qualifiers="virtual const"> + <method name="_font_get_glyph_index" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="char" type="int" /> <param index="3" name="variation_selector" type="int" /> <description> - Returns the glyph index of a [param char], optionally modified by the [param variation_selector]. </description> </method> - <method name="font_get_glyph_list" qualifiers="virtual const"> + <method name="_font_get_glyph_list" qualifiers="virtual const"> <return type="PackedInt32Array" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <description> - Returns list of rendered glyphs in the cache entry. </description> </method> - <method name="font_get_glyph_offset" qualifiers="virtual const"> + <method name="_font_get_glyph_offset" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <description> - Returns glyph offset from the baseline. </description> </method> - <method name="font_get_glyph_size" qualifiers="virtual const"> + <method name="_font_get_glyph_size" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <description> - Returns size of the glyph. </description> </method> - <method name="font_get_glyph_texture_idx" qualifiers="virtual const"> + <method name="_font_get_glyph_texture_idx" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <description> - Returns index of the cache texture containing the glyph. </description> </method> - <method name="font_get_glyph_texture_rid" qualifiers="virtual const"> + <method name="_font_get_glyph_texture_rid" qualifiers="virtual const"> <return type="RID" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <description> - Returns resource id of the cache texture containing the glyph. </description> </method> - <method name="font_get_glyph_texture_size" qualifiers="virtual const"> + <method name="_font_get_glyph_texture_size" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <description> - Returns size of the cache texture containing the glyph. </description> </method> - <method name="font_get_glyph_uv_rect" qualifiers="virtual const"> + <method name="_font_get_glyph_uv_rect" qualifiers="virtual const"> <return type="Rect2" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <description> - Returns rectangle in the cache texture containing the glyph. </description> </method> - <method name="font_get_hinting" qualifiers="virtual const"> + <method name="_font_get_hinting" qualifiers="virtual const"> <return type="int" enum="TextServer.Hinting" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns the font hinting mode. Used by dynamic fonts only. </description> </method> - <method name="font_get_kerning" qualifiers="virtual const"> + <method name="_font_get_kerning" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="glyph_pair" type="Vector2i" /> <description> - Returns kerning for the pair of glyphs. </description> </method> - <method name="font_get_kerning_list" qualifiers="virtual const"> + <method name="_font_get_kerning_list" qualifiers="virtual const"> <return type="Vector2i[]" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <description> - Returns list of the kerning overrides. </description> </method> - <method name="font_get_language_support_override" qualifiers="virtual"> + <method name="_font_get_language_support_override" qualifiers="virtual"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="language" type="String" /> <description> - Returns [code]true[/code] if support override is enabled for the [param language]. </description> </method> - <method name="font_get_language_support_overrides" qualifiers="virtual"> + <method name="_font_get_language_support_overrides" qualifiers="virtual"> <return type="PackedStringArray" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns list of language support overrides. </description> </method> - <method name="font_get_msdf_pixel_range" qualifiers="virtual const"> + <method name="_font_get_msdf_pixel_range" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns the width of the range around the shape between the minimum and maximum representable signed distance. </description> </method> - <method name="font_get_msdf_size" qualifiers="virtual const"> + <method name="_font_get_msdf_size" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns source font size used to generate MSDF textures. </description> </method> - <method name="font_get_name" qualifiers="virtual const"> + <method name="_font_get_name" qualifiers="virtual const"> <return type="String" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font family name. </description> </method> - <method name="font_get_opentype_feature_overrides" qualifiers="virtual const"> + <method name="_font_get_opentype_feature_overrides" qualifiers="virtual const"> <return type="Dictionary" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font OpenType feature set override. </description> </method> - <method name="font_get_oversampling" qualifiers="virtual const"> + <method name="_font_get_oversampling" qualifiers="virtual const"> <return type="float" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font oversampling factor, if set to [code]0.0[/code] global oversampling factor is used instead. Used by dynamic fonts only. </description> </method> - <method name="font_get_scale" qualifiers="virtual const"> + <method name="_font_get_scale" qualifiers="virtual const"> <return type="float" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <description> - Returns scaling factor of the color bitmap font. </description> </method> - <method name="font_get_script_support_override" qualifiers="virtual"> + <method name="_font_get_script_support_override" qualifiers="virtual"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="script" type="String" /> <description> - Returns [code]true[/code] if support override is enabled for the [param script]. </description> </method> - <method name="font_get_script_support_overrides" qualifiers="virtual"> + <method name="_font_get_script_support_overrides" qualifiers="virtual"> <return type="PackedStringArray" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns list of script support overrides. </description> </method> - <method name="font_get_size_cache_list" qualifiers="virtual const"> + <method name="_font_get_size_cache_list" qualifiers="virtual const"> <return type="Vector2i[]" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns list of the font sizes in the cache. Each size is [code]Vector2i[/code] with font size and outline size. </description> </method> - <method name="font_get_style" qualifiers="virtual const"> + <method name="_font_get_style" qualifiers="virtual const"> <return type="int" enum="TextServer.FontStyle" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font style flags, see [enum TextServer.FontStyle]. </description> </method> - <method name="font_get_style_name" qualifiers="virtual const"> + <method name="_font_get_style_name" qualifiers="virtual const"> <return type="String" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font style name. </description> </method> - <method name="font_get_subpixel_positioning" qualifiers="virtual const"> + <method name="_font_get_subpixel_positioning" qualifiers="virtual const"> <return type="int" enum="TextServer.SubpixelPositioning" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns font sub-pixel glyph positioning mode. </description> </method> - <method name="font_get_supported_chars" qualifiers="virtual const"> + <method name="_font_get_supported_chars" qualifiers="virtual const"> <return type="String" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns a string containing all the characters available in the font. </description> </method> - <method name="font_get_texture_count" qualifiers="virtual const"> + <method name="_font_get_texture_count" qualifiers="virtual const"> <return type="int" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <description> - Returns number of textures used by font cache entry. </description> </method> - <method name="font_get_texture_image" qualifiers="virtual const"> + <method name="_font_get_texture_image" qualifiers="virtual const"> <return type="Image" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="texture_index" type="int" /> <description> - Returns font cache texture image data. </description> </method> - <method name="font_get_texture_offsets" qualifiers="virtual const"> + <method name="_font_get_texture_offsets" qualifiers="virtual const"> <return type="PackedInt32Array" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="texture_index" type="int" /> <description> - Returns array containing the first free pixel in the each column of texture. Should be the same size as texture width or empty. </description> </method> - <method name="font_get_transform" qualifiers="virtual const"> + <method name="_font_get_transform" qualifiers="virtual const"> <return type="Transform2D" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns 2D transform applied to the font outlines. </description> </method> - <method name="font_get_underline_position" qualifiers="virtual const"> + <method name="_font_get_underline_position" qualifiers="virtual const"> <return type="float" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <description> - Returns pixel offset of the underline below the baseline. </description> </method> - <method name="font_get_underline_thickness" qualifiers="virtual const"> + <method name="_font_get_underline_thickness" qualifiers="virtual const"> <return type="float" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <description> - Returns thickness of the underline in pixels. </description> </method> - <method name="font_get_variation_coordinates" qualifiers="virtual const"> + <method name="_font_get_variation_coordinates" qualifiers="virtual const"> <return type="Dictionary" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns variation coordinates for the specified font cache entry. See [method font_supported_variation_list] for more info. </description> </method> - <method name="font_has_char" qualifiers="virtual const"> + <method name="_font_has_char" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="char" type="int" /> <description> - Returns [code]true[/code] if a Unicode [param char] is available in the font. </description> </method> - <method name="font_is_force_autohinter" qualifiers="virtual const"> + <method name="_font_is_force_autohinter" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns [code]true[/code] if auto-hinting is supported and preferred over font built-in hinting. Used by dynamic fonts only. </description> </method> - <method name="font_is_language_supported" qualifiers="virtual const"> + <method name="_font_is_language_supported" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="language" type="String" /> <description> - Returns [code]true[/code], if font supports given language ([url=https://en.wikipedia.org/wiki/ISO_639-1]ISO 639[/url] code). </description> </method> - <method name="font_is_multichannel_signed_distance_field" qualifiers="virtual const"> + <method name="_font_is_multichannel_signed_distance_field" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns [code]true[/code] if glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data. </description> </method> - <method name="font_is_script_supported" qualifiers="virtual const"> + <method name="_font_is_script_supported" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="script" type="String" /> <description> - Returns [code]true[/code], if font supports given script (ISO 15924 code). </description> </method> - <method name="font_remove_glyph" qualifiers="virtual"> + <method name="_font_remove_glyph" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <description> - Removes specified rendered glyph information from the cache entry. </description> </method> - <method name="font_remove_kerning" qualifiers="virtual"> + <method name="_font_remove_kerning" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="glyph_pair" type="Vector2i" /> <description> - Removes kerning override for the pair of glyphs. </description> </method> - <method name="font_remove_language_support_override" qualifiers="virtual"> + <method name="_font_remove_language_support_override" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="language" type="String" /> <description> - Remove language support override. </description> </method> - <method name="font_remove_script_support_override" qualifiers="virtual"> + <method name="_font_remove_script_support_override" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="script" type="String" /> <description> - Removes script support override. </description> </method> - <method name="font_remove_size_cache" qualifiers="virtual"> + <method name="_font_remove_size_cache" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <description> - Removes specified font size from the cache entry. </description> </method> - <method name="font_remove_texture" qualifiers="virtual"> + <method name="_font_remove_texture" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="texture_index" type="int" /> <description> - Removes specified texture from the cache entry. </description> </method> - <method name="font_render_glyph" qualifiers="virtual"> + <method name="_font_render_glyph" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="index" type="int" /> <description> - Renders specified glyph to the font cache texture. </description> </method> - <method name="font_render_range" qualifiers="virtual"> + <method name="_font_render_range" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="start" type="int" /> <param index="3" name="end" type="int" /> <description> - Renders the range of characters to the font cache texture. </description> </method> - <method name="font_set_antialiasing" qualifiers="virtual"> + <method name="_font_set_antialiasing" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="antialiasing" type="int" enum="TextServer.FontAntialiasing" /> <description> - Sets font anti-aliasing mode. </description> </method> - <method name="font_set_ascent" qualifiers="virtual"> + <method name="_font_set_ascent" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="ascent" type="float" /> <description> - Sets the font ascent (number of pixels above the baseline). </description> </method> - <method name="font_set_data" qualifiers="virtual"> + <method name="_font_set_data" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="data" type="PackedByteArray" /> <description> - Sets font source data, e.g contents of the dynamic font source file. </description> </method> - <method name="font_set_data_ptr" qualifiers="virtual"> + <method name="_font_set_data_ptr" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="data_ptr" type="const uint8_t*" /> <param index="2" name="data_size" type="int" /> <description> - Sets font source data, e.g contents of the dynamic font source file. [param data_ptr] memory buffer must remain accessible during font lifetime. </description> </method> - <method name="font_set_descent" qualifiers="virtual"> + <method name="_font_set_descent" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="descent" type="float" /> <description> - Sets the font descent (number of pixels below the baseline). </description> </method> - <method name="font_set_embolden" qualifiers="virtual"> + <method name="_font_set_embolden" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="strength" type="float" /> <description> - Sets font embolden strength. If [param strength] is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness. </description> </method> - <method name="font_set_face_index" qualifiers="virtual"> + <method name="_font_set_face_index" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="face_index" type="int" /> <description> - Sets an active face index in the TrueType / OpenType collection. </description> </method> - <method name="font_set_fixed_size" qualifiers="virtual"> + <method name="_font_set_fixed_size" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="fixed_size" type="int" /> <description> - Sets bitmap font fixed size. If set to value greater than zero, same cache entry will be used for all font sizes. </description> </method> - <method name="font_set_force_autohinter" qualifiers="virtual"> + <method name="_font_set_force_autohinter" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="force_autohinter" type="bool" /> <description> - If set to [code]true[/code] auto-hinting is preferred over font built-in hinting. </description> </method> - <method name="font_set_generate_mipmaps" qualifiers="virtual"> + <method name="_font_set_generate_mipmaps" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="generate_mipmaps" type="bool" /> <description> - If set to [code]true[/code] font texture mipmap generation is enabled. </description> </method> - <method name="font_set_global_oversampling" qualifiers="virtual"> + <method name="_font_set_global_oversampling" qualifiers="virtual"> <return type="void" /> <param index="0" name="oversampling" type="float" /> <description> - Sets oversampling factor, shared by all font in the TextServer. - [b]Note:[/b] This value can be automatically changed by display server. </description> </method> - <method name="font_set_glyph_advance" qualifiers="virtual"> + <method name="_font_set_glyph_advance" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="glyph" type="int" /> <param index="3" name="advance" type="Vector2" /> <description> - Sets glyph advance (offset of the next glyph). </description> </method> - <method name="font_set_glyph_offset" qualifiers="virtual"> + <method name="_font_set_glyph_offset" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <param index="3" name="offset" type="Vector2" /> <description> - Sets glyph offset from the baseline. </description> </method> - <method name="font_set_glyph_size" qualifiers="virtual"> + <method name="_font_set_glyph_size" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <param index="3" name="gl_size" type="Vector2" /> <description> - Sets size of the glyph. </description> </method> - <method name="font_set_glyph_texture_idx" qualifiers="virtual"> + <method name="_font_set_glyph_texture_idx" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <param index="3" name="texture_idx" type="int" /> <description> - Sets index of the cache texture containing the glyph. </description> </method> - <method name="font_set_glyph_uv_rect" qualifiers="virtual"> + <method name="_font_set_glyph_uv_rect" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="glyph" type="int" /> <param index="3" name="uv_rect" type="Rect2" /> <description> - Sets rectangle in the cache texture containing the glyph. </description> </method> - <method name="font_set_hinting" qualifiers="virtual"> + <method name="_font_set_hinting" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="hinting" type="int" enum="TextServer.Hinting" /> <description> - Sets font hinting mode. Used by dynamic fonts only. </description> </method> - <method name="font_set_kerning" qualifiers="virtual"> + <method name="_font_set_kerning" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="glyph_pair" type="Vector2i" /> <param index="3" name="kerning" type="Vector2" /> <description> - Sets kerning for the pair of glyphs. </description> </method> - <method name="font_set_language_support_override" qualifiers="virtual"> + <method name="_font_set_language_support_override" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="language" type="String" /> <param index="2" name="supported" type="bool" /> <description> - Adds override for [method font_is_language_supported]. </description> </method> - <method name="font_set_msdf_pixel_range" qualifiers="virtual"> + <method name="_font_set_msdf_pixel_range" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="msdf_pixel_range" type="int" /> <description> - Sets the width of the range around the shape between the minimum and maximum representable signed distance. </description> </method> - <method name="font_set_msdf_size" qualifiers="virtual"> + <method name="_font_set_msdf_size" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="msdf_size" type="int" /> <description> - Sets source font size used to generate MSDF textures. </description> </method> - <method name="font_set_multichannel_signed_distance_field" qualifiers="virtual"> + <method name="_font_set_multichannel_signed_distance_field" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="msdf" type="bool" /> <description> - If set to [code]true[/code], glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data. MSDF rendering allows displaying the font at any scaling factor without blurriness, and without incurring a CPU cost when the font size changes (since the font no longer needs to be rasterized on the CPU). As a downside, font hinting is not available with MSDF. The lack of font hinting may result in less crisp and less readable fonts at small sizes. - [b]Note:[/b] MSDF font rendering does not render glyphs with overlapping shapes correctly. Overlapping shapes are not valid per the OpenType standard, but are still commonly found in many font files, especially those converted by Google Fonts. To avoid issues with overlapping glyphs, consider downloading the font file directly from the type foundry instead of relying on Google Fonts. </description> </method> - <method name="font_set_name" qualifiers="virtual"> + <method name="_font_set_name" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="name" type="String" /> <description> - Sets the font family name. </description> </method> - <method name="font_set_opentype_feature_overrides" qualifiers="virtual"> + <method name="_font_set_opentype_feature_overrides" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="overrides" type="Dictionary" /> <description> - Sets font OpenType feature set override. </description> </method> - <method name="font_set_oversampling" qualifiers="virtual"> + <method name="_font_set_oversampling" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="oversampling" type="float" /> <description> - Sets font oversampling factor, if set to [code]0.0[/code] global oversampling factor is used instead. Used by dynamic fonts only. </description> </method> - <method name="font_set_scale" qualifiers="virtual"> + <method name="_font_set_scale" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="scale" type="float" /> <description> - Sets scaling factor of the color bitmap font. </description> </method> - <method name="font_set_script_support_override" qualifiers="virtual"> + <method name="_font_set_script_support_override" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="script" type="String" /> <param index="2" name="supported" type="bool" /> <description> - Adds override for [method font_is_script_supported]. </description> </method> - <method name="font_set_style" qualifiers="virtual"> + <method name="_font_set_style" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="style" type="int" enum="TextServer.FontStyle" /> <description> - Sets the font style flags, see [enum TextServer.FontStyle]. </description> </method> - <method name="font_set_style_name" qualifiers="virtual"> + <method name="_font_set_style_name" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="name_style" type="String" /> <description> - Sets the font style name. </description> </method> - <method name="font_set_subpixel_positioning" qualifiers="virtual"> + <method name="_font_set_subpixel_positioning" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="subpixel_positioning" type="int" enum="TextServer.SubpixelPositioning" /> <description> - Sets font sub-pixel glyph positioning mode. </description> </method> - <method name="font_set_texture_image" qualifiers="virtual"> + <method name="_font_set_texture_image" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="texture_index" type="int" /> <param index="3" name="image" type="Image" /> <description> - Sets font cache texture image data. </description> </method> - <method name="font_set_texture_offsets" qualifiers="virtual"> + <method name="_font_set_texture_offsets" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="Vector2i" /> <param index="2" name="texture_index" type="int" /> <param index="3" name="offset" type="PackedInt32Array" /> <description> - Sets array containing the first free pixel in the each column of texture. Should be the same size as texture width or empty. </description> </method> - <method name="font_set_transform" qualifiers="virtual"> + <method name="_font_set_transform" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="transform" type="Transform2D" /> <description> - Sets 2D transform, applied to the font outlines, can be used for slanting, flipping and rotating glyphs. - For example, to simulate italic typeface by slanting, apply the following transform [code]Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0)[/code]. </description> </method> - <method name="font_set_underline_position" qualifiers="virtual"> + <method name="_font_set_underline_position" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="underline_position" type="float" /> <description> - Sets pixel offset of the underline below the baseline. </description> </method> - <method name="font_set_underline_thickness" qualifiers="virtual"> + <method name="_font_set_underline_thickness" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="size" type="int" /> <param index="2" name="underline_thickness" type="float" /> <description> - Sets thickness of the underline in pixels. </description> </method> - <method name="font_set_variation_coordinates" qualifiers="virtual"> + <method name="_font_set_variation_coordinates" qualifiers="virtual"> <return type="void" /> <param index="0" name="font_rid" type="RID" /> <param index="1" name="variation_coordinates" type="Dictionary" /> <description> - Sets variation coordinates for the specified font cache entry. See [method font_supported_variation_list] for more info. </description> </method> - <method name="font_supported_feature_list" qualifiers="virtual const"> + <method name="_font_supported_feature_list" qualifiers="virtual const"> <return type="Dictionary" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns the dictionary of the supported OpenType features. </description> </method> - <method name="font_supported_variation_list" qualifiers="virtual const"> + <method name="_font_supported_variation_list" qualifiers="virtual const"> <return type="Dictionary" /> <param index="0" name="font_rid" type="RID" /> <description> - Returns the dictionary of the supported OpenType variation coordinates. </description> </method> - <method name="format_number" qualifiers="virtual const"> + <method name="_format_number" qualifiers="virtual const"> <return type="String" /> <param index="0" name="string" type="String" /> <param index="1" name="language" type="String" /> <description> - Converts a number from the Western Arabic (0..9) to the numeral systems used in [param language]. </description> </method> - <method name="free_rid" qualifiers="virtual"> + <method name="_free_rid" qualifiers="virtual"> <return type="void" /> <param index="0" name="rid" type="RID" /> <description> - Frees an object created by this [TextServer]. </description> </method> - <method name="get_features" qualifiers="virtual const"> + <method name="_get_features" qualifiers="virtual const"> <return type="int" /> <description> - Returns text server features, see [enum TextServer.Feature]. </description> </method> - <method name="get_hex_code_box_size" qualifiers="virtual const"> + <method name="_get_hex_code_box_size" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="size" type="int" /> <param index="1" name="index" type="int" /> <description> - Returns size of the replacement character (box with character hexadecimal code that is drawn in place of invalid characters). - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="get_name" qualifiers="virtual const"> + <method name="_get_name" qualifiers="virtual const"> <return type="String" /> <description> - Returns the name of the server interface. </description> </method> - <method name="get_support_data_filename" qualifiers="virtual const"> + <method name="_get_support_data_filename" qualifiers="virtual const"> <return type="String" /> <description> - Returns default TextServer database (e.g. ICU break iterators and dictionaries) filename. </description> </method> - <method name="get_support_data_info" qualifiers="virtual const"> + <method name="_get_support_data_info" qualifiers="virtual const"> <return type="String" /> <description> - Returns TextServer database (e.g. ICU break iterators and dictionaries) description. </description> </method> - <method name="has" qualifiers="virtual"> + <method name="_has" qualifiers="virtual"> <return type="bool" /> <param index="0" name="rid" type="RID" /> <description> - Returns [code]true[/code] if [param rid] is valid resource owned by this text server. </description> </method> - <method name="has_feature" qualifiers="virtual const"> + <method name="_has_feature" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="feature" type="int" enum="TextServer.Feature" /> <description> - Returns [code]true[/code] if the server supports a feature. </description> </method> - <method name="is_confusable" qualifiers="virtual const"> + <method name="_is_confusable" qualifiers="virtual const"> <return type="int" /> <param index="0" name="string" type="String" /> <param index="1" name="dict" type="PackedStringArray" /> <description> - Returns index of the first string in [param dict] which is visually confusable with the [param string], or [code]-1[/code] if none is found. </description> </method> - <method name="is_locale_right_to_left" qualifiers="virtual const"> + <method name="_is_locale_right_to_left" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="locale" type="String" /> <description> - Returns [code]true[/code] if locale is right-to-left. </description> </method> - <method name="is_valid_identifier" qualifiers="virtual const"> + <method name="_is_valid_identifier" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="string" type="String" /> <description> - Returns [code]true[/code] is [param string] is a valid identifier. </description> </method> - <method name="load_support_data" qualifiers="virtual"> + <method name="_load_support_data" qualifiers="virtual"> <return type="bool" /> <param index="0" name="filename" type="String" /> <description> - Loads optional TextServer database (e.g. ICU break iterators and dictionaries). </description> </method> - <method name="name_to_tag" qualifiers="virtual const"> + <method name="_name_to_tag" qualifiers="virtual const"> <return type="int" /> <param index="0" name="name" type="String" /> <description> - Converts readable feature, variation, script or language name to OpenType tag. </description> </method> - <method name="parse_number" qualifiers="virtual const"> + <method name="_parse_number" qualifiers="virtual const"> <return type="String" /> <param index="0" name="string" type="String" /> <param index="1" name="language" type="String" /> <description> - Converts a number from the numeral systems used in [param language] to Western Arabic (0..9). </description> </method> - <method name="parse_structured_text" qualifiers="virtual const"> + <method name="_parse_structured_text" qualifiers="virtual const"> <return type="Vector2i[]" /> <param index="0" name="parser_type" type="int" enum="TextServer.StructuredTextParser" /> <param index="1" name="args" type="Array" /> @@ -986,37 +859,32 @@ <description> </description> </method> - <method name="percent_sign" qualifiers="virtual const"> + <method name="_percent_sign" qualifiers="virtual const"> <return type="String" /> <param index="0" name="language" type="String" /> <description> - Returns percent sign used in the [param language]. </description> </method> - <method name="save_support_data" qualifiers="virtual const"> + <method name="_save_support_data" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="filename" type="String" /> <description> - Saves optional TextServer database (e.g. ICU break iterators and dictionaries) to the file. - [b]Note:[/b] This function is used by during project export, to include TextServer database. </description> </method> - <method name="shaped_get_span_count" qualifiers="virtual const"> + <method name="_shaped_get_span_count" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <description> - Returns number of text spans added using [method shaped_text_add_string] or [method shaped_text_add_object]. </description> </method> - <method name="shaped_get_span_meta" qualifiers="virtual const"> + <method name="_shaped_get_span_meta" qualifiers="virtual const"> <return type="Variant" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="index" type="int" /> <description> - Returns text span metadata. </description> </method> - <method name="shaped_set_span_update_font" qualifiers="virtual"> + <method name="_shaped_set_span_update_font" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="index" type="int" /> @@ -1024,10 +892,9 @@ <param index="3" name="size" type="int" /> <param index="4" name="opentype_features" type="Dictionary" /> <description> - Changes text span font, font size and OpenType features, without changing the text. </description> </method> - <method name="shaped_text_add_object" qualifiers="virtual"> + <method name="_shaped_text_add_object" qualifiers="virtual"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="key" type="Variant" /> @@ -1035,10 +902,9 @@ <param index="3" name="inline_align" type="int" enum="InlineAlignment" /> <param index="4" name="length" type="int" /> <description> - Adds inline object to the text buffer, [param key] must be unique. In the text, object is represented as [param length] object replacement characters. </description> </method> - <method name="shaped_text_add_string" qualifiers="virtual"> + <method name="_shaped_text_add_string" qualifiers="virtual"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="text" type="String" /> @@ -1048,17 +914,15 @@ <param index="5" name="language" type="String" /> <param index="6" name="meta" type="Variant" /> <description> - Adds text span and font to draw it to the text buffer. </description> </method> - <method name="shaped_text_clear" qualifiers="virtual"> + <method name="_shaped_text_clear" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <description> - Clears text buffer (removes text and inline objects). </description> </method> - <method name="shaped_text_draw" qualifiers="virtual const"> + <method name="_shaped_text_draw" qualifiers="virtual const"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="canvas" type="RID" /> @@ -1067,11 +931,9 @@ <param index="4" name="clip_r" type="float" /> <param index="5" name="color" type="Color" /> <description> - Draw shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_draw_outline" qualifiers="virtual const"> + <method name="_shaped_text_draw_outline" qualifiers="virtual const"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="canvas" type="RID" /> @@ -1081,130 +943,109 @@ <param index="5" name="outline_size" type="int" /> <param index="6" name="color" type="Color" /> <description> - Draw the outline of the shaped text into a canvas item at a given position, with [param color]. [param pos] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_fit_to_width" qualifiers="virtual"> + <method name="_shaped_text_fit_to_width" qualifiers="virtual"> <return type="float" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="width" type="float" /> <param index="2" name="jst_flags" type="int" enum="TextServer.JustificationFlag" /> <description> - Adjusts text with to fit to specified width, returns new text width. </description> </method> - <method name="shaped_text_get_ascent" qualifiers="virtual const"> + <method name="_shaped_text_get_ascent" qualifiers="virtual const"> <return type="float" /> <param index="0" name="shaped" type="RID" /> <description> - Returns the text ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical). </description> </method> - <method name="shaped_text_get_carets" qualifiers="virtual const"> + <method name="_shaped_text_get_carets" qualifiers="virtual const"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="position" type="int" /> <param index="2" name="caret" type="CaretInfo*" /> <description> - Returns shapes of the carets corresponding to the character offset [param position] in the text. Returned caret shape is 1 pixel wide rectangle. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_get_custom_punctuation" qualifiers="virtual const"> + <method name="_shaped_text_get_custom_punctuation" qualifiers="virtual const"> <return type="String" /> <param index="0" name="shaped" type="RID" /> <description> - Returns custom punctuation character list, used for word breaking. If set to empty string, server defaults are used. </description> </method> - <method name="shaped_text_get_descent" qualifiers="virtual const"> + <method name="_shaped_text_get_descent" qualifiers="virtual const"> <return type="float" /> <param index="0" name="shaped" type="RID" /> <description> - Returns the text descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical). </description> </method> - <method name="shaped_text_get_direction" qualifiers="virtual const"> + <method name="_shaped_text_get_direction" qualifiers="virtual const"> <return type="int" enum="TextServer.Direction" /> <param index="0" name="shaped" type="RID" /> <description> - Returns direction of the text. </description> </method> - <method name="shaped_text_get_dominant_direction_in_range" qualifiers="virtual const"> + <method name="_shaped_text_get_dominant_direction_in_range" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="start" type="int" /> <param index="2" name="end" type="int" /> <description> - Returns dominant direction of in the range of text. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_get_ellipsis_glyph_count" qualifiers="virtual const"> + <method name="_shaped_text_get_ellipsis_glyph_count" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <description> - Returns number of glyphs in the ellipsis. </description> </method> - <method name="shaped_text_get_ellipsis_glyphs" qualifiers="virtual const"> + <method name="_shaped_text_get_ellipsis_glyphs" qualifiers="virtual const"> <return type="const Glyph*" /> <param index="0" name="shaped" type="RID" /> <description> - Returns array of the glyphs in the ellipsis. </description> </method> - <method name="shaped_text_get_ellipsis_pos" qualifiers="virtual const"> + <method name="_shaped_text_get_ellipsis_pos" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <description> - Returns position of the ellipsis. </description> </method> - <method name="shaped_text_get_glyph_count" qualifiers="virtual const"> + <method name="_shaped_text_get_glyph_count" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <description> - Returns number of glyphs in the buffer. </description> </method> - <method name="shaped_text_get_glyphs" qualifiers="virtual const"> + <method name="_shaped_text_get_glyphs" qualifiers="virtual const"> <return type="const Glyph*" /> <param index="0" name="shaped" type="RID" /> <description> - Returns an array of glyphs in the visual order. </description> </method> - <method name="shaped_text_get_grapheme_bounds" qualifiers="virtual const"> + <method name="_shaped_text_get_grapheme_bounds" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="pos" type="int" /> <description> - Returns composite character's bounds as offsets from the start of the line. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_get_inferred_direction" qualifiers="virtual const"> + <method name="_shaped_text_get_inferred_direction" qualifiers="virtual const"> <return type="int" enum="TextServer.Direction" /> <param index="0" name="shaped" type="RID" /> <description> - Returns direction of the text, inferred by the BiDi algorithm. </description> </method> - <method name="shaped_text_get_line_breaks" qualifiers="virtual const"> + <method name="_shaped_text_get_line_breaks" qualifiers="virtual const"> <return type="PackedInt32Array" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="width" type="float" /> <param index="2" name="start" type="int" /> <param index="3" name="break_flags" type="int" enum="TextServer.LineBreakFlag" /> <description> - Breaks text to the lines and returns character ranges for each line. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_get_line_breaks_adv" qualifiers="virtual const"> + <method name="_shaped_text_get_line_breaks_adv" qualifiers="virtual const"> <return type="PackedInt32Array" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="width" type="PackedFloat32Array" /> @@ -1212,334 +1053,280 @@ <param index="3" name="once" type="bool" /> <param index="4" name="break_flags" type="int" enum="TextServer.LineBreakFlag" /> <description> - Breaks text to the lines and columns. Returns character ranges for each segment. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_get_object_rect" qualifiers="virtual const"> + <method name="_shaped_text_get_object_rect" qualifiers="virtual const"> <return type="Rect2" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="key" type="Variant" /> <description> - Returns bounding rectangle of the inline object. </description> </method> - <method name="shaped_text_get_objects" qualifiers="virtual const"> + <method name="_shaped_text_get_objects" qualifiers="virtual const"> <return type="Array" /> <param index="0" name="shaped" type="RID" /> <description> - Returns array of inline objects. </description> </method> - <method name="shaped_text_get_orientation" qualifiers="virtual const"> + <method name="_shaped_text_get_orientation" qualifiers="virtual const"> <return type="int" enum="TextServer.Orientation" /> <param index="0" name="shaped" type="RID" /> <description> - eturns text orientation. </description> </method> - <method name="shaped_text_get_parent" qualifiers="virtual const"> + <method name="_shaped_text_get_parent" qualifiers="virtual const"> <return type="RID" /> <param index="0" name="shaped" type="RID" /> <description> - Returns the parent buffer from which the substring originates. </description> </method> - <method name="shaped_text_get_preserve_control" qualifiers="virtual const"> + <method name="_shaped_text_get_preserve_control" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <description> - Returns [code]true[/code] if text buffer is configured to display control characters. </description> </method> - <method name="shaped_text_get_preserve_invalid" qualifiers="virtual const"> + <method name="_shaped_text_get_preserve_invalid" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <description> - Returns [code]true[/code] if text buffer is configured to display hexadecimal codes in place of invalid characters. - [b]Note:[/b] If set to [code]false[/code], nothing is displayed in place of invalid characters. </description> </method> - <method name="shaped_text_get_range" qualifiers="virtual const"> + <method name="_shaped_text_get_range" qualifiers="virtual const"> <return type="Vector2i" /> <param index="0" name="shaped" type="RID" /> <description> - Returns substring buffer character range in the parent buffer. </description> </method> - <method name="shaped_text_get_selection" qualifiers="virtual const"> + <method name="_shaped_text_get_selection" qualifiers="virtual const"> <return type="PackedVector2Array" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="start" type="int" /> <param index="2" name="end" type="int" /> <description> - Returns selection rectangles for the specified character range. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_get_size" qualifiers="virtual const"> + <method name="_shaped_text_get_size" qualifiers="virtual const"> <return type="Vector2" /> <param index="0" name="shaped" type="RID" /> <description> - Returns size of the text. </description> </method> - <method name="shaped_text_get_spacing" qualifiers="virtual const"> + <method name="_shaped_text_get_spacing" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="spacing" type="int" enum="TextServer.SpacingType" /> <description> - Returns extra spacing added between glyphs or lines in pixels. </description> </method> - <method name="shaped_text_get_trim_pos" qualifiers="virtual const"> + <method name="_shaped_text_get_trim_pos" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <description> - Returns the position of the overrun trim. </description> </method> - <method name="shaped_text_get_underline_position" qualifiers="virtual const"> + <method name="_shaped_text_get_underline_position" qualifiers="virtual const"> <return type="float" /> <param index="0" name="shaped" type="RID" /> <description> - Returns pixel offset of the underline below the baseline. </description> </method> - <method name="shaped_text_get_underline_thickness" qualifiers="virtual const"> + <method name="_shaped_text_get_underline_thickness" qualifiers="virtual const"> <return type="float" /> <param index="0" name="shaped" type="RID" /> <description> - Returns thickness of the underline. </description> </method> - <method name="shaped_text_get_width" qualifiers="virtual const"> + <method name="_shaped_text_get_width" qualifiers="virtual const"> <return type="float" /> <param index="0" name="shaped" type="RID" /> <description> - Returns width (for horizontal layout) or height (for vertical) of the text. </description> </method> - <method name="shaped_text_get_word_breaks" qualifiers="virtual const"> + <method name="_shaped_text_get_word_breaks" qualifiers="virtual const"> <return type="PackedInt32Array" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="grapheme_flags" type="int" enum="TextServer.GraphemeFlag" /> <description> - Breaks text into words and returns array of character ranges. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_hit_test_grapheme" qualifiers="virtual const"> + <method name="_shaped_text_hit_test_grapheme" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="coord" type="float" /> <description> - Returns grapheme index at the specified pixel offset at the baseline, or [code]-1[/code] if none is found. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_hit_test_position" qualifiers="virtual const"> + <method name="_shaped_text_hit_test_position" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="coord" type="float" /> <description> - Returns caret character offset at the specified pixel offset at the baseline. This function always returns a valid position. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_is_ready" qualifiers="virtual const"> + <method name="_shaped_text_is_ready" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <description> - Returns [code]true[/code] if buffer is successfully shaped. </description> </method> - <method name="shaped_text_next_grapheme_pos" qualifiers="virtual const"> + <method name="_shaped_text_next_grapheme_pos" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="pos" type="int" /> <description> - Returns composite character end position closest to the [param pos]. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_overrun_trim_to_width" qualifiers="virtual"> + <method name="_shaped_text_overrun_trim_to_width" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="width" type="float" /> <param index="2" name="trim_flags" type="int" enum="TextServer.TextOverrunFlag" /> <description> - Trims text if it exceeds the given width. </description> </method> - <method name="shaped_text_prev_grapheme_pos" qualifiers="virtual const"> + <method name="_shaped_text_prev_grapheme_pos" qualifiers="virtual const"> <return type="int" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="pos" type="int" /> <description> - Returns composite character start position closest to the [param pos]. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="shaped_text_resize_object" qualifiers="virtual"> + <method name="_shaped_text_resize_object" qualifiers="virtual"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="key" type="Variant" /> <param index="2" name="size" type="Vector2" /> <param index="3" name="inline_align" type="int" enum="InlineAlignment" /> <description> - Sets new size and alignment of embedded object. </description> </method> - <method name="shaped_text_set_bidi_override" qualifiers="virtual"> + <method name="_shaped_text_set_bidi_override" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="override" type="Array" /> <description> - Overrides BiDi for the structured text. - Override ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately. </description> </method> - <method name="shaped_text_set_custom_punctuation" qualifiers="virtual"> + <method name="_shaped_text_set_custom_punctuation" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="punct" type="String" /> <description> - Sets custom punctuation character list, used for word breaking. If set to empty string, server defaults are used. </description> </method> - <method name="shaped_text_set_direction" qualifiers="virtual"> + <method name="_shaped_text_set_direction" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="direction" type="int" enum="TextServer.Direction" /> <description> - Sets desired text [param direction]. If set to [code]TEXT_DIRECTION_AUTO[/code], direction will be detected based on the buffer contents and current locale. </description> </method> - <method name="shaped_text_set_orientation" qualifiers="virtual"> + <method name="_shaped_text_set_orientation" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="orientation" type="int" enum="TextServer.Orientation" /> <description> - Sets desired text orientation. </description> </method> - <method name="shaped_text_set_preserve_control" qualifiers="virtual"> + <method name="_shaped_text_set_preserve_control" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="enabled" type="bool" /> <description> - If set to [code]true[/code] text buffer will display control characters. </description> </method> - <method name="shaped_text_set_preserve_invalid" qualifiers="virtual"> + <method name="_shaped_text_set_preserve_invalid" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="enabled" type="bool" /> <description> - If set to [code]true[/code] text buffer will display invalid characters as hexadecimal codes, otherwise nothing is displayed. </description> </method> - <method name="shaped_text_set_spacing" qualifiers="virtual"> + <method name="_shaped_text_set_spacing" qualifiers="virtual"> <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="spacing" type="int" enum="TextServer.SpacingType" /> <param index="2" name="value" type="int" /> <description> - Sets extra spacing added between glyphs or lines in pixels. </description> </method> - <method name="shaped_text_shape" qualifiers="virtual"> + <method name="_shaped_text_shape" qualifiers="virtual"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <description> - Shapes buffer if it's not shaped. Returns [code]true[/code] if the string is shaped successfully. </description> </method> - <method name="shaped_text_sort_logical" qualifiers="virtual"> + <method name="_shaped_text_sort_logical" qualifiers="virtual"> <return type="const Glyph*" /> <param index="0" name="shaped" type="RID" /> <description> - Returns text glyphs in the logical order. </description> </method> - <method name="shaped_text_substr" qualifiers="virtual const"> + <method name="_shaped_text_substr" qualifiers="virtual const"> <return type="RID" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="start" type="int" /> <param index="2" name="length" type="int" /> <description> - Returns text buffer for the substring of the text in the [param shaped] text buffer (including inline objects). </description> </method> - <method name="shaped_text_tab_align" qualifiers="virtual"> + <method name="_shaped_text_tab_align" qualifiers="virtual"> <return type="float" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="tab_stops" type="PackedFloat32Array" /> <description> - Aligns shaped text to the given tab-stops. </description> </method> - <method name="shaped_text_update_breaks" qualifiers="virtual"> + <method name="_shaped_text_update_breaks" qualifiers="virtual"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <description> - Updates line breaking positions in the text buffer. - [b]Note:[/b] This method is used by default line/word breaking methods, and its implementation might be omitted if custom line breaking in implemented. </description> </method> - <method name="shaped_text_update_justification_ops" qualifiers="virtual"> + <method name="_shaped_text_update_justification_ops" qualifiers="virtual"> <return type="bool" /> <param index="0" name="shaped" type="RID" /> <description> - Updates line justification positions (word breaks and elongations) in the text buffer. - [b]Note:[/b] This method is used by default line/word breaking methods, and its implementation might be omitted if custom line breaking in implemented. </description> </method> - <method name="spoof_check" qualifiers="virtual const"> + <method name="_spoof_check" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="string" type="String" /> <description> - Returns [code]true[/code] if [param string] is likely to be an attempt at confusing the reader. </description> </method> - <method name="string_get_word_breaks" qualifiers="virtual const"> + <method name="_string_get_word_breaks" qualifiers="virtual const"> <return type="PackedInt32Array" /> <param index="0" name="string" type="String" /> <param index="1" name="language" type="String" /> <description> - Returns array of the word break character offsets. </description> </method> - <method name="string_to_lower" qualifiers="virtual const"> + <method name="_string_to_lower" qualifiers="virtual const"> <return type="String" /> <param index="0" name="string" type="String" /> <param index="1" name="language" type="String" /> <description> - Returns the string converted to lowercase. </description> </method> - <method name="string_to_upper" qualifiers="virtual const"> + <method name="_string_to_upper" qualifiers="virtual const"> <return type="String" /> <param index="0" name="string" type="String" /> <param index="1" name="language" type="String" /> <description> - Returns the string converted to uppercase. </description> </method> - <method name="strip_diacritics" qualifiers="virtual const"> + <method name="_strip_diacritics" qualifiers="virtual const"> <return type="String" /> <param index="0" name="string" type="String" /> <description> - Strips diacritics from the string. - [b]Note:[/b] If this method is not implemented in the plugin, the default implementation will be used. </description> </method> - <method name="tag_to_name" qualifiers="virtual const"> + <method name="_tag_to_name" qualifiers="virtual const"> <return type="String" /> <param index="0" name="tag" type="int" /> <description> - Converts OpenType tag to readable feature, variation, script or language name. </description> </method> </methods> diff --git a/doc/classes/Texture2DArray.xml b/doc/classes/Texture2DArray.xml index 6f059b5fbf..113f37f974 100644 --- a/doc/classes/Texture2DArray.xml +++ b/doc/classes/Texture2DArray.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Texture2DArray" inherits="ImageTextureLayered" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + A single texture resource which consists of multiple, separate images. Each image has the same dimensions and number of mipmap levels. </brief_description> <description> + A Texture2DArray is different from a Texture3D: The Texture2DArray does not support trilinear interpolation between the [Image]s, i.e. no blending. + A Texture2DArray is also different from an [AtlasTexture]: In a Texture2DArray, all images are treated separately. In an atlas, the regions (i.e. the single images) can be of different sizes. Furthermore, you usually need to add a padding around the regions, to prevent accidental UV mapping to more than one region. The same goes for mipmapping: Mipmap chains are handled separately for each layer. In an atlas, the slicing has to be done manually in the fragment shader. </description> <tutorials> </tutorials> diff --git a/doc/classes/TextureLayered.xml b/doc/classes/TextureLayered.xml index 7b528e2082..5e6afcbc5c 100644 --- a/doc/classes/TextureLayered.xml +++ b/doc/classes/TextureLayered.xml @@ -1,10 +1,15 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="TextureLayered" inherits="Texture" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - Base class for 3D texture types. + Base class for texture types which contain the data of multiple [Image]s. Each image is of the same size and format. </brief_description> <description> - Base class for [Texture2DArray], [Cubemap] and [CubemapArray]. Cannot be used directly, but contains all the functions necessary for accessing the derived resource types. Data is set on a per-layer basis. For [Texture2DArray]s, the layer specifies the array layer. + Base class for [Texture2DArray], [Cubemap] and [CubemapArray]. Cannot be used directly, but contains all the functions necessary for accessing the derived resource types. + Data is set on a per-layer basis. For [Texture2DArray]s, the layer specifies the array layer. + All images need to have the same width, height and number of mipmap levels. + A [TextureLayered] can be loaded with [code]method ResourceFormatLoader.load[/code]. + To create such a texture file yourself, re-import your image files using the Godot Editor import presets. + Internally, Godot maps these files to their respective counterparts in the target rendering driver (GLES3, Vulkan). </description> <tutorials> </tutorials> @@ -72,6 +77,7 @@ <method name="get_layers" qualifiers="const"> <return type="int" /> <description> + Returns the number of referenced [Image]s. </description> </method> <method name="get_width" qualifiers="const"> @@ -83,6 +89,7 @@ <method name="has_mipmaps" qualifiers="const"> <return type="bool" /> <description> + Returns [code]true[/code] if the layers have generated mipmaps. </description> </method> </methods> diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml index 54eb83297d..fd9c44091c 100644 --- a/doc/classes/TileMap.xml +++ b/doc/classes/TileMap.xml @@ -188,7 +188,7 @@ </description> </method> <method name="get_used_rect"> - <return type="Rect2" /> + <return type="Rect2i" /> <description> Returns a rectangle enclosing the used (non-empty) tiles of the map, including all layers. </description> diff --git a/doc/classes/Time.xml b/doc/classes/Time.xml index cdbe30c444..1abe017a4d 100644 --- a/doc/classes/Time.xml +++ b/doc/classes/Time.xml @@ -17,7 +17,7 @@ <return type="Dictionary" /> <param index="0" name="utc" type="bool" default="false" /> <description> - Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], and [code]dst[/code] (Daylight Savings Time). + Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], and [code]weekday[/code]. The returned values are in the system's local time when [param utc] is [code]false[/code], otherwise they are in UTC. </description> </method> @@ -57,7 +57,7 @@ <return type="Dictionary" /> <param index="0" name="utc" type="bool" default="false" /> <description> - Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/code], [code]minute[/code], and [code]second[/code]. + Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/code], [code]minute[/code], [code]second[/code], and [code]dst[/code] (Daylight Savings Time). </description> </method> <method name="get_datetime_dict_from_unix_time" qualifiers="const"> diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index f6a078602c..539ca38190 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -312,6 +312,9 @@ The drop mode as an OR combination of flags. See [enum DropModeFlags] constants. Once dropping is done, reverts to [constant DROP_MODE_DISABLED]. Setting this during [method Control._can_drop_data] is recommended. This controls the drop sections, i.e. the decision and drawing of possible drop locations based on the mouse position. </member> + <member name="enable_recursive_folding" type="bool" setter="set_enable_recursive_folding" getter="is_recursive_folding_enabled" default="true"> + If [code]true[/code], recursive folding is enabled for this [Tree]. Holding down Shift while clicking the fold arrow collapses or uncollapses the [TreeItem] and all its descendants. + </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" overrides="Control" enum="Control.FocusMode" default="2" /> <member name="hide_folding" type="bool" setter="set_hide_folding" getter="is_folding_hidden" default="false"> If [code]true[/code], the folding arrow is hidden. diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml index fdae6d205d..c109dc57f7 100644 --- a/doc/classes/TreeItem.xml +++ b/doc/classes/TreeItem.xml @@ -321,6 +321,14 @@ Returns the [Tree] that owns this TreeItem. </description> </method> + <method name="is_any_collapsed"> + <return type="bool" /> + <param index="0" name="only_visible" type="bool" default="false" /> + <description> + Returns [code]true[/code] if this [TreeItem], or any of its descendants, is collapsed. + If [param only_visible] is [code]true[/code] it ignores non-visible [TreeItem]s. + </description> + </method> <method name="is_button_disabled" qualifiers="const"> <return type="bool" /> <param index="0" name="column" type="int" /> @@ -442,6 +450,13 @@ If [code]true[/code], the given [param column] is checked. Clears column's indeterminate status. </description> </method> + <method name="set_collapsed_recursive"> + <return type="void" /> + <param index="0" name="enable" type="bool" /> + <description> + Collapses or uncollapses this [TreeItem] and all the descendants of this item. + </description> + </method> <method name="set_custom_as_button"> <return type="void" /> <param index="0" name="column" type="int" /> diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml index c7fc78c1d3..acf900ae55 100644 --- a/doc/classes/Tween.xml +++ b/doc/classes/Tween.xml @@ -8,37 +8,89 @@ [Tween] is more suited than [AnimationPlayer] for animations where you don't know the final values in advance. For example, interpolating a dynamically-chosen camera zoom value is best done with a [Tween]; it would be difficult to do the same thing with an [AnimationPlayer] node. Tweens are also more light-weight than [AnimationPlayer], so they are very much suited for simple animations or general tasks that don't require visual tweaking provided by the editor. They can be used in a fire-and-forget manner for some logic that normally would be done by code. You can e.g. make something shoot periodically by using a looped [CallbackTweener] with a delay. A [Tween] can be created by using either [method SceneTree.create_tween] or [method Node.create_tween]. [Tween]s created manually (i.e. by using [code]Tween.new()[/code]) are invalid and can't be used for tweening values. A tween animation is created by adding [Tweener]s to the [Tween] object, using [method tween_property], [method tween_interval], [method tween_callback] or [method tween_method]: - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween() tween.tween_property($Sprite, "modulate", Color.red, 1) tween.tween_property($Sprite, "scale", Vector2(), 1) tween.tween_callback($Sprite.queue_free) - [/codeblock] + [/gdscript] + [csharp] + 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)); + [/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]. When a [Tweener] is created with one of the [code]tween_*[/code] methods, a chained method call can be used to tweak the properties of this [Tweener]. For example, if you want to set a different transition type in the above example, you can use [method set_trans]: - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween() tween.tween_property($Sprite, "modulate", Color.red, 1).set_trans(Tween.TRANS_SINE) tween.tween_property($Sprite, "scale", Vector2(), 1).set_trans(Tween.TRANS_BOUNCE) tween.tween_callback($Sprite.queue_free) - [/codeblock] + [/gdscript] + [csharp] + 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)); + [/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: - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_ELASTIC) tween.tween_property($Sprite, "modulate", Color.red, 1) tween.tween_property($Sprite, "scale", Vector2(), 1) tween.tween_callback($Sprite.queue_free) - [/codeblock] + [/gdscript] + [csharp] + 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)); + [/csharp] + [/codeblocks] Another interesting use for [Tween]s is animating arbitrary sets of objects: - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() for sprite in get_children(): tween.tween_property(sprite, "position", Vector2(0, 0), 1) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + foreach (Node sprite in GetChildren()) + tween.TweenProperty(sprite, "position", Vector2.Zero, 1.0f); + [/csharp] + [/codeblocks] In the example above, all children of a node are moved one after another to position (0, 0). + You should avoid using more than one [Tween] per object's property. If two or more tweens animate one property at the same time, the last one created will take priority and assign the final value. If you want to interrupt and restart an animation, consider assigning the [Tween] to a variable: + [codeblocks] + [gdscript] + var tween + func animate(): + if tween: + tween.kill() # Abort the previous animation. + tween = create_tween() + [/gdscript] + [csharp] + private Tween tween; + + public void Animate() + { + if (tween != null) + tween.Kill(); // Abort the previous animation + tween = CreateTween(); + } + [/csharp] + [/codeblocks] Some [Tweener]s use transitions and eases. The first accepts a [enum TransitionType] constant, and refers to the way the timing of the animation is handled (see [url=https://easings.net/]easings.net[/url] for some examples). The second accepts an [enum EaseType] constant, and controls where the [code]trans_type[/code] is applied to the interpolation (in the beginning, the end, or both). If you don't know which transition and easing to pick, you can try different [enum TransitionType] constants with [constant EASE_IN_OUT], and use the one that looks best. [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/tween_cheatsheet.png]Tween easing and transition types cheatsheet[/url] [b]Note:[/b] All [Tween]s will automatically start by default. To prevent a [Tween] from autostarting, you can call [method stop] immediately after it is created. + [b]Note:[/b] [Tween]s are processing after all of nodes in the current frame, i.e. after [method Node._process] or [method Node._physics_process] (depending on [enum TweenProcessMode]). </description> <tutorials> </tutorials> @@ -55,12 +107,20 @@ <return type="Tween" /> <description> Used to chain two [Tweener]s after [method set_parallel] is called with [code]true[/code]. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween().set_parallel(true) tween.tween_property(...) tween.tween_property(...) # Will run parallelly with above. tween.chain().tween_property(...) # Will run after two above are finished. - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween().SetParallel(true); + tween.TweenProperty(...); + tween.TweenProperty(...); // Will run parallelly with above. + tween.Chain().TweenProperty(...); // Will run after two above are finished. + [/csharp] + [/codeblocks] </description> </method> <method name="custom_step"> @@ -118,12 +178,20 @@ <return type="Tween" /> <description> Makes the next [Tweener] run parallelly to the previous one. Example: - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_property(...) tween.parallel().tween_property(...) tween.parallel().tween_property(...) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + tween.TweenProperty(...); + tween.Parallel().TweenProperty(...); + tween.Parallel().TweenProperty(...); + [/csharp] + [/codeblocks] All [Tweener]s in the example will run at the same time. You can make the [Tween] parallel by default by using [method set_parallel]. </description> @@ -205,16 +273,30 @@ <description> Creates and appends a [CallbackTweener]. This method can be used to call an arbitrary method in any object. Use [method Callable.bind] to bind additional arguments for the call. Example: object that keeps shooting every 1 second. - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween().set_loops() tween.tween_callback(shoot).set_delay(1) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = GetTree().CreateTween().SetLoops(); + tween.TweenCallback(new Callable(Shoot)).SetDelay(1.0f); + [/csharp] + [/codeblocks] Example: turning a sprite red and then blue, with 2 second delay. - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween() tween.tween_callback($Sprite.set_modulate.bind(Color.red)).set_delay(2) tween.tween_callback($Sprite.set_modulate.bind(Color.blue)).set_delay(2) - [/codeblock] + [/gdscript] + [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); + [/csharp] + [/codeblocks] </description> </method> <method name="tween_interval"> @@ -223,13 +305,21 @@ <description> Creates and appends an [IntervalTweener]. This method can be used to create delays in the tween animation, as an alternative to using the delay in other [Tweener]s, or when there's no animation (in which case the [Tween] acts as a timer). [param time] is the length of the interval, in seconds. Example: creating an interval in code execution. - [codeblock] + [codeblocks] + [gdscript] # ... some code await create_tween().tween_interval(2).finished # ... more code - [/codeblock] + [/gdscript] + [csharp] + // ... some code + await ToSignal(CreateTween().TweenInterval(2.0f), Tween.SignalName.Finished); + // ... more code + [/csharp] + [/codeblocks] Example: creating an object that moves back and forth and jumps every few seconds. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween().set_loops() tween.tween_property($Sprite, "position:x", 200.0, 1).as_relative() tween.tween_callback(jump) @@ -237,7 +327,17 @@ tween.tween_property($Sprite, "position:x", -200.0, 1).as_relative() tween.tween_callback(jump) tween.tween_interval(2) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween().SetLoops(); + tween.TweenProperty(GetNode("Sprite"), "position:x", 200.0f, 1.0f).AsRelative(); + tween.TweenCallback(new Callable(Jump)); + tween.TweenInterval(2.0f); + tween.TweenProperty(GetNode("Sprite"), "position:x", -200.0f, 1.0f).AsRelative(); + tween.TweenCallback(new Callable(Jump)); + tween.TweenInterval(2.0f); + [/csharp] + [/codeblocks] </description> </method> <method name="tween_method"> @@ -249,19 +349,41 @@ <description> Creates and appends a [MethodTweener]. This method is similar to a combination of [method tween_callback] and [method tween_property]. It calls a method over time with a tweened value provided as an argument. The value is tweened between [param from] and [param to] over the time specified by [param duration], in seconds. Use [method Callable.bind] to bind additional arguments for the call. You can use [method MethodTweener.set_ease] and [method MethodTweener.set_trans] to tweak the easing and transition of the value or [method MethodTweener.set_delay] to delay the tweening. Example: making a 3D object look from one point to another point. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_method(look_at.bind(Vector3.UP), Vector3(-1, 0, -1), Vector3(1, 0, -1), 1) # The look_at() method takes up vector as second argument. - [/codeblock] + [/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. + [/csharp] + [/codeblocks] Example: setting a text of a [Label], using an intermediate method and after a delay. - [codeblock] + [codeblocks] + [gdscript] func _ready(): var tween = create_tween() tween.tween_method(set_label_text, 0, 10, 1).set_delay(1) func set_label_text(value: int): $Label.text = "Counting " + str(value) - [/codeblock] + [/gdscript] + [csharp] + public override void _Ready() + { + base._Ready(); + + Tween tween = CreateTween(); + tween.TweenMethod(new Callable(SetLabelText), 0.0f, 10.0f, 1.0f).SetDelay(1.0f); + } + + private void SetLabelText(int value) + { + GetNode<Label>("Label").Text = $"Counting {value}"; + } + [/csharp] + [/codeblocks] </description> </method> <method name="tween_property"> @@ -272,19 +394,33 @@ <param index="3" name="duration" type="float" /> <description> Creates and appends a [PropertyTweener]. This method tweens a [param property] of an [param object] between an initial value and [param final_val] in a span of time equal to [param duration], in seconds. The initial value by default is the property's value at the time the tweening of the [PropertyTweener] starts. For example: - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_property($Sprite, "position", Vector2(100, 200), 1) tween.tween_property($Sprite, "position", Vector2(200, 300), 1) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + tween.TweenProperty(GetNode("Sprite"), "position", new Vector2(100.0f, 200.0f), 1.0f); + tween.TweenProperty(GetNode("Sprite"), "position", new Vector2(200.0f, 300.0f), 1.0f); + [/csharp] + [/codeblocks] will move the sprite to position (100, 200) and then to (200, 300). If you use [method PropertyTweener.from] or [method PropertyTweener.from_current], the starting position will be overwritten by the given value instead. See other methods in [PropertyTweener] to see how the tweening can be tweaked further. [b]Note:[/b] You can find the correct property name by hovering over the property in the Inspector. You can also provide the components of a property directly by using [code]"property:component"[/code] (eg. [code]position:x[/code]), where it would only apply to that particular component. Example: moving object twice from the same position, with different transition types. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1).as_relative().set_trans(Tween.TRANS_SINE) tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1).as_relative().from_current().set_trans(Tween.TRANS_EXPO) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + tween.TweenProperty(GetNode("Sprite"), "position", Vector2.Right * 300.0f, 1.0f).AsRelative().SetTrans(Tween.TransitionType.Sine); + tween.TweenProperty(GetNode("Sprite"), "position", Vector2.Right * 300.0f, 1.0f).AsRelative().FromCurrent().SetTrans(Tween.TransitionType.Expo); + [/csharp] + [/codeblocks] </description> </method> </methods> diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml index 3ef59b1c39..7258efbdda 100644 --- a/doc/classes/UndoRedo.xml +++ b/doc/classes/UndoRedo.xml @@ -62,12 +62,11 @@ <tutorials> </tutorials> <methods> - <method name="add_do_method" qualifiers="vararg"> + <method name="add_do_method"> <return type="void" /> - <param index="0" name="object" type="Object" /> - <param index="1" name="method" type="StringName" /> + <param index="0" name="callable" type="Callable" /> <description> - Register a [param method] that will be called when the action is committed. + Register a [Callable] that will be called when the action is committed. </description> </method> <method name="add_do_property"> @@ -86,12 +85,11 @@ Register a reference for "do" that will be erased if the "do" history is lost. This is useful mostly for new nodes created for the "do" call. Do not use for resources. </description> </method> - <method name="add_undo_method" qualifiers="vararg"> + <method name="add_undo_method"> <return type="void" /> - <param index="0" name="object" type="Object" /> - <param index="1" name="method" type="StringName" /> + <param index="0" name="callable" type="Callable" /> <description> - Register a [param method] that will be called when the action is undone. + Register a [Callable] that will be called when the action is undone. </description> </method> <method name="add_undo_property"> diff --git a/doc/classes/Window.xml b/doc/classes/Window.xml index 2c0a694ef9..c585b54ee1 100644 --- a/doc/classes/Window.xml +++ b/doc/classes/Window.xml @@ -381,7 +381,8 @@ Note that behavior might be different depending on the platform. </member> <member name="transparent" type="bool" setter="set_flag" getter="get_flag" default="false"> - If [code]true[/code], the [Window]'s background can be transparent. This is best used with embedded windows. Currently non-embedded [Window] transparency is implemented only for MacOS. + If [code]true[/code], the [Window]'s background can be transparent. This is best used with embedded windows. + [b]Note:[/b] This flag has no effect if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to [code]false[/code]. </member> <member name="unfocusable" type="bool" setter="set_flag" getter="get_flag" default="false"> If [code]true[/code], the [Window] can't be focused nor interacted with. It can still be visible. @@ -454,6 +455,11 @@ Emitted when the [constant NOTIFICATION_THEME_CHANGED] notification is sent. </description> </signal> + <signal name="titlebar_changed"> + <description> + Emitted when window title bar decorations are changed, e.g., macOS window enter/exit full screen mode, or extend-to-title flag is changed. + </description> + </signal> <signal name="visibility_changed"> <description> Emitted when [Window] is made visible or disappears. diff --git a/doc/classes/XRInterface.xml b/doc/classes/XRInterface.xml index 6296b95e6c..3e48b8284a 100644 --- a/doc/classes/XRInterface.xml +++ b/doc/classes/XRInterface.xml @@ -69,6 +69,18 @@ Is [code]true[/code] if this interface has been initialised. </description> </method> + <method name="is_passthrough_enabled"> + <return type="bool" /> + <description> + Is [code]true[/code] if passthrough is enabled. + </description> + </method> + <method name="is_passthrough_supported"> + <return type="bool" /> + <description> + Is [code]true[/code] if this interface supports passthrough. + </description> + </method> <method name="set_play_area_mode"> <return type="bool" /> <param index="0" name="mode" type="int" enum="XRInterface.PlayAreaMode" /> @@ -76,6 +88,19 @@ Sets the active play area mode, will return [code]false[/code] if the mode can't be used with this interface. </description> </method> + <method name="start_passthrough"> + <return type="bool" /> + <description> + Starts passthrough, will return [code]false[/code] if passthrough couldn't be started. + [b]Note:[/b] The viewport used for XR must have a transparent background, otherwise passthrough may not properly render. + </description> + </method> + <method name="stop_passthrough"> + <return type="void" /> + <description> + Stops passthrough. + </description> + </method> <method name="supports_play_area_mode"> <return type="bool" /> <param index="0" name="mode" type="int" enum="XRInterface.PlayAreaMode" /> |