summaryrefslogtreecommitdiffstats
path: root/doc/classes
diff options
context:
space:
mode:
Diffstat (limited to 'doc/classes')
-rw-r--r--doc/classes/@GlobalScope.xml12
-rw-r--r--doc/classes/AStar2D.xml6
-rw-r--r--doc/classes/AStar3D.xml6
-rw-r--r--doc/classes/AStarGrid2D.xml6
-rw-r--r--doc/classes/AnimatableBody3D.xml6
-rw-r--r--doc/classes/AnimatedSprite2D.xml2
-rw-r--r--doc/classes/AnimationMixer.xml13
-rw-r--r--doc/classes/AnimationNode.xml11
-rw-r--r--doc/classes/AnimationNodeAdd3.xml2
-rw-r--r--doc/classes/AnimationNodeAnimation.xml22
-rw-r--r--doc/classes/AnimationNodeBlend2.xml4
-rw-r--r--doc/classes/AnimationNodeBlendSpace2D.xml2
-rw-r--r--doc/classes/AnimationNodeOneShot.xml7
-rw-r--r--doc/classes/AnimationNodeOutput.xml4
-rw-r--r--doc/classes/AnimationNodeStateMachineTransition.xml4
-rw-r--r--doc/classes/AnimationNodeTimeScale.xml2
-rw-r--r--doc/classes/AnimationNodeTransition.xml20
-rw-r--r--doc/classes/AnimationPlayer.xml2
-rw-r--r--doc/classes/AnimationTree.xml2
-rw-r--r--doc/classes/Area2D.xml6
-rw-r--r--doc/classes/Area3D.xml7
-rw-r--r--doc/classes/Array.xml32
-rw-r--r--doc/classes/AudioEffect.xml2
-rw-r--r--doc/classes/AudioEffectHardLimiter.xml24
-rw-r--r--doc/classes/AudioEffectLimiter.xml2
-rw-r--r--doc/classes/AudioEffectRecord.xml2
-rw-r--r--doc/classes/AudioEffectReverb.xml2
-rw-r--r--doc/classes/AudioEffectSpectrumAnalyzer.xml2
-rw-r--r--doc/classes/AudioServer.xml6
-rw-r--r--doc/classes/AudioStream.xml6
-rw-r--r--doc/classes/AudioStreamGenerator.xml2
-rw-r--r--doc/classes/AudioStreamGeneratorPlayback.xml2
-rw-r--r--doc/classes/AudioStreamPlayback.xml2
-rw-r--r--doc/classes/AudioStreamPlayer.xml56
-rw-r--r--doc/classes/Basis.xml8
-rw-r--r--doc/classes/BoneAttachment3D.xml1
-rw-r--r--doc/classes/BoxShape3D.xml6
-rw-r--r--doc/classes/Button.xml4
-rw-r--r--doc/classes/Camera2D.xml5
-rw-r--r--doc/classes/Camera3D.xml2
-rw-r--r--doc/classes/CameraServer.xml2
-rw-r--r--doc/classes/CanvasItem.xml9
-rw-r--r--doc/classes/CanvasLayer.xml2
-rw-r--r--doc/classes/CapsuleShape3D.xml2
-rw-r--r--doc/classes/CharacterBody2D.xml10
-rw-r--r--doc/classes/CharacterBody3D.xml14
-rw-r--r--doc/classes/CollisionObject3D.xml8
-rw-r--r--doc/classes/CollisionPolygon2D.xml3
-rw-r--r--doc/classes/CollisionPolygon3D.xml1
-rw-r--r--doc/classes/CollisionShape2D.xml6
-rw-r--r--doc/classes/CollisionShape3D.xml6
-rw-r--r--doc/classes/Color.xml6
-rw-r--r--doc/classes/ColorPicker.xml2
-rw-r--r--doc/classes/ColorPickerButton.xml4
-rw-r--r--doc/classes/ColorRect.xml2
-rw-r--r--doc/classes/ConcavePolygonShape3D.xml2
-rw-r--r--doc/classes/ConfigFile.xml2
-rw-r--r--doc/classes/Control.xml9
-rw-r--r--doc/classes/ConvexPolygonShape3D.xml2
-rw-r--r--doc/classes/CylinderShape3D.xml6
-rw-r--r--doc/classes/DTLSServer.xml6
-rw-r--r--doc/classes/Dictionary.xml4
-rw-r--r--doc/classes/DisplayServer.xml48
-rw-r--r--doc/classes/EditorExportPlatformPC.xml3
-rw-r--r--doc/classes/EditorFileDialog.xml64
-rw-r--r--doc/classes/EditorPaths.xml6
-rw-r--r--doc/classes/EditorSettings.xml14
-rw-r--r--doc/classes/Environment.xml5
-rw-r--r--doc/classes/FileAccess.xml4
-rw-r--r--doc/classes/FileDialog.xml5
-rw-r--r--doc/classes/GPUParticles2D.xml16
-rw-r--r--doc/classes/GPUParticles3D.xml14
-rw-r--r--doc/classes/GeometryInstance3D.xml4
-rw-r--r--doc/classes/Gradient.xml8
-rw-r--r--doc/classes/GraphEdit.xml48
-rw-r--r--doc/classes/GraphElement.xml10
-rw-r--r--doc/classes/GraphFrame.xml66
-rw-r--r--doc/classes/GridContainer.xml2
-rw-r--r--doc/classes/HTTPClient.xml4
-rw-r--r--doc/classes/HTTPRequest.xml8
-rw-r--r--doc/classes/HeightMapShape3D.xml24
-rw-r--r--doc/classes/Input.xml4
-rw-r--r--doc/classes/InputEvent.xml11
-rw-r--r--doc/classes/InputEventAction.xml4
-rw-r--r--doc/classes/InputEventKey.xml4
-rw-r--r--doc/classes/InputEventMIDI.xml4
-rw-r--r--doc/classes/InputEventMouseMotion.xml2
-rw-r--r--doc/classes/JSONRPC.xml4
-rw-r--r--doc/classes/JavaClass.xml4
-rw-r--r--doc/classes/JavaClassWrapper.xml5
-rw-r--r--doc/classes/Joint3D.xml2
-rw-r--r--doc/classes/Label.xml2
-rw-r--r--doc/classes/Light3D.xml2
-rw-r--r--doc/classes/Line2D.xml4
-rw-r--r--doc/classes/Material.xml4
-rw-r--r--doc/classes/Mesh.xml8
-rw-r--r--doc/classes/MeshInstance3D.xml14
-rw-r--r--doc/classes/MeshLibrary.xml4
-rw-r--r--doc/classes/MultiplayerPeer.xml1
-rw-r--r--doc/classes/NativeMenu.xml13
-rw-r--r--doc/classes/NavigationMesh.xml2
-rw-r--r--doc/classes/NavigationPolygon.xml2
-rw-r--r--doc/classes/NavigationServer2D.xml2
-rw-r--r--doc/classes/NavigationServer3D.xml2
-rw-r--r--doc/classes/Node.xml72
-rw-r--r--doc/classes/NodePath.xml2
-rw-r--r--doc/classes/OS.xml27
-rw-r--r--doc/classes/Object.xml6
-rw-r--r--doc/classes/OccluderPolygon2D.xml1
-rw-r--r--doc/classes/PCKPacker.xml2
-rw-r--r--doc/classes/PackedByteArray.xml1
-rw-r--r--doc/classes/PackedColorArray.xml2
-rw-r--r--doc/classes/PackedFloat32Array.xml1
-rw-r--r--doc/classes/PackedFloat64Array.xml2
-rw-r--r--doc/classes/PackedInt32Array.xml1
-rw-r--r--doc/classes/PackedInt64Array.xml2
-rw-r--r--doc/classes/PackedScene.xml2
-rw-r--r--doc/classes/PackedStringArray.xml4
-rw-r--r--doc/classes/PackedVector2Array.xml4
-rw-r--r--doc/classes/PackedVector3Array.xml2
-rw-r--r--doc/classes/PacketPeerUDP.xml2
-rw-r--r--doc/classes/Panel.xml5
-rw-r--r--doc/classes/PanelContainer.xml2
-rw-r--r--doc/classes/Parallax2D.xml3
-rw-r--r--doc/classes/ParallaxLayer.xml1
-rw-r--r--doc/classes/PhysicalBone3D.xml5
-rw-r--r--doc/classes/PhysicalBoneSimulator3D.xml49
-rw-r--r--doc/classes/PhysicsDirectBodyState2D.xml2
-rw-r--r--doc/classes/PhysicsDirectBodyState2DExtension.xml44
-rw-r--r--doc/classes/PhysicsDirectBodyState3D.xml2
-rw-r--r--doc/classes/PhysicsServer2D.xml16
-rw-r--r--doc/classes/PhysicsServer2DExtension.xml160
-rw-r--r--doc/classes/PhysicsServer3D.xml47
-rw-r--r--doc/classes/Polygon2D.xml1
-rw-r--r--doc/classes/ProjectSettings.xml41
-rw-r--r--doc/classes/QuadMesh.xml4
-rw-r--r--doc/classes/Quaternion.xml2
-rw-r--r--doc/classes/RayCast2D.xml15
-rw-r--r--doc/classes/RayCast3D.xml17
-rw-r--r--doc/classes/RectangleShape2D.xml4
-rw-r--r--doc/classes/RenderingDevice.xml11
-rw-r--r--doc/classes/RenderingServer.xml87
-rw-r--r--doc/classes/ResourceImporterCSVTranslation.xml2
-rw-r--r--doc/classes/ResourceImporterScene.xml3
-rw-r--r--doc/classes/ResourceLoader.xml3
-rw-r--r--doc/classes/RichTextLabel.xml4
-rw-r--r--doc/classes/RigidBody2D.xml9
-rw-r--r--doc/classes/RigidBody3D.xml9
-rw-r--r--doc/classes/SceneTree.xml4
-rw-r--r--doc/classes/ShapeCast2D.xml1
-rw-r--r--doc/classes/ShapeCast3D.xml1
-rw-r--r--doc/classes/Skeleton3D.xml63
-rw-r--r--doc/classes/SkeletonIK3D.xml14
-rw-r--r--doc/classes/SkeletonModifier3D.xml29
-rw-r--r--doc/classes/SkeletonProfile.xml16
-rw-r--r--doc/classes/SkeletonProfileHumanoid.xml2
-rw-r--r--doc/classes/SkinReference.xml9
-rw-r--r--doc/classes/SliderJoint3D.xml46
-rw-r--r--doc/classes/SoftBody3D.xml1
-rw-r--r--doc/classes/SphereShape3D.xml2
-rw-r--r--doc/classes/SpotLight3D.xml2
-rw-r--r--doc/classes/Sprite2D.xml2
-rw-r--r--doc/classes/StaticBody3D.xml6
-rw-r--r--doc/classes/StatusIndicator.xml2
-rw-r--r--doc/classes/String.xml31
-rw-r--r--doc/classes/StringName.xml24
-rw-r--r--doc/classes/StyleBoxFlat.xml4
-rw-r--r--doc/classes/SubViewport.xml12
-rw-r--r--doc/classes/SurfaceTool.xml2
-rw-r--r--doc/classes/TextEdit.xml7
-rw-r--r--doc/classes/TextServer.xml10
-rw-r--r--doc/classes/TextServerExtension.xml9
-rw-r--r--doc/classes/TextureButton.xml2
-rw-r--r--doc/classes/TextureRect.xml2
-rw-r--r--doc/classes/Thread.xml2
-rw-r--r--doc/classes/TileData.xml11
-rw-r--r--doc/classes/TileMap.xml26
-rw-r--r--doc/classes/TileMapLayer.xml303
-rw-r--r--doc/classes/TileMapLayerGroup.xml17
-rw-r--r--doc/classes/TileSet.xml12
-rw-r--r--doc/classes/Timer.xml2
-rw-r--r--doc/classes/Transform2D.xml4
-rw-r--r--doc/classes/Transform3D.xml6
-rw-r--r--doc/classes/Tree.xml4
-rw-r--r--doc/classes/UndoRedo.xml10
-rw-r--r--doc/classes/VBoxContainer.xml2
-rw-r--r--doc/classes/Variant.xml4
-rw-r--r--doc/classes/Vector2.xml12
-rw-r--r--doc/classes/Vector3.xml11
-rw-r--r--doc/classes/VehicleBody3D.xml2
-rw-r--r--doc/classes/VehicleWheel3D.xml2
-rw-r--r--doc/classes/Viewport.xml63
-rw-r--r--doc/classes/ViewportTexture.xml17
-rw-r--r--doc/classes/VisibleOnScreenNotifier2D.xml2
-rw-r--r--doc/classes/VisualShader.xml17
-rw-r--r--doc/classes/VisualShaderNode.xml3
-rw-r--r--doc/classes/VisualShaderNodeComment.xml19
-rw-r--r--doc/classes/VisualShaderNodeFrame.xml46
-rw-r--r--doc/classes/VoxelGI.xml2
-rw-r--r--doc/classes/VoxelGIData.xml2
-rw-r--r--doc/classes/WorldEnvironment.xml5
-rw-r--r--doc/classes/XRBodyModifier3D.xml5
-rw-r--r--doc/classes/XRHandModifier3D.xml5
203 files changed, 1970 insertions, 507 deletions
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index 3a1bd83c18..6d8517927c 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -368,7 +368,7 @@
<param index="1" name="curve" type="float" />
<description>
Returns an "eased" value of [param x] based on an easing function defined with [param curve]. This easing function is based on an exponent. The [param curve] can be any floating-point number, with specific values leading to the following behaviors:
- [codeblock]
+ [codeblock lang=text]
- Lower than -1.0 (exclusive): Ease in-out
- 1.0: Linear
- Between -1.0 and 0.0 (exclusive): Ease out-in
@@ -460,8 +460,8 @@
var x = i * 0.5 - 1.5
print("%4.1f %4.1f | %4.1f" % [x, fmod(x, 1.5), fposmod(x, 1.5)])
[/codeblock]
- Produces:
- [codeblock]
+ Prints:
+ [codeblock lang=text]
(x) (fmod(x, 1.5)) (fposmod(x, 1.5))
-1.5 -0.0 | 0.0
-1.0 -1.0 | 0.5
@@ -818,8 +818,8 @@
for i in range(-3, 4):
print("%2d %2d | %2d" % [i, i % 3, posmod(i, 3)])
[/codeblock]
- Produces:
- [codeblock]
+ Prints:
+ [codeblock lang=text]
(i) (i % 3) (posmod(i, 3))
-3 0 | 0
-2 -2 | 1
@@ -1457,7 +1457,7 @@
[/csharp]
[/codeblocks]
Prints:
- [codeblock]
+ [codeblock lang=text]
{
"a": 1,
"b": 2
diff --git a/doc/classes/AStar2D.xml b/doc/classes/AStar2D.xml
index f10e80e048..2ea6aa15bd 100644
--- a/doc/classes/AStar2D.xml
+++ b/doc/classes/AStar2D.xml
@@ -139,8 +139,10 @@
<return type="PackedInt64Array" />
<param index="0" name="from_id" type="int" />
<param index="1" name="to_id" type="int" />
+ <param index="2" name="allow_partial_path" type="bool" default="false" />
<description>
Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
+ If there is no valid path to the target, and [param allow_partial_path] is [code]true[/code], returns a path to the point closest to the target that can be reached.
[codeblocks]
[gdscript]
var astar = AStar2D.new()
@@ -228,9 +230,11 @@
<return type="PackedVector2Array" />
<param index="0" name="from_id" type="int" />
<param index="1" name="to_id" type="int" />
+ <param index="2" name="allow_partial_path" type="bool" default="false" />
<description>
Returns an array with the points that are in the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
- [b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty [PackedVector2Array] and will print an error message.
+ If there is no valid path to the target, and [param allow_partial_path] is [code]true[/code], returns a path to the point closest to the target that can be reached.
+ [b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty array and will print an error message.
</description>
</method>
<method name="get_point_position" qualifiers="const">
diff --git a/doc/classes/AStar3D.xml b/doc/classes/AStar3D.xml
index e2afeef377..281f4edcc1 100644
--- a/doc/classes/AStar3D.xml
+++ b/doc/classes/AStar3D.xml
@@ -168,8 +168,10 @@
<return type="PackedInt64Array" />
<param index="0" name="from_id" type="int" />
<param index="1" name="to_id" type="int" />
+ <param index="2" name="allow_partial_path" type="bool" default="false" />
<description>
Returns an array with the IDs of the points that form the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
+ If there is no valid path to the target, and [param allow_partial_path] is [code]true[/code], returns a path to the point closest to the target that can be reached.
[codeblocks]
[gdscript]
var astar = AStar3D.new()
@@ -255,9 +257,11 @@
<return type="PackedVector3Array" />
<param index="0" name="from_id" type="int" />
<param index="1" name="to_id" type="int" />
+ <param index="2" name="allow_partial_path" type="bool" default="false" />
<description>
Returns an array with the points that are in the path found by AStar3D between the given points. The array is ordered from the starting point to the ending point of the path.
- [b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty [PackedVector3Array] and will print an error message.
+ If there is no valid path to the target, and [param allow_partial_path] is [code]true[/code], returns a path to the point closest to the target that can be reached.
+ [b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty array and will print an error message.
</description>
</method>
<method name="get_point_position" qualifiers="const">
diff --git a/doc/classes/AStarGrid2D.xml b/doc/classes/AStarGrid2D.xml
index 4501bec314..5ccc0c8f2a 100644
--- a/doc/classes/AStarGrid2D.xml
+++ b/doc/classes/AStarGrid2D.xml
@@ -75,17 +75,21 @@
<return type="Vector2i[]" />
<param index="0" name="from_id" type="Vector2i" />
<param index="1" name="to_id" type="Vector2i" />
+ <param index="2" name="allow_partial_path" type="bool" default="false" />
<description>
Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
+ If there is no valid path to the target, and [param allow_partial_path] is [code]true[/code], returns a path to the point closest to the target that can be reached.
</description>
</method>
<method name="get_point_path">
<return type="PackedVector2Array" />
<param index="0" name="from_id" type="Vector2i" />
<param index="1" name="to_id" type="Vector2i" />
+ <param index="2" name="allow_partial_path" type="bool" default="false" />
<description>
Returns an array with the points that are in the path found by [AStarGrid2D] between the given points. The array is ordered from the starting point to the ending point of the path.
- [b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty [PackedVector3Array] and will print an error message.
+ If there is no valid path to the target, and [param allow_partial_path] is [code]true[/code], returns a path to the point closest to the target that can be reached.
+ [b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty array and will print an error message.
</description>
</method>
<method name="get_point_position" qualifiers="const">
diff --git a/doc/classes/AnimatableBody3D.xml b/doc/classes/AnimatableBody3D.xml
index f5c6217477..f888ca1416 100644
--- a/doc/classes/AnimatableBody3D.xml
+++ b/doc/classes/AnimatableBody3D.xml
@@ -8,9 +8,9 @@
When [AnimatableBody3D] is moved, its linear and angular velocity are estimated and used to affect other physics bodies in its path. This makes it useful for moving platforms, doors, and other moving objects.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="sync_to_physics" type="bool" setter="set_sync_to_physics" getter="is_sync_to_physics_enabled" default="true">
diff --git a/doc/classes/AnimatedSprite2D.xml b/doc/classes/AnimatedSprite2D.xml
index 4b38773505..012ae4fe29 100644
--- a/doc/classes/AnimatedSprite2D.xml
+++ b/doc/classes/AnimatedSprite2D.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="2D Sprite animation">$DOCS_URL/tutorials/2d/2d_sprite_animation.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="get_playing_speed" qualifiers="const">
diff --git a/doc/classes/AnimationMixer.xml b/doc/classes/AnimationMixer.xml
index 9ccaa385db..a77e9e28c6 100644
--- a/doc/classes/AnimationMixer.xml
+++ b/doc/classes/AnimationMixer.xml
@@ -80,7 +80,7 @@
<param index="0" name="name" type="StringName" />
<description>
Returns the first [AnimationLibrary] with key [param name] or [code]null[/code] if not found.
- To get the [AnimationPlayer]'s global animation library, use [code]get_animation_library("")[/code].
+ To get the [AnimationMixer]'s global animation library, use [code]get_animation_library("")[/code].
</description>
</method>
<method name="get_animation_library_list" qualifiers="const">
@@ -239,14 +239,14 @@
<return type="bool" />
<param index="0" name="name" type="StringName" />
<description>
- Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] with key [param name].
+ Returns [code]true[/code] if the [AnimationMixer] stores an [Animation] with key [param name].
</description>
</method>
<method name="has_animation_library" qualifiers="const">
<return type="bool" />
<param index="0" name="name" type="StringName" />
<description>
- Returns [code]true[/code] if the [AnimationPlayer] stores an [AnimationLibrary] with key [param name].
+ Returns [code]true[/code] if the [AnimationMixer] stores an [AnimationLibrary] with key [param name].
</description>
</method>
<method name="remove_animation_library">
@@ -333,9 +333,14 @@
Notifies when the caches have been cleared, either automatically, or manually via [method clear_caches].
</description>
</signal>
+ <signal name="mixer_applied">
+ <description>
+ Notifies when the blending result related have been applied to the target objects.
+ </description>
+ </signal>
<signal name="mixer_updated">
<description>
- Editor only. Notifies when the property have been updated to update dummy [AnimationPlayer] in animation player editor.
+ Notifies when the property related process have been updated.
</description>
</signal>
</signals>
diff --git a/doc/classes/AnimationNode.xml b/doc/classes/AnimationNode.xml
index d7fb735b4d..960bbe68ad 100644
--- a/doc/classes/AnimationNode.xml
+++ b/doc/classes/AnimationNode.xml
@@ -6,6 +6,13 @@
<description>
Base resource for [AnimationTree] nodes. In general, it's not used directly, but you can create custom ones with custom blending formulas.
Inherit this when creating animation nodes mainly for use in [AnimationNodeBlendTree], otherwise [AnimationRootNode] should be used instead.
+ You can access the time information as read-only parameter which is processed and stored in the previous frame for all nodes except [AnimationNodeOutput].
+ [b]Note:[/b] If more than two inputs exist in the [AnimationNode], which time information takes precedence depends on the type of [AnimationNode].
+ [codeblock]
+ var current_length = $AnimationTree[parameters/AnimationNodeName/current_length]
+ var current_position = $AnimationTree[parameters/AnimationNodeName/current_position]
+ var current_delta = $AnimationTree[parameters/AnimationNodeName/current_delta]
+ [/codeblock]
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
@@ -56,7 +63,7 @@
When inheriting from [AnimationRootNode], implement this virtual method to return whether the [param parameter] is read-only. Parameters are custom local memory used for your animation nodes, given a resource can be reused in multiple trees.
</description>
</method>
- <method name="_process" qualifiers="virtual const">
+ <method name="_process" qualifiers="virtual const" deprecated="Currently this is mostly useless as there is a lack of many APIs to extend AnimationNode by GDScript. It is planned that a more flexible API using structures will be provided in the future.">
<return type="float" />
<param index="0" name="time" type="float" />
<param index="1" name="seek" type="bool" />
@@ -65,7 +72,7 @@
<description>
When inheriting from [AnimationRootNode], implement this virtual method to run some code when this animation node is processed. The [param time] parameter is a relative delta, unless [param seek] is [code]true[/code], in which case it is absolute.
Here, call the [method blend_input], [method blend_node] or [method blend_animation] functions. You can also use [method get_parameter] and [method set_parameter] to modify local memory.
- This function should return the time left for the current animation to finish (if unsure, pass the value from the main blend being called).
+ This function should return the delta.
</description>
</method>
<method name="add_input">
diff --git a/doc/classes/AnimationNodeAdd3.xml b/doc/classes/AnimationNodeAdd3.xml
index 12f00849cc..edd733ad34 100644
--- a/doc/classes/AnimationNodeAdd3.xml
+++ b/doc/classes/AnimationNodeAdd3.xml
@@ -13,6 +13,6 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeAnimation.xml b/doc/classes/AnimationNodeAnimation.xml
index d965d31b03..0c85e8e670 100644
--- a/doc/classes/AnimationNodeAnimation.xml
+++ b/doc/classes/AnimationNodeAnimation.xml
@@ -8,16 +8,34 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="animation" type="StringName" setter="set_animation" getter="get_animation" default="&amp;&quot;&quot;">
Animation to use as an output. It is one of the animations provided by [member AnimationTree.anim_player].
</member>
+ <member name="loop_mode" type="int" setter="set_loop_mode" getter="get_loop_mode" enum="Animation.LoopMode">
+ If [member use_custom_timeline] is [code]true[/code], override the loop settings of the original [Animation] resource with the value.
+ </member>
<member name="play_mode" type="int" setter="set_play_mode" getter="get_play_mode" enum="AnimationNodeAnimation.PlayMode" default="0">
Determines the playback direction of the animation.
</member>
+ <member name="start_offset" type="float" setter="set_start_offset" getter="get_start_offset">
+ If [member use_custom_timeline] is [code]true[/code], offset the start position of the animation.
+ This is useful for adjusting which foot steps first in 3D walking animations.
+ </member>
+ <member name="stretch_time_scale" type="bool" setter="set_stretch_time_scale" getter="is_stretching_time_scale">
+ If [code]true[/code], scales the time so that the length specified in [member timeline_length] is one cycle.
+ This is useful for matching the periods of walking and running animations.
+ If [code]false[/code], the original animation length is respected. If you set the loop to [member loop_mode], the animation will loop in [member timeline_length].
+ </member>
+ <member name="timeline_length" type="float" setter="set_timeline_length" getter="get_timeline_length">
+ If [member use_custom_timeline] is [code]true[/code], offset the start position of the animation.
+ </member>
+ <member name="use_custom_timeline" type="bool" setter="set_use_custom_timeline" getter="is_using_custom_timeline" default="false">
+ If [code]true[/code], [AnimationNode] provides an animation based on the [Animation] resource with some parameters adjusted.
+ </member>
</members>
<constants>
<constant name="PLAY_MODE_FORWARD" value="0" enum="PlayMode">
diff --git a/doc/classes/AnimationNodeBlend2.xml b/doc/classes/AnimationNodeBlend2.xml
index 61df0b26b3..50d785fee7 100644
--- a/doc/classes/AnimationNodeBlend2.xml
+++ b/doc/classes/AnimationNodeBlend2.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeBlendSpace2D.xml b/doc/classes/AnimationNodeBlendSpace2D.xml
index 47933a1fd0..596767599c 100644
--- a/doc/classes/AnimationNodeBlendSpace2D.xml
+++ b/doc/classes/AnimationNodeBlendSpace2D.xml
@@ -10,7 +10,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="add_blend_point">
diff --git a/doc/classes/AnimationNodeOneShot.xml b/doc/classes/AnimationNodeOneShot.xml
index ac7cf70133..b2a8002d74 100644
--- a/doc/classes/AnimationNodeOneShot.xml
+++ b/doc/classes/AnimationNodeOneShot.xml
@@ -53,7 +53,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="autorestart" type="bool" setter="set_autorestart" getter="has_autorestart" default="false">
@@ -66,17 +66,22 @@
<member name="autorestart_random_delay" type="float" setter="set_autorestart_random_delay" getter="get_autorestart_random_delay" default="0.0">
If [member autorestart] is [code]true[/code], a random additional delay (in seconds) between 0 and this value will be added to [member autorestart_delay].
</member>
+ <member name="break_loop_at_end" type="bool" setter="set_break_loop_at_end" getter="is_loop_broken_at_end" default="false">
+ If [code]true[/code], breaks the loop at the end of the loop cycle for transition, even if the animation is looping.
+ </member>
<member name="fadein_curve" type="Curve" setter="set_fadein_curve" getter="get_fadein_curve">
Determines how cross-fading between animations is eased. If empty, the transition will be linear.
</member>
<member name="fadein_time" type="float" setter="set_fadein_time" getter="get_fadein_time" default="0.0">
The fade-in duration. For example, setting this to [code]1.0[/code] for a 5 second length animation will produce a cross-fade that starts at 0 second and ends at 1 second during the animation.
+ [b]Note:[/b] [AnimationNodeOneShot] transitions the current state after the end of the fading. When [AnimationNodeOutput] is considered as the most upstream, so the [member fadein_time] is scaled depending on the downstream delta. For example, if this value is set to [code]1.0[/code] and a [AnimationNodeTimeScale] with a value of [code]2.0[/code] is chained downstream, the actual processing time will be 0.5 second.
</member>
<member name="fadeout_curve" type="Curve" setter="set_fadeout_curve" getter="get_fadeout_curve">
Determines how cross-fading between animations is eased. If empty, the transition will be linear.
</member>
<member name="fadeout_time" type="float" setter="set_fadeout_time" getter="get_fadeout_time" default="0.0">
The fade-out duration. For example, setting this to [code]1.0[/code] for a 5 second length animation will produce a cross-fade that starts at 4 second and ends at 5 second during the animation.
+ [b]Note:[/b] [AnimationNodeOneShot] transitions the current state after the end of the fading. When [AnimationNodeOutput] is considered as the most upstream, so the [member fadeout_time] is scaled depending on the downstream delta. For example, if this value is set to [code]1.0[/code] and an [AnimationNodeTimeScale] with a value of [code]2.0[/code] is chained downstream, the actual processing time will be 0.5 second.
</member>
<member name="mix_mode" type="int" setter="set_mix_mode" getter="get_mix_mode" enum="AnimationNodeOneShot.MixMode" default="0">
The blend type.
diff --git a/doc/classes/AnimationNodeOutput.xml b/doc/classes/AnimationNodeOutput.xml
index f957650294..6186fdd8e1 100644
--- a/doc/classes/AnimationNodeOutput.xml
+++ b/doc/classes/AnimationNodeOutput.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeStateMachineTransition.xml b/doc/classes/AnimationNodeStateMachineTransition.xml
index 7b7797f594..7bd0bd7e7e 100644
--- a/doc/classes/AnimationNodeStateMachineTransition.xml
+++ b/doc/classes/AnimationNodeStateMachineTransition.xml
@@ -28,6 +28,9 @@
<member name="advance_mode" type="int" setter="set_advance_mode" getter="get_advance_mode" enum="AnimationNodeStateMachineTransition.AdvanceMode" default="1">
Determines whether the transition should disabled, enabled when using [method AnimationNodeStateMachinePlayback.travel], or traversed automatically if the [member advance_condition] and [member advance_expression] checks are true (if assigned).
</member>
+ <member name="break_loop_at_end" type="bool" setter="set_break_loop_at_end" getter="is_loop_broken_at_end" default="false">
+ If [code]true[/code], breaks the loop at the end of the loop cycle for transition, even if the animation is looping.
+ </member>
<member name="priority" type="int" setter="set_priority" getter="get_priority" default="1">
Lower priority transitions are preferred when travelling through the tree via [method AnimationNodeStateMachinePlayback.travel] or [member advance_mode] is set to [constant ADVANCE_MODE_AUTO].
</member>
@@ -42,6 +45,7 @@
</member>
<member name="xfade_time" type="float" setter="set_xfade_time" getter="get_xfade_time" default="0.0">
The time to cross-fade between this state and the next.
+ [b]Note:[/b] [AnimationNodeStateMachine] transitions the current state immediately after the start of the fading. The precise remaining time can only be inferred from the main animation. When [AnimationNodeOutput] is considered as the most upstream, so the [member xfade_time] is not scaled depending on the downstream delta. See also [member AnimationNodeOneShot.fadeout_time].
</member>
</members>
<signals>
diff --git a/doc/classes/AnimationNodeTimeScale.xml b/doc/classes/AnimationNodeTimeScale.xml
index 4cb8ccb962..9bf7529124 100644
--- a/doc/classes/AnimationNodeTimeScale.xml
+++ b/doc/classes/AnimationNodeTimeScale.xml
@@ -8,6 +8,6 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
</tutorials>
</class>
diff --git a/doc/classes/AnimationNodeTransition.xml b/doc/classes/AnimationNodeTransition.xml
index 3e1a0a28b5..382166d823 100644
--- a/doc/classes/AnimationNodeTransition.xml
+++ b/doc/classes/AnimationNodeTransition.xml
@@ -38,10 +38,17 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
+ <method name="is_input_loop_broken_at_end" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="input" type="int" />
+ <description>
+ Returns whether the animation breaks the loop at the end of the loop cycle for transition.
+ </description>
+ </method>
<method name="is_input_reset" qualifiers="const">
<return type="bool" />
<param index="0" name="input" type="int" />
@@ -64,6 +71,14 @@
Enables or disables auto-advance for the given [param input] index. If enabled, state changes to the next input after playing the animation once. If enabled for the last input state, it loops to the first.
</description>
</method>
+ <method name="set_input_break_loop_at_end">
+ <return type="void" />
+ <param index="0" name="input" type="int" />
+ <param index="1" name="enable" type="bool" />
+ <description>
+ If [code]true[/code], breaks the loop at the end of the loop cycle for transition, even if the animation is looping.
+ </description>
+ </method>
<method name="set_input_reset">
<return type="void" />
<param index="0" name="input" type="int" />
@@ -85,6 +100,7 @@
</member>
<member name="xfade_time" type="float" setter="set_xfade_time" getter="get_xfade_time" default="0.0">
Cross-fading time (in seconds) between each animation connected to the inputs.
+ [b]Note:[/b] [AnimationNodeTransition] transitions the current state immediately after the start of the fading. The precise remaining time can only be inferred from the main animation. When [AnimationNodeOutput] is considered as the most upstream, so the [member xfade_time] is not scaled depending on the downstream delta. See also [member AnimationNodeOneShot.fadeout_time].
</member>
</members>
</class>
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index 9d2d93b0f0..1b742bea28 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -12,7 +12,7 @@
<tutorials>
<link title="2D Sprite animation">$DOCS_URL/tutorials/2d/2d_sprite_animation.html</link>
<link title="Animation documentation index">$DOCS_URL/tutorials/animation/index.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="animation_get_next" qualifiers="const">
diff --git a/doc/classes/AnimationTree.xml b/doc/classes/AnimationTree.xml
index d240a4967e..4a63b35ba0 100644
--- a/doc/classes/AnimationTree.xml
+++ b/doc/classes/AnimationTree.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Using AnimationTree">$DOCS_URL/tutorials/animation/animation_tree.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="get_process_callback" qualifiers="const" deprecated="Use [member AnimationMixer.callback_mode_process] instead.">
diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml
index a52aa80606..4ad5db2b67 100644
--- a/doc/classes/Area2D.xml
+++ b/doc/classes/Area2D.xml
@@ -10,9 +10,9 @@
</description>
<tutorials>
<link title="Using Area2D">$DOCS_URL/tutorials/physics/using_area_2d.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/121</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/2728</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
</tutorials>
<methods>
<method name="get_overlapping_areas" qualifiers="const">
diff --git a/doc/classes/Area3D.xml b/doc/classes/Area3D.xml
index 671c824c30..8eedd3cdf2 100644
--- a/doc/classes/Area3D.xml
+++ b/doc/classes/Area3D.xml
@@ -11,8 +11,8 @@
</description>
<tutorials>
<link title="Using Area2D">$DOCS_URL/tutorials/physics/using_area_2d.html</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
</tutorials>
<methods>
<method name="get_overlapping_areas" qualifiers="const">
@@ -124,12 +124,15 @@
</member>
<member name="wind_attenuation_factor" type="float" setter="set_wind_attenuation_factor" getter="get_wind_attenuation_factor" default="0.0">
The exponential rate at which wind force decreases with distance from its origin.
+ [b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</member>
<member name="wind_force_magnitude" type="float" setter="set_wind_force_magnitude" getter="get_wind_force_magnitude" default="0.0">
The magnitude of area-specific wind force.
+ [b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</member>
<member name="wind_source_path" type="NodePath" setter="set_wind_source_path" getter="get_wind_source_path" default="NodePath(&quot;&quot;)">
The [Node3D] which is used to specify the direction and origin of an area-specific wind force. The direction is opposite to the z-axis of the [Node3D]'s local transform, and its origin is the origin of the [Node3D]'s local transform.
+ [b]Note:[/b] This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</member>
</members>
<signals>
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index fd5ba57615..a72ac60536 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -40,6 +40,7 @@
[/codeblocks]
[b]Note:[/b] Arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate].
[b]Note:[/b] Erasing elements while iterating over arrays is [b]not[/b] supported and will result in unpredictable behavior.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedInt64Array] versus [code]Array[int][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
</description>
<tutorials>
</tutorials>
@@ -57,7 +58,30 @@
<param index="2" name="class_name" type="StringName" />
<param index="3" name="script" type="Variant" />
<description>
- Creates a typed array from the [param base] array.
+ Creates a typed array from the [param base] array. All arguments are required.
+ - [param type] is the built-in type as a [enum Variant.Type] constant, for example [constant TYPE_INT].
+ - [param class_name] is the [b]native[/b] class name, for example [Node]. If [param type] is not [constant TYPE_OBJECT], must be an empty string.
+ - [param script] is the associated script. Must be a [Script] instance or [code]null[/code].
+ Examples:
+ [codeblock]
+ class_name MyNode
+ extends Node
+
+ class MyClass:
+ pass
+
+ func _ready():
+ var a = Array([], TYPE_INT, &amp;"", null) # Array[int]
+ var b = Array([], TYPE_OBJECT, &amp;"Node", null) # Array[Node]
+ var c = Array([], TYPE_OBJECT, &amp;"Node", MyNode) # Array[MyNode]
+ var d = Array([], TYPE_OBJECT, &amp;"RefCounted", MyClass) # Array[MyClass]
+ [/codeblock]
+ [b]Note:[/b] This constructor can be useful if you want to create a typed array on the fly, but you are not required to use it. In GDScript you can use a temporary variable with the static type you need and then pass it:
+ [codeblock]
+ func _ready():
+ var a: Array[int] = []
+ some_func(a)
+ [/codeblock]
</description>
</constructor>
<constructor name="Array">
@@ -323,19 +347,19 @@
<method name="get_typed_builtin" qualifiers="const">
<return type="int" />
<description>
- Returns the [enum Variant.Type] constant for a typed array. If the [Array] is not typed, returns [constant TYPE_NIL].
+ Returns the built-in type of the typed array as a [enum Variant.Type] constant. If the array is not typed, returns [constant TYPE_NIL].
</description>
</method>
<method name="get_typed_class_name" qualifiers="const">
<return type="StringName" />
<description>
- Returns a class name of a typed [Array] of type [constant TYPE_OBJECT].
+ Returns the [b]native[/b] class name of the typed array if the built-in type is [constant TYPE_OBJECT]. Otherwise, this method returns an empty string.
</description>
</method>
<method name="get_typed_script" qualifiers="const">
<return type="Variant" />
<description>
- Returns the script associated with a typed array tied to a class name.
+ Returns the script associated with the typed array. This method returns a [Script] instance or [code]null[/code].
</description>
</method>
<method name="has" qualifiers="const" keywords="includes, contains">
diff --git a/doc/classes/AudioEffect.xml b/doc/classes/AudioEffect.xml
index 4fe47ac011..bd31603517 100644
--- a/doc/classes/AudioEffect.xml
+++ b/doc/classes/AudioEffect.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
</tutorials>
<methods>
<method name="_instantiate" qualifiers="virtual">
diff --git a/doc/classes/AudioEffectHardLimiter.xml b/doc/classes/AudioEffectHardLimiter.xml
new file mode 100644
index 0000000000..7616b91f97
--- /dev/null
+++ b/doc/classes/AudioEffectHardLimiter.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="AudioEffectHardLimiter" inherits="AudioEffect" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Adds a hard limiter audio effect to an Audio bus.
+ </brief_description>
+ <description>
+ A limiter is an effect designed to disallow sound from going over a given dB threshold. Hard limiters predict volume peaks, and will smoothly apply gain reduction when a peak crosses the ceiling threshold to prevent clipping and distortion. It preserves the waveform and prevents it from crossing the ceiling threshold. Adding one in the Master bus is recommended as a safety measure to prevent sudden volume peaks from occurring, and to prevent distortion caused by clipping.
+ </description>
+ <tutorials>
+ <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
+ </tutorials>
+ <members>
+ <member name="ceiling_db" type="float" setter="set_ceiling_db" getter="get_ceiling_db" default="-0.3">
+ The waveform's maximum allowed value, in decibels. This value can range from [code]-24.0[/code] to [code]0.0[/code].
+ The default value of [code]-0.3[/code] prevents potential inter-sample peaks (ISP) from crossing over 0 dB, which can cause slight distortion on some older hardware.
+ </member>
+ <member name="pre_gain_db" type="float" setter="set_pre_gain_db" getter="get_pre_gain_db" default="0.0">
+ Gain to apply before limiting, in decibels.
+ </member>
+ <member name="release" type="float" setter="set_release" getter="get_release" default="0.1">
+ Time it takes in seconds for the gain reduction to fully release.
+ </member>
+ </members>
+</class>
diff --git a/doc/classes/AudioEffectLimiter.xml b/doc/classes/AudioEffectLimiter.xml
index 57861d0485..b1a80cd9ef 100644
--- a/doc/classes/AudioEffectLimiter.xml
+++ b/doc/classes/AudioEffectLimiter.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="AudioEffectLimiter" inherits="AudioEffect" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="AudioEffectLimiter" inherits="AudioEffect" deprecated="Use [AudioEffectHardLimiter] instead." xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Adds a soft-clip limiter audio effect to an Audio bus.
</brief_description>
diff --git a/doc/classes/AudioEffectRecord.xml b/doc/classes/AudioEffectRecord.xml
index 5b43c5ebaa..ed0a0c5b08 100644
--- a/doc/classes/AudioEffectRecord.xml
+++ b/doc/classes/AudioEffectRecord.xml
@@ -11,7 +11,7 @@
</description>
<tutorials>
<link title="Recording with microphone">$DOCS_URL/tutorials/audio/recording_with_microphone.html</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
</tutorials>
<methods>
<method name="get_recording" qualifiers="const">
diff --git a/doc/classes/AudioEffectReverb.xml b/doc/classes/AudioEffectReverb.xml
index 2c055f3825..4ac9672a8f 100644
--- a/doc/classes/AudioEffectReverb.xml
+++ b/doc/classes/AudioEffectReverb.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="damping" type="float" setter="set_damping" getter="get_damping" default="0.5">
diff --git a/doc/classes/AudioEffectSpectrumAnalyzer.xml b/doc/classes/AudioEffectSpectrumAnalyzer.xml
index eb70396433..d9312cc87d 100644
--- a/doc/classes/AudioEffectSpectrumAnalyzer.xml
+++ b/doc/classes/AudioEffectSpectrumAnalyzer.xml
@@ -8,7 +8,7 @@
See also [AudioStreamGenerator] for procedurally generating sounds.
</description>
<tutorials>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
<link title="Godot 3.2 will get new audio features">https://godotengine.org/article/godot-32-will-get-new-audio-features</link>
</tutorials>
<members>
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml
index 993aa581dc..b3cf53367d 100644
--- a/doc/classes/AudioServer.xml
+++ b/doc/classes/AudioServer.xml
@@ -8,9 +8,9 @@
</description>
<tutorials>
<link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link>
- <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/525</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/2758</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="add_bus">
diff --git a/doc/classes/AudioStream.xml b/doc/classes/AudioStream.xml
index 9813c2f251..4abce3f1da 100644
--- a/doc/classes/AudioStream.xml
+++ b/doc/classes/AudioStream.xml
@@ -8,9 +8,9 @@
</description>
<tutorials>
<link title="Audio streams">$DOCS_URL/tutorials/audio/audio_streams.html</link>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="_get_beat_count" qualifiers="virtual const">
diff --git a/doc/classes/AudioStreamGenerator.xml b/doc/classes/AudioStreamGenerator.xml
index 9e91d5c450..f618e69631 100644
--- a/doc/classes/AudioStreamGenerator.xml
+++ b/doc/classes/AudioStreamGenerator.xml
@@ -63,7 +63,7 @@
[b]Note:[/b] Due to performance constraints, this class is best used from C# or from a compiled language via GDExtension. If you still want to use this class from GDScript, consider using a lower [member mix_rate] such as 11,025 Hz or 22,050 Hz.
</description>
<tutorials>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
</tutorials>
<members>
<member name="buffer_length" type="float" setter="set_buffer_length" getter="get_buffer_length" default="0.5">
diff --git a/doc/classes/AudioStreamGeneratorPlayback.xml b/doc/classes/AudioStreamGeneratorPlayback.xml
index 88c5cf6dbe..2f86eaf9e9 100644
--- a/doc/classes/AudioStreamGeneratorPlayback.xml
+++ b/doc/classes/AudioStreamGeneratorPlayback.xml
@@ -7,7 +7,7 @@
This class is meant to be used with [AudioStreamGenerator] to play back the generated audio in real-time.
</description>
<tutorials>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
<link title="Godot 3.2 will get new audio features">https://godotengine.org/article/godot-32-will-get-new-audio-features</link>
</tutorials>
<methods>
diff --git a/doc/classes/AudioStreamPlayback.xml b/doc/classes/AudioStreamPlayback.xml
index 460a7050c8..9f87b76a2b 100644
--- a/doc/classes/AudioStreamPlayback.xml
+++ b/doc/classes/AudioStreamPlayback.xml
@@ -7,7 +7,7 @@
Can play, loop, pause a scroll through audio. See [AudioStream] and [AudioStreamOggVorbis] for usage.
</description>
<tutorials>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
</tutorials>
<methods>
<method name="_get_loop_count" qualifiers="virtual const">
diff --git a/doc/classes/AudioStreamPlayer.xml b/doc/classes/AudioStreamPlayer.xml
index fbe2508da3..a7d0a10073 100644
--- a/doc/classes/AudioStreamPlayer.xml
+++ b/doc/classes/AudioStreamPlayer.xml
@@ -1,100 +1,104 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioStreamPlayer" inherits="Node" keywords="sound, music, song" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
- Plays back audio non-positionally.
+ A node for audio playback.
</brief_description>
<description>
- Plays an audio stream non-positionally.
- To play audio positionally, use [AudioStreamPlayer2D] or [AudioStreamPlayer3D] instead of [AudioStreamPlayer].
+ The [AudioStreamPlayer] node plays an audio stream non-positionally. It is ideal for user interfaces, menus, or background music.
+ To use this node, [member stream] needs to be set to a valid [AudioStream] resource. Playing more than one sound at the time is also supported, see [member max_polyphony].
+ If you need to play audio at a specific position, use [AudioStreamPlayer2D] or [AudioStreamPlayer3D] instead.
</description>
<tutorials>
<link title="Audio streams">$DOCS_URL/tutorials/audio/audio_streams.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/525</link>
- <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/526</link>
- <link title="Audio Mic Record Demo">https://godotengine.org/asset-library/asset/527</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="Audio Device Changer Demo">https://godotengine.org/asset-library/asset/2758</link>
+ <link title="Audio Generator Demo">https://godotengine.org/asset-library/asset/2759</link>
+ <link title="Audio Microphone Record Demo">https://godotengine.org/asset-library/asset/2760</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="get_playback_position">
<return type="float" />
<description>
- Returns the position in the [AudioStream] in seconds.
+ Returns the position in the [AudioStream] of the latest sound, in seconds. Returns [code]0.0[/code] if no sounds are playing.
+ [b]Note:[/b] The position is not always accurate, as the [AudioServer] does not mix audio every processed frame. To get more accurate results, add [method AudioServer.get_time_since_last_mix] to the returned position.
</description>
</method>
<method name="get_stream_playback">
<return type="AudioStreamPlayback" />
<description>
- Returns the [AudioStreamPlayback] object associated with this [AudioStreamPlayer].
+ Returns the latest [AudioStreamPlayback] of this node, usually the most recently created by [method play]. If no sounds are playing, this method fails and returns an empty playback.
</description>
</method>
<method name="has_stream_playback">
<return type="bool" />
<description>
- Returns whether the [AudioStreamPlayer] can return the [AudioStreamPlayback] object or not.
+ Returns [code]true[/code] if any sound is active, even if [member stream_paused] is set to [code]true[/code]. See also [member playing] and [method get_stream_playback].
</description>
</method>
<method name="play">
<return type="void" />
<param index="0" name="from_position" type="float" default="0.0" />
<description>
- Plays the audio from the given [param from_position], in seconds.
+ Plays a sound from the beginning, or the given [param from_position] in seconds.
</description>
</method>
<method name="seek">
<return type="void" />
<param index="0" name="to_position" type="float" />
<description>
- Sets the position from which audio will be played, in seconds.
+ Restarts all sounds to be played from the given [param to_position], in seconds. Does nothing if no sounds are playing.
</description>
</method>
<method name="stop">
<return type="void" />
<description>
- Stops the audio.
+ Stops all sounds from this node.
</description>
</method>
</methods>
<members>
<member name="autoplay" type="bool" setter="set_autoplay" getter="is_autoplay_enabled" default="false">
- If [code]true[/code], audio plays when added to scene tree.
+ If [code]true[/code], this node calls [method play] when entering the tree.
</member>
<member name="bus" type="StringName" setter="set_bus" getter="get_bus" default="&amp;&quot;Master&quot;">
- Bus on which this audio is playing.
- [b]Note:[/b] When setting this property, keep in mind that no validation is performed to see if the given name matches an existing bus. This is because audio bus layouts might be loaded after this property is set. If this given name can't be resolved at runtime, it will fall back to [code]"Master"[/code].
+ The target bus name. All sounds from this node will be playing on this bus.
+ [b]Note:[/b] At runtime, if no bus with the given name exists, all sounds will fall back on [code]"Master"[/code]. See also [method AudioServer.get_bus_name].
</member>
<member name="max_polyphony" type="int" setter="set_max_polyphony" getter="get_max_polyphony" default="1">
- The maximum number of sounds this node can play at the same time. Playing additional sounds after this value is reached will cut off the oldest sounds.
+ The maximum number of sounds this node can play at the same time. Calling [method play] after this value is reached will cut off the oldest sounds.
</member>
<member name="mix_target" type="int" setter="set_mix_target" getter="get_mix_target" enum="AudioStreamPlayer.MixTarget" default="0">
- If the audio configuration has more than two speakers, this sets the target channels. See [enum MixTarget] constants.
+ The mix target channels, as one of the [enum MixTarget] constants. Has no effect when two speakers or less are detected (see [enum AudioServer.SpeakerMode]).
</member>
<member name="pitch_scale" type="float" setter="set_pitch_scale" getter="get_pitch_scale" default="1.0">
- The pitch and the tempo of the audio, as a multiplier of the audio sample's sample rate.
+ The audio's pitch and tempo, as a multiplier of the [member stream]'s sample rate. A value of [code]2.0[/code] doubles the audio's pitch, while a value of [code]0.5[/code] halves the pitch.
</member>
<member name="playing" type="bool" setter="_set_playing" getter="is_playing" default="false">
- If [code]true[/code], audio is playing.
+ If [code]true[/code], this node is playing sounds. Setting this property has the same effect as [method play] and [method stop].
</member>
<member name="stream" type="AudioStream" setter="set_stream" getter="get_stream">
- The [AudioStream] object to be played.
+ The [AudioStream] resource to be played. Setting this property stops all currently playing sounds. If left empty, the [AudioStreamPlayer] does not work.
</member>
<member name="stream_paused" type="bool" setter="set_stream_paused" getter="get_stream_paused" default="false">
- If [code]true[/code], the playback is paused. You can resume it by setting [member stream_paused] to [code]false[/code].
+ If [code]true[/code], the sounds are paused. Setting [member stream_paused] to [code]false[/code] resumes all sounds.
+ [b]Note:[/b] This property is automatically changed when exiting or entering the tree, or this node is paused (see [member Node.process_mode]).
</member>
<member name="volume_db" type="float" setter="set_volume_db" getter="get_volume_db" default="0.0">
- Volume of sound, in dB.
+ Volume of sound, in decibel. This is an offset of the [member stream]'s volume.
+ [b]Note:[/b] To convert between decibel and linear energy (like most volume sliders do), use [method @GlobalScope.db_to_linear] and [method @GlobalScope.linear_to_db].
</member>
</members>
<signals>
<signal name="finished">
<description>
- Emitted when the audio stops playing.
+ Emitted when a sound finishes playing without interruptions. This signal is [i]not[/i] emitted when calling [method stop], or when exiting the tree while sounds are playing.
</description>
</signal>
</signals>
<constants>
<constant name="MIX_TARGET_STEREO" value="0" enum="MixTarget">
- The audio will be played only on the first channel.
+ The audio will be played only on the first channel. This is the default.
</constant>
<constant name="MIX_TARGET_SURROUND" value="1" enum="MixTarget">
The audio will be played on all surround channels.
diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml
index 32077c0b89..338d9523fa 100644
--- a/doc/classes/Basis.xml
+++ b/doc/classes/Basis.xml
@@ -15,10 +15,10 @@
<link title="Math documentation index">$DOCS_URL/tutorials/math/index.html</link>
<link title="Matrices and transforms">$DOCS_URL/tutorials/math/matrices_and_transforms.html</link>
<link title="Using 3D transforms">$DOCS_URL/tutorials/3d/using_transforms.html</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<constructors>
<constructor name="Basis">
diff --git a/doc/classes/BoneAttachment3D.xml b/doc/classes/BoneAttachment3D.xml
index 227f6817cc..bafa463f82 100644
--- a/doc/classes/BoneAttachment3D.xml
+++ b/doc/classes/BoneAttachment3D.xml
@@ -52,6 +52,7 @@
</member>
<member name="override_pose" type="bool" setter="set_override_pose" getter="get_override_pose" default="false">
Whether the BoneAttachment3D node will override the bone pose of the bone it is attached to. When set to [code]true[/code], the BoneAttachment3D node can change the pose of the bone. When set to [code]false[/code], the BoneAttachment3D will always be set to the bone's transform.
+ [b]Note:[/b] This override performs interruptively in the skeleton update process using signals due to the old design. It may cause unintended behavior when used at the same time with [SkeletonModifier3D].
</member>
</members>
</class>
diff --git a/doc/classes/BoxShape3D.xml b/doc/classes/BoxShape3D.xml
index 5190e6e759..ead5afd89c 100644
--- a/doc/classes/BoxShape3D.xml
+++ b/doc/classes/BoxShape3D.xml
@@ -8,9 +8,9 @@
[b]Performance:[/b] [BoxShape3D] is fast to check collisions against. It is faster than [CapsuleShape3D] and [CylinderShape3D], but slower than [SphereShape3D].
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
</tutorials>
<members>
<member name="size" type="Vector3" setter="set_size" getter="get_size" default="Vector3(1, 1, 1)">
diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml
index e5b47ffb89..30df4fd10d 100644
--- a/doc/classes/Button.xml
+++ b/doc/classes/Button.xml
@@ -36,8 +36,8 @@
[b]Note:[/b] Buttons do not interpret touch input and therefore don't support multitouch, since mouse emulation can only press one button at a given time. Use [TouchScreenButton] for buttons that trigger gameplay movement or actions.
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<members>
<member name="alignment" type="int" setter="set_text_alignment" getter="get_text_alignment" enum="HorizontalAlignment" default="1">
diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml
index 6319bfb3d1..da98e6c26a 100644
--- a/doc/classes/Camera2D.xml
+++ b/doc/classes/Camera2D.xml
@@ -10,9 +10,8 @@
Note that the [Camera2D] node's [code]position[/code] doesn't represent the actual position of the screen, which may differ due to applied smoothing or limits. You can use [method get_screen_center_position] to get the real position.
</description>
<tutorials>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
- <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/112</link>
- <link title="2D HDR Demo">https://godotengine.org/asset-library/asset/110</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
+ <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/2718</link>
</tutorials>
<methods>
<method name="align">
diff --git a/doc/classes/Camera3D.xml b/doc/classes/Camera3D.xml
index 01890b471c..27194122d5 100644
--- a/doc/classes/Camera3D.xml
+++ b/doc/classes/Camera3D.xml
@@ -7,7 +7,7 @@
[Camera3D] is a special node that displays what is visible from its current location. Cameras register themselves in the nearest [Viewport] node (when ascending the tree). Only one camera can be active per viewport. If no viewport is available ascending the tree, the camera will register in the global viewport. In other words, a camera just provides 3D display capabilities to a [Viewport], and, without one, a scene registered in that [Viewport] (or higher viewports) can't be displayed.
</description>
<tutorials>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="clear_current">
diff --git a/doc/classes/CameraServer.xml b/doc/classes/CameraServer.xml
index 983bd6cd91..020b5d887b 100644
--- a/doc/classes/CameraServer.xml
+++ b/doc/classes/CameraServer.xml
@@ -6,7 +6,7 @@
<description>
The [CameraServer] keeps track of different cameras accessible in Godot. These are external cameras such as webcams or the cameras on your phone.
It is notably used to provide AR modules with a video feed from the camera.
- [b]Note:[/b] This class is currently only implemented on macOS and iOS. On other platforms, no [CameraFeed]s will be available.
+ [b]Note:[/b] This class is currently only implemented on macOS and iOS. To get a [CameraFeed] on iOS, the camera plugin from [url=https://github.com/godotengine/godot-ios-plugins]godot-ios-plugins[/url] is required. On other platforms, no [CameraFeed]s will be available.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index 72783bc5d6..1cfd44467f 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -12,7 +12,7 @@
<tutorials>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
<link title="Custom drawing in 2D">$DOCS_URL/tutorials/2d/custom_drawing_in_2d.html</link>
- <link title="Audio Spectrum Demo">https://godotengine.org/asset-library/asset/528</link>
+ <link title="Audio Spectrum Visualizer Demo">https://godotengine.org/asset-library/asset/2762</link>
</tutorials>
<methods>
<method name="_draw" qualifiers="virtual">
@@ -606,14 +606,15 @@
[b]Note:[/b] For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead.
</member>
<member name="y_sort_enabled" type="bool" setter="set_y_sort_enabled" getter="is_y_sort_enabled" default="false">
- If [code]true[/code], this [CanvasItem] and its [CanvasItem] child nodes are sorted according to the Y position. Nodes with a lower Y position are drawn before those with a higher Y position. If [code]false[/code], Y-sorting is disabled.
- You can nest nodes with Y-sorting. Child Y-sorted nodes are sorted in the same space as the parent Y-sort. This feature allows you to organize a scene better or divide it into multiple ones without changing your scene tree.
+ If [code]true[/code], this and child [CanvasItem] nodes with a lower Y position are rendered in front of nodes with a higher Y position. If [code]false[/code], this and child [CanvasItem] nodes are rendered normally in scene tree order.
+ With Y-sorting enabled on a parent node ('A') but disabled on a child node ('B'), the child node ('B') is sorted but its children ('C1', 'C2', etc) render together on the same Y position as the child node 'B'. This allows you to organize the render order of a scene without changing the scene tree.
+ Nodes sort relative to each other only if they are on the same [member z_index].
</member>
<member name="z_as_relative" type="bool" setter="set_z_as_relative" getter="is_z_relative" default="true">
If [code]true[/code], the node's Z index is relative to its parent's Z index. If this node's Z index is 2 and its parent's effective Z index is 3, then this node's effective Z index will be 2 + 3 = 5.
</member>
<member name="z_index" type="int" setter="set_z_index" getter="get_z_index" default="0">
- Z index. Controls the order in which the nodes render. A node with a higher Z index will display in front of others. Must be between [constant RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer.CANVAS_ITEM_Z_MAX] (inclusive).
+ Controls the order in which the nodes render. A node with a higher Z index will display in front of others. Must be between [constant RenderingServer.CANVAS_ITEM_Z_MIN] and [constant RenderingServer.CANVAS_ITEM_Z_MAX] (inclusive).
[b]Note:[/b] Changing the Z index of a [Control] only affects the drawing order, not the order in which input events are handled. This can be useful to implement certain UI animations, e.g. a menu where hovered items are scaled and should overlap others.
</member>
</members>
diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml
index a91b003d79..597ec78089 100644
--- a/doc/classes/CanvasLayer.xml
+++ b/doc/classes/CanvasLayer.xml
@@ -12,7 +12,7 @@
<tutorials>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
<link title="Canvas layers">$DOCS_URL/tutorials/2d/canvas_layers.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="get_canvas" qualifiers="const">
diff --git a/doc/classes/CapsuleShape3D.xml b/doc/classes/CapsuleShape3D.xml
index 2c8c2cef9e..4c6b3a870f 100644
--- a/doc/classes/CapsuleShape3D.xml
+++ b/doc/classes/CapsuleShape3D.xml
@@ -8,7 +8,7 @@
[b]Performance:[/b] [CapsuleShape3D] is fast to check collisions against. It is faster than [CylinderShape3D], but slower than [SphereShape3D] and [BoxShape3D].
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<members>
<member name="height" type="float" setter="set_height" getter="get_height" default="2.0">
diff --git a/doc/classes/CharacterBody2D.xml b/doc/classes/CharacterBody2D.xml
index b66a01a282..ede4d63cfc 100644
--- a/doc/classes/CharacterBody2D.xml
+++ b/doc/classes/CharacterBody2D.xml
@@ -10,8 +10,8 @@
<tutorials>
<link title="Kinematic character (2D)">$DOCS_URL/tutorials/physics/kinematic_character_2d.html</link>
<link title="Using CharacterBody2D">$DOCS_URL/tutorials/physics/using_character_body_2d.html</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
</tutorials>
<methods>
<method name="apply_floor_snap">
@@ -30,7 +30,8 @@
<method name="get_floor_normal" qualifiers="const">
<return type="Vector2" />
<description>
- Returns the surface normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ Returns the collision normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="get_last_motion" qualifiers="const">
@@ -94,7 +95,8 @@
<method name="get_wall_normal" qualifiers="const">
<return type="Vector2" />
<description>
- Returns the surface normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ Returns the collision normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="is_on_ceiling" qualifiers="const">
diff --git a/doc/classes/CharacterBody3D.xml b/doc/classes/CharacterBody3D.xml
index 2382c77a12..474adfc6ff 100644
--- a/doc/classes/CharacterBody3D.xml
+++ b/doc/classes/CharacterBody3D.xml
@@ -9,10 +9,10 @@
</description>
<tutorials>
<link title="Kinematic character (2D)">$DOCS_URL/tutorials/physics/kinematic_character_2d.html</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="apply_floor_snap">
@@ -31,7 +31,8 @@
<method name="get_floor_normal" qualifiers="const">
<return type="Vector3" />
<description>
- Returns the surface normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ Returns the collision normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="get_last_motion" qualifiers="const">
@@ -86,7 +87,8 @@
<method name="get_wall_normal" qualifiers="const">
<return type="Vector3" />
<description>
- Returns the surface normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ Returns the collision normal of the wall at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_wall] returns [code]true[/code].
+ [b]Warning:[/b] The collision normal is not always the same as the surface normal.
</description>
</method>
<method name="is_on_ceiling" qualifiers="const">
diff --git a/doc/classes/CollisionObject3D.xml b/doc/classes/CollisionObject3D.xml
index b45a5d8c56..063c27c76a 100644
--- a/doc/classes/CollisionObject3D.xml
+++ b/doc/classes/CollisionObject3D.xml
@@ -14,11 +14,11 @@
<return type="void" />
<param index="0" name="camera" type="Camera3D" />
<param index="1" name="event" type="InputEvent" />
- <param index="2" name="position" type="Vector3" />
+ <param index="2" name="event_position" type="Vector3" />
<param index="3" name="normal" type="Vector3" />
<param index="4" name="shape_idx" type="int" />
<description>
- Receives unhandled [InputEvent]s. [param position] is the location in world space of the mouse pointer on the surface of the shape with index [param shape_idx] and [param normal] is the normal vector of the surface at that point. Connect to the [signal input_event] signal to easily pick up these events.
+ Receives unhandled [InputEvent]s. [param event_position] is the location in world space of the mouse pointer on the surface of the shape with index [param shape_idx] and [param normal] is the normal vector of the surface at that point. Connect to the [signal input_event] signal to easily pick up these events.
[b]Note:[/b] [method _input_event] requires [member input_ray_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set.
</description>
</method>
@@ -207,11 +207,11 @@
<signal name="input_event">
<param index="0" name="camera" type="Node" />
<param index="1" name="event" type="InputEvent" />
- <param index="2" name="position" type="Vector3" />
+ <param index="2" name="event_position" type="Vector3" />
<param index="3" name="normal" type="Vector3" />
<param index="4" name="shape_idx" type="int" />
<description>
- Emitted when the object receives an unhandled [InputEvent]. [param position] is the location in world space of the mouse pointer on the surface of the shape with index [param shape_idx] and [param normal] is the normal vector of the surface at that point.
+ Emitted when the object receives an unhandled [InputEvent]. [param event_position] is the location in world space of the mouse pointer on the surface of the shape with index [param shape_idx] and [param normal] is the normal vector of the surface at that point.
</description>
</signal>
<signal name="mouse_entered">
diff --git a/doc/classes/CollisionPolygon2D.xml b/doc/classes/CollisionPolygon2D.xml
index 12f7024518..1805683de5 100644
--- a/doc/classes/CollisionPolygon2D.xml
+++ b/doc/classes/CollisionPolygon2D.xml
@@ -4,7 +4,7 @@
A node that provides a polygon shape to a [CollisionObject2D] parent.
</brief_description>
<description>
- A node that provides a thickened polygon shape (a prism) to a [CollisionObject2D] parent and allows to edit it. The polygon can be concave or convex. This can give a detection shape to an [Area2D] or turn [PhysicsBody2D] into a solid object.
+ A node that provides a polygon shape to a [CollisionObject2D] parent and allows to edit it. The polygon can be concave or convex. This can give a detection shape to an [Area2D], turn [PhysicsBody2D] into a solid object, or give a hollow shape to a [StaticBody2D].
[b]Warning:[/b] A non-uniformly scaled [CollisionShape2D] will likely not behave as expected. Make sure to keep its scale the same on all axes and adjust its shape resource instead.
</description>
<tutorials>
@@ -26,7 +26,6 @@
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
The polygon's list of vertices. Each point will be connected to the next, and the final point will be connected to the first.
[b]Note:[/b] The returned vertices are in the local coordinate space of the given [CollisionPolygon2D].
- [b]Warning:[/b] The returned value is a clone of the [PackedVector2Array], not a reference.
</member>
</members>
<constants>
diff --git a/doc/classes/CollisionPolygon3D.xml b/doc/classes/CollisionPolygon3D.xml
index 16090c203e..4f5866c348 100644
--- a/doc/classes/CollisionPolygon3D.xml
+++ b/doc/classes/CollisionPolygon3D.xml
@@ -21,7 +21,6 @@
</member>
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
Array of vertices which define the 2D polygon in the local XY plane.
- [b]Note:[/b] The returned value is a copy of the original. Methods which mutate the size or properties of the return value will not impact the original polygon. To change properties of the polygon, assign it to a temporary variable and make changes before reassigning the class property.
</member>
</members>
</class>
diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml
index 1320982376..dd04bf7b82 100644
--- a/doc/classes/CollisionShape2D.xml
+++ b/doc/classes/CollisionShape2D.xml
@@ -8,9 +8,9 @@
</description>
<tutorials>
<link title="Physics introduction">$DOCS_URL/tutorials/physics/physics_introduction.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/121</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/2728</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<members>
<member name="debug_color" type="Color" setter="set_debug_color" getter="get_debug_color" default="Color(0, 0, 0, 1)">
diff --git a/doc/classes/CollisionShape3D.xml b/doc/classes/CollisionShape3D.xml
index f6c0c323f4..a4e0ed0b28 100644
--- a/doc/classes/CollisionShape3D.xml
+++ b/doc/classes/CollisionShape3D.xml
@@ -9,9 +9,9 @@
</description>
<tutorials>
<link title="Physics introduction">$DOCS_URL/tutorials/physics/physics_introduction.html</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="make_convex_from_siblings">
diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml
index 942d3bc80d..37beca5f81 100644
--- a/doc/classes/Color.xml
+++ b/doc/classes/Color.xml
@@ -10,9 +10,9 @@
[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/color_constants.png]Color constants cheatsheet[/url]
</description>
<tutorials>
- <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/517</link>
- <link title="Tween Demo">https://godotengine.org/asset-library/asset/146</link>
- <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/133</link>
+ <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/2768</link>
+ <link title="Tween Interpolation Demo">https://godotengine.org/asset-library/asset/2733</link>
+ <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/2767</link>
</tutorials>
<constructors>
<constructor name="Color">
diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml
index 9aa0122ed2..cf26f917e1 100644
--- a/doc/classes/ColorPicker.xml
+++ b/doc/classes/ColorPicker.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] This control is the color picker widget itself. You can use a [ColorPickerButton] instead if you need a button that brings up a [ColorPicker] in a popup.
</description>
<tutorials>
- <link title="Tween Demo">https://godotengine.org/asset-library/asset/146</link>
+ <link title="Tween Interpolation Demo">https://godotengine.org/asset-library/asset/2733</link>
</tutorials>
<methods>
<method name="add_preset">
diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml
index c53d61f036..bec2520397 100644
--- a/doc/classes/ColorPickerButton.xml
+++ b/doc/classes/ColorPickerButton.xml
@@ -9,8 +9,8 @@
[b]Note:[/b] By default, the button may not be wide enough for the color preview swatch to be visible. Make sure to set [member Control.custom_minimum_size] to a big enough value to give the button enough space.
</description>
<tutorials>
- <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/133</link>
- <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/517</link>
+ <link title="2D GD Paint Demo">https://godotengine.org/asset-library/asset/2768</link>
+ <link title="GUI Drag And Drop Demo">https://godotengine.org/asset-library/asset/2767</link>
</tutorials>
<methods>
<method name="get_picker">
diff --git a/doc/classes/ColorRect.xml b/doc/classes/ColorRect.xml
index 413d51db72..6b2ddd748e 100644
--- a/doc/classes/ColorRect.xml
+++ b/doc/classes/ColorRect.xml
@@ -7,7 +7,7 @@
Displays a rectangle filled with a solid [member color]. If you need to display the border alone, consider using a [Panel] instead.
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<members>
<member name="color" type="Color" setter="set_color" getter="get_color" default="Color(1, 1, 1, 1)" keywords="colour">
diff --git a/doc/classes/ConcavePolygonShape3D.xml b/doc/classes/ConcavePolygonShape3D.xml
index 7e4df2073f..5c93325b63 100644
--- a/doc/classes/ConcavePolygonShape3D.xml
+++ b/doc/classes/ConcavePolygonShape3D.xml
@@ -11,7 +11,7 @@
[b]Performance:[/b] Due to its complexity, [ConcavePolygonShape3D] is the slowest 3D collision shape to check collisions against. Its use should generally be limited to level geometry. For convex geometry, [ConvexPolygonShape3D] should be used. For dynamic physics bodies that need concave collision, several [ConvexPolygonShape3D]s can be used to represent its collision by using convex decomposition; see [ConvexPolygonShape3D]'s documentation for instructions.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<methods>
<method name="get_faces" qualifiers="const">
diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml
index e6b28ae98e..feeea339fe 100644
--- a/doc/classes/ConfigFile.xml
+++ b/doc/classes/ConfigFile.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
This helper class can be used to store [Variant] values on the filesystem using INI-style formatting. The stored values are identified by a section and a key:
- [codeblock]
+ [codeblock lang=text]
[section]
some_key=42
string_example="Hello World3D!"
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index 43c3f5c1be..cc32964e87 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -1012,6 +1012,7 @@
Distance between the node's top edge and its parent control, based on [member anchor_top].
Offsets are often controlled by one or multiple parent [Container] nodes, so you should not modify them manually if your node is a direct child of a [Container]. Offsets update automatically when you move or resize the node.
</member>
+ <member name="physics_interpolation_mode" type="int" setter="set_physics_interpolation_mode" getter="get_physics_interpolation_mode" overrides="Node" enum="Node.PhysicsInterpolationMode" default="2" />
<member name="pivot_offset" type="Vector2" setter="set_pivot_offset" getter="get_pivot_offset" default="Vector2(0, 0)">
By default, the node's pivot is its top-left corner. When you change its [member rotation] or [member scale], it will rotate or scale around this pivot. Set this property to [member size] / 2 to pivot around the Control's center.
</member>
@@ -1181,6 +1182,14 @@
- One of the node's theme property overrides is changed.
- The node enters the scene tree.
[b]Note:[/b] As an optimization, this notification won't be sent from changes that occur while this node is outside of the scene tree. Instead, all of the theme item updates can be applied at once when the node enters the scene tree.
+ [b]Note:[/b] This notification is received alongside [constant Node.NOTIFICATION_ENTER_TREE], so if you are instantiating a scene, the child nodes will not be initialized yet. You can use it to setup theming for this node, child nodes created from script, or if you want to access child nodes added in the editor, make sure the node is ready using [method Node.is_node_ready].
+ [codeblock]
+ func _notification(what):
+ if what == NOTIFICATION_THEME_CHANGED:
+ if not is_node_ready():
+ await ready # Wait until ready signal.
+ $Label.add_theme_color_override("font_color", Color.YELLOW)
+ [/codeblock]
</constant>
<constant name="NOTIFICATION_SCROLL_BEGIN" value="47">
Sent when this node is inside a [ScrollContainer] which has begun being scrolled when dragging the scrollable area [i]with a touch event[/i]. This notification is [i]not[/i] sent when scrolling by dragging the scrollbar, scrolling with the mouse wheel or scrolling with keyboard/gamepad events.
diff --git a/doc/classes/ConvexPolygonShape3D.xml b/doc/classes/ConvexPolygonShape3D.xml
index 280cadde78..98c3459289 100644
--- a/doc/classes/ConvexPolygonShape3D.xml
+++ b/doc/classes/ConvexPolygonShape3D.xml
@@ -10,7 +10,7 @@
[b]Performance:[/b] [ConvexPolygonShape3D] is faster to check collisions against compared to [ConcavePolygonShape3D], but it is slower than primitive collision shapes such as [SphereShape3D] and [BoxShape3D]. Its use should generally be limited to medium-sized objects that cannot have their collision accurately represented by primitive shapes.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<members>
<member name="points" type="PackedVector3Array" setter="set_points" getter="get_points" default="PackedVector3Array()">
diff --git a/doc/classes/CylinderShape3D.xml b/doc/classes/CylinderShape3D.xml
index 8bec199ab6..db98cac6e3 100644
--- a/doc/classes/CylinderShape3D.xml
+++ b/doc/classes/CylinderShape3D.xml
@@ -9,9 +9,9 @@
[b]Performance:[/b] [CylinderShape3D] is fast to check collisions against, but it is slower than [CapsuleShape3D], [BoxShape3D], and [SphereShape3D].
</description>
<tutorials>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="height" type="float" setter="set_height" getter="get_height" default="2.0">
diff --git a/doc/classes/DTLSServer.xml b/doc/classes/DTLSServer.xml
index f4c75a731d..41e241779a 100644
--- a/doc/classes/DTLSServer.xml
+++ b/doc/classes/DTLSServer.xml
@@ -45,7 +45,7 @@
{
private DtlsServer _dtls = new DtlsServer();
private UdpServer _server = new UdpServer();
- private Godot.Collections.Array&lt;PacketPeerDTLS&gt; _peers = new Godot.Collections.Array&lt;PacketPeerDTLS&gt;();
+ private Godot.Collections.Array&lt;PacketPeerDtls&gt; _peers = new Godot.Collections.Array&lt;PacketPeerDtls&gt;();
public override void _Ready()
{
@@ -59,8 +59,8 @@
{
while (Server.IsConnectionAvailable())
{
- PacketPeerUDP peer = _server.TakeConnection();
- PacketPeerDTLS dtlsPeer = _dtls.TakeConnection(peer);
+ PacketPeerUdp peer = _server.TakeConnection();
+ PacketPeerDtls dtlsPeer = _dtls.TakeConnection(peer);
if (dtlsPeer.GetStatus() != PacketPeerDtls.Status.Handshaking)
{
continue; // It is normal that 50% of the connections fails due to cookie exchange.
diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml
index 14ce7c894f..7f0fdddcdd 100644
--- a/doc/classes/Dictionary.xml
+++ b/doc/classes/Dictionary.xml
@@ -138,8 +138,8 @@
</description>
<tutorials>
<link title="GDScript basics: Dictionary">$DOCS_URL/tutorials/scripting/gdscript/gdscript_basics.html#dictionary</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<constructors>
<constructor name="Dictionary">
diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml
index ecb8438edb..42ca336a25 100644
--- a/doc/classes/DisplayServer.xml
+++ b/doc/classes/DisplayServer.xml
@@ -103,7 +103,7 @@
<param index="3" name="callback" type="Callable" />
<description>
Shows a text input dialog which uses the operating system's native look-and-feel. [param callback] should accept a single [String] parameter which contains the text field's contents.
- [b]Note:[/b] This method is implemented only on macOS and Windows.
+ [b]Note:[/b] This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG_INPUT] feature. Supported platforms include macOS and Windows.
</description>
</method>
<method name="dialog_show">
@@ -114,7 +114,7 @@
<param index="3" name="callback" type="Callable" />
<description>
Shows a text dialog which uses the operating system's native look-and-feel. [param callback] should accept a single [int] parameter which corresponds to the index of the pressed button.
- [b]Note:[/b] This method is implemented only on macOS and Windows.
+ [b]Note:[/b] This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG] feature. Supported platforms include macOS and Windows.
</description>
</method>
<method name="enable_for_stealing_focus">
@@ -138,7 +138,7 @@
Displays OS native dialog for selecting files or directories in the file system.
Each filter string in the [param filters] array should be formatted like this: [code]*.txt,*.doc;Text Files[/code]. The description text of the filter is optional and can be omitted. See also [member FileDialog.filters].
Callbacks have the following arguments: [code]status: bool, selected_paths: PackedStringArray, selected_filter_index: int[/code].
- [b]Note:[/b] This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG] feature. Supported platforms include Linux (X11/Wayland), Windows, and macOS.
+ [b]Note:[/b] This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG_FILE] feature. Supported platforms include Linux (X11/Wayland), Windows, and macOS.
[b]Note:[/b] [param current_directory] might be ignored.
[b]Note:[/b] On Linux, [param show_hidden] is ignored.
[b]Note:[/b] On macOS, native file dialogs have no title.
@@ -164,7 +164,7 @@
- [code]"values"[/code] - [PackedStringArray] of values. If empty, boolean option (check box) is used.
- [code]"default"[/code] - default selected option index ([int]) or default boolean value ([bool]).
Callbacks have the following arguments: [code]status: bool, selected_paths: PackedStringArray, selected_filter_index: int, selected_option: Dictionary[/code].
- [b]Note:[/b] This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG] feature. Supported platforms include Linux (X11/Wayland), Windows, and macOS.
+ [b]Note:[/b] This method is implemented if the display server has the [constant FEATURE_NATIVE_DIALOG_FILE] feature. Supported platforms include Linux (X11/Wayland), Windows, and macOS.
[b]Note:[/b] [param current_directory] might be ignored.
[b]Note:[/b] On Linux (X11), [param show_hidden] is ignored.
[b]Note:[/b] On macOS, native file dialogs have no title.
@@ -249,7 +249,7 @@
<param index="0" name="position" type="Vector2i" />
<description>
Returns the ID of the window at the specified screen [param position] (in pixels). On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:
- [codeblock]
+ [codeblock lang=text]
* (0, 0) +-------+
| |
+-------------+ | |
@@ -282,7 +282,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -308,7 +308,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -334,7 +334,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -361,7 +361,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -386,7 +386,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -415,7 +415,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -441,7 +441,7 @@
[b]Note:[/b] The [param callback] and [param key_callback] Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to [param tag].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -459,7 +459,7 @@
Returns index of the inserted item, it's not guaranteed to be the same as [param index] value.
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -479,7 +479,7 @@
Returns index of the inserted item, it's not guaranteed to be the same as [param index] value.
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -495,7 +495,7 @@
Removes all items from the global menu with ID [param menu_root].
[b]Note:[/b] This method is implemented only on macOS.
[b]Supported system menu IDs:[/b]
- [codeblock]
+ [codeblock lang=text]
"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
@@ -553,7 +553,7 @@
<param index="0" name="menu_root" type="String" />
<param index="1" name="tag" type="Variant" />
<description>
- Returns the index of the item with the specified [param tag]. Index is automatically assigned to each item by the engine. Index can not be set manually.
+ Returns the index of the item with the specified [param tag]. Indices are automatically assigned to each item by the engine, and cannot be set manually.
[b]Note:[/b] This method is implemented only on macOS.
</description>
</method>
@@ -562,7 +562,7 @@
<param index="0" name="menu_root" type="String" />
<param index="1" name="text" type="String" />
<description>
- Returns the index of the item with the specified [param text]. Index is automatically assigned to each item by the engine. Index can not be set manually.
+ Returns the index of the item with the specified [param text]. Indices are automatically assigned to each item by the engine, and cannot be set manually.
[b]Note:[/b] This method is implemented only on macOS.
</description>
</method>
@@ -1022,7 +1022,7 @@
Returns the dots per inch density of the specified screen. If [param screen] is [constant SCREEN_OF_MAIN_WINDOW] (the default value), a screen with the main window will be used.
[b]Note:[/b] On macOS, returned value is inaccurate if fractional display scaling mode is used.
[b]Note:[/b] On Android devices, the actual screen densities are grouped into six generalized densities:
- [codeblock]
+ [codeblock lang=text]
ldpi - 120 dpi
mdpi - 160 dpi
hdpi - 240 dpi
@@ -1072,7 +1072,7 @@
<param index="0" name="screen" type="int" default="-1" />
<description>
Returns the screen's top-left corner position in pixels. On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:
- [codeblock]
+ [codeblock lang=text]
* (0, 0) +-------+
| |
+-------------+ | |
@@ -1674,7 +1674,7 @@
<param index="1" name="window_id" type="int" default="0" />
<description>
Sets the position of the given window to [param position]. On multi-monitor setups, the screen position is relative to the virtual desktop area. On multi-monitor setups with different screen resolutions or orientations, the origin may be located outside any display like this:
- [codeblock]
+ [codeblock lang=text]
* (0, 0) +-------+
| |
+-------------+ | |
@@ -1784,7 +1784,7 @@
Display server supports setting the mouse cursor shape to a custom image. [b]Windows, macOS, Linux (X11/Wayland), Web[/b]
</constant>
<constant name="FEATURE_NATIVE_DIALOG" value="9" enum="Feature">
- Display server supports spawning dialogs using the operating system's native look-and-feel. [b]Windows, macOS, Linux (X11/Wayland)[/b]
+ Display server supports spawning text dialogs using the operating system's native look-and-feel. See [method dialog_show]. [b]Windows, macOS[/b]
</constant>
<constant name="FEATURE_IME" value="10" enum="Feature">
Display server supports [url=https://en.wikipedia.org/wiki/Input_method]Input Method Editor[/url], which is commonly used for inputting Chinese/Japanese/Korean text. This is handled by the operating system, rather than by Godot. [b]Windows, macOS, Linux (X11)[/b]
@@ -1825,6 +1825,12 @@
<constant name="FEATURE_NATIVE_HELP" value="23" enum="Feature">
Display server supports native help system search callbacks. See [method help_set_search_callbacks].
</constant>
+ <constant name="FEATURE_NATIVE_DIALOG_INPUT" value="24" enum="Feature">
+ Display server supports spawning text input dialogs using the operating system's native look-and-feel. See [method dialog_input_text]. [b]Windows, macOS[/b]
+ </constant>
+ <constant name="FEATURE_NATIVE_DIALOG_FILE" value="25" enum="Feature">
+ Display server supports spawning dialogs for selecting files or directories using the operating system's native look-and-feel. See [method file_dialog_show] and [method file_dialog_with_options_show]. [b]Windows, macOS, Linux (X11/Wayland)[/b]
+ </constant>
<constant name="MOUSE_MODE_VISIBLE" value="0" enum="MouseMode">
Makes the mouse cursor visible if it is hidden.
</constant>
diff --git a/doc/classes/EditorExportPlatformPC.xml b/doc/classes/EditorExportPlatformPC.xml
index 3c2a27deab..def14e5955 100644
--- a/doc/classes/EditorExportPlatformPC.xml
+++ b/doc/classes/EditorExportPlatformPC.xml
@@ -4,7 +4,10 @@
Base class for the desktop platform exporter (Windows and Linux/BSD).
</brief_description>
<description>
+ The base class for the desktop platform exporters. These include Windows and Linux/BSD, but not macOS. See the classes inheriting this one for more details.
</description>
<tutorials>
+ <link title="Exporting for Windows">$DOCS_URL/tutorials/export/exporting_for_windows.html</link>
+ <link title="Exporting for Linux">$DOCS_URL/tutorials/export/exporting_for_linux.html</link>
</tutorials>
</class>
diff --git a/doc/classes/EditorFileDialog.xml b/doc/classes/EditorFileDialog.xml
index b51341dc24..4befcf5e69 100644
--- a/doc/classes/EditorFileDialog.xml
+++ b/doc/classes/EditorFileDialog.xml
@@ -19,6 +19,16 @@
For example, a [param filter] of [code]"*.tscn, *.scn"[/code] and a [param description] of [code]"Scenes"[/code] results in filter text "Scenes (*.tscn, *.scn)".
</description>
</method>
+ <method name="add_option">
+ <return type="void" />
+ <param index="0" name="name" type="String" />
+ <param index="1" name="values" type="PackedStringArray" />
+ <param index="2" name="default_value_index" type="int" />
+ <description>
+ Adds an additional [OptionButton] to the file dialog. If [param values] is empty, a [CheckBox] is added instead.
+ [param default_value_index] should be an index of the value in the [param values]. If [param values] is empty it should be either [code]1[/code] (checked), or [code]0[/code] (unchecked).
+ </description>
+ </method>
<method name="add_side_menu">
<return type="void" />
<param index="0" name="menu" type="Control" />
@@ -40,6 +50,33 @@
[b]Warning:[/b] This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their [member CanvasItem.visible] property.
</description>
</method>
+ <method name="get_option_default" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="option" type="int" />
+ <description>
+ Returns the default value index of the [OptionButton] or [CheckBox] with index [param option].
+ </description>
+ </method>
+ <method name="get_option_name" qualifiers="const">
+ <return type="String" />
+ <param index="0" name="option" type="int" />
+ <description>
+ Returns the name of the [OptionButton] or [CheckBox] with index [param option].
+ </description>
+ </method>
+ <method name="get_option_values" qualifiers="const">
+ <return type="PackedStringArray" />
+ <param index="0" name="option" type="int" />
+ <description>
+ Returns an array of values of the [OptionButton] with index [param option].
+ </description>
+ </method>
+ <method name="get_selected_options" qualifiers="const">
+ <return type="Dictionary" />
+ <description>
+ Returns a [Dictionary] with the selected values of the additional [OptionButton]s and/or [CheckBox]es. [Dictionary] keys are names and values are selected value indices.
+ </description>
+ </method>
<method name="get_vbox">
<return type="VBoxContainer" />
<description>
@@ -53,6 +90,30 @@
Notify the [EditorFileDialog] that its view of the data is no longer accurate. Updates the view contents on next view update.
</description>
</method>
+ <method name="set_option_default">
+ <return type="void" />
+ <param index="0" name="option" type="int" />
+ <param index="1" name="default_value_index" type="int" />
+ <description>
+ Sets the default value index of the [OptionButton] or [CheckBox] with index [param option].
+ </description>
+ </method>
+ <method name="set_option_name">
+ <return type="void" />
+ <param index="0" name="option" type="int" />
+ <param index="1" name="name" type="String" />
+ <description>
+ Sets the name of the [OptionButton] or [CheckBox] with index [param option].
+ </description>
+ </method>
+ <method name="set_option_values">
+ <return type="void" />
+ <param index="0" name="option" type="int" />
+ <param index="1" name="values" type="PackedStringArray" />
+ <description>
+ Sets the option values of the [OptionButton] with index [param option].
+ </description>
+ </method>
</methods>
<members>
<member name="access" type="int" setter="set_access" getter="get_access" enum="EditorFileDialog.Access" default="0">
@@ -80,6 +141,9 @@
<member name="filters" type="PackedStringArray" setter="set_filters" getter="get_filters" default="PackedStringArray()">
The available file type filters. For example, this shows only [code].png[/code] and [code].gd[/code] files: [code]set_filters(PackedStringArray(["*.png ; PNG Images","*.gd ; GDScript Files"]))[/code]. Multiple file types can also be specified in a single filter. [code]"*.png, *.jpg, *.jpeg ; Supported Images"[/code] will show both PNG and JPEG files when selected.
</member>
+ <member name="option_count" type="int" setter="set_option_count" getter="get_option_count" default="0">
+ The number of additional [OptionButton]s and [CheckBox]es in the dialog.
+ </member>
<member name="show_hidden_files" type="bool" setter="set_show_hidden_files" getter="is_showing_hidden_files" default="false">
If [code]true[/code], hidden files and directories will be visible in the [EditorFileDialog]. This property is synchronized with [member EditorSettings.filesystem/file_dialog/show_hidden_files].
</member>
diff --git a/doc/classes/EditorPaths.xml b/doc/classes/EditorPaths.xml
index 94ddb37658..f57e728c93 100644
--- a/doc/classes/EditorPaths.xml
+++ b/doc/classes/EditorPaths.xml
@@ -17,7 +17,7 @@
<description>
Returns the absolute path to the user's cache folder. This folder should be used for temporary data that can be removed safely whenever the editor is closed (such as generated resource thumbnails).
[b]Default paths per platform:[/b]
- [codeblock]
+ [codeblock lang=text]
- Windows: %LOCALAPPDATA%\Godot\
- macOS: ~/Library/Caches/Godot/
- Linux: ~/.cache/godot/
@@ -29,7 +29,7 @@
<description>
Returns the absolute path to the user's configuration folder. This folder should be used for [i]persistent[/i] user configuration files.
[b]Default paths per platform:[/b]
- [codeblock]
+ [codeblock lang=text]
- Windows: %APPDATA%\Godot\ (same as `get_data_dir()`)
- macOS: ~/Library/Application Support/Godot/ (same as `get_data_dir()`)
- Linux: ~/.config/godot/
@@ -41,7 +41,7 @@
<description>
Returns the absolute path to the user's data folder. This folder should be used for [i]persistent[/i] user data files such as installed export templates.
[b]Default paths per platform:[/b]
- [codeblock]
+ [codeblock lang=text]
- Windows: %APPDATA%\Godot\ (same as `get_config_dir()`)
- macOS: ~/Library/Application Support/Godot/ (same as `get_config_dir()`)
- Linux: ~/.local/share/godot/
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index f446d5bb1f..87ca0536b8 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -448,6 +448,9 @@
The color to use for the TileMap editor's grid.
[b]Note:[/b] Only effective if [member editors/tiles_editor/display_grid] is [code]true[/code].
</member>
+ <member name="editors/tiles_editor/highlight_selected_layer" type="bool" setter="" getter="">
+ Highlight the currently selected TileMapLayer by dimming the other ones in the scene.
+ </member>
<member name="editors/visual_editors/category_colors/color_color" type="Color" setter="" getter="">
The color of a graph node's header when it belongs to the "Color" category.
</member>
@@ -714,6 +717,9 @@
If [code]true[/code], editor main menu is using embedded [MenuBar] instead of system global menu.
Specific to the macOS platform.
</member>
+ <member name="interface/editor/use_native_file_dialogs" type="bool" setter="" getter="">
+ If [code]true[/code], editor UI uses OS native file/directory selection dialogs.
+ </member>
<member name="interface/editor/vsync_mode" type="int" setter="" getter="">
Sets the V-Sync mode for the editor. Does not affect the project when run from the editor (this is controlled by [member ProjectSettings.display/window/vsync/vsync_mode]).
Depending on the platform and used renderer, the engine will fall back to [b]Enabled[/b] if the desired mode is not supported.
@@ -824,7 +830,7 @@
<member name="interface/theme/icon_and_font_color" type="int" setter="" getter="">
The icon and font color scheme to use in the editor.
- [b]Auto[/b] determines the color scheme to use automatically based on [member interface/theme/base_color].
- - [b]Dark[/b] makes fonts and icons dark (suitable for light themes). Icon colors are automatically converted by the editor following the set of rules defined in [url=https://github.com/godotengine/godot/blob/master/editor/editor_themes.cpp]this file[/url].
+ - [b]Dark[/b] makes fonts and icons dark (suitable for light themes). Icon colors are automatically converted by the editor following the set of rules defined in [url=https://github.com/godotengine/godot/blob/master/editor/themes/editor_theme_manager.cpp]this file[/url].
- [b]Light[/b] makes fonts and icons light (suitable for dark themes).
</member>
<member name="interface/theme/icon_saturation" type="float" setter="" getter="">
@@ -1031,6 +1037,12 @@
The number of pixels to scroll with every mouse wheel increment. Higher values make the script scroll by faster when using the mouse wheel.
[b]Note:[/b] You can hold down [kbd]Alt[/kbd] while using the mouse wheel to temporarily scroll 5 times faster.
</member>
+ <member name="text_editor/completion/add_node_path_literals" type="bool" setter="" getter="">
+ If [code]true[/code], uses [NodePath] instead of [String] when appropriate for code autocompletion or for drag and dropping object properties into the script editor.
+ </member>
+ <member name="text_editor/completion/add_string_name_literals" type="bool" setter="" getter="">
+ If [code]true[/code], uses [StringName] instead of [String] when appropriate for code autocompletion.
+ </member>
<member name="text_editor/completion/add_type_hints" type="bool" setter="" getter="">
If [code]true[/code], adds [url=$DOCS_URL/tutorials/scripting/gdscript/static_typing.html]GDScript static typing[/url] hints such as [code]-&gt; void[/code] and [code]: int[/code] when using code autocompletion or when creating onready variables by drag and dropping nodes into the script editor while pressing the [kbd]Ctrl[/kbd] key. If [code]true[/code], newly created scripts will also automatically have type hints added to their method parameters and return types.
</member>
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index 189517c392..c28476aa3c 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -13,9 +13,8 @@
<tutorials>
<link title="Environment and post-processing">$DOCS_URL/tutorials/3d/environment_and_post_processing.html</link>
<link title="High dynamic range lighting">$DOCS_URL/tutorials/3d/high_dynamic_range.html</link>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="2D HDR Demo">https://godotengine.org/asset-library/asset/110</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="get_glow_level" qualifiers="const">
diff --git a/doc/classes/FileAccess.xml b/doc/classes/FileAccess.xml
index fad6cbcc93..6b9c0bcc76 100644
--- a/doc/classes/FileAccess.xml
+++ b/doc/classes/FileAccess.xml
@@ -40,7 +40,7 @@
<tutorials>
<link title="File system">$DOCS_URL/tutorials/scripting/filesystem.html</link>
<link title="Runtime file loading and saving">$DOCS_URL/tutorials/io/runtime_file_loading_and_saving.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="close">
@@ -131,7 +131,7 @@
Returns the next value of the file in CSV (Comma-Separated Values) format. You can pass a different delimiter [param delim] to use other than the default [code]","[/code] (comma). This delimiter must be one-character long, and cannot be a double quotation mark.
Text is interpreted as being UTF-8 encoded. Text values must be enclosed in double quotes if they include the delimiter character. Double quotes within a text value can be escaped by doubling their occurrence.
For example, the following CSV lines are valid and will be properly parsed as two strings each:
- [codeblock]
+ [codeblock lang=text]
Alice,"Hello, Bob!"
Bob,Alice! What a surprise!
Alice,"I thought you'd reply with ""Hello, world""."
diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml
index 9065adc0e0..dec3160ffe 100644
--- a/doc/classes/FileDialog.xml
+++ b/doc/classes/FileDialog.xml
@@ -23,9 +23,10 @@
<return type="void" />
<param index="0" name="name" type="String" />
<param index="1" name="values" type="PackedStringArray" />
- <param index="2" name="index" type="int" />
+ <param index="2" name="default_value_index" type="int" />
<description>
Adds an additional [OptionButton] to the file dialog. If [param values] is empty, a [CheckBox] is added instead.
+ [param default_value_index] should be an index of the value in the [param values]. If [param values] is empty it should be either [code]1[/code] (checked), or [code]0[/code] (unchecked).
</description>
</method>
<method name="clear_filters">
@@ -90,7 +91,7 @@
<method name="set_option_default">
<return type="void" />
<param index="0" name="option" type="int" />
- <param index="1" name="index" type="int" />
+ <param index="1" name="default_value_index" type="int" />
<description>
Sets the default value index of the [OptionButton] or [CheckBox] with index [param option].
</description>
diff --git a/doc/classes/GPUParticles2D.xml b/doc/classes/GPUParticles2D.xml
index f4ba305f8b..a7d89e8596 100644
--- a/doc/classes/GPUParticles2D.xml
+++ b/doc/classes/GPUParticles2D.xml
@@ -10,8 +10,8 @@
</description>
<tutorials>
<link title="Particle systems (2D)">$DOCS_URL/tutorials/2d/particle_systems_2d.html</link>
- <link title="2D Particles Demo">https://godotengine.org/asset-library/asset/118</link>
- <link title="2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player)">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Particles Demo">https://godotengine.org/asset-library/asset/2724</link>
+ <link title="2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player)">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="capture_rect" qualifiers="const">
@@ -43,7 +43,8 @@
<method name="restart">
<return type="void" />
<description>
- Restarts all the existing particles.
+ Restarts the particle emission cycle, clearing existing particles. To avoid particles vanishing from the viewport, wait for the [signal finished] signal before calling.
+ [b]Note:[/b] The [signal finished] signal is only emitted by [member one_shot] emitters.
</description>
</method>
</methods>
@@ -64,7 +65,9 @@
Particle draw order. Uses [enum DrawOrder] values.
</member>
<member name="emitting" type="bool" setter="set_emitting" getter="is_emitting" default="true">
- If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle until after all active particles finish processing. You can use the [signal finished] signal to be notified once all active particles finish processing.
+ If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle unless all active particles have finished processing. Use the [signal finished] signal to be notified once all active particles finish processing.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the [signal finished] signal during which setting this to [code]true[/code] will not restart the emission cycle.
+ [b]Tip:[/b] If your [member one_shot] emitter needs to immediately restart emitting particles once [signal finished] signal is received, consider calling [method restart] instead of setting [member emitting].
</member>
<member name="explosiveness" type="float" setter="set_explosiveness_ratio" getter="get_explosiveness_ratio" default="0.0">
How rapidly particles in an emission cycle are emitted. If greater than [code]0[/code], there will be a gap in emissions before the next cycle begins.
@@ -132,8 +135,9 @@
<signals>
<signal name="finished">
<description>
- Emitted when all active particles have finished processing. When [member one_shot] is disabled, particles will process continuously, so this is never emitted.
- [b]Note:[/b] Due to the particles being computed on the GPU there might be a delay before the signal gets emitted.
+ Emitted when all active particles have finished processing. To immediately restart the emission cycle, call [method restart].
+ Never emitted when [member one_shot] is disabled, as particles will be emitted and processed continuously.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the signal during which setting [member emitting] to [code]true[/code] will not restart the emission cycle. This delay is avoided by instead calling [method restart].
</description>
</signal>
</signals>
diff --git a/doc/classes/GPUParticles3D.xml b/doc/classes/GPUParticles3D.xml
index d1903b85cd..61a3b467f1 100644
--- a/doc/classes/GPUParticles3D.xml
+++ b/doc/classes/GPUParticles3D.xml
@@ -10,7 +10,7 @@
<tutorials>
<link title="Particle systems (3D)">$DOCS_URL/tutorials/3d/particles/index.html</link>
<link title="Controlling thousands of fish with Particles">$DOCS_URL/tutorials/performance/vertex_animation/controlling_thousands_of_fish.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="capture_aabb" qualifiers="const">
@@ -48,7 +48,8 @@
<method name="restart">
<return type="void" />
<description>
- Restarts the particle emission, clearing existing particles.
+ Restarts the particle emission cycle, clearing existing particles. To avoid particles vanishing from the viewport, wait for the [signal finished] signal before calling.
+ [b]Note:[/b] The [signal finished] signal is only emitted by [member one_shot] emitters.
</description>
</method>
<method name="set_draw_pass_mesh">
@@ -95,7 +96,9 @@
<member name="draw_skin" type="Skin" setter="set_skin" getter="get_skin">
</member>
<member name="emitting" type="bool" setter="set_emitting" getter="is_emitting" default="true">
- If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle until after all active particles finish processing. You can use the [signal finished] signal to be notified once all active particles finish processing.
+ If [code]true[/code], particles are being emitted. [member emitting] can be used to start and stop particles from emitting. However, if [member one_shot] is [code]true[/code] setting [member emitting] to [code]true[/code] will not restart the emission cycle unless all active particles have finished processing. Use the [signal finished] signal to be notified once all active particles finish processing.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the [signal finished] signal during which setting this to [code]true[/code] will not restart the emission cycle.
+ [b]Tip:[/b] If your [member one_shot] emitter needs to immediately restart emitting particles once [signal finished] signal is received, consider calling [method restart] instead of setting [member emitting].
</member>
<member name="explosiveness" type="float" setter="set_explosiveness_ratio" getter="get_explosiveness_ratio" default="0.0">
Time ratio between each emission. If [code]0[/code], particles are emitted continuously. If [code]1[/code], all particles are emitted simultaneously.
@@ -157,8 +160,9 @@
<signals>
<signal name="finished">
<description>
- Emitted when all active particles have finished processing. When [member one_shot] is disabled, particles will process continuously, so this is never emitted.
- [b]Note:[/b] Due to the particles being computed on the GPU there might be a delay before the signal gets emitted.
+ Emitted when all active particles have finished processing. To immediately emit new particles, call [method restart].
+ Never emitted when [member one_shot] is disabled, as particles will be emitted and processed continuously.
+ [b]Note:[/b] For [member one_shot] emitters, due to the particles being computed on the GPU, there may be a short period after receiving the signal during which setting [member emitting] to [code]true[/code] will not restart the emission cycle. This delay is avoided by instead calling [method restart].
</description>
</signal>
</signals>
diff --git a/doc/classes/GeometryInstance3D.xml b/doc/classes/GeometryInstance3D.xml
index a93f77e324..e52a3d7683 100644
--- a/doc/classes/GeometryInstance3D.xml
+++ b/doc/classes/GeometryInstance3D.xml
@@ -102,13 +102,13 @@
In other words, the actual mesh will not be visible, only the shadows casted from the mesh will be.
</constant>
<constant name="GI_MODE_DISABLED" value="0" enum="GIMode">
- Disabled global illumination mode. Use for dynamic objects that do not contribute to global illumination (such as characters). When using [VoxelGI] and SDFGI, the geometry will [i]receive[/i] indirect lighting and reflections but the geometry will not be considered in GI baking. When using [LightmapGI], the object will receive indirect lighting using lightmap probes instead of using the baked lightmap texture.
+ Disabled global illumination mode. Use for dynamic objects that do not contribute to global illumination (such as characters). When using [VoxelGI] and SDFGI, the geometry will [i]receive[/i] indirect lighting and reflections but the geometry will not be considered in GI baking.
</constant>
<constant name="GI_MODE_STATIC" value="1" enum="GIMode">
Baked global illumination mode. Use for static objects that contribute to global illumination (such as level geometry). This GI mode is effective when using [VoxelGI], SDFGI and [LightmapGI].
</constant>
<constant name="GI_MODE_DYNAMIC" value="2" enum="GIMode">
- Dynamic global illumination mode. Use for dynamic objects that contribute to global illumination. This GI mode is only effective when using [VoxelGI], but it has a higher performance impact than [constant GI_MODE_STATIC]. When using other GI methods, this will act the same as [constant GI_MODE_DISABLED].
+ Dynamic global illumination mode. Use for dynamic objects that contribute to global illumination. This GI mode is only effective when using [VoxelGI], but it has a higher performance impact than [constant GI_MODE_STATIC]. When using other GI methods, this will act the same as [constant GI_MODE_DISABLED]. When using [LightmapGI], the object will receive indirect lighting using lightmap probes instead of using the baked lightmap texture.
</constant>
<constant name="LIGHTMAP_SCALE_1X" value="0" enum="LightmapScale">
The standard texel density for lightmapping with [LightmapGI].
diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml
index c7fa1f40e0..c85b3acafa 100644
--- a/doc/classes/Gradient.xml
+++ b/doc/classes/Gradient.xml
@@ -78,8 +78,8 @@
</methods>
<members>
<member name="colors" type="PackedColorArray" setter="set_colors" getter="get_colors" default="PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)">
- Gradient's colors returned as a [PackedColorArray].
- [b]Note:[/b] This property returns a copy, modifying the return value does not update the gradient. To update the gradient use [method set_color] method (for updating colors individually) or assign to this property directly (for bulk-updating all colors at once).
+ Gradient's colors as a [PackedColorArray].
+ [b]Note:[/b] Setting this property updates all colors at once. To update any color individually use [method set_color].
</member>
<member name="interpolation_color_space" type="int" setter="set_interpolation_color_space" getter="get_interpolation_color_space" enum="Gradient.ColorSpace" default="0">
The color space used to interpolate between points of the gradient. It does not affect the returned colors, which will always be in sRGB space. See [enum ColorSpace] for available modes.
@@ -89,8 +89,8 @@
The algorithm used to interpolate between points of the gradient. See [enum InterpolationMode] for available modes.
</member>
<member name="offsets" type="PackedFloat32Array" setter="set_offsets" getter="get_offsets" default="PackedFloat32Array(0, 1)">
- Gradient's offsets returned as a [PackedFloat32Array].
- [b]Note:[/b] This property returns a copy, modifying the return value does not update the gradient. To update the gradient use [method set_offset] method (for updating offsets individually) or assign to this property directly (for bulk-updating all offsets at once).
+ Gradient's offsets as a [PackedFloat32Array].
+ [b]Note:[/b] Setting this property updates all offsets at once. To update any offset individually use [method set_offset].
</member>
</members>
<constants>
diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index a9ac47d8df..001839d745 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -109,6 +109,14 @@
Rearranges selected nodes in a layout with minimum crossings between connections and uniform horizontal and vertical gap between nodes.
</description>
</method>
+ <method name="attach_graph_element_to_frame">
+ <return type="void" />
+ <param index="0" name="element" type="StringName" />
+ <param index="1" name="frame" type="StringName" />
+ <description>
+ Attaches the [param element] [GraphElement] to the [param frame] [GraphFrame].
+ </description>
+ </method>
<method name="clear_connections">
<return type="void" />
<description>
@@ -125,6 +133,13 @@
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="detach_graph_element_from_frame">
+ <return type="void" />
+ <param index="0" name="element" type="StringName" />
+ <description>
+ Detaches the [param element] [GraphElement] from the [GraphFrame] it is currently attached to.
+ </description>
+ </method>
<method name="disconnect_node">
<return type="void" />
<param index="0" name="from_node" type="StringName" />
@@ -143,6 +158,13 @@
[b]Note:[/b] This method suppresses any other connection request signals apart from [signal connection_drag_ended].
</description>
</method>
+ <method name="get_attached_nodes_of_frame">
+ <return type="StringName[]" />
+ <param index="0" name="frame" type="StringName" />
+ <description>
+ Returns an array of node names that are attached to the [GraphFrame] with the given name.
+ </description>
+ </method>
<method name="get_closest_connection_at_point" qualifiers="const">
<return type="Dictionary" />
<param index="0" name="point" type="Vector2" />
@@ -179,6 +201,13 @@
Returns an [Array] containing the list of connections that intersect with the given [Rect2]. A connection consists in a structure of the form [code]{ from_port: 0, from_node: "GraphNode name 0", to_port: 1, to_node: "GraphNode name 1" }[/code].
</description>
</method>
+ <method name="get_element_frame">
+ <return type="GraphFrame" />
+ <param index="0" name="element" type="StringName" />
+ <description>
+ Returns the [GraphFrame] that contains the [GraphElement] with the given name.
+ </description>
+ </method>
<method name="get_menu_hbox">
<return type="HBoxContainer" />
<description>
@@ -395,6 +424,21 @@
Emitted at the end of a [GraphElement]'s movement.
</description>
</signal>
+ <signal name="frame_rect_changed">
+ <param index="0" name="frame" type="GraphFrame" />
+ <param index="1" name="new_rect" type="Vector2" />
+ <description>
+ Emitted when the [GraphFrame] [param frame] is resized to [param new_rect].
+ </description>
+ </signal>
+ <signal name="graph_elements_linked_to_frame_request">
+ <param index="0" name="elements" type="Array" />
+ <param index="1" name="frame" type="StringName" />
+ <description>
+ Emitted when one or more [GraphElement]s are dropped onto the [GraphFrame] named [param frame], when they were not previously attached to any other one.
+ [param elements] is an array of [GraphElement]s to be attached.
+ </description>
+ </signal>
<signal name="node_deselected">
<param index="0" name="node" type="Node" />
<description>
@@ -413,9 +457,9 @@
</description>
</signal>
<signal name="popup_request">
- <param index="0" name="position" type="Vector2" />
+ <param index="0" name="at_position" type="Vector2" />
<description>
- Emitted when a popup is requested. Happens on right-clicking in the GraphEdit. [param position] is the position of the mouse pointer when the signal is sent.
+ Emitted when a popup is requested. Happens on right-clicking in the GraphEdit. [param at_position] is the position of the mouse pointer when the signal is sent.
</description>
</signal>
<signal name="scroll_offset_changed">
diff --git a/doc/classes/GraphElement.xml b/doc/classes/GraphElement.xml
index 17c4184a20..7cd6496773 100644
--- a/doc/classes/GraphElement.xml
+++ b/doc/classes/GraphElement.xml
@@ -17,7 +17,7 @@
</member>
<member name="resizable" type="bool" setter="set_resizable" getter="is_resizable" default="false">
If [code]true[/code], the user can resize the GraphElement.
- [b]Note:[/b] Dragging the handle will only emit the [signal resize_request] signal, the GraphElement needs to be resized manually.
+ [b]Note:[/b] Dragging the handle will only emit the [signal resize_request] and [signal resize_end] signals, the GraphElement needs to be resized manually.
</member>
<member name="selectable" type="bool" setter="set_selectable" getter="is_selectable" default="true">
If [code]true[/code], the user can select the GraphElement.
@@ -59,8 +59,14 @@
Emitted when displaying the GraphElement over other ones is requested. Happens on focusing (clicking into) the GraphElement.
</description>
</signal>
+ <signal name="resize_end">
+ <param index="0" name="new_size" type="Vector2" />
+ <description>
+ Emitted when releasing the mouse button after dragging the resizer handle (see [member resizable]).
+ </description>
+ </signal>
<signal name="resize_request">
- <param index="0" name="new_minsize" type="Vector2" />
+ <param index="0" name="new_size" type="Vector2" />
<description>
Emitted when resizing the GraphElement is requested. Happens on dragging the resizer handle (see [member resizable]).
</description>
diff --git a/doc/classes/GraphFrame.xml b/doc/classes/GraphFrame.xml
new file mode 100644
index 0000000000..52bb451d95
--- /dev/null
+++ b/doc/classes/GraphFrame.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="GraphFrame" inherits="GraphElement" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ GraphFrame is a special [GraphElement] that can be used to organize other [GraphElement]s inside a [GraphEdit].
+ </brief_description>
+ <description>
+ GraphFrame is a special [GraphElement] to which other [GraphElement]s can be attached. It can be configured to automatically resize to enclose all attached [GraphElement]s. If the frame is moved, all the attached [GraphElement]s inside it will be moved as well.
+ A GraphFrame is always kept behind the connection layer and other [GraphElement]s inside a [GraphEdit].
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="get_titlebar_hbox">
+ <return type="HBoxContainer" />
+ <description>
+ Returns the [HBoxContainer] used for the title bar, only containing a [Label] for displaying the title by default.
+ This can be used to add custom controls to the title bar such as option or close buttons.
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="autoshrink_enabled" type="bool" setter="set_autoshrink_enabled" getter="is_autoshrink_enabled" default="true">
+ If [code]true[/code], the frame's rect will be adjusted automatically to enclose all attached [GraphElement]s.
+ </member>
+ <member name="autoshrink_margin" type="int" setter="set_autoshrink_margin" getter="get_autoshrink_margin" default="40">
+ The margin around the attached nodes that is used to calculate the size of the frame when [member autoshrink_enabled] is [code]true[/code].
+ </member>
+ <member name="drag_margin" type="int" setter="set_drag_margin" getter="get_drag_margin" default="16">
+ The margin inside the frame that can be used to drag the frame.
+ </member>
+ <member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" overrides="Control" enum="Control.MouseFilter" default="0" />
+ <member name="tint_color" type="Color" setter="set_tint_color" getter="get_tint_color" default="Color(0.3, 0.3, 0.3, 0.75)">
+ The color of the frame when [member tint_color_enabled] is [code]true[/code].
+ </member>
+ <member name="tint_color_enabled" type="bool" setter="set_tint_color_enabled" getter="is_tint_color_enabled" default="false">
+ If [code]true[/code], the tint color will be used to tint the frame.
+ </member>
+ <member name="title" type="String" setter="set_title" getter="get_title" default="&quot;&quot;">
+ Title of the frame.
+ </member>
+ </members>
+ <signals>
+ <signal name="autoshrink_changed">
+ <description>
+ Emitted when [member autoshrink_enabled] or [member autoshrink_margin] changes.
+ </description>
+ </signal>
+ </signals>
+ <theme_items>
+ <theme_item name="resizer_color" data_type="color" type="Color" default="Color(0.875, 0.875, 0.875, 1)">
+ The color modulation applied to the resizer icon.
+ </theme_item>
+ <theme_item name="panel" data_type="style" type="StyleBox">
+ The default [StyleBox] used for the background of the [GraphFrame].
+ </theme_item>
+ <theme_item name="panel_selected" data_type="style" type="StyleBox">
+ The [StyleBox] used for the background of the [GraphFrame] when it is selected.
+ </theme_item>
+ <theme_item name="titlebar" data_type="style" type="StyleBox">
+ The [StyleBox] used for the title bar of the [GraphFrame].
+ </theme_item>
+ <theme_item name="titlebar_selected" data_type="style" type="StyleBox">
+ The [StyleBox] used for the title bar of the [GraphFrame] when it is selected.
+ </theme_item>
+ </theme_items>
+</class>
diff --git a/doc/classes/GridContainer.xml b/doc/classes/GridContainer.xml
index d69f4a10d2..76f789a058 100644
--- a/doc/classes/GridContainer.xml
+++ b/doc/classes/GridContainer.xml
@@ -9,7 +9,7 @@
</description>
<tutorials>
<link title="Using Containers">$DOCS_URL/tutorials/ui/gui_containers.html</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<members>
<member name="columns" type="int" setter="set_columns" getter="get_columns" default="1">
diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml
index 25b6a48283..b6007a3b6b 100644
--- a/doc/classes/HTTPClient.xml
+++ b/doc/classes/HTTPClient.xml
@@ -156,9 +156,9 @@
[/gdscript]
[csharp]
var fields = new Godot.Collections.Dictionary { { "username", "user" }, { "password", "pass" } };
- string queryString = new HTTPClient().QueryStringFromDict(fields);
+ string queryString = new HttpClient().QueryStringFromDict(fields);
string[] headers = { "Content-Type: application/x-www-form-urlencoded", $"Content-Length: {queryString.Length}" };
- var result = new HTTPClient().Request(HTTPClient.Method.Post, "index.php", headers, queryString);
+ var result = new HttpClient().Request(HttpClient.Method.Post, "index.php", headers, queryString);
[/csharp]
[/codeblocks]
[b]Note:[/b] The [param body] parameter is ignored if [param method] is [constant HTTPClient.METHOD_GET]. This is because GET methods can't contain request data. As a workaround, you can pass request data as a query string in the URL. See [method String.uri_encode] for an example.
diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml
index 03c1ce2e00..6efa675a71 100644
--- a/doc/classes/HTTPRequest.xml
+++ b/doc/classes/HTTPRequest.xml
@@ -43,7 +43,7 @@
public override void _Ready()
{
// Create an HTTP request node and connect its completion signal.
- var httpRequest = new HTTPRequest();
+ var httpRequest = new HttpRequest();
AddChild(httpRequest);
httpRequest.RequestCompleted += HttpRequestCompleted;
@@ -61,7 +61,7 @@
{
{ "name", "Godette" }
});
- error = httpRequest.Request("https://httpbin.org/post", null, HTTPClient.Method.Post, body);
+ error = httpRequest.Request("https://httpbin.org/post", null, HttpClient.Method.Post, body);
if (error != Error.Ok)
{
GD.PushError("An error occurred in the HTTP request.");
@@ -115,7 +115,7 @@
public override void _Ready()
{
// Create an HTTP request node and connect its completion signal.
- var httpRequest = new HTTPRequest();
+ var httpRequest = new HttpRequest();
AddChild(httpRequest);
httpRequest.RequestCompleted += HttpRequestCompleted;
@@ -130,7 +130,7 @@
// Called when the HTTP request is completed.
private void HttpRequestCompleted(long result, long responseCode, string[] headers, byte[] body)
{
- if (result != (long)HTTPRequest.Result.Success)
+ if (result != (long)HttpRequest.Result.Success)
{
GD.PushError("Image couldn't be downloaded. Try a different image.");
}
diff --git a/doc/classes/HeightMapShape3D.xml b/doc/classes/HeightMapShape3D.xml
index ba79cbc89a..7e3055b34e 100644
--- a/doc/classes/HeightMapShape3D.xml
+++ b/doc/classes/HeightMapShape3D.xml
@@ -6,6 +6,19 @@
<description>
A 3D heightmap shape, intended for use in physics. Usually used to provide a shape for a [CollisionShape3D]. This is useful for terrain, but it is limited as overhangs (such as caves) cannot be stored. Holes in a [HeightMapShape3D] are created by assigning very low values to points in the desired area.
[b]Performance:[/b] [HeightMapShape3D] is faster to check collisions against than [ConcavePolygonShape3D], but it is significantly slower than primitive shapes like [BoxShape3D].
+ A heightmap collision shape can also be build by using an [Image] reference:
+ [codeblocks]
+ [gdscript]
+ var heightmap_texture: Texture = ResourceLoader.load("res://heightmap_image.exr")
+ var heightmap_image: Image = heightmap_texture.get_image()
+ heightmap_image.convert(Image.FORMAT_RF)
+
+ var height_min: float = 0.0
+ var height_max: float = 10.0
+
+ update_map_data_from_image(heightmap_image, height_min, height_max)
+ [/gdscript]
+ [/codeblocks]
</description>
<tutorials>
</tutorials>
@@ -22,6 +35,17 @@
Returns the smallest height value found in [member map_data]. Recalculates only when [member map_data] changes.
</description>
</method>
+ <method name="update_map_data_from_image">
+ <return type="void" />
+ <param index="0" name="image" type="Image" />
+ <param index="1" name="height_min" type="float" />
+ <param index="2" name="height_max" type="float" />
+ <description>
+ Updates [member map_data] with data read from an [Image] reference. Automatically resizes heightmap [member map_width] and [member map_depth] to fit the full image width and height.
+ The image needs to be in either [constant Image.FORMAT_RF] (32 bit), [constant Image.FORMAT_RH] (16 bit), or [constant Image.FORMAT_R8] (8 bit).
+ Each image pixel is read in as a float on the range from [code]0.0[/code] (black pixel) to [code]1.0[/code] (white pixel). This range value gets remapped to [param height_min] and [param height_max] to form the final height value.
+ </description>
+ </method>
</methods>
<members>
<member name="map_data" type="PackedFloat32Array" setter="set_map_data" getter="get_map_data" default="PackedFloat32Array(0, 0, 0, 0)">
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index e622a6bce3..119ecb7f0e 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -9,8 +9,8 @@
</description>
<tutorials>
<link title="Inputs documentation index">$DOCS_URL/tutorials/inputs/index.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="action_press">
diff --git a/doc/classes/InputEvent.xml b/doc/classes/InputEvent.xml
index 391d060fc3..6f2e6aac20 100644
--- a/doc/classes/InputEvent.xml
+++ b/doc/classes/InputEvent.xml
@@ -9,8 +9,8 @@
<tutorials>
<link title="Using InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="accumulate">
@@ -117,7 +117,12 @@
<members>
<member name="device" type="int" setter="set_device" getter="get_device" default="0">
The event's device ID.
- [b]Note:[/b] This device ID will always be [code]-1[/code] for emulated mouse input from a touchscreen. This can be used to distinguish emulated mouse input from physical mouse input.
+ [b]Note:[/b] [member device] can be negative for special use cases that don't refer to devices physically present on the system. See [constant DEVICE_ID_EMULATION].
</member>
</members>
+ <constants>
+ <constant name="DEVICE_ID_EMULATION" value="-1">
+ Device ID used for emulated mouse input from a touchscreen, or for emulated touch input from a mouse. This can be used to distinguish emulated mouse input from physical mouse input, or emulated touch input from physical touch input.
+ </constant>
+ </constants>
</class>
diff --git a/doc/classes/InputEventAction.xml b/doc/classes/InputEventAction.xml
index 1fe4cfcd79..4715f9fe95 100644
--- a/doc/classes/InputEventAction.xml
+++ b/doc/classes/InputEventAction.xml
@@ -9,8 +9,8 @@
</description>
<tutorials>
<link title="Using InputEvent: Actions">$DOCS_URL/tutorials/inputs/inputevent.html#actions</link>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="action" type="StringName" setter="set_action" getter="get_action" default="&amp;&quot;&quot;">
diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml
index 7b6fc3f216..dc4872ba03 100644
--- a/doc/classes/InputEventKey.xml
+++ b/doc/classes/InputEventKey.xml
@@ -66,7 +66,7 @@
Represents the localized label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants or any valid Unicode character.
For keyboard layouts with a single label on the key, it is equivalent to [member keycode].
To get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.key_label)[/code] where [code]event[/code] is the [InputEventKey].
- [codeblock]
+ [codeblock lang=text]
+-----+ +-----+
| Q | | Q | - "Q" - keycode
| Й | | ض | - "Й" and "ض" - key_label
@@ -76,7 +76,7 @@
<member name="keycode" type="int" setter="set_keycode" getter="get_keycode" enum="Key" default="0">
Latin label printed on the key in the current keyboard layout, which corresponds to one of the [enum Key] constants.
To get a human-readable representation of the [InputEventKey], use [code]OS.get_keycode_string(event.keycode)[/code] where [code]event[/code] is the [InputEventKey].
- [codeblock]
+ [codeblock lang=text]
+-----+ +-----+
| Q | | Q | - "Q" - keycode
| Й | | ض | - "Й" and "ض" - key_label
diff --git a/doc/classes/InputEventMIDI.xml b/doc/classes/InputEventMIDI.xml
index 0f0b756651..4dcaf98747 100644
--- a/doc/classes/InputEventMIDI.xml
+++ b/doc/classes/InputEventMIDI.xml
@@ -37,13 +37,13 @@
public override void _Input(InputEvent inputEvent)
{
- if (inputEvent is InputEventMIDI midiEvent)
+ if (inputEvent is InputEventMidi midiEvent)
{
PrintMIDIInfo(midiEvent);
}
}
- private void PrintMIDIInfo(InputEventMIDI midiEvent)
+ private void PrintMIDIInfo(InputEventMidi midiEvent)
{
GD.Print(midiEvent);
GD.Print($"Channel {midiEvent.Channel}");
diff --git a/doc/classes/InputEventMouseMotion.xml b/doc/classes/InputEventMouseMotion.xml
index e6ec674975..98a0221fe8 100644
--- a/doc/classes/InputEventMouseMotion.xml
+++ b/doc/classes/InputEventMouseMotion.xml
@@ -10,7 +10,7 @@
<tutorials>
<link title="Using InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link>
<link title="Mouse and input coordinates">$DOCS_URL/tutorials/inputs/mouse_and_input_coordinates.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="pen_inverted" type="bool" setter="set_pen_inverted" getter="get_pen_inverted" default="false">
diff --git a/doc/classes/JSONRPC.xml b/doc/classes/JSONRPC.xml
index 348688f7f8..e5ee93cb93 100644
--- a/doc/classes/JSONRPC.xml
+++ b/doc/classes/JSONRPC.xml
@@ -79,15 +79,19 @@
</methods>
<constants>
<constant name="PARSE_ERROR" value="-32700" enum="ErrorCode">
+ The request could not be parsed as it was not valid by JSON standard ([method JSON.parse] failed).
</constant>
<constant name="INVALID_REQUEST" value="-32600" enum="ErrorCode">
+ A method call was requested but the request's format is not valid.
</constant>
<constant name="METHOD_NOT_FOUND" value="-32601" enum="ErrorCode">
A method call was requested but no function of that name existed in the JSONRPC subclass.
</constant>
<constant name="INVALID_PARAMS" value="-32602" enum="ErrorCode">
+ A method call was requested but the given method parameters are not valid. Not used by the built-in JSONRPC.
</constant>
<constant name="INTERNAL_ERROR" value="-32603" enum="ErrorCode">
+ An internal error occurred while processing the request. Not used by the built-in JSONRPC.
</constant>
</constants>
</class>
diff --git a/doc/classes/JavaClass.xml b/doc/classes/JavaClass.xml
index 541f23013d..ecfcaa8781 100644
--- a/doc/classes/JavaClass.xml
+++ b/doc/classes/JavaClass.xml
@@ -1,8 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="JavaClass" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Represents an object from the Java Native Interface.
</brief_description>
<description>
+ Represents an object from the Java Native Interface. It is returned from [method JavaClassWrapper.wrap].
+ [b]Note:[/b] This class only works on Android. For any other build, this class does nothing.
+ [b]Note:[/b] This class is not to be confused with [JavaScriptObject].
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/JavaClassWrapper.xml b/doc/classes/JavaClassWrapper.xml
index e197b1e97e..01c3392b04 100644
--- a/doc/classes/JavaClassWrapper.xml
+++ b/doc/classes/JavaClassWrapper.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="JavaClassWrapper" inherits="Object" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ Provides access to the Java Native Interface.
</brief_description>
<description>
+ The JavaClassWrapper singleton provides a way for the Godot application to send and receive data through the [url=https://developer.android.com/training/articles/perf-jni]Java Native Interface[/url] (JNI).
+ [b]Note:[/b] This singleton is only available in Android builds.
</description>
<tutorials>
</tutorials>
@@ -11,6 +14,8 @@
<return type="JavaClass" />
<param index="0" name="name" type="String" />
<description>
+ Wraps a class defined in Java, and returns it as a [JavaClass] [Object] type that Godot can interact with.
+ [b]Note:[/b] This method only works on Android. On every other platform, this method does nothing and returns an empty [JavaClass].
</description>
</method>
</methods>
diff --git a/doc/classes/Joint3D.xml b/doc/classes/Joint3D.xml
index 9e0b753701..ea0dda881a 100644
--- a/doc/classes/Joint3D.xml
+++ b/doc/classes/Joint3D.xml
@@ -7,7 +7,7 @@
Abstract base class for all joints in 3D physics. 3D joints bind together two physics bodies and apply a constraint.
</description>
<tutorials>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
</tutorials>
<methods>
<method name="get_rid" qualifiers="const">
diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml
index f39f5616f0..8acd05cbd1 100644
--- a/doc/classes/Label.xml
+++ b/doc/classes/Label.xml
@@ -7,7 +7,7 @@
A control for displaying plain text. It gives you control over the horizontal and vertical alignment and can wrap the text inside the node's bounding rectangle. It doesn't support bold, italics, or other rich text formatting. For that, use [RichTextLabel] instead.
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="get_character_bounds" qualifiers="const">
diff --git a/doc/classes/Light3D.xml b/doc/classes/Light3D.xml
index bffa20bf23..c1fc49cf9f 100644
--- a/doc/classes/Light3D.xml
+++ b/doc/classes/Light3D.xml
@@ -9,7 +9,7 @@
<tutorials>
<link title="3D lights and shadows">$DOCS_URL/tutorials/3d/lights_and_shadows.html</link>
<link title="Faking global illumination">$DOCS_URL/tutorials/3d/global_illumination/faking_global_illumination.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="get_correlated_color" qualifiers="const">
diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml
index 283d847a93..a553e79746 100644
--- a/doc/classes/Line2D.xml
+++ b/doc/classes/Line2D.xml
@@ -9,8 +9,8 @@
[b]Note:[/b] [Line2D] is drawn using a 2D mesh.
</description>
<tutorials>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<methods>
<method name="add_point">
diff --git a/doc/classes/Material.xml b/doc/classes/Material.xml
index 87fa3fd676..4a73bc2271 100644
--- a/doc/classes/Material.xml
+++ b/doc/classes/Material.xml
@@ -8,8 +8,8 @@
Importantly, you can inherit from [Material] to create your own custom material type in script or in GDExtension.
</description>
<tutorials>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="_can_do_next_pass" qualifiers="virtual const">
diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml
index 3f8ed91ad7..966e870940 100644
--- a/doc/classes/Mesh.xml
+++ b/doc/classes/Mesh.xml
@@ -7,10 +7,10 @@
Mesh is a type of [Resource] that contains vertex array-based geometry, divided in [i]surfaces[/i]. Each surface contains a completely separate array and a material used to draw it. Design wise, a mesh with multiple surfaces is preferred to a single surface, because objects created in 3D editing software commonly contain multiple materials.
</description>
<tutorials>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="_get_aabb" qualifiers="virtual const">
diff --git a/doc/classes/MeshInstance3D.xml b/doc/classes/MeshInstance3D.xml
index 4645435f55..e5187cf7a1 100644
--- a/doc/classes/MeshInstance3D.xml
+++ b/doc/classes/MeshInstance3D.xml
@@ -7,10 +7,10 @@
MeshInstance3D is a node that takes a [Mesh] resource and adds it to the current scenario by creating an instance of it. This is the class most often used render 3D geometry and can be used to instance a single [Mesh] in many places. This allows reusing geometry, which can save on resources. When a [Mesh] has to be instantiated more than thousands of times at close proximity, consider using a [MultiMesh] in a [MultiMeshInstance3D] instead.
</description>
<tutorials>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="create_convex_collision">
@@ -70,6 +70,12 @@
Returns the value of the blend shape at the given [param blend_shape_idx]. Returns [code]0.0[/code] and produces an error if [member mesh] is [code]null[/code] or doesn't have a blend shape at that index.
</description>
</method>
+ <method name="get_skin_reference" qualifiers="const">
+ <return type="SkinReference" />
+ <description>
+ Returns the internal [SkinReference] containing the skeleton's [RID] attached to this RID. See also [method Resource.get_rid], [method SkinReference.get_skeleton], and [method RenderingServer.instance_attach_skeleton].
+ </description>
+ </method>
<method name="get_surface_override_material" qualifiers="const">
<return type="Material" />
<param index="0" name="surface" type="int" />
diff --git a/doc/classes/MeshLibrary.xml b/doc/classes/MeshLibrary.xml
index f7099e569f..c5e8d8cbe7 100644
--- a/doc/classes/MeshLibrary.xml
+++ b/doc/classes/MeshLibrary.xml
@@ -7,8 +7,8 @@
A library of meshes. Contains a list of [Mesh] resources, each with a name and ID. Each item can also include collision and navigation shapes. This resource is used in [GridMap].
</description>
<tutorials>
- <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/126</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
+ <link title="3D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2739</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
</tutorials>
<methods>
<method name="clear">
diff --git a/doc/classes/MultiplayerPeer.xml b/doc/classes/MultiplayerPeer.xml
index 04fd282457..edb2c39e24 100644
--- a/doc/classes/MultiplayerPeer.xml
+++ b/doc/classes/MultiplayerPeer.xml
@@ -10,7 +10,6 @@
</description>
<tutorials>
<link title="High-level multiplayer">$DOCS_URL/tutorials/networking/high_level_multiplayer.html</link>
- <link title="WebRTC Signaling Demo">https://godotengine.org/asset-library/asset/537</link>
</tutorials>
<methods>
<method name="close">
diff --git a/doc/classes/NativeMenu.xml b/doc/classes/NativeMenu.xml
index cfe3f3f5c5..475874dee7 100644
--- a/doc/classes/NativeMenu.xml
+++ b/doc/classes/NativeMenu.xml
@@ -211,12 +211,21 @@
[b]Note:[/b] This method is implemented on macOS and Windows.
</description>
</method>
+ <method name="find_item_index_with_submenu" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="rid" type="RID" />
+ <param index="1" name="submenu_rid" type="RID" />
+ <description>
+ Returns the index of the item with the submenu specified by [param submenu_rid]. Indices are automatically assigned to each item by the engine, and cannot be set manually.
+ [b]Note:[/b] This method is implemented on macOS and Windows.
+ </description>
+ </method>
<method name="find_item_index_with_tag" qualifiers="const">
<return type="int" />
<param index="0" name="rid" type="RID" />
<param index="1" name="tag" type="Variant" />
<description>
- Returns the index of the item with the specified [param tag]. Index is automatically assigned to each item by the engine. Index can not be set manually.
+ Returns the index of the item with the specified [param tag]. Indices are automatically assigned to each item by the engine, and cannot be set manually.
[b]Note:[/b] This method is implemented on macOS and Windows.
</description>
</method>
@@ -225,7 +234,7 @@
<param index="0" name="rid" type="RID" />
<param index="1" name="text" type="String" />
<description>
- Returns the index of the item with the specified [param text]. Index is automatically assigned to each item by the engine. Index can not be set manually.
+ Returns the index of the item with the specified [param text]. Indices are automatically assigned to each item by the engine, and cannot be set manually.
[b]Note:[/b] This method is implemented on macOS and Windows.
</description>
</method>
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index 42ef354bc8..8be8a89543 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Using NavigationMeshes">$DOCS_URL/tutorials/navigation/navigation_using_navigationmeshes.html</link>
- <link title="3D Navmesh Demo">https://godotengine.org/asset-library/asset/124</link>
+ <link title="3D Navigation Demo">https://godotengine.org/asset-library/asset/2743</link>
</tutorials>
<methods>
<method name="add_polygon">
diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml
index 9c4e8169b0..eebdc817a7 100644
--- a/doc/classes/NavigationPolygon.xml
+++ b/doc/classes/NavigationPolygon.xml
@@ -43,8 +43,8 @@
[/codeblocks]
</description>
<tutorials>
- <link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link>
<link title="Using NavigationMeshes">$DOCS_URL/tutorials/navigation/navigation_using_navigationmeshes.html</link>
+ <link title="Navigation Polygon 2D Demo">https://godotengine.org/asset-library/asset/2722</link>
</tutorials>
<methods>
<method name="add_outline">
diff --git a/doc/classes/NavigationServer2D.xml b/doc/classes/NavigationServer2D.xml
index 91d69edf29..baef7dc02d 100644
--- a/doc/classes/NavigationServer2D.xml
+++ b/doc/classes/NavigationServer2D.xml
@@ -14,8 +14,8 @@
This server keeps tracks of any call and executes them during the sync phase. This means that you can request any change to the map, using any thread, without worrying.
</description>
<tutorials>
- <link title="2D Navigation Demo">https://godotengine.org/asset-library/asset/117</link>
<link title="Using NavigationServer">$DOCS_URL/tutorials/navigation/navigation_using_navigationservers.html</link>
+ <link title="Navigation Polygon 2D Demo">https://godotengine.org/asset-library/asset/2722</link>
</tutorials>
<methods>
<method name="agent_create">
diff --git a/doc/classes/NavigationServer3D.xml b/doc/classes/NavigationServer3D.xml
index 29d9f5424a..6be9d5165f 100644
--- a/doc/classes/NavigationServer3D.xml
+++ b/doc/classes/NavigationServer3D.xml
@@ -14,8 +14,8 @@
This server keeps tracks of any call and executes them during the sync phase. This means that you can request any change to the map, using any thread, without worrying.
</description>
<tutorials>
- <link title="3D Navmesh Demo">https://godotengine.org/asset-library/asset/124</link>
<link title="Using NavigationServer">$DOCS_URL/tutorials/navigation/navigation_using_navigationservers.html</link>
+ <link title="3D Navigation Demo">https://godotengine.org/asset-library/asset/2743</link>
</tutorials>
<methods>
<method name="agent_create">
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index b786b67933..aea4082dbe 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -100,7 +100,7 @@
<return type="void" />
<param index="0" name="event" type="InputEvent" />
<description>
- Called when an [InputEventKey] or [InputEventShortcut] hasn't been consumed by [method _input] or any GUI [Control] item. It is called before [method _unhandled_key_input] and [method _unhandled_input]. The input event propagates up through the node tree until a node consumes it.
+ Called when an [InputEventKey], [InputEventShortcut], or [InputEventJoypadButton] hasn't been consumed by [method _input] or any GUI [Control] item. It is called before [method _unhandled_key_input] and [method _unhandled_input]. The input event propagates up through the node tree until a node consumes it.
It is only called if shortcut processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_shortcut_input].
To consume the input event and stop it propagating further to other nodes, [method Viewport.set_input_as_handled] can be called.
This method can be used to handle shortcuts. For generic GUI events, use [method _input] instead. Gameplay events should usually be handled with either [method _unhandled_input] or [method _unhandled_key_input].
@@ -187,7 +187,7 @@
<param index="0" name="message" type="String" />
<param index="1" name="context" type="StringName" default="&quot;&quot;" />
<description>
- Translates a [param message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation.
+ Translates a [param message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation. Note that most [Control] nodes automatically translate their strings, so this method is mostly useful for formatted strings or custom drawn text.
This method works the same as [method Object.tr], with the addition of respecting the [member auto_translate_mode] state.
If [method Object.can_translate_messages] is [code]false[/code], or no translation is available, this method returns the [param message] without changes. See [method Object.set_message_translation].
For detailed examples, see [url=$DOCS_URL/tutorials/i18n/internationalizing_games.html]Internationalizing games[/url].
@@ -383,7 +383,7 @@
Fetches a node. The [NodePath] can either be a relative path (from this node), or an absolute path (from the [member SceneTree.root]) to a node. If [param path] does not point to a valid node, generates an error and returns [code]null[/code]. Attempts to access methods on the return value will result in an [i]"Attempt to call &lt;method&gt; on a null instance."[/i] error.
[b]Note:[/b] Fetching by absolute path only works when the node is inside the scene tree (see [method is_inside_tree]).
[b]Example:[/b] Assume this method is called from the Character node, inside the following tree:
- [codeblock]
+ [codeblock lang=text]
┖╴root
┠╴Character (you are here!)
┃ ┠╴Sword
@@ -514,8 +514,8 @@
<return type="String" />
<description>
Returns the tree as a [String]. Used mainly for debugging purposes. This version displays the path relative to the current node, and is good for copy/pasting into the [method get_node] function. It also can be used in game UI/UX.
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
TheGame
TheGame/Menu
TheGame/Menu/Label
@@ -529,8 +529,8 @@
<return type="String" />
<description>
Similar to [method get_tree_string], this returns the tree as a [String]. This version displays a more graphical representation similar to what is displayed in the Scene Dock. It is useful for inspecting larger trees.
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
┖╴TheGame
┠╴Menu
┃ ┠╴Label
@@ -619,6 +619,21 @@
[method request_ready] resets it back to [code]false[/code].
</description>
</method>
+ <method name="is_physics_interpolated" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if physics interpolation is enabled for this node (see [member physics_interpolation_mode]).
+ [b]Note:[/b] Interpolation will only be active if both the flag is set [b]and[/b] physics interpolation is enabled within the [SceneTree]. This can be tested using [method is_physics_interpolated_and_enabled].
+ </description>
+ </method>
+ <method name="is_physics_interpolated_and_enabled" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if physics interpolation is enabled (see [member physics_interpolation_mode]) [b]and[/b] enabled in the [SceneTree].
+ This is a convenience version of [method is_physics_interpolated] that also checks whether physics interpolation is enabled globally.
+ See [member SceneTree.physics_interpolation] and [member ProjectSettings.physics/common/physics_interpolation].
+ </description>
+ </method>
<method name="is_physics_processing" qualifiers="const">
<return type="bool" />
<description>
@@ -701,8 +716,8 @@
<return type="void" />
<description>
Prints the node and its children to the console, recursively. The node does not have to be inside the tree. This method outputs [NodePath]s relative to this node, and is good for copy/pasting into [method get_node]. See also [method print_tree_pretty].
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
.
Menu
Menu/Label
@@ -716,8 +731,8 @@
<return type="void" />
<description>
Prints the node and its children to the console, recursively. The node does not have to be inside the tree. Similar to [method print_tree], but the graphical representation looks like what is displayed in the editor's Scene dock. It is useful for inspecting larger trees.
- [b]Example output:[/b]
- [codeblock]
+ May print, for example:
+ [codeblock lang=text]
┖╴TheGame
┠╴Menu
┃ ┠╴Label
@@ -793,6 +808,15 @@
[b]Note:[/b] This method only affects the current node. If the node's children also need to request ready, this method needs to be called for each one of them. When the node and its children enter the tree again, the order of [method _ready] callbacks will be the same as normal.
</description>
</method>
+ <method name="reset_physics_interpolation">
+ <return type="void" />
+ <description>
+ When physics interpolation is active, moving a node to a radically different transform (such as placement within a level) can result in a visible glitch as the object is rendered moving from the old to new position over the physics tick.
+ That glitch can be prevented by calling this method, which temporarily disables interpolation until the physics tick is complete.
+ The notification [constant NOTIFICATION_RESET_PHYSICS_INTERPOLATION] will be received by the node and all children recursively.
+ [b]Note:[/b] This function should be called [b]after[/b] moving the node, rather than before.
+ </description>
+ </method>
<method name="rpc" qualifiers="vararg">
<return type="int" enum="Error" />
<param index="0" name="method" type="StringName" />
@@ -964,6 +988,10 @@
The owner of this node. The owner must be an ancestor of this node. When packing the owner node in a [PackedScene], all the nodes it owns are also saved with it.
[b]Note:[/b] In the editor, nodes not owned by the scene root are usually not displayed in the Scene dock, and will [b]not[/b] be saved. To prevent this, remember to set the owner after calling [method add_child]. See also (see [member unique_name_in_owner])
</member>
+ <member name="physics_interpolation_mode" type="int" setter="set_physics_interpolation_mode" getter="get_physics_interpolation_mode" enum="Node.PhysicsInterpolationMode" default="0">
+ Allows enabling or disabling physics interpolation per node, offering a finer grain of control than turning physics interpolation on and off globally. See [member ProjectSettings.physics/common/physics_interpolation] and [member SceneTree.physics_interpolation] for the global setting.
+ [b]Note:[/b] When teleporting a node to a distant position you should temporarily disable interpolation with [method Node.reset_physics_interpolation].
+ </member>
<member name="process_mode" type="int" setter="set_process_mode" getter="get_process_mode" enum="Node.ProcessMode" default="0">
The node's processing behavior (see [enum ProcessMode]). To check if the node can process in its current mode, use [method can_process].
</member>
@@ -1122,6 +1150,9 @@
<constant name="NOTIFICATION_ENABLED" value="29">
Notification received when the node is enabled again after being disabled. See [constant PROCESS_MODE_DISABLED].
</constant>
+ <constant name="NOTIFICATION_RESET_PHYSICS_INTERPOLATION" value="2001">
+ Notification received when [method reset_physics_interpolation] is called on the node or its ancestors.
+ </constant>
<constant name="NOTIFICATION_EDITOR_PRE_SAVE" value="9001">
Notification received right before the scene with the node is saved in the editor. This notification is only sent in the Godot editor and will not occur in exported projects.
</constant>
@@ -1170,7 +1201,15 @@
Implemented only on iOS.
</constant>
<constant name="NOTIFICATION_TRANSLATION_CHANGED" value="2010">
- Notification received when translations may have changed. Can be triggered by the user changing the locale. Can be used to respond to language changes, for example to change the UI strings on the fly. Useful when working with the built-in translation support, like [method Object.tr].
+ Notification received when translations may have changed. Can be triggered by the user changing the locale, changing [member auto_translate_mode] or when the node enters the scene tree. Can be used to respond to language changes, for example to change the UI strings on the fly. Useful when working with the built-in translation support, like [method Object.tr].
+ [b]Note:[/b] This notification is received alongside [constant NOTIFICATION_ENTER_TREE], so if you are instantiating a scene, the child nodes will not be initialized yet. You can use it to setup translations for this node, child nodes created from script, or if you want to access child nodes added in the editor, make sure the node is ready using [method is_node_ready].
+ [codeblock]
+ func _notification(what):
+ if what == NOTIFICATION_TRANSLATION_CHANGED:
+ if not is_node_ready():
+ await ready # Wait until ready signal.
+ $Label.text = atr("%d Bananas") % banana_counter
+ [/codeblock]
</constant>
<constant name="NOTIFICATION_WM_ABOUT" value="2011">
Notification received from the OS when a request for "About" information is sent.
@@ -1237,6 +1276,15 @@
<constant name="FLAG_PROCESS_THREAD_MESSAGES_ALL" value="3" enum="ProcessThreadMessages" is_bitfield="true">
Allows this node to process threaded messages created with [method call_deferred_thread_group] right before either [method _process] or [method _physics_process] are called.
</constant>
+ <constant name="PHYSICS_INTERPOLATION_MODE_INHERIT" value="0" enum="PhysicsInterpolationMode">
+ Inherits [member physics_interpolation_mode] from the node's parent. This is the default for any newly created node.
+ </constant>
+ <constant name="PHYSICS_INTERPOLATION_MODE_ON" value="1" enum="PhysicsInterpolationMode">
+ Enables physics interpolation for this node and for children set to [constant PHYSICS_INTERPOLATION_MODE_INHERIT]. This is the default for the root node.
+ </constant>
+ <constant name="PHYSICS_INTERPOLATION_MODE_OFF" value="2" enum="PhysicsInterpolationMode">
+ Disables physics interpolation for this node and for children set to [constant PHYSICS_INTERPOLATION_MODE_INHERIT].
+ </constant>
<constant name="DUPLICATE_SIGNALS" value="1" enum="DuplicateFlags">
Duplicate the node's signal connections.
</constant>
diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml
index 6e0799e796..f294b64576 100644
--- a/doc/classes/NodePath.xml
+++ b/doc/classes/NodePath.xml
@@ -34,7 +34,7 @@
[b]Note:[/b] In a boolean context, a [NodePath] will evaluate to [code]false[/code] if it is empty ([code]NodePath("")[/code]). Otherwise, a [NodePath] will always evaluate to [code]true[/code].
</description>
<tutorials>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
</tutorials>
<constructors>
<constructor name="NodePath">
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index be7394a30b..de39901133 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] In Godot 4, [OS] functions related to window management, clipboard, and TTS were moved to the [DisplayServer] singleton (and the [Window] class). Functions related to time were removed and are only available in the [Time] class.
</description>
<tutorials>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="alert">
@@ -50,9 +50,9 @@
<param index="1" name="arguments" type="PackedStringArray" />
<param index="2" name="open_console" type="bool" default="false" />
<description>
- Creates a new process that runs independently of Godot. It will not terminate when Godot terminates. The path specified in [param path] must exist and be executable file or macOS .app bundle. Platform path resolution will be used. The [param arguments] are used in the given order and separated by a space.
+ Creates a new process that runs independently of Godot. It will not terminate when Godot terminates. The path specified in [param path] must exist and be an executable file or macOS [code].app[/code] bundle. The path is resolved based on the current platform. The [param arguments] are used in the given order and separated by a space.
On Windows, if [param open_console] is [code]true[/code] and the process is a console app, a new terminal window will be opened.
- If the process is successfully created, this method returns its process ID, which you can use to monitor the process (and potentially terminate it with [method kill]). Otherwise this method returns [code]-1[/code].
+ If the process is successfully created, this method returns its process ID, which you can use to monitor the process (and potentially terminate it with [method kill]). Otherwise, this method returns [code]-1[/code].
For example, running another instance of the project:
[codeblocks]
[gdscript]
@@ -63,7 +63,7 @@
[/csharp]
[/codeblocks]
See [method execute] if you wish to run an external command and retrieve the results.
- [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows.
+ [b]Note:[/b] This method is implemented on Android, Linux, macOS, and Windows.
[b]Note:[/b] On macOS, sandboxed applications are limited to run only embedded helper executables, specified during export or system .app bundle, system .app bundles will ignore arguments.
</description>
</method>
@@ -120,7 +120,7 @@
OS.Execute("CMD.exe", new string[] {"/C", "cd %TEMP% &amp;&amp; dir"}, output);
[/csharp]
[/codeblocks]
- [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows.
+ [b]Note:[/b] This method is implemented on Android, Linux, macOS, and Windows.
[b]Note:[/b] To execute a Windows command interpreter built-in command, specify [code]cmd.exe[/code] in [param path], [code]/c[/code] as the first argument, and the desired command as the second argument.
[b]Note:[/b] To execute a PowerShell built-in command, specify [code]powershell.exe[/code] in [param path], [code]-Command[/code] as the first argument, and the desired command as the second argument.
[b]Note:[/b] To execute a Unix shell built-in command, specify shell executable name in [param path], [code]-c[/code] as the first argument, and the desired command as the second argument.
@@ -128,6 +128,23 @@
[b]Note:[/b] On Android, system commands such as [code]dumpsys[/code] can only be run on a rooted device.
</description>
</method>
+ <method name="execute_with_pipe">
+ <return type="Dictionary" />
+ <param index="0" name="path" type="String" />
+ <param index="1" name="arguments" type="PackedStringArray" />
+ <description>
+ Creates a new process that runs independently of Godot with redirected IO. It will not terminate when Godot terminates. The path specified in [param path] must exist and be an executable file or macOS [code].app[/code] bundle. The path is resolved based on the current platform. The [param arguments] are used in the given order and separated by a space.
+ If the process cannot be created, this method returns an empty [Dictionary]. Otherwise, this method returns a [Dictionary] with the following keys:
+ - [code]"stdio"[/code] - [FileAccess] to access the process stdin and stdout pipes (read/write).
+ - [code]"stderr"[/code] - [FileAccess] to access the process stderr pipe (read only).
+ - [code]"pid"[/code] - Process ID as an [int], which you can use to monitor the process (and potentially terminate it with [method kill]).
+ [b]Note:[/b] This method is implemented on Android, Linux, macOS, and Windows.
+ [b]Note:[/b] To execute a Windows command interpreter built-in command, specify [code]cmd.exe[/code] in [param path], [code]/c[/code] as the first argument, and the desired command as the second argument.
+ [b]Note:[/b] To execute a PowerShell built-in command, specify [code]powershell.exe[/code] in [param path], [code]-Command[/code] as the first argument, and the desired command as the second argument.
+ [b]Note:[/b] To execute a Unix shell built-in command, specify shell executable name in [param path], [code]-c[/code] as the first argument, and the desired command as the second argument.
+ [b]Note:[/b] On macOS, sandboxed applications are limited to run only embedded helper executables, specified during export or system .app bundle, system .app bundles will ignore arguments.
+ </description>
+ </method>
<method name="find_keycode_from_string" qualifiers="const">
<return type="int" enum="Key" />
<param index="0" name="string" type="String" />
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index 85b9cf16f2..c508591093 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -556,7 +556,7 @@
While all options have the same outcome ([code]button[/code]'s [signal BaseButton.button_down] signal will be connected to [code]_on_button_down[/code]), [b]option 3[/b] offers the best validation: it will print a compile-time error if either the [code]button_down[/code] [Signal] or the [code]_on_button_down[/code] [Callable] are not defined. On the other hand, [b]option 2[/b] only relies on string names and will only be able to validate either names at runtime: it will print a runtime error if [code]"button_down"[/code] doesn't correspond to a signal, or if [code]"_on_button_down"[/code] is not a registered method in the object [code]self[/code]. The main reason for using options 1, 2, or 4 would be if you actually need to use strings (e.g. to connect signals programmatically based on strings read from a configuration file). Otherwise, option 3 is the recommended (and fastest) method.
[b]Binding and passing parameters:[/b]
The syntax to bind parameters is through [method Callable.bind], which returns a copy of the [Callable] with its parameters bound.
- When calling [method emit_signal], the signal parameters can be also passed. The examples below show the relationship between these signal parameters and bound parameters.
+ When calling [method emit_signal] or [method Signal.emit], the signal parameters can be also passed. The examples below show the relationship between these signal parameters and bound parameters.
[codeblocks]
[gdscript]
func _ready():
@@ -566,7 +566,7 @@
player.hit.connect(_on_player_hit.bind("sword", 100))
# Parameters added when emitting the signal are passed first.
- player.emit_signal("hit", "Dark lord", 5)
+ player.hit.emit("Dark lord", 5)
# We pass two arguments when emitting (`hit_by`, `level`),
# and bind two more arguments when connecting (`weapon_type`, `damage`).
@@ -1024,7 +1024,7 @@
<param index="0" name="message" type="StringName" />
<param index="1" name="context" type="StringName" default="&amp;&quot;&quot;" />
<description>
- Translates a [param message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation.
+ Translates a [param message], using the translation catalogs configured in the Project Settings. Further [param context] can be specified to help with the translation. Note that most [Control] nodes automatically translate their strings, so this method is mostly useful for formatted strings or custom drawn text.
If [method can_translate_messages] is [code]false[/code], or no translation is available, this method returns the [param message] without changes. See [method set_message_translation].
For detailed examples, see [url=$DOCS_URL/tutorials/i18n/internationalizing_games.html]Internationalizing games[/url].
</description>
diff --git a/doc/classes/OccluderPolygon2D.xml b/doc/classes/OccluderPolygon2D.xml
index a78375ad01..36e1540b39 100644
--- a/doc/classes/OccluderPolygon2D.xml
+++ b/doc/classes/OccluderPolygon2D.xml
@@ -17,7 +17,6 @@
</member>
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
A [Vector2] array with the index for polygon's vertices positions.
- [b]Note:[/b] The returned value is a copy of the underlying array, rather than a reference.
</member>
</members>
<constants>
diff --git a/doc/classes/PCKPacker.xml b/doc/classes/PCKPacker.xml
index 2627c8b7d3..494e9966ac 100644
--- a/doc/classes/PCKPacker.xml
+++ b/doc/classes/PCKPacker.xml
@@ -13,7 +13,7 @@
packer.flush()
[/gdscript]
[csharp]
- var packer = new PCKPacker();
+ var packer = new PckPacker();
packer.PckStart("test.pck");
packer.AddFile("res://text.txt", "text.txt");
packer.Flush();
diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml
index 0c1532f61a..e179c111a2 100644
--- a/doc/classes/PackedByteArray.xml
+++ b/doc/classes/PackedByteArray.xml
@@ -6,6 +6,7 @@
<description>
An array specifically designed to hold bytes. Packs data tightly, so it saves memory for large array sizes.
[PackedByteArray] also provides methods to encode/decode various types to/from bytes. The way values are encoded is an implementation detail and shouldn't be relied upon when interacting with external apps.
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedColorArray.xml b/doc/classes/PackedColorArray.xml
index ad96ba2490..57295cb1e3 100644
--- a/doc/classes/PackedColorArray.xml
+++ b/doc/classes/PackedColorArray.xml
@@ -5,6 +5,8 @@
</brief_description>
<description>
An array specifically designed to hold [Color]. Packs data tightly, so it saves memory for large array sizes.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedColorArray] versus [code]Array[Color][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedFloat32Array.xml b/doc/classes/PackedFloat32Array.xml
index 6f1ecacca4..2db1386fd0 100644
--- a/doc/classes/PackedFloat32Array.xml
+++ b/doc/classes/PackedFloat32Array.xml
@@ -6,6 +6,7 @@
<description>
An array specifically designed to hold 32-bit floating-point values (float). Packs data tightly, so it saves memory for large array sizes.
If you need to pack 64-bit floats tightly, see [PackedFloat64Array].
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedFloat64Array.xml b/doc/classes/PackedFloat64Array.xml
index aef5ab90ac..0bcee918ed 100644
--- a/doc/classes/PackedFloat64Array.xml
+++ b/doc/classes/PackedFloat64Array.xml
@@ -6,6 +6,8 @@
<description>
An array specifically designed to hold 64-bit floating-point values (double). Packs data tightly, so it saves memory for large array sizes.
If you only need to pack 32-bit floats tightly, see [PackedFloat32Array] for a more memory-friendly alternative.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedFloat64Array] versus [code]Array[float][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedInt32Array.xml b/doc/classes/PackedInt32Array.xml
index e6396e2a93..93b2ae7394 100644
--- a/doc/classes/PackedInt32Array.xml
+++ b/doc/classes/PackedInt32Array.xml
@@ -6,6 +6,7 @@
<description>
An array specifically designed to hold 32-bit integer values. Packs data tightly, so it saves memory for large array sizes.
[b]Note:[/b] This type stores signed 32-bit integers, which means it can take values in the interval [code][-2^31, 2^31 - 1][/code], i.e. [code][-2147483648, 2147483647][/code]. Exceeding those bounds will wrap around. In comparison, [int] uses signed 64-bit integers which can hold much larger values. If you need to pack 64-bit integers tightly, see [PackedInt64Array].
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedInt64Array.xml b/doc/classes/PackedInt64Array.xml
index 55024341c1..3d34165915 100644
--- a/doc/classes/PackedInt64Array.xml
+++ b/doc/classes/PackedInt64Array.xml
@@ -6,6 +6,8 @@
<description>
An array specifically designed to hold 64-bit integer values. Packs data tightly, so it saves memory for large array sizes.
[b]Note:[/b] This type stores signed 64-bit integers, which means it can take values in the interval [code][-2^63, 2^63 - 1][/code], i.e. [code][-9223372036854775808, 9223372036854775807][/code]. Exceeding those bounds will wrap around. If you only need to pack 32-bit integers tightly, see [PackedInt32Array] for a more memory-friendly alternative.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedInt32Array] versus [code]Array[int][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml
index 9324f99535..579b4c5b9f 100644
--- a/doc/classes/PackedScene.xml
+++ b/doc/classes/PackedScene.xml
@@ -73,7 +73,7 @@
[/codeblocks]
</description>
<tutorials>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
</tutorials>
<methods>
<method name="can_instantiate" qualifiers="const">
diff --git a/doc/classes/PackedStringArray.xml b/doc/classes/PackedStringArray.xml
index f1b02272f3..621831c7a3 100644
--- a/doc/classes/PackedStringArray.xml
+++ b/doc/classes/PackedStringArray.xml
@@ -11,9 +11,11 @@
var string = " ".join(string_array)
print(string) # "hello world"
[/codeblock]
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedStringArray] versus [code]Array[String][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<constructors>
<constructor name="PackedStringArray">
diff --git a/doc/classes/PackedVector2Array.xml b/doc/classes/PackedVector2Array.xml
index c73fea9114..14a3816353 100644
--- a/doc/classes/PackedVector2Array.xml
+++ b/doc/classes/PackedVector2Array.xml
@@ -5,9 +5,11 @@
</brief_description>
<description>
An array specifically designed to hold [Vector2]. Packs data tightly, so it saves memory for large array sizes.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedVector3Array] versus [code]Array[Vector2][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
- <link title="2D Navigation Astar Demo">https://godotengine.org/asset-library/asset/519</link>
+ <link title="Grid-based Navigation with AStarGrid2D Demo">https://godotengine.org/asset-library/asset/2723</link>
</tutorials>
<constructors>
<constructor name="PackedVector2Array">
diff --git a/doc/classes/PackedVector3Array.xml b/doc/classes/PackedVector3Array.xml
index 89f258eaea..49220c6fd6 100644
--- a/doc/classes/PackedVector3Array.xml
+++ b/doc/classes/PackedVector3Array.xml
@@ -5,6 +5,8 @@
</brief_description>
<description>
An array specifically designed to hold [Vector3]. Packs data tightly, so it saves memory for large array sizes.
+ [b]Differences between packed arrays, typed arrays, and untyped arrays:[/b] Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. [PackedVector3Array] versus [code]Array[Vector3][/code]). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as [method Array.map]. Typed arrays are in turn faster to iterate on and modify than untyped arrays.
+ [b]Note:[/b] Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate]. This is [i]not[/i] the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will [i]not[/i] affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml
index 41457761fd..12d3178797 100644
--- a/doc/classes/PacketPeerUDP.xml
+++ b/doc/classes/PacketPeerUDP.xml
@@ -121,7 +121,7 @@
return
[/gdscript]
[csharp]
- var socket = new PacketPeerUDP();
+ var socket = new PacketPeerUdp();
// Server
socket.SetDestAddress("127.0.0.1", 789);
socket.PutPacket("Time to stop".ToAsciiBuffer());
diff --git a/doc/classes/Panel.xml b/doc/classes/Panel.xml
index db1fa1ccda..993c383c70 100644
--- a/doc/classes/Panel.xml
+++ b/doc/classes/Panel.xml
@@ -7,9 +7,8 @@
[Panel] is a GUI control that displays a [StyleBox]. See also [PanelContainer].
</description>
<tutorials>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
- <link title="2D Finite State Machine Demo">https://godotengine.org/asset-library/asset/516</link>
- <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
+ <link title="Hierarchical Finite State Machine Demo">https://godotengine.org/asset-library/asset/2714</link>
</tutorials>
<theme_items>
<theme_item name="panel" data_type="style" type="StyleBox">
diff --git a/doc/classes/PanelContainer.xml b/doc/classes/PanelContainer.xml
index c6b3604cc4..c2972abc14 100644
--- a/doc/classes/PanelContainer.xml
+++ b/doc/classes/PanelContainer.xml
@@ -8,7 +8,7 @@
</description>
<tutorials>
<link title="Using Containers">$DOCS_URL/tutorials/ui/gui_containers.html</link>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
</tutorials>
<members>
<member name="mouse_filter" type="int" setter="set_mouse_filter" getter="get_mouse_filter" overrides="Control" enum="Control.MouseFilter" default="0" />
diff --git a/doc/classes/Parallax2D.xml b/doc/classes/Parallax2D.xml
index 6db29b7a33..472aeb0bd3 100644
--- a/doc/classes/Parallax2D.xml
+++ b/doc/classes/Parallax2D.xml
@@ -25,6 +25,7 @@
<member name="limit_end" type="Vector2" setter="set_limit_end" getter="get_limit_end" default="Vector2(1e+07, 1e+07)">
Bottom-right limits for scrolling to end. If the camera is outside of this limit, the [Parallax2D] will stop scrolling. Must be higher than [member limit_begin] and the viewport size combined to work.
</member>
+ <member name="physics_interpolation_mode" type="int" setter="set_physics_interpolation_mode" getter="get_physics_interpolation_mode" overrides="Node" enum="Node.PhysicsInterpolationMode" default="2" />
<member name="repeat_size" type="Vector2" setter="set_repeat_size" getter="get_repeat_size" default="Vector2(0, 0)">
Repeats the [Texture2D] of each of this node's children and offsets them by this value. When scrolling, the node's position loops, giving the illusion of an infinite scrolling background if the values are larger than the screen size. If an axis is set to [code]0[/code], the [Texture2D] will not be repeated.
</member>
@@ -40,7 +41,7 @@
</member>
<member name="scroll_scale" type="Vector2" setter="set_scroll_scale" getter="get_scroll_scale" default="Vector2(1, 1)">
Multiplier to the final [Parallax2D]'s offset. Can be used to simulate distance from the camera.
- For example, a value of [code]1[/code] scrolls at the same speed as the camera. A value greater than [code]1[/code] scrolls faster, making objects appear closer. Less than [code]1[/code] scrolls slower, making object appear closer and a value of [code]0[/code] stops the objects completely.
+ For example, a value of [code]1[/code] scrolls at the same speed as the camera. A value greater than [code]1[/code] scrolls faster, making objects appear closer. Less than [code]1[/code] scrolls slower, making objects appear further, and a value of [code]0[/code] stops the objects completely.
</member>
</members>
</class>
diff --git a/doc/classes/ParallaxLayer.xml b/doc/classes/ParallaxLayer.xml
index fb92c9d85f..12482d6f66 100644
--- a/doc/classes/ParallaxLayer.xml
+++ b/doc/classes/ParallaxLayer.xml
@@ -23,5 +23,6 @@
<member name="motion_scale" type="Vector2" setter="set_motion_scale" getter="get_motion_scale" default="Vector2(1, 1)">
Multiplies the ParallaxLayer's motion. If an axis is set to [code]0[/code], it will not scroll.
</member>
+ <member name="physics_interpolation_mode" type="int" setter="set_physics_interpolation_mode" getter="get_physics_interpolation_mode" overrides="Node" enum="Node.PhysicsInterpolationMode" default="2" />
</members>
</class>
diff --git a/doc/classes/PhysicalBone3D.xml b/doc/classes/PhysicalBone3D.xml
index c3b202e0a5..bce1a80526 100644
--- a/doc/classes/PhysicalBone3D.xml
+++ b/doc/classes/PhysicalBone3D.xml
@@ -13,7 +13,7 @@
<return type="void" />
<param index="0" name="state" type="PhysicsDirectBodyState3D" />
<description>
- Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it works in addition to the usual physics behavior, but the [member custom_integrator] property allows you to disable the default behavior and do fully custom force integration for a body.
+ Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.
</description>
</method>
<method name="apply_central_impulse">
@@ -67,7 +67,8 @@
If [code]true[/code], the body is deactivated when there is no movement, so it will not take part in the simulation until it is awakened by an external force.
</member>
<member name="custom_integrator" type="bool" setter="set_use_custom_integrator" getter="is_using_custom_integrator" default="false">
- If [code]true[/code], internal force integration will be disabled (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined.
+ If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.
+ Setting this property will call the method [method PhysicsServer3D.body_set_omit_force_integration] internally.
</member>
<member name="friction" type="float" setter="set_friction" getter="get_friction" default="1.0">
The body's friction, from [code]0[/code] (frictionless) to [code]1[/code] (max friction).
diff --git a/doc/classes/PhysicalBoneSimulator3D.xml b/doc/classes/PhysicalBoneSimulator3D.xml
new file mode 100644
index 0000000000..149993e1e2
--- /dev/null
+++ b/doc/classes/PhysicalBoneSimulator3D.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="PhysicalBoneSimulator3D" inherits="SkeletonModifier3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Node that can be the parent of [PhysicalBone3D] and can apply the simulation results to [Skeleton3D].
+ </brief_description>
+ <description>
+ Node that can be the parent of [PhysicalBone3D] and can apply the simulation results to [Skeleton3D].
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="is_simulating_physics" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns a boolean that indicates whether the [PhysicalBoneSimulator3D] is running and simulating.
+ </description>
+ </method>
+ <method name="physical_bones_add_collision_exception">
+ <return type="void" />
+ <param index="0" name="exception" type="RID" />
+ <description>
+ Adds a collision exception to the physical bone.
+ Works just like the [RigidBody3D] node.
+ </description>
+ </method>
+ <method name="physical_bones_remove_collision_exception">
+ <return type="void" />
+ <param index="0" name="exception" type="RID" />
+ <description>
+ Removes a collision exception to the physical bone.
+ Works just like the [RigidBody3D] node.
+ </description>
+ </method>
+ <method name="physical_bones_start_simulation">
+ <return type="void" />
+ <param index="0" name="bones" type="StringName[]" default="[]" />
+ <description>
+ Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and reacting to the physics world.
+ Optionally, a list of bone names can be passed-in, allowing only the passed-in bones to be simulated.
+ </description>
+ </method>
+ <method name="physical_bones_stop_simulation">
+ <return type="void" />
+ <description>
+ Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating.
+ </description>
+ </method>
+ </methods>
+</class>
diff --git a/doc/classes/PhysicsDirectBodyState2D.xml b/doc/classes/PhysicsDirectBodyState2D.xml
index 7051663a78..d60cc1ee6b 100644
--- a/doc/classes/PhysicsDirectBodyState2D.xml
+++ b/doc/classes/PhysicsDirectBodyState2D.xml
@@ -202,7 +202,7 @@
<method name="integrate_forces">
<return type="void" />
<description>
- Calls the built-in force integration code.
+ Updates the body's linear and angular velocity by applying gravity and damping for the equivalent of one physics tick.
</description>
</method>
<method name="set_constant_force">
diff --git a/doc/classes/PhysicsDirectBodyState2DExtension.xml b/doc/classes/PhysicsDirectBodyState2DExtension.xml
index 04612b461e..932c1c8352 100644
--- a/doc/classes/PhysicsDirectBodyState2DExtension.xml
+++ b/doc/classes/PhysicsDirectBodyState2DExtension.xml
@@ -14,6 +14,7 @@
<return type="void" />
<param index="0" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.add_constant_central_force].
</description>
</method>
<method name="_add_constant_force" qualifiers="virtual">
@@ -21,24 +22,28 @@
<param index="0" name="force" type="Vector2" />
<param index="1" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.add_constant_force].
</description>
</method>
<method name="_add_constant_torque" qualifiers="virtual">
<return type="void" />
<param index="0" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.add_constant_torque].
</description>
</method>
<method name="_apply_central_force" qualifiers="virtual">
<return type="void" />
<param index="0" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_central_force].
</description>
</method>
<method name="_apply_central_impulse" qualifiers="virtual">
<return type="void" />
<param index="0" name="impulse" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_central_impulse].
</description>
</method>
<method name="_apply_force" qualifiers="virtual">
@@ -46,6 +51,7 @@
<param index="0" name="force" type="Vector2" />
<param index="1" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_force].
</description>
</method>
<method name="_apply_impulse" qualifiers="virtual">
@@ -53,211 +59,249 @@
<param index="0" name="impulse" type="Vector2" />
<param index="1" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_impulse].
</description>
</method>
<method name="_apply_torque" qualifiers="virtual">
<return type="void" />
<param index="0" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_torque].
</description>
</method>
<method name="_apply_torque_impulse" qualifiers="virtual">
<return type="void" />
<param index="0" name="impulse" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.apply_torque_impulse].
</description>
</method>
<method name="_get_angular_velocity" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective getter.
</description>
</method>
<method name="_get_center_of_mass" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass] and its respective getter.
</description>
</method>
<method name="_get_center_of_mass_local" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.center_of_mass_local] and its respective getter.
</description>
</method>
<method name="_get_constant_force" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_constant_force].
</description>
</method>
<method name="_get_constant_torque" qualifiers="virtual const">
<return type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_constant_torque].
</description>
</method>
<method name="_get_contact_collider" qualifiers="virtual const">
<return type="RID" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider].
</description>
</method>
<method name="_get_contact_collider_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_id].
</description>
</method>
<method name="_get_contact_collider_object" qualifiers="virtual const">
<return type="Object" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_object].
</description>
</method>
<method name="_get_contact_collider_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_position].
</description>
</method>
<method name="_get_contact_collider_shape" qualifiers="virtual const">
<return type="int" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_shape].
</description>
</method>
<method name="_get_contact_collider_velocity_at_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_collider_velocity_at_position].
</description>
</method>
<method name="_get_contact_count" qualifiers="virtual const">
<return type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_count].
</description>
</method>
<method name="_get_contact_impulse" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_impulse].
</description>
</method>
<method name="_get_contact_local_normal" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_normal].
</description>
</method>
<method name="_get_contact_local_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_position].
</description>
</method>
<method name="_get_contact_local_shape" qualifiers="virtual const">
<return type="int" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_shape].
</description>
</method>
<method name="_get_contact_local_velocity_at_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="contact_idx" type="int" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_contact_local_velocity_at_position].
</description>
</method>
<method name="_get_inverse_inertia" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_inertia] and its respective getter.
</description>
</method>
<method name="_get_inverse_mass" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.inverse_mass] and its respective getter.
</description>
</method>
<method name="_get_linear_velocity" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective getter.
</description>
</method>
<method name="_get_space_state" qualifiers="virtual">
<return type="PhysicsDirectSpaceState2D" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_space_state].
</description>
</method>
<method name="_get_step" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.step] and its respective getter.
</description>
</method>
<method name="_get_total_angular_damp" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.total_angular_damp] and its respective getter.
</description>
</method>
<method name="_get_total_gravity" qualifiers="virtual const">
<return type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.total_gravity] and its respective getter.
</description>
</method>
<method name="_get_total_linear_damp" qualifiers="virtual const">
<return type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.total_linear_damp] and its respective getter.
</description>
</method>
<method name="_get_transform" qualifiers="virtual const">
<return type="Transform2D" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective getter.
</description>
</method>
<method name="_get_velocity_at_local_position" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="local_position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.get_velocity_at_local_position].
</description>
</method>
<method name="_integrate_forces" qualifiers="virtual">
<return type="void" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.integrate_forces].
</description>
</method>
<method name="_is_sleeping" qualifiers="virtual const">
<return type="bool" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective getter.
</description>
</method>
<method name="_set_angular_velocity" qualifiers="virtual">
<return type="void" />
<param index="0" name="velocity" type="float" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.angular_velocity] and its respective setter.
</description>
</method>
<method name="_set_constant_force" qualifiers="virtual">
<return type="void" />
<param index="0" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.set_constant_force].
</description>
</method>
<method name="_set_constant_torque" qualifiers="virtual">
<return type="void" />
<param index="0" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsDirectBodyState2D.set_constant_torque].
</description>
</method>
<method name="_set_linear_velocity" qualifiers="virtual">
<return type="void" />
<param index="0" name="velocity" type="Vector2" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.linear_velocity] and its respective setter.
</description>
</method>
<method name="_set_sleep_state" qualifiers="virtual">
<return type="void" />
<param index="0" name="enabled" type="bool" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.sleeping] and its respective setter.
</description>
</method>
<method name="_set_transform" qualifiers="virtual">
<return type="void" />
<param index="0" name="transform" type="Transform2D" />
<description>
+ Implement to override the behavior of [member PhysicsDirectBodyState2D.transform] and its respective setter.
</description>
</method>
</methods>
diff --git a/doc/classes/PhysicsDirectBodyState3D.xml b/doc/classes/PhysicsDirectBodyState3D.xml
index 42c65763aa..e8c3f3f89d 100644
--- a/doc/classes/PhysicsDirectBodyState3D.xml
+++ b/doc/classes/PhysicsDirectBodyState3D.xml
@@ -202,7 +202,7 @@
<method name="integrate_forces">
<return type="void" />
<description>
- Calls the built-in force integration code.
+ Updates the body's linear and angular velocity by applying gravity and damping for the equivalent of one physics tick.
</description>
</method>
<method name="set_constant_force">
diff --git a/doc/classes/PhysicsServer2D.xml b/doc/classes/PhysicsServer2D.xml
index 8be92edbad..d40326fa21 100644
--- a/doc/classes/PhysicsServer2D.xml
+++ b/doc/classes/PhysicsServer2D.xml
@@ -501,7 +501,7 @@
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
- Returns [code]true[/code] if the body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Returns [code]true[/code] if the body is omitting the standard force integration. See [method body_set_omit_force_integration].
</description>
</method>
<method name="body_remove_collision_exception">
@@ -592,11 +592,12 @@
<param index="1" name="callable" type="Callable" />
<param index="2" name="userdata" type="Variant" default="null" />
<description>
- Sets the function used to calculate physics for the body, if that body allows it (see [method body_set_omit_force_integration]).
- The force integration function takes the following two parameters:
- 1. a [PhysicsDirectBodyState2D] [code]state[/code]: used to retrieve and modify the body's state,
- 2. a [Variant] [param userdata]: optional user data.
- [b]Note:[/b] This callback is currently not called in Godot Physics.
+ Sets the body's custom force integration callback function to [param callable]. Use an empty [Callable] ([code skip-lint]Callable()[/code]) to clear the custom callback.
+ The function [param callable] will be called every physics tick, before the standard force integration (see [method body_set_omit_force_integration]). It can be used for example to update the body's linear and angular velocity based on contact with other bodies.
+ If [param userdata] is not [code]null[/code], the function [param callable] must take the following two parameters:
+ 1. [code]state[/code]: a [PhysicsDirectBodyState2D] used to retrieve and modify the body's state,
+ 2. [code skip-lint]userdata[/code]: a [Variant]; its value will be the [param userdata] passed into this method.
+ If [param userdata] is [code]null[/code], then [param callable] must take only the [code]state[/code] parameter.
</description>
</method>
<method name="body_set_max_contacts_reported">
@@ -620,7 +621,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="enable" type="bool" />
<description>
- Sets whether the body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Sets whether the body omits the standard force integration. If [param enable] is [code]true[/code], the body will not automatically use applied forces, torques, and damping to update the body's linear and angular velocity. In this case, [method body_set_force_integration_callback] can be used to manually update the linear and angular velocity instead.
+ This method is called when the property [member RigidBody2D.custom_integrator] is set.
</description>
</method>
<method name="body_set_param">
diff --git a/doc/classes/PhysicsServer2DExtension.xml b/doc/classes/PhysicsServer2DExtension.xml
index 8d9a171337..815fc742d1 100644
--- a/doc/classes/PhysicsServer2DExtension.xml
+++ b/doc/classes/PhysicsServer2DExtension.xml
@@ -17,6 +17,7 @@
<param index="2" name="transform" type="Transform2D" />
<param index="3" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.area_add_shape].
</description>
</method>
<method name="_area_attach_canvas_instance_id" qualifiers="virtual">
@@ -24,6 +25,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_attach_canvas_instance_id].
</description>
</method>
<method name="_area_attach_object_instance_id" qualifiers="virtual">
@@ -31,41 +33,48 @@
<param index="0" name="area" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_attach_object_instance_id].
</description>
</method>
<method name="_area_clear_shapes" qualifiers="virtual">
<return type="void" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_clear_shapes].
</description>
</method>
<method name="_area_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_create].
</description>
</method>
<method name="_area_get_canvas_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_canvas_instance_id].
</description>
</method>
<method name="_area_get_collision_layer" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_collision_layer].
</description>
</method>
<method name="_area_get_collision_mask" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_collision_mask].
</description>
</method>
<method name="_area_get_object_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_object_instance_id].
</description>
</method>
<method name="_area_get_param" qualifiers="virtual const">
@@ -73,6 +82,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_param].
</description>
</method>
<method name="_area_get_shape" qualifiers="virtual const">
@@ -80,12 +90,14 @@
<param index="0" name="area" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_shape].
</description>
</method>
<method name="_area_get_shape_count" qualifiers="virtual const">
<return type="int" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_shape_count].
</description>
</method>
<method name="_area_get_shape_transform" qualifiers="virtual const">
@@ -93,18 +105,21 @@
<param index="0" name="area" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_shape_transform].
</description>
</method>
<method name="_area_get_space" qualifiers="virtual const">
<return type="RID" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_space].
</description>
</method>
<method name="_area_get_transform" qualifiers="virtual const">
<return type="Transform2D" />
<param index="0" name="area" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_get_transform].
</description>
</method>
<method name="_area_remove_shape" qualifiers="virtual">
@@ -112,6 +127,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_remove_shape].
</description>
</method>
<method name="_area_set_area_monitor_callback" qualifiers="virtual">
@@ -119,6 +135,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="callback" type="Callable" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_area_monitor_callback].
</description>
</method>
<method name="_area_set_collision_layer" qualifiers="virtual">
@@ -126,6 +143,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="layer" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_collision_layer].
</description>
</method>
<method name="_area_set_collision_mask" qualifiers="virtual">
@@ -133,6 +151,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="mask" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_collision_mask].
</description>
</method>
<method name="_area_set_monitor_callback" qualifiers="virtual">
@@ -140,6 +159,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="callback" type="Callable" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_monitor_callback].
</description>
</method>
<method name="_area_set_monitorable" qualifiers="virtual">
@@ -147,6 +167,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="monitorable" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_monitorable].
</description>
</method>
<method name="_area_set_param" qualifiers="virtual">
@@ -155,6 +176,7 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" />
<param index="2" name="value" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_param].
</description>
</method>
<method name="_area_set_pickable" qualifiers="virtual">
@@ -162,6 +184,8 @@
<param index="0" name="area" type="RID" />
<param index="1" name="pickable" type="bool" />
<description>
+ If set to [code]true[/code], allows the area with the given [RID] to detect mouse inputs when the mouse cursor is hovering on it.
+ Overridable version of [PhysicsServer2D]'s internal [code]area_set_pickable[/code] method. Corresponds to [member PhysicsBody2D.input_pickable].
</description>
</method>
<method name="_area_set_shape" qualifiers="virtual">
@@ -170,6 +194,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_shape].
</description>
</method>
<method name="_area_set_shape_disabled" qualifiers="virtual">
@@ -178,6 +203,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_shape_disabled].
</description>
</method>
<method name="_area_set_shape_transform" qualifiers="virtual">
@@ -186,6 +212,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="transform" type="Transform2D" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_shape_transform].
</description>
</method>
<method name="_area_set_space" qualifiers="virtual">
@@ -193,6 +220,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_space].
</description>
</method>
<method name="_area_set_transform" qualifiers="virtual">
@@ -200,6 +228,7 @@
<param index="0" name="area" type="RID" />
<param index="1" name="transform" type="Transform2D" />
<description>
+ Overridable version of [method PhysicsServer2D.area_set_transform].
</description>
</method>
<method name="_body_add_collision_exception" qualifiers="virtual">
@@ -207,6 +236,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="excepted_body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_collision_exception].
</description>
</method>
<method name="_body_add_constant_central_force" qualifiers="virtual">
@@ -214,6 +244,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_constant_central_force].
</description>
</method>
<method name="_body_add_constant_force" qualifiers="virtual">
@@ -222,6 +253,7 @@
<param index="1" name="force" type="Vector2" />
<param index="2" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_constant_force].
</description>
</method>
<method name="_body_add_constant_torque" qualifiers="virtual">
@@ -229,6 +261,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_constant_torque].
</description>
</method>
<method name="_body_add_shape" qualifiers="virtual">
@@ -238,6 +271,7 @@
<param index="2" name="transform" type="Transform2D" />
<param index="3" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.body_add_shape].
</description>
</method>
<method name="_body_apply_central_force" qualifiers="virtual">
@@ -245,6 +279,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_central_force].
</description>
</method>
<method name="_body_apply_central_impulse" qualifiers="virtual">
@@ -252,6 +287,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="impulse" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_central_impulse].
</description>
</method>
<method name="_body_apply_force" qualifiers="virtual">
@@ -260,6 +296,7 @@
<param index="1" name="force" type="Vector2" />
<param index="2" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_force].
</description>
</method>
<method name="_body_apply_impulse" qualifiers="virtual">
@@ -268,6 +305,7 @@
<param index="1" name="impulse" type="Vector2" />
<param index="2" name="position" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_impulse].
</description>
</method>
<method name="_body_apply_torque" qualifiers="virtual">
@@ -275,6 +313,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_torque].
</description>
</method>
<method name="_body_apply_torque_impulse" qualifiers="virtual">
@@ -282,6 +321,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="impulse" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_apply_torque_impulse].
</description>
</method>
<method name="_body_attach_canvas_instance_id" qualifiers="virtual">
@@ -289,6 +329,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_attach_canvas_instance_id].
</description>
</method>
<method name="_body_attach_object_instance_id" qualifiers="virtual">
@@ -296,12 +337,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="id" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_attach_object_instance_id].
</description>
</method>
<method name="_body_clear_shapes" qualifiers="virtual">
<return type="void" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_clear_shapes].
</description>
</method>
<method name="_body_collide_shape" qualifiers="virtual">
@@ -315,89 +358,107 @@
<param index="6" name="result_max" type="int" />
<param index="7" name="result_count" type="int32_t*" />
<description>
+ Given a [param body], a [param shape], and their respective parameters, this method should return [code]true[/code] if a collision between the two would occur, with additional details passed in [param results].
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_collide[/code] method. Corresponds to [method PhysicsDirectSpaceState2D.collide_shape].
</description>
</method>
<method name="_body_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_create].
</description>
</method>
<method name="_body_get_canvas_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_canvas_instance_id].
</description>
</method>
<method name="_body_get_collision_exceptions" qualifiers="virtual const">
<return type="RID[]" />
<param index="0" name="body" type="RID" />
<description>
+ Returns the [RID]s of all bodies added as collision exceptions for the given [param body]. See also [method _body_add_collision_exception] and [method _body_remove_collision_exception].
+ Overridable version of [PhysicsServer2D]'s internal [code]body_get_collision_exceptions[/code] method. Corresponds to [method PhysicsBody2D.get_collision_exceptions].
</description>
</method>
<method name="_body_get_collision_layer" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_collision_layer].
</description>
</method>
<method name="_body_get_collision_mask" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_collision_mask].
</description>
</method>
<method name="_body_get_collision_priority" qualifiers="virtual const">
<return type="float" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_collision_priority].
</description>
</method>
<method name="_body_get_constant_force" qualifiers="virtual const">
<return type="Vector2" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_constant_force].
</description>
</method>
<method name="_body_get_constant_torque" qualifiers="virtual const">
<return type="float" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_constant_torque].
</description>
</method>
<method name="_body_get_contacts_reported_depth_threshold" qualifiers="virtual const">
<return type="float" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [PhysicsServer2D]'s internal [code]body_get_contacts_reported_depth_threshold[/code] method.
+ [b]Note:[/b] This method is currently unused by Godot's default physics implementation.
</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" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_continuous_collision_detection_mode].
</description>
</method>
<method name="_body_get_direct_state" qualifiers="virtual">
<return type="PhysicsDirectBodyState2D" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_direct_state].
</description>
</method>
<method name="_body_get_max_contacts_reported" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_max_contacts_reported].
</description>
</method>
<method name="_body_get_mode" qualifiers="virtual const">
<return type="int" enum="PhysicsServer2D.BodyMode" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_mode].
</description>
</method>
<method name="_body_get_object_instance_id" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_object_instance_id].
</description>
</method>
<method name="_body_get_param" qualifiers="virtual const">
@@ -405,6 +466,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_param].
</description>
</method>
<method name="_body_get_shape" qualifiers="virtual const">
@@ -412,12 +474,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_shape].
</description>
</method>
<method name="_body_get_shape_count" qualifiers="virtual const">
<return type="int" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_shape_count].
</description>
</method>
<method name="_body_get_shape_transform" qualifiers="virtual const">
@@ -425,12 +489,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_shape_transform].
</description>
</method>
<method name="_body_get_space" qualifiers="virtual const">
<return type="RID" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_space].
</description>
</method>
<method name="_body_get_state" qualifiers="virtual const">
@@ -438,12 +504,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" />
<description>
+ Overridable version of [method PhysicsServer2D.body_get_state].
</description>
</method>
<method name="_body_is_omitting_force_integration" qualifiers="virtual const">
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_is_omitting_force_integration].
</description>
</method>
<method name="_body_remove_collision_exception" qualifiers="virtual">
@@ -451,6 +519,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="excepted_body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_remove_collision_exception].
</description>
</method>
<method name="_body_remove_shape" qualifiers="virtual">
@@ -458,12 +527,14 @@
<param index="0" name="body" type="RID" />
<param index="1" name="shape_idx" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_remove_shape].
</description>
</method>
<method name="_body_reset_mass_properties" qualifiers="virtual">
<return type="void" />
<param index="0" name="body" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_reset_mass_properties].
</description>
</method>
<method name="_body_set_axis_velocity" qualifiers="virtual">
@@ -471,6 +542,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="axis_velocity" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_axis_velocity].
</description>
</method>
<method name="_body_set_collision_layer" qualifiers="virtual">
@@ -478,6 +550,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="layer" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_collision_layer].
</description>
</method>
<method name="_body_set_collision_mask" qualifiers="virtual">
@@ -485,6 +558,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="mask" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_collision_mask].
</description>
</method>
<method name="_body_set_collision_priority" qualifiers="virtual">
@@ -492,6 +566,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="priority" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_collision_priority].
</description>
</method>
<method name="_body_set_constant_force" qualifiers="virtual">
@@ -499,6 +574,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="force" type="Vector2" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_constant_force].
</description>
</method>
<method name="_body_set_constant_torque" qualifiers="virtual">
@@ -506,6 +582,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="torque" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_constant_torque].
</description>
</method>
<method name="_body_set_contacts_reported_depth_threshold" qualifiers="virtual">
@@ -513,6 +590,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="threshold" type="float" />
<description>
+ Overridable version of [PhysicsServer2D]'s internal [code]body_set_contacts_reported_depth_threshold[/code] method.
+ [b]Note:[/b] This method is currently unused by Godot's default physics implementation.
</description>
</method>
<method name="_body_set_continuous_collision_detection_mode" qualifiers="virtual">
@@ -520,6 +599,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="mode" type="int" enum="PhysicsServer2D.CCDMode" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_continuous_collision_detection_mode].
</description>
</method>
<method name="_body_set_force_integration_callback" qualifiers="virtual">
@@ -528,6 +608,7 @@
<param index="1" name="callable" type="Callable" />
<param index="2" name="userdata" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_force_integration_callback].
</description>
</method>
<method name="_body_set_max_contacts_reported" qualifiers="virtual">
@@ -535,6 +616,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="amount" type="int" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_max_contacts_reported].
</description>
</method>
<method name="_body_set_mode" qualifiers="virtual">
@@ -542,6 +624,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="mode" type="int" enum="PhysicsServer2D.BodyMode" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_mode].
</description>
</method>
<method name="_body_set_omit_force_integration" qualifiers="virtual">
@@ -549,6 +632,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="enable" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_omit_force_integration].
</description>
</method>
<method name="_body_set_param" qualifiers="virtual">
@@ -557,6 +641,7 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" />
<param index="2" name="value" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_param].
</description>
</method>
<method name="_body_set_pickable" qualifiers="virtual">
@@ -564,6 +649,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="pickable" type="bool" />
<description>
+ If set to [code]true[/code], allows the body with the given [RID] to detect mouse inputs when the mouse cursor is hovering on it.
+ Overridable version of [PhysicsServer2D]'s internal [code]body_set_pickable[/code] method. Corresponds to [member PhysicsBody2D.input_pickable].
</description>
</method>
<method name="_body_set_shape" qualifiers="virtual">
@@ -572,6 +659,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape].
</description>
</method>
<method name="_body_set_shape_as_one_way_collision" qualifiers="virtual">
@@ -581,6 +669,7 @@
<param index="2" name="enable" type="bool" />
<param index="3" name="margin" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape_as_one_way_collision].
</description>
</method>
<method name="_body_set_shape_disabled" qualifiers="virtual">
@@ -589,6 +678,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="disabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape_disabled].
</description>
</method>
<method name="_body_set_shape_transform" qualifiers="virtual">
@@ -597,6 +687,7 @@
<param index="1" name="shape_idx" type="int" />
<param index="2" name="transform" type="Transform2D" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_shape_transform].
</description>
</method>
<method name="_body_set_space" qualifiers="virtual">
@@ -604,6 +695,7 @@
<param index="0" name="body" type="RID" />
<param index="1" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_space].
</description>
</method>
<method name="_body_set_state" qualifiers="virtual">
@@ -612,6 +704,7 @@
<param index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" />
<param index="2" name="value" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.body_set_state].
</description>
</method>
<method name="_body_set_state_sync_callback" qualifiers="virtual">
@@ -619,6 +712,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="callable" type="Callable" />
<description>
+ Assigns the [param body] to call the given [param callable] during the synchronization phase of the loop, before [method _step] is called. See also [method _sync].
+ Overridable version of [PhysicsServer2D]'s internal [code]body_set_state_sync_callback[/code] method.
</description>
</method>
<method name="_body_test_motion" qualifiers="virtual const">
@@ -631,26 +726,31 @@
<param index="5" name="recovery_as_collision" type="bool" />
<param index="6" name="result" type="PhysicsServer2DExtensionMotionResult*" />
<description>
+ Overridable version of [method PhysicsServer2D.body_test_motion]. Unlike the exposed implementation, this method does not receive all of the arguments inside a [PhysicsTestMotionParameters2D].
</description>
</method>
<method name="_capsule_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.capsule_shape_create].
</description>
</method>
<method name="_circle_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.circle_shape_create].
</description>
</method>
<method name="_concave_polygon_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.concave_polygon_shape_create].
</description>
</method>
<method name="_convex_polygon_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.convex_polygon_shape_create].
</description>
</method>
<method name="_damped_spring_joint_get_param" qualifiers="virtual const">
@@ -658,6 +758,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" />
<description>
+ Overridable version of [method PhysicsServer2D.damped_spring_joint_get_param].
</description>
</method>
<method name="_damped_spring_joint_set_param" qualifiers="virtual">
@@ -666,54 +767,69 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.damped_spring_joint_set_param].
</description>
</method>
<method name="_end_sync" qualifiers="virtual">
<return type="void" />
<description>
+ Called to indicate that the physics server has stopped synchronizing. It is in the loop's iteration/physics phase, and can access physics objects even if running on a separate thread. See also [method _sync].
+ Overridable version of [PhysicsServer2D]'s internal [code]end_sync[/code] method.
</description>
</method>
<method name="_finish" qualifiers="virtual">
<return type="void" />
<description>
+ Called when the main loop finalizes to shut down the physics server. See also [method MainLoop._finalize] and [method _init].
+ Overridable version of [PhysicsServer2D]'s internal [code]finish[/code] method.
</description>
</method>
<method name="_flush_queries" qualifiers="virtual">
<return type="void" />
<description>
+ Called every physics step before [method _step] to process all remaining queries.
+ Overridable version of [PhysicsServer2D]'s internal [code]flush_queries[/code] method.
</description>
</method>
<method name="_free_rid" qualifiers="virtual">
<return type="void" />
<param index="0" name="rid" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.free_rid].
</description>
</method>
<method name="_get_process_info" qualifiers="virtual">
<return type="int" />
<param index="0" name="process_info" type="int" enum="PhysicsServer2D.ProcessInfo" />
<description>
+ Overridable version of [method PhysicsServer2D.get_process_info].
</description>
</method>
<method name="_init" qualifiers="virtual">
<return type="void" />
<description>
+ Called when the main loop is initialized and creates a new instance of this physics server. See also [method MainLoop._initialize] and [method _finish].
+ Overridable version of [PhysicsServer2D]'s internal [code]init[/code] method.
</description>
</method>
<method name="_is_flushing_queries" qualifiers="virtual const">
<return type="bool" />
<description>
+ Overridable method that should return [code]true[/code] when the physics server is processing queries. See also [method _flush_queries].
+ Overridable version of [PhysicsServer2D]'s internal [code]is_flushing_queries[/code] method.
</description>
</method>
<method name="_joint_clear" qualifiers="virtual">
<return type="void" />
<param index="0" name="joint" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_clear].
</description>
</method>
<method name="_joint_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_create].
</description>
</method>
<method name="_joint_disable_collisions_between_bodies" qualifiers="virtual">
@@ -721,6 +837,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="disable" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_disable_collisions_between_bodies].
</description>
</method>
<method name="_joint_get_param" qualifiers="virtual const">
@@ -728,18 +845,21 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_get_param].
</description>
</method>
<method name="_joint_get_type" qualifiers="virtual const">
<return type="int" enum="PhysicsServer2D.JointType" />
<param index="0" name="joint" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_get_type].
</description>
</method>
<method name="_joint_is_disabled_collisions_between_bodies" qualifiers="virtual const">
<return type="bool" />
<param index="0" name="joint" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_is_disabled_collisions_between_bodies].
</description>
</method>
<method name="_joint_make_damped_spring" qualifiers="virtual">
@@ -750,6 +870,7 @@
<param index="3" name="body_a" type="RID" />
<param index="4" name="body_b" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_make_damped_spring].
</description>
</method>
<method name="_joint_make_groove" qualifiers="virtual">
@@ -761,6 +882,7 @@
<param index="4" name="body_a" type="RID" />
<param index="5" name="body_b" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_make_groove].
</description>
</method>
<method name="_joint_make_pin" qualifiers="virtual">
@@ -770,6 +892,7 @@
<param index="2" name="body_a" type="RID" />
<param index="3" name="body_b" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_make_pin].
</description>
</method>
<method name="_joint_set_param" qualifiers="virtual">
@@ -778,6 +901,7 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.joint_set_param].
</description>
</method>
<method name="_pin_joint_get_flag" qualifiers="virtual const">
@@ -785,6 +909,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="flag" type="int" enum="PhysicsServer2D.PinJointFlag" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_get_flag].
</description>
</method>
<method name="_pin_joint_get_param" qualifiers="virtual const">
@@ -792,6 +917,7 @@
<param index="0" name="joint" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.PinJointParam" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_get_param].
</description>
</method>
<method name="_pin_joint_set_flag" qualifiers="virtual">
@@ -800,6 +926,7 @@
<param index="1" name="flag" type="int" enum="PhysicsServer2D.PinJointFlag" />
<param index="2" name="enabled" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_set_flag].
</description>
</method>
<method name="_pin_joint_set_param" qualifiers="virtual">
@@ -808,27 +935,32 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.PinJointParam" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.pin_joint_set_param].
</description>
</method>
<method name="_rectangle_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.rectangle_shape_create].
</description>
</method>
<method name="_segment_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.segment_shape_create].
</description>
</method>
<method name="_separation_ray_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.separation_ray_shape_create].
</description>
</method>
<method name="_set_active" qualifiers="virtual">
<return type="void" />
<param index="0" name="active" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.set_active].
</description>
</method>
<method name="_shape_collide" qualifiers="virtual">
@@ -843,24 +975,30 @@
<param index="7" name="result_max" type="int" />
<param index="8" name="result_count" type="int32_t*" />
<description>
+ Given two shapes and their parameters, should return [code]true[/code] if a collision between the two would occur, with additional details passed in [param results].
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_collide[/code] method. Corresponds to [method PhysicsDirectSpaceState2D.collide_shape].
</description>
</method>
<method name="_shape_get_custom_solver_bias" qualifiers="virtual const">
<return type="float" />
<param index="0" name="shape" type="RID" />
<description>
+ Should return the custom solver bias of the given [param shape], which defines how much bodies are forced to separate on contact when this shape is involved.
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_get_custom_solver_bias[/code] method. Corresponds to [member Shape2D.custom_solver_bias].
</description>
</method>
<method name="_shape_get_data" qualifiers="virtual const">
<return type="Variant" />
<param index="0" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.shape_get_data].
</description>
</method>
<method name="_shape_get_type" qualifiers="virtual const">
<return type="int" enum="PhysicsServer2D.ShapeType" />
<param index="0" name="shape" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.shape_get_type].
</description>
</method>
<method name="_shape_set_custom_solver_bias" qualifiers="virtual">
@@ -868,6 +1006,8 @@
<param index="0" name="shape" type="RID" />
<param index="1" name="bias" type="float" />
<description>
+ Should set the custom solver bias for the given [param shape]. It defines how much bodies are forced to separate on contact.
+ Overridable version of [PhysicsServer2D]'s internal [code]shape_get_custom_solver_bias[/code] method. Corresponds to [member Shape2D.custom_solver_bias].
</description>
</method>
<method name="_shape_set_data" qualifiers="virtual">
@@ -875,29 +1015,36 @@
<param index="0" name="shape" type="RID" />
<param index="1" name="data" type="Variant" />
<description>
+ Overridable version of [method PhysicsServer2D.shape_set_data].
</description>
</method>
<method name="_space_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.space_create].
</description>
</method>
<method name="_space_get_contact_count" qualifiers="virtual const">
<return type="int" />
<param index="0" name="space" type="RID" />
<description>
+ Should return how many contacts have occurred during the last physics step in the given [param space]. See also [method _space_get_contacts] and [method _space_set_debug_contacts].
+ Overridable version of [PhysicsServer2D]'s internal [code]space_get_contact_count[/code] method.
</description>
</method>
<method name="_space_get_contacts" qualifiers="virtual const">
<return type="PackedVector2Array" />
<param index="0" name="space" type="RID" />
<description>
+ Should return the positions of all contacts that have occurred during the last physics step in the given [param space]. See also [method _space_get_contact_count] and [method _space_set_debug_contacts].
+ Overridable version of [PhysicsServer2D]'s internal [code]space_get_contacts[/code] method.
</description>
</method>
<method name="_space_get_direct_state" qualifiers="virtual">
<return type="PhysicsDirectSpaceState2D" />
<param index="0" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.space_get_direct_state].
</description>
</method>
<method name="_space_get_param" qualifiers="virtual const">
@@ -905,12 +1052,14 @@
<param index="0" name="space" type="RID" />
<param index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" />
<description>
+ Overridable version of [method PhysicsServer2D.space_get_param].
</description>
</method>
<method name="_space_is_active" qualifiers="virtual const">
<return type="bool" />
<param index="0" name="space" type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.space_is_active].
</description>
</method>
<method name="_space_set_active" qualifiers="virtual">
@@ -918,6 +1067,7 @@
<param index="0" name="space" type="RID" />
<param index="1" name="active" type="bool" />
<description>
+ Overridable version of [method PhysicsServer2D.space_set_active].
</description>
</method>
<method name="_space_set_debug_contacts" qualifiers="virtual">
@@ -925,6 +1075,8 @@
<param index="0" name="space" type="RID" />
<param index="1" name="max_contacts" type="int" />
<description>
+ Used internally to allow the given [param space] to store contact points, up to [param max_contacts]. This is automatically set for the main [World2D]'s space when [member SceneTree.debug_collisions_hint] is [code]true[/code], or by checking "Visible Collision Shapes" in the editor. Only works in debug builds.
+ Overridable version of [PhysicsServer2D]'s internal [code]space_set_debug_contacts[/code] method.
</description>
</method>
<method name="_space_set_param" qualifiers="virtual">
@@ -933,34 +1085,42 @@
<param index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" />
<param index="2" name="value" type="float" />
<description>
+ Overridable version of [method PhysicsServer2D.space_set_param].
</description>
</method>
<method name="_step" qualifiers="virtual">
<return type="void" />
<param index="0" name="step" type="float" />
<description>
+ Called every physics step to process the physics simulation. [param step] is the time elapsed since the last physics step, in seconds. It is usually the same as [method Node.get_physics_process_delta_time].
+ Overridable version of [PhysicsServer2D]'s internal [code skip-lint]step[/code] method.
</description>
</method>
<method name="_sync" qualifiers="virtual">
<return type="void" />
<description>
+ Called to indicate that the physics server is synchronizing and cannot access physics states if running on a separate thread. See also [method _end_sync].
+ Overridable version of [PhysicsServer2D]'s internal [code]sync[/code] method.
</description>
</method>
<method name="_world_boundary_shape_create" qualifiers="virtual">
<return type="RID" />
<description>
+ Overridable version of [method PhysicsServer2D.world_boundary_shape_create].
</description>
</method>
<method name="body_test_motion_is_excluding_body" qualifiers="const">
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
+ Returns [code]true[/code] if the body with the given [RID] is being excluded from [method _body_test_motion]. See also [method Object.get_instance_id].
</description>
</method>
<method name="body_test_motion_is_excluding_object" qualifiers="const">
<return type="bool" />
<param index="0" name="object" type="int" />
<description>
+ Returns [code]true[/code] if the object with the given instance ID is being excluded from [method _body_test_motion]. See also [method Object.get_instance_id].
</description>
</method>
</methods>
diff --git a/doc/classes/PhysicsServer3D.xml b/doc/classes/PhysicsServer3D.xml
index 4735091f20..4a4a1ad025 100644
--- a/doc/classes/PhysicsServer3D.xml
+++ b/doc/classes/PhysicsServer3D.xml
@@ -482,7 +482,7 @@
<return type="bool" />
<param index="0" name="body" type="RID" />
<description>
- Returns whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Returns [code]true[/code] if the body is omitting the standard force integration. See [method body_set_omit_force_integration].
</description>
</method>
<method name="body_remove_collision_exception">
@@ -582,9 +582,12 @@
<param index="1" name="callable" type="Callable" />
<param index="2" name="userdata" type="Variant" default="null" />
<description>
- Sets the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force_integration]). The force integration function takes 2 arguments:
- - [code]state[/code] — [PhysicsDirectBodyState3D] used to retrieve and modify the body's state.
- - [code skip-lint]userdata[/code] — optional user data passed to [method body_set_force_integration_callback].
+ Sets the body's custom force integration callback function to [param callable]. Use an empty [Callable] ([code skip-lint]Callable()[/code]) to clear the custom callback.
+ The function [param callable] will be called every physics tick, before the standard force integration (see [method body_set_omit_force_integration]). It can be used for example to update the body's linear and angular velocity based on contact with other bodies.
+ If [param userdata] is not [code]null[/code], the function [param callable] must take the following two parameters:
+ 1. [code]state[/code]: a [PhysicsDirectBodyState3D], used to retrieve and modify the body's state,
+ 2. [code skip-lint]userdata[/code]: a [Variant]; its value will be the [param userdata] passed into this method.
+ If [param userdata] is [code]null[/code], then [param callable] must take only the [code]state[/code] parameter.
</description>
</method>
<method name="body_set_max_contacts_reported">
@@ -608,7 +611,8 @@
<param index="0" name="body" type="RID" />
<param index="1" name="enable" type="bool" />
<description>
- Sets whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Sets whether the body omits the standard force integration. If [param enable] is [code]true[/code], the body will not automatically use applied forces, torques, and damping to update the body's linear and angular velocity. In this case, [method body_set_force_integration_callback] can be used to manually update the linear and angular velocity instead.
+ This method is called when the property [member RigidBody3D.custom_integrator] is set.
</description>
</method>
<method name="body_set_param">
@@ -740,7 +744,7 @@
<param index="1" name="axis" type="int" enum="Vector3.Axis" />
<param index="2" name="flag" type="int" enum="PhysicsServer3D.G6DOFJointAxisFlag" />
<description>
- Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants).
+ Returns the value of a generic 6DOF joint flag. See [enum G6DOFJointAxisFlag] for the list of available flags.
</description>
</method>
<method name="generic_6dof_joint_get_param" qualifiers="const">
@@ -749,7 +753,7 @@
<param index="1" name="axis" type="int" enum="Vector3.Axis" />
<param index="2" name="param" type="int" enum="PhysicsServer3D.G6DOFJointAxisParam" />
<description>
- Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] constants).
+ Returns the value of a generic 6DOF joint parameter. See [enum G6DOFJointAxisParam] for the list of available parameters.
</description>
</method>
<method name="generic_6dof_joint_set_flag">
@@ -759,7 +763,7 @@
<param index="2" name="flag" type="int" enum="PhysicsServer3D.G6DOFJointAxisFlag" />
<param index="3" name="enable" type="bool" />
<description>
- Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants).
+ Sets the value of a given generic 6DOF joint flag. See [enum G6DOFJointAxisFlag] for the list of available flags.
</description>
</method>
<method name="generic_6dof_joint_set_param">
@@ -769,7 +773,7 @@
<param index="2" name="param" type="int" enum="PhysicsServer3D.G6DOFJointAxisParam" />
<param index="3" name="value" type="float" />
<description>
- Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] constants).
+ Sets the value of a given generic 6DOF joint parameter. See [enum G6DOFJointAxisParam] for the list of available parameters.
</description>
</method>
<method name="get_process_info">
@@ -876,6 +880,7 @@
<param index="3" name="body_B" type="RID" />
<param index="4" name="local_ref_B" type="Transform3D" />
<description>
+ Make the joint a generic six degrees of freedom (6DOF) joint. Use [method generic_6dof_joint_set_flag] and [method generic_6dof_joint_set_param] to set the joint's flags and parameters respectively.
</description>
</method>
<method name="joint_make_hinge">
@@ -1497,6 +1502,12 @@
<constant name="G6DOF_JOINT_LINEAR_MOTOR_FORCE_LIMIT" value="6" enum="G6DOFJointAxisParam">
The maximum force that the linear motor can apply while trying to reach the target velocity.
</constant>
+ <constant name="G6DOF_JOINT_LINEAR_SPRING_STIFFNESS" value="7" enum="G6DOFJointAxisParam">
+ </constant>
+ <constant name="G6DOF_JOINT_LINEAR_SPRING_DAMPING" value="8" enum="G6DOFJointAxisParam">
+ </constant>
+ <constant name="G6DOF_JOINT_LINEAR_SPRING_EQUILIBRIUM_POINT" value="9" enum="G6DOFJointAxisParam">
+ </constant>
<constant name="G6DOF_JOINT_ANGULAR_LOWER_LIMIT" value="10" enum="G6DOFJointAxisParam">
The minimum rotation in negative direction to break loose and rotate around the axes.
</constant>
@@ -1524,18 +1535,34 @@
<constant name="G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT" value="18" enum="G6DOFJointAxisParam">
Maximum acceleration for the motor at the axes.
</constant>
+ <constant name="G6DOF_JOINT_ANGULAR_SPRING_STIFFNESS" value="19" enum="G6DOFJointAxisParam">
+ </constant>
+ <constant name="G6DOF_JOINT_ANGULAR_SPRING_DAMPING" value="20" enum="G6DOFJointAxisParam">
+ </constant>
+ <constant name="G6DOF_JOINT_ANGULAR_SPRING_EQUILIBRIUM_POINT" value="21" enum="G6DOFJointAxisParam">
+ </constant>
+ <constant name="G6DOF_JOINT_MAX" value="22" enum="G6DOFJointAxisParam">
+ Represents the size of the [enum G6DOFJointAxisParam] enum.
+ </constant>
<constant name="G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT" value="0" enum="G6DOFJointAxisFlag">
If set, linear motion is possible within the given limits.
</constant>
<constant name="G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT" value="1" enum="G6DOFJointAxisFlag">
If set, rotational motion is possible.
</constant>
+ <constant name="G6DOF_JOINT_FLAG_ENABLE_ANGULAR_SPRING" value="2" enum="G6DOFJointAxisFlag">
+ </constant>
+ <constant name="G6DOF_JOINT_FLAG_ENABLE_LINEAR_SPRING" value="3" enum="G6DOFJointAxisFlag">
+ </constant>
<constant name="G6DOF_JOINT_FLAG_ENABLE_MOTOR" value="4" enum="G6DOFJointAxisFlag">
If set, there is a rotational motor across these axes.
</constant>
<constant name="G6DOF_JOINT_FLAG_ENABLE_LINEAR_MOTOR" value="5" enum="G6DOFJointAxisFlag">
If set, there is a linear motor on this axis that targets a specific velocity.
</constant>
+ <constant name="G6DOF_JOINT_FLAG_MAX" value="6" enum="G6DOFJointAxisFlag">
+ Represents the size of the [enum G6DOFJointAxisFlag] enum.
+ </constant>
<constant name="SHAPE_WORLD_BOUNDARY" value="0" enum="ShapeType">
The [Shape3D] is a [WorldBoundaryShape3D].
</constant>
@@ -1601,7 +1628,7 @@
Constant to set/get the priority (order of processing) of an area.
</constant>
<constant name="AREA_PARAM_WIND_FORCE_MAGNITUDE" value="10" enum="AreaParameter">
- Constant to set/get the magnitude of area-specific wind force.
+ Constant to set/get the magnitude of area-specific wind force. This wind force only applies to [SoftBody3D] nodes. Other physics bodies are currently not affected by wind.
</constant>
<constant name="AREA_PARAM_WIND_SOURCE" value="11" enum="AreaParameter">
Constant to set/get the 3D vector that specifies the origin from which an area-specific wind blows.
diff --git a/doc/classes/Polygon2D.xml b/doc/classes/Polygon2D.xml
index 029a69a399..90d3522002 100644
--- a/doc/classes/Polygon2D.xml
+++ b/doc/classes/Polygon2D.xml
@@ -91,7 +91,6 @@
</member>
<member name="polygon" type="PackedVector2Array" setter="set_polygon" getter="get_polygon" default="PackedVector2Array()">
The polygon's list of vertices. The final point will be connected to the first.
- [b]Note:[/b] This returns a copy of the [PackedVector2Array] rather than a reference.
</member>
<member name="polygons" type="Array" setter="set_polygons" getter="get_polygons" default="[]">
The list of polygons, in case more than one is being represented. Every individual polygon is stored as a [PackedInt32Array] where each [int] is an index to a point in [member polygon]. If empty, this property will be ignored, and the resulting single polygon will be composed of all points in [member polygon], using the order they are stored in.
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 407041289c..a5aeee5bc4 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -10,9 +10,9 @@
[b]Overriding:[/b] Any project setting can be overridden by creating a file named [code]override.cfg[/code] in the project's root directory. This can also be used in exported projects by placing this file in the same directory as the project binary. Overriding will still take the base project settings' [url=$DOCS_URL/tutorials/export/feature_tags.html]feature tags[/url] in account. Therefore, make sure to [i]also[/i] override the setting with the desired feature tags if you want them to override base project settings on all platforms and configurations.
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="add_property_info">
@@ -323,6 +323,11 @@
If [code]true[/code], disables printing to standard output. This is equivalent to starting the editor or project with the [code]--quiet[/code] [url=$DOCS_URL/tutorials/editor/command_line_tutorial.html]command line argument[/url]. See also [member application/run/disable_stderr].
Changes to this setting will only be applied upon restarting the application.
</member>
+ <member name="application/run/enable_alt_space_menu" type="bool" setter="" getter="" default="false">
+ If [code]true[/code], allows the [kbd]Alt + Space[/kbd] keys to display the window menu. This menu allows the user to perform various window management operations such as moving, resizing, or minimizing the window.
+ [b]Note:[/b] When the menu is displayed, project execution will pause until the menu is [i]fully[/i] closed due to Windows behavior. Consider this when enabling this setting in a networked multiplayer game. The menu is only considered fully closed when an option is selected, when the user clicks outside, or when [kbd]Escape[/kbd] is pressed after bringing up the window menu [i]and[/i] another key is pressed afterwards.
+ [b]Note:[/b] This setting is implemented only on Windows.
+ </member>
<member name="application/run/flush_stdout_on_print" type="bool" setter="" getter="" default="false">
If [code]true[/code], flushes the standard output stream every time a line is printed. This affects both terminal logging and file logging.
When running a project, this setting must be enabled if you want logs to be collected by service managers such as systemd/journalctl. This setting is disabled by default on release builds, since flushing on every printed line will negatively affect performance if lots of lines are printed in a rapid succession. Also, if this setting is enabled, logged files will still be written successfully if the application crashes or is otherwise killed by the user (without being closed "normally").
@@ -569,7 +574,7 @@
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">
- When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when performing an unsafe cast.
+ When set to [code]warn[/code] or [code]error[/code], produces a warning or an error respectively when a [Variant] value is cast to a non-Variant.
</member>
<member name="debug/gdscript/warnings/unsafe_method_access" type="int" setter="" getter="" default="0">
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.
@@ -964,7 +969,7 @@
The command-line arguments to append to Godot's own command line when running the project. This doesn't affect the editor itself.
It is possible to make another executable run Godot by using the [code]%command%[/code] placeholder. The placeholder will be replaced with Godot's own command line. Program-specific arguments should be placed [i]before[/i] the placeholder, whereas Godot-specific arguments should be placed [i]after[/i] the placeholder.
For example, this can be used to force the project to run on the dedicated GPU in an NVIDIA Optimus system on Linux:
- [codeblock]
+ [codeblock lang=text]
prime-run %command%
[/codeblock]
</member>
@@ -1334,6 +1339,12 @@
<member name="input/ui_text_select_word_under_caret.macos" type="Dictionary" setter="" getter="">
macOS specific override for the shortcut to select the word currently under the caret.
</member>
+ <member name="input/ui_text_skip_selection_for_next_occurrence" type="Dictionary" setter="" getter="">
+ If no selection is currently active with the last caret in text fields, searches for the next occurrence of the the word currently under the caret and moves the caret to the next occurrence. The action can be performed sequentially for other occurrences of the word under the last caret.
+ If a selection is currently active with the last caret in text fields, searches for the next occurrence of the selection, adds a caret, selects the next occurrence then deselects the previous selection and its associated caret. The action can be performed sequentially for other occurrences of the selection of the last caret.
+ The viewport is adjusted to the latest newly added caret.
+ [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_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.
@@ -2082,6 +2093,9 @@
<member name="navigation/baking/thread_model/baking_use_multiple_threads" type="bool" setter="" getter="" default="true">
If enabled the async navmesh baking uses multiple threads.
</member>
+ <member name="navigation/baking/use_crash_prevention_checks" type="bool" setter="" getter="" default="true">
+ If enabled, and baking would potentially lead to an engine crash, the baking will be interrupted and an error message with explanation will be raised.
+ </member>
<member name="network/limits/debugger/max_chars_per_second" type="int" setter="" getter="" default="32768">
Maximum number of characters allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection.
</member>
@@ -2266,9 +2280,15 @@
Controls the maximum number of physics steps that can be simulated each rendered frame. The default value is tuned to avoid "spiral of death" situations where expensive physics simulations trigger more expensive simulations indefinitely. However, the game will appear to slow down if the rendering FPS is less than [code]1 / max_physics_steps_per_frame[/code] of [member physics/common/physics_ticks_per_second]. This occurs even if [code]delta[/code] is consistently used in physics calculations. To avoid this, increase [member physics/common/max_physics_steps_per_frame] if you have increased [member physics/common/physics_ticks_per_second] significantly above its default value.
[b]Note:[/b] This property is only read when the project starts. To change the maximum number of simulated physics steps per frame at runtime, set [member Engine.max_physics_steps_per_frame] instead.
</member>
+ <member name="physics/common/physics_interpolation" type="bool" setter="" getter="" default="false">
+ If [code]true[/code], the renderer will interpolate the transforms of physics objects between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames. See also [member Node.physics_interpolation_mode] and [method Node.reset_physics_interpolation].
+ [b]Note:[/b] If [code]true[/code], the physics jitter fix should be disabled by setting [member physics/common/physics_jitter_fix] to [code]0.0[/code].
+ [b]Note:[/b] This property is only read when the project starts. To toggle physics interpolation at runtime, set [member SceneTree.physics_interpolation] instead.
+ [b]Note:[/b] This feature is currently only implemented in the 2D renderer.
+ </member>
<member name="physics/common/physics_jitter_fix" type="float" setter="" getter="" 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 in-game clock and real clock, but allows smoothing out framerate jitters. The default value of 0.5 should be good enough 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/common/physics_jitter_fix] to [code]0[/code].
+ [b]Note:[/b] When using a physics interpolation solution (such as enabling [member physics/common/physics_interpolation] or using a custom solution), the physics jitter fix should be disabled by setting [member physics/common/physics_jitter_fix] to [code]0.0[/code].
[b]Note:[/b] This property is only read when the project starts. To change the physics jitter fix at runtime, set [member Engine.physics_jitter_fix] instead.
</member>
<member name="physics/common/physics_ticks_per_second" type="int" setter="" getter="" default="60">
@@ -2628,6 +2648,9 @@
The [url=https://en.wikipedia.org/wiki/Bounding_volume_hierarchy]Bounding Volume Hierarchy[/url] quality to use when rendering the occlusion culling buffer. Higher values will result in more accurate occlusion culling, at the cost of higher CPU usage. See also [member rendering/occlusion_culling/occlusion_rays_per_thread].
[b]Note:[/b] This property is only read when the project starts. To adjust the BVH build quality at runtime, use [method RenderingServer.viewport_set_occlusion_culling_build_quality].
</member>
+ <member name="rendering/occlusion_culling/jitter_projection" type="bool" setter="" getter="" default="true">
+ If [code]true[/code], the projection used for rendering the occlusion buffer will be jittered. This can help prevent objects being incorrectly culled when visible through small gaps.
+ </member>
<member name="rendering/occlusion_culling/occlusion_rays_per_thread" type="int" setter="" getter="" default="512">
The number of occlusion rays traced per CPU thread. Higher values will result in more accurate occlusion culling, at the cost of higher CPU usage. The occlusion culling buffer's pixel count is roughly equal to [code]occlusion_rays_per_thread * number_of_logical_cpu_cores[/code], so it will depend on the system's CPU. Therefore, CPUs with fewer cores will use a lower resolution to attempt keeping performance costs even across devices. See also [member rendering/occlusion_culling/bvh_build_quality].
[b]Note:[/b] This property is only read when the project starts. To adjust the number of occlusion rays traced per thread at runtime, use [method RenderingServer.viewport_set_occlusion_rays_per_thread].
@@ -2709,6 +2732,10 @@
<member name="rendering/rendering_device/driver.windows" type="String" setter="" getter="">
Windows override for [member rendering/rendering_device/driver].
</member>
+ <member name="rendering/rendering_device/pipeline_cache/enable" type="bool" setter="" getter="" default="true">
+ Enable the pipeline cache that is saved to disk if the graphics API supports it.
+ [b]Note:[/b] This property is unable to control the pipeline caching the GPU driver itself does. Only turn this off along with deleting the contents of the driver's cache if you wish to simulate the experience a user will get when starting the game for the first time.
+ </member>
<member name="rendering/rendering_device/pipeline_cache/save_chunk_size_mb" type="float" setter="" getter="" default="3.0">
Determines at which interval pipeline cache is saved to disk. The lower the value, the more often it is saved.
</member>
@@ -2828,7 +2855,7 @@
<member name="rendering/vrs/texture" type="String" setter="" getter="" default="&quot;&quot;">
If [member rendering/vrs/mode] is set to [b]Texture[/b], this is the path to default texture loaded as the VRS image.
The texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:
- [codeblock]
+ [codeblock lang=text]
- 1×1 = rgb(0, 0, 0) - #000000
- 1×2 = rgb(0, 85, 0) - #005500
- 2×1 = rgb(85, 0, 0) - #550000
diff --git a/doc/classes/QuadMesh.xml b/doc/classes/QuadMesh.xml
index c5164e9feb..d840616fdd 100644
--- a/doc/classes/QuadMesh.xml
+++ b/doc/classes/QuadMesh.xml
@@ -7,8 +7,8 @@
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>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
</tutorials>
<members>
<member name="orientation" type="int" setter="set_orientation" getter="get_orientation" overrides="PlaneMesh" enum="PlaneMesh.Orientation" default="2" />
diff --git a/doc/classes/Quaternion.xml b/doc/classes/Quaternion.xml
index 8b59448555..665c6335f2 100644
--- a/doc/classes/Quaternion.xml
+++ b/doc/classes/Quaternion.xml
@@ -14,7 +14,7 @@
<link title="3Blue1Brown&apos;s video on Quaternions">https://www.youtube.com/watch?v=d4EgbgTm0Bg</link>
<link title="Online Quaternion Visualization">https://quaternions.online/</link>
<link title="Using 3D transforms">$DOCS_URL/tutorials/3d/using_transforms.html#interpolating-with-quaternions</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
<link title="Advanced Quaternion Visualization">https://iwatake2222.github.io/rotation_master/rotation_master.html</link>
</tutorials>
<constructors>
diff --git a/doc/classes/RayCast2D.xml b/doc/classes/RayCast2D.xml
index 31daaab417..16643b0a71 100644
--- a/doc/classes/RayCast2D.xml
+++ b/doc/classes/RayCast2D.xml
@@ -56,6 +56,21 @@
<return type="int" />
<description>
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
+ To get the intersected shape node, for a [CollisionObject2D] target, use:
+ [codeblocks]
+ [gdscript]
+ var target = get_collider() # A CollisionObject2D.
+ var shape_id = get_collider_shape() # The shape index in the collider.
+ var owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider.
+ var shape = target.shape_owner_get_owner(owner_id)
+ [/gdscript]
+ [csharp]
+ var target = (CollisionObject2D)GetCollider(); // A CollisionObject2D.
+ var shapeId = GetColliderShape(); // The shape index in the collider.
+ var ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider.
+ var shape = target.ShapeOwnerGetOwner(ownerId);
+ [/csharp]
+ [/codeblocks]
</description>
</method>
<method name="get_collision_mask_value" qualifiers="const">
diff --git a/doc/classes/RayCast3D.xml b/doc/classes/RayCast3D.xml
index f9f94e5cfc..18a544d114 100644
--- a/doc/classes/RayCast3D.xml
+++ b/doc/classes/RayCast3D.xml
@@ -11,7 +11,7 @@
</description>
<tutorials>
<link title="Ray-casting">$DOCS_URL/tutorials/physics/ray-casting.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="add_exception">
@@ -57,6 +57,21 @@
<return type="int" />
<description>
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
+ To get the intersected shape node, for a [CollisionObject3D] target, use:
+ [codeblocks]
+ [gdscript]
+ var target = get_collider() # A CollisionObject3D.
+ var shape_id = get_collider_shape() # The shape index in the collider.
+ var owner_id = target.shape_find_owner(shape_id) # The owner ID in the collider.
+ var shape = target.shape_owner_get_owner(owner_id)
+ [/gdscript]
+ [csharp]
+ var target = (CollisionObject3D)GetCollider(); // A CollisionObject3D.
+ var shapeId = GetColliderShape(); // The shape index in the collider.
+ var ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider.
+ var shape = target.ShapeOwnerGetOwner(ownerId);
+ [/csharp]
+ [/codeblocks]
</description>
</method>
<method name="get_collision_face_index" qualifiers="const">
diff --git a/doc/classes/RectangleShape2D.xml b/doc/classes/RectangleShape2D.xml
index 721d73dc14..a62b997a0a 100644
--- a/doc/classes/RectangleShape2D.xml
+++ b/doc/classes/RectangleShape2D.xml
@@ -8,8 +8,8 @@
[b]Performance:[/b] [RectangleShape2D] is fast to check collisions against. It is faster than [CapsuleShape2D], but slower than [CircleShape2D].
</description>
<tutorials>
- <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/121</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Pong Demo">https://godotengine.org/asset-library/asset/2728</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<members>
<member name="size" type="Vector2" setter="set_size" getter="get_size" default="Vector2(20, 20)">
diff --git a/doc/classes/RenderingDevice.xml b/doc/classes/RenderingDevice.xml
index 33cd831175..3c1061dee9 100644
--- a/doc/classes/RenderingDevice.xml
+++ b/doc/classes/RenderingDevice.xml
@@ -138,6 +138,15 @@
Submits the compute list for processing on the GPU. This is the compute equivalent to [method draw_list_draw].
</description>
</method>
+ <method name="compute_list_dispatch_indirect">
+ <return type="void" />
+ <param index="0" name="compute_list" type="int" />
+ <param index="1" name="buffer" type="RID" />
+ <param index="2" name="offset" type="int" />
+ <description>
+ Submits the compute list for processing on the GPU with the given group counts stored in the [param buffer] at [param offset]. Buffer must have been created with [constant STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT] flag.
+ </description>
+ </method>
<method name="compute_list_end">
<return type="void" />
<description>
@@ -2129,8 +2138,10 @@
Represents the size of the [enum BlendOperation] enum.
</constant>
<constant name="DYNAMIC_STATE_LINE_WIDTH" value="1" enum="PipelineDynamicStateFlags" is_bitfield="true">
+ Allows dynamically changing the width of rendering lines.
</constant>
<constant name="DYNAMIC_STATE_DEPTH_BIAS" value="2" enum="PipelineDynamicStateFlags" is_bitfield="true">
+ Allows dynamically changing the depth bias.
</constant>
<constant name="DYNAMIC_STATE_BLEND_CONSTANTS" value="4" enum="PipelineDynamicStateFlags" is_bitfield="true">
</constant>
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index 324e6d50b6..d7a659c255 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -424,6 +424,14 @@
[b]Note:[/b] The equivalent node is [CanvasItem].
</description>
</method>
+ <method name="canvas_item_reset_physics_interpolation">
+ <return type="void" />
+ <param index="0" name="item" type="RID" />
+ <description>
+ Prevents physics interpolation for the current physics tick.
+ This is useful when moving a canvas item to a new location, to give an instantaneous change rather than interpolation from the previous location.
+ </description>
+ </method>
<method name="canvas_item_set_canvas_group_mode">
<return type="void" />
<param index="0" name="item" type="RID" />
@@ -504,6 +512,14 @@
Sets the index for the [CanvasItem].
</description>
</method>
+ <method name="canvas_item_set_interpolated">
+ <return type="void" />
+ <param index="0" name="item" type="RID" />
+ <param index="1" name="interpolated" type="bool" />
+ <description>
+ If [param interpolated] is [code]true[/code], turns on physics interpolation for the canvas item.
+ </description>
+ </method>
<method name="canvas_item_set_light_mask">
<return type="void" />
<param index="0" name="item" type="RID" />
@@ -612,6 +628,15 @@
Sets the [CanvasItem]'s Z index, i.e. its draw order (lower indexes are drawn first).
</description>
</method>
+ <method name="canvas_item_transform_physics_interpolation">
+ <return type="void" />
+ <param index="0" name="item" type="RID" />
+ <param index="1" name="transform" type="Transform2D" />
+ <description>
+ Transforms both the current and previous stored transform for a canvas item.
+ This allows transforming a canvas item without creating a "glitch" in the interpolation, which is particularly useful for large worlds utilising a shifting origin.
+ </description>
+ </method>
<method name="canvas_light_attach_to_canvas">
<return type="void" />
<param index="0" name="light" type="RID" />
@@ -644,6 +669,14 @@
[b]Note:[/b] The equivalent node is [LightOccluder2D].
</description>
</method>
+ <method name="canvas_light_occluder_reset_physics_interpolation">
+ <return type="void" />
+ <param index="0" name="occluder" type="RID" />
+ <description>
+ Prevents physics interpolation for the current physics tick.
+ This is useful when moving an occluder to a new location, to give an instantaneous change rather than interpolation from the previous location.
+ </description>
+ </method>
<method name="canvas_light_occluder_set_as_sdf_collision">
<return type="void" />
<param index="0" name="occluder" type="RID" />
@@ -659,6 +692,14 @@
Enables or disables light occluder.
</description>
</method>
+ <method name="canvas_light_occluder_set_interpolated">
+ <return type="void" />
+ <param index="0" name="occluder" type="RID" />
+ <param index="1" name="interpolated" type="bool" />
+ <description>
+ If [param interpolated] is [code]true[/code], turns on physics interpolation for the light occluder.
+ </description>
+ </method>
<method name="canvas_light_occluder_set_light_mask">
<return type="void" />
<param index="0" name="occluder" type="RID" />
@@ -683,6 +724,23 @@
Sets a light occluder's [Transform2D].
</description>
</method>
+ <method name="canvas_light_occluder_transform_physics_interpolation">
+ <return type="void" />
+ <param index="0" name="occluder" type="RID" />
+ <param index="1" name="transform" type="Transform2D" />
+ <description>
+ Transforms both the current and previous stored transform for a light occluder.
+ This allows transforming an occluder without creating a "glitch" in the interpolation, which is particularly useful for large worlds utilising a shifting origin.
+ </description>
+ </method>
+ <method name="canvas_light_reset_physics_interpolation">
+ <return type="void" />
+ <param index="0" name="light" type="RID" />
+ <description>
+ Prevents physics interpolation for the current physics tick.
+ This is useful when moving a canvas item to a new location, to give an instantaneous change rather than interpolation from the previous location.
+ </description>
+ </method>
<method name="canvas_light_set_blend_mode">
<return type="void" />
<param index="0" name="light" type="RID" />
@@ -723,6 +781,14 @@
Sets a canvas light's height.
</description>
</method>
+ <method name="canvas_light_set_interpolated">
+ <return type="void" />
+ <param index="0" name="light" type="RID" />
+ <param index="1" name="interpolated" type="bool" />
+ <description>
+ If [param interpolated] is [code]true[/code], turns on physics interpolation for the canvas light.
+ </description>
+ </method>
<method name="canvas_light_set_item_cull_mask">
<return type="void" />
<param index="0" name="light" type="RID" />
@@ -829,6 +895,15 @@
Sets the Z range of objects that will be affected by this light. Equivalent to [member Light2D.range_z_min] and [member Light2D.range_z_max].
</description>
</method>
+ <method name="canvas_light_transform_physics_interpolation">
+ <return type="void" />
+ <param index="0" name="light" type="RID" />
+ <param index="1" name="transform" type="Transform2D" />
+ <description>
+ Transforms both the current and previous stored transform for a canvas light.
+ This allows transforming a light without creating a "glitch" in the interpolation, which is is particularly useful for large worlds utilising a shifting origin.
+ </description>
+ </method>
<method name="canvas_occluder_polygon_create">
<return type="RID" />
<description>
@@ -1857,7 +1932,7 @@
<param index="0" name="instance" type="RID" />
<param index="1" name="transform" type="Transform3D" />
<description>
- Sets the world space transform of the instance. Equivalent to [member Node3D.transform].
+ Sets the world space transform of the instance. Equivalent to [member Node3D.global_transform].
</description>
</method>
<method name="instance_set_visibility_parent">
@@ -2501,7 +2576,7 @@
<description>
Set the entire data to use for drawing the [param multimesh] at once to [param buffer] (such as instance transforms and colors). [param buffer]'s size must match the number of instances multiplied by the per-instance data size (which depends on the enabled MultiMesh fields). Otherwise, an error message is printed and nothing is rendered. See also [method multimesh_get_buffer].
The per-instance data size and expected data order is:
- [codeblock]
+ [codeblock lang=text]
2D:
- Position: 8 floats (8 floats for Transform2D)
- Position + Vertex color: 12 floats (8 floats for Transform2D, 4 floats for Color)
@@ -3609,6 +3684,14 @@
Returns the viewport's last rendered frame.
</description>
</method>
+ <method name="viewport_get_update_mode" qualifiers="const">
+ <return type="int" enum="RenderingServer.ViewportUpdateMode" />
+ <param index="0" name="viewport" type="RID" />
+ <description>
+ Returns the viewport's update mode. See [enum ViewportUpdateMode] constants for options.
+ [b]Warning:[/b] Calling this from any thread other than the rendering thread will be detrimental to performance.
+ </description>
+ </method>
<method name="viewport_remove_canvas">
<return type="void" />
<param index="0" name="viewport" type="RID" />
diff --git a/doc/classes/ResourceImporterCSVTranslation.xml b/doc/classes/ResourceImporterCSVTranslation.xml
index 122728e75a..578a79fdca 100644
--- a/doc/classes/ResourceImporterCSVTranslation.xml
+++ b/doc/classes/ResourceImporterCSVTranslation.xml
@@ -6,7 +6,7 @@
<description>
Comma-separated values are a plain text table storage format. The format's simplicity makes it easy to edit in any text editor or spreadsheet software. This makes it a common choice for game localization.
[b]Example CSV file:[/b]
- [codeblock]
+ [codeblock lang=text]
keys,en,es,ja
GREET,"Hello, friend!","Hola, amigo!",こんにちは
ASK,How are you?,Cómo está?,元気ですか
diff --git a/doc/classes/ResourceImporterScene.xml b/doc/classes/ResourceImporterScene.xml
index 4e20fe150e..900e028b25 100644
--- a/doc/classes/ResourceImporterScene.xml
+++ b/doc/classes/ResourceImporterScene.xml
@@ -21,6 +21,9 @@
<member name="animation/import" type="bool" setter="" getter="" default="true">
If [code]true[/code], import animations from the 3D scene.
</member>
+ <member name="animation/import_rest_as_RESET" type="bool" setter="" getter="" default="false">
+ If [code]true[/code], adds an [Animation] named [code]RESET[/code], containing the [method Skeleton3D.get_bone_rest] from [Skeleton3D] nodes. This can be useful to extract an animation in the reference pose.
+ </member>
<member name="animation/remove_immutable_tracks" type="bool" setter="" getter="" default="true">
If [code]true[/code], remove animation tracks that only contain default values. This can reduce output file size and memory usage with certain 3D scenes, depending on the contents of their animation tracks.
</member>
diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml
index 95fbee4a24..885c6f0478 100644
--- a/doc/classes/ResourceLoader.xml
+++ b/doc/classes/ResourceLoader.xml
@@ -9,7 +9,7 @@
[b]Note:[/b] You have to import the files into the engine first to load them using [method load]. If you want to load [Image]s at run-time, you may use [method Image.load]. If you want to import audio files, you can use the snippet described in [member AudioStreamMP3.data].
</description>
<tutorials>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="add_resource_format_loader">
@@ -79,6 +79,7 @@
Returns an empty resource if no [ResourceFormatLoader] could handle the file.
GDScript has a simplified [method @GDScript.load] built-in method which can be used in most situations, leaving the use of [ResourceLoader] for more advanced scenarios.
[b]Note:[/b] If [member ProjectSettings.editor/export/convert_text_resources_to_binary] is [code]true[/code], [method @GDScript.load] will not be able to read converted files in an exported project. If you rely on run-time loading of files present within the PCK, set [member ProjectSettings.editor/export/convert_text_resources_to_binary] to [code]false[/code].
+ [b]Note:[/b] Relative paths will be prefixed with [code]"res://"[/code] before loading, to avoid unexpected results make sure your paths are absolute.
</description>
</method>
<method name="load_threaded_get">
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index b9a6b06fe3..01c4074e6d 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -12,8 +12,8 @@
</description>
<tutorials>
<link title="BBCode in RichTextLabel">$DOCS_URL/tutorials/ui/bbcode_in_richtextlabel.html</link>
- <link title="GUI Rich Text/BBcode Demo">https://godotengine.org/asset-library/asset/132</link>
- <link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
+ <link title="Rich Text Label with BBCode Demo">https://godotengine.org/asset-library/asset/2774</link>
+ <link title="Operating System Testing Demo">https://godotengine.org/asset-library/asset/2789</link>
</tutorials>
<methods>
<method name="add_image">
diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml
index 269ead1298..5661d1a276 100644
--- a/doc/classes/RigidBody2D.xml
+++ b/doc/classes/RigidBody2D.xml
@@ -11,15 +11,15 @@
[b]Note:[/b] Changing the 2D transform or [member linear_velocity] of a [RigidBody2D] very often may lead to some unpredictable behaviors. If you need to directly affect the body, prefer [method _integrate_forces] as it allows you to directly access the physics state.
</description>
<tutorials>
- <link title="2D Physics Platformer Demo">https://godotengine.org/asset-library/asset/119</link>
- <link title="Instancing Demo">https://godotengine.org/asset-library/asset/148</link>
+ <link title="2D Physics Platformer Demo">https://godotengine.org/asset-library/asset/2725</link>
+ <link title="Instancing Demo">https://godotengine.org/asset-library/asset/2716</link>
</tutorials>
<methods>
<method name="_integrate_forces" qualifiers="virtual">
<return type="void" />
<param index="0" name="state" type="PhysicsDirectBodyState2D" />
<description>
- Allows you to read and safely modify the simulation state for the object. Use this instead of [method Node._physics_process] if you need to directly change the body's [code]position[/code] or other physics properties. By default, it works in addition to the usual physics behavior, but [member custom_integrator] allows you to disable the default behavior and write custom force integration for a body.
+ Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.
</description>
</method>
<method name="add_constant_central_force">
@@ -159,7 +159,8 @@
Continuous collision detection tries to predict where a moving body will collide instead of moving it and correcting its movement after collision. Continuous collision detection is slower, but more precise and misses fewer collisions with small, fast-moving objects. Raycasting and shapecasting methods are available. See [enum CCDMode] for details.
</member>
<member name="custom_integrator" type="bool" setter="set_use_custom_integrator" getter="is_using_custom_integrator" default="false">
- If [code]true[/code], internal force integration is disabled for this body. Aside from collision response, the body will only move as determined by the [method _integrate_forces] function.
+ If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.
+ Setting this property will call the method [method PhysicsServer2D.body_set_omit_force_integration] internally.
</member>
<member name="freeze" type="bool" setter="set_freeze_enabled" getter="is_freeze_enabled" default="false">
If [code]true[/code], the body is frozen. Gravity and forces are not applied anymore.
diff --git a/doc/classes/RigidBody3D.xml b/doc/classes/RigidBody3D.xml
index c507a7c39a..dae904e2a3 100644
--- a/doc/classes/RigidBody3D.xml
+++ b/doc/classes/RigidBody3D.xml
@@ -12,15 +12,15 @@
</description>
<tutorials>
<link title="Physics introduction">$DOCS_URL/tutorials/physics/physics_introduction.html</link>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<methods>
<method name="_integrate_forces" qualifiers="virtual">
<return type="void" />
<param index="0" name="state" type="PhysicsDirectBodyState3D" />
<description>
- Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it works in addition to the usual physics behavior, but the [member custom_integrator] property allows you to disable the default behavior and do fully custom force integration for a body.
+ Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it is called before the standard force integration, but the [member custom_integrator] property allows you to disable the standard force integration and do fully custom force integration for a body.
</description>
</method>
<method name="add_constant_central_force">
@@ -166,7 +166,8 @@
Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. Continuous collision detection is more precise, and misses fewer impacts by small, fast-moving objects. Not using continuous collision detection is faster to compute, but can miss small, fast-moving objects.
</member>
<member name="custom_integrator" type="bool" setter="set_use_custom_integrator" getter="is_using_custom_integrator" default="false">
- If [code]true[/code], internal force integration will be disabled (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined.
+ If [code]true[/code], the standard force integration (like gravity or damping) will be disabled for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] method, if that virtual method is overridden.
+ Setting this property will call the method [method PhysicsServer3D.body_set_omit_force_integration] internally.
</member>
<member name="freeze" type="bool" setter="set_freeze_enabled" getter="is_freeze_enabled" default="false">
If [code]true[/code], the body is frozen. Gravity and forces are not applied anymore.
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index f1bb5a1cf6..bae5fe1205 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -264,6 +264,10 @@
- 2D and 3D physics will be stopped, as well as collision detection and related signals.
- Depending on each node's [member Node.process_mode], their [method Node._process], [method Node._physics_process] and [method Node._input] callback methods may not called anymore.
</member>
+ <member name="physics_interpolation" type="bool" setter="set_physics_interpolation_enabled" getter="is_physics_interpolation_enabled" default="false">
+ If [code]true[/code], the renderer will interpolate the transforms of physics objects between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames.
+ The default value of this property is controlled by [member ProjectSettings.physics/common/physics_interpolation].
+ </member>
<member name="quit_on_go_back" type="bool" setter="set_quit_on_go_back" getter="is_quit_on_go_back" default="true">
If [code]true[/code], the application quits automatically when navigating back (e.g. using the system "Back" button on Android).
To handle 'Go Back' button when this option is disabled, use [constant DisplayServer.WINDOW_EVENT_GO_BACK_REQUEST].
diff --git a/doc/classes/ShapeCast2D.xml b/doc/classes/ShapeCast2D.xml
index d71c9ce13a..576bd62cc3 100644
--- a/doc/classes/ShapeCast2D.xml
+++ b/doc/classes/ShapeCast2D.xml
@@ -48,6 +48,7 @@
<return type="float" />
<description>
The fraction from the [ShapeCast2D]'s origin to its [member target_position] (between 0 and 1) of how far the shape must move to trigger a collision.
+ In ideal conditions this would be the same as [method get_closest_collision_safe_fraction], however shape casting is calculated in discrete steps, so the precise point of collision can occur between two calculated positions.
</description>
</method>
<method name="get_collider" qualifiers="const">
diff --git a/doc/classes/ShapeCast3D.xml b/doc/classes/ShapeCast3D.xml
index ff057e8c70..2c6efe2ebe 100644
--- a/doc/classes/ShapeCast3D.xml
+++ b/doc/classes/ShapeCast3D.xml
@@ -48,6 +48,7 @@
<return type="float" />
<description>
The fraction from the [ShapeCast3D]'s origin to its [member target_position] (between 0 and 1) of how far the shape must move to trigger a collision.
+ In ideal conditions this would be the same as [method get_closest_collision_safe_fraction], however shape casting is calculated in discrete steps, so the precise point of collision can occur between two calculated positions.
</description>
</method>
<method name="get_collider" qualifiers="const">
diff --git a/doc/classes/Skeleton3D.xml b/doc/classes/Skeleton3D.xml
index c9ad204247..caa3097a6b 100644
--- a/doc/classes/Skeleton3D.xml
+++ b/doc/classes/Skeleton3D.xml
@@ -9,8 +9,7 @@
Note that "global pose" below refers to the overall transform of the bone with respect to skeleton, so it is not the actual global/world transform of the bone.
</description>
<tutorials>
- <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="add_bone">
@@ -27,7 +26,7 @@
Clear all the bones in this skeleton.
</description>
</method>
- <method name="clear_bones_global_pose_override">
+ <method name="clear_bones_global_pose_override" deprecated="">
<return type="void" />
<description>
Removes the global pose override on all bones in the skeleton.
@@ -58,6 +57,11 @@
Force updates the bone transform for the bone at [param bone_idx] and all of its children.
</description>
</method>
+ <method name="get_animate_physical_bones" qualifiers="const" deprecated="">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
<method name="get_bone_children" qualifiers="const">
<return type="PackedInt32Array" />
<param index="0" name="bone_idx" type="int" />
@@ -76,16 +80,17 @@
<param index="0" name="bone_idx" type="int" />
<description>
Returns the overall transform of the specified bone, with respect to the skeleton. Being relative to the skeleton frame, this is not the actual "global" transform of the bone.
+ [b]Note:[/b] This is the global pose you set to the skeleton in the process, the final global pose can get overridden by modifiers in the deferred process, if you want to access the final global pose, use [signal SkeletonModifier3D.modification_processed].
</description>
</method>
- <method name="get_bone_global_pose_no_override" qualifiers="const">
+ <method name="get_bone_global_pose_no_override" qualifiers="const" deprecated="">
<return type="Transform3D" />
<param index="0" name="bone_idx" type="int" />
<description>
Returns the overall transform of the specified bone, with respect to the skeleton, but without any global pose overrides. Being relative to the skeleton frame, this is not the actual "global" transform of the bone.
</description>
</method>
- <method name="get_bone_global_pose_override" qualifiers="const">
+ <method name="get_bone_global_pose_override" qualifiers="const" deprecated="">
<return type="Transform3D" />
<param index="0" name="bone_idx" type="int" />
<description>
@@ -119,6 +124,7 @@
<param index="0" name="bone_idx" type="int" />
<description>
Returns the pose transform of the specified bone.
+ [b]Note:[/b] This is the pose you set to the skeleton in the process, the final pose can get overridden by modifiers in the deferred process, if you want to access the final pose, use [signal SkeletonModifier3D.modification_processed].
</description>
</method>
<method name="get_bone_pose_position" qualifiers="const">
@@ -176,7 +182,7 @@
Returns all bones in the skeleton to their rest poses.
</description>
</method>
- <method name="physical_bones_add_collision_exception">
+ <method name="physical_bones_add_collision_exception" deprecated="">
<return type="void" />
<param index="0" name="exception" type="RID" />
<description>
@@ -184,7 +190,7 @@
Works just like the [RigidBody3D] node.
</description>
</method>
- <method name="physical_bones_remove_collision_exception">
+ <method name="physical_bones_remove_collision_exception" deprecated="">
<return type="void" />
<param index="0" name="exception" type="RID" />
<description>
@@ -192,7 +198,7 @@
Works just like the [RigidBody3D] node.
</description>
</method>
- <method name="physical_bones_start_simulation">
+ <method name="physical_bones_start_simulation" deprecated="">
<return type="void" />
<param index="0" name="bones" type="StringName[]" default="[]" />
<description>
@@ -200,7 +206,7 @@
Optionally, a list of bone names can be passed-in, allowing only the passed-in bones to be simulated.
</description>
</method>
- <method name="physical_bones_stop_simulation">
+ <method name="physical_bones_stop_simulation" deprecated="">
<return type="void" />
<description>
Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating.
@@ -226,6 +232,12 @@
Sets all bone poses to rests.
</description>
</method>
+ <method name="set_animate_physical_bones" deprecated="">
+ <return type="void" />
+ <param index="0" name="enabled" type="bool" />
+ <description>
+ </description>
+ </method>
<method name="set_bone_enabled">
<return type="void" />
<param index="0" name="bone_idx" type="int" />
@@ -234,7 +246,16 @@
Disables the pose for the bone at [param bone_idx] if [code]false[/code], enables the bone pose if [code]true[/code].
</description>
</method>
- <method name="set_bone_global_pose_override">
+ <method name="set_bone_global_pose">
+ <return type="void" />
+ <param index="0" name="bone_idx" type="int" />
+ <param index="1" name="pose" type="Transform3D" />
+ <description>
+ Sets the global pose transform, [param pose], for the bone at [param bone_idx].
+ [b]Note:[/b] If other bone poses have been changed, this method executes an update process and will cause performance to deteriorate. If you know that multiple global poses will be applied, consider using [method set_bone_pose] with precalculation.
+ </description>
+ </method>
+ <method name="set_bone_global_pose_override" deprecated="">
<return type="void" />
<param index="0" name="bone_idx" type="int" />
<param index="1" name="pose" type="Transform3D" />
@@ -251,6 +272,7 @@
<param index="0" name="bone_idx" type="int" />
<param index="1" name="name" type="String" />
<description>
+ Sets the bone name, [param name], for the bone at [param bone_idx].
</description>
</method>
<method name="set_bone_parent">
@@ -262,6 +284,14 @@
[b]Note:[/b] [param parent_idx] must be less than [param bone_idx].
</description>
</method>
+ <method name="set_bone_pose">
+ <return type="void" />
+ <param index="0" name="bone_idx" type="int" />
+ <param index="1" name="pose" type="Transform3D" />
+ <description>
+ Sets the pose transform, [param pose], for the bone at [param bone_idx].
+ </description>
+ </method>
<method name="set_bone_pose_position">
<return type="void" />
<param index="0" name="bone_idx" type="int" />
@@ -303,7 +333,8 @@
</method>
</methods>
<members>
- <member name="animate_physical_bones" type="bool" setter="set_animate_physical_bones" getter="get_animate_physical_bones" default="true">
+ <member name="modifier_callback_mode_process" type="int" setter="set_modifier_callback_mode_process" getter="get_modifier_callback_mode_process" enum="Skeleton3D.ModifierCallbackModeProcess" default="1">
+ Sets the processing timing for the Modifier.
</member>
<member name="motion_scale" type="float" setter="set_motion_scale" getter="get_motion_scale" default="1.0">
Multiplies the 3D position track animation.
@@ -320,6 +351,10 @@
Emitted when the bone at [param bone_idx] is toggled with [method set_bone_enabled]. Use [method is_bone_enabled] to check the new value.
</description>
</signal>
+ <signal name="bone_list_changed">
+ <description>
+ </description>
+ </signal>
<signal name="bone_pose_changed">
<param index="0" name="bone_idx" type="int" />
<description>
@@ -342,5 +377,11 @@
Notification received when this skeleton's pose needs to be updated.
This notification is received [i]before[/i] the related [signal pose_updated] signal.
</constant>
+ <constant name="MODIFIER_CALLBACK_MODE_PROCESS_PHYSICS" value="0" enum="ModifierCallbackModeProcess">
+ Set a flag to process modification during physics frames (see [constant Node.NOTIFICATION_INTERNAL_PHYSICS_PROCESS]).
+ </constant>
+ <constant name="MODIFIER_CALLBACK_MODE_PROCESS_IDLE" value="1" enum="ModifierCallbackModeProcess">
+ Set a flag to process modification during process frames (see [constant Node.NOTIFICATION_INTERNAL_PROCESS]).
+ </constant>
</constants>
</class>
diff --git a/doc/classes/SkeletonIK3D.xml b/doc/classes/SkeletonIK3D.xml
index d1f96adec2..6de6d9d186 100644
--- a/doc/classes/SkeletonIK3D.xml
+++ b/doc/classes/SkeletonIK3D.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="SkeletonIK3D" inherits="Node" deprecated="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="SkeletonIK3D" inherits="SkeletonModifier3D" deprecated="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A node used to rotate all bones of a [Skeleton3D] bone chain a way that places the end bone at a desired 3D position.
</brief_description>
<description>
- SkeletonIK3D is used to rotate all bones of a [Skeleton3D] bone chain a way that places the end bone at a desired 3D position. A typical scenario for IK in games is to place a character's feet on the ground or a character's hands on a currently held 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 [member interpolation] property.
+ SkeletonIK3D is used to rotate all bones of a [Skeleton3D] bone chain a way that places the end bone at a desired 3D position. A typical scenario for IK in games is to place a character's feet on the ground or a character's hands on a currently held 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 [member SkeletonModifier3D.influence] property.
[codeblock]
# Apply IK effect automatically on every new frame (not the current)
skeleton_ik_node.start()
@@ -16,17 +16,16 @@
skeleton_ik_node.stop()
# Apply full IK effect
- skeleton_ik_node.set_interpolation(1.0)
+ skeleton_ik_node.set_influence(1.0)
# Apply half IK effect
- skeleton_ik_node.set_interpolation(0.5)
+ skeleton_ik_node.set_influence(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)
+ skeleton_ik_node.set_influence(0.0)
[/codeblock]
</description>
<tutorials>
- <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link>
</tutorials>
<methods>
<method name="get_parent_skeleton" qualifiers="const">
@@ -56,9 +55,6 @@
</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>
diff --git a/doc/classes/SkeletonModifier3D.xml b/doc/classes/SkeletonModifier3D.xml
new file mode 100644
index 0000000000..fab33750ea
--- /dev/null
+++ b/doc/classes/SkeletonModifier3D.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="SkeletonModifier3D" inherits="Node3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ A Node that may modify Skeleton3D's bone.
+ </brief_description>
+ <description>
+ [SkeletonModifier3D] retrieves a target [Skeleton3D] by having a [Skeleton3D] parent.
+ If there is [AnimationMixer], modification always performs after playback process of the [AnimationMixer].
+ </description>
+ <tutorials>
+ </tutorials>
+ <members>
+ <member name="active" type="bool" setter="set_active" getter="is_active" default="true">
+ If [code]true[/code], the [SkeletonModifier3D] will be processing.
+ </member>
+ <member name="influence" type="float" setter="set_influence" getter="get_influence" default="1.0">
+ Sets the influence of the modification.
+ [b]Note:[/b] This value is used by [Skeleton3D] to blend, so the [SkeletonModifier3D] should always apply only 100% of the result without interpolation.
+ </member>
+ </members>
+ <signals>
+ <signal name="modification_processed">
+ <description>
+ Notifies when the modification have been finished.
+ [b]Note:[/b] If you want to get the modified bone pose by the modifier, you must use [method Skeleton3D.get_bone_pose] or [method Skeleton3D.get_bone_global_pose] at the moment this signal is fired.
+ </description>
+ </signal>
+ </signals>
+</class>
diff --git a/doc/classes/SkeletonProfile.xml b/doc/classes/SkeletonProfile.xml
index 3ed29668e4..b5bb4e3639 100644
--- a/doc/classes/SkeletonProfile.xml
+++ b/doc/classes/SkeletonProfile.xml
@@ -83,6 +83,14 @@
Returns the texture of the group at [param group_idx] that will be the drawing group background image in the [BoneMap] editor.
</description>
</method>
+ <method name="is_required" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="bone_idx" type="int" />
+ <description>
+ Returns whether the bone at [param bone_idx] is required for retargeting.
+ This value is used by the bone map editor. If this method returns [code]true[/code], and no bone is assigned, the handle color will be red on the bone map editor.
+ </description>
+ </method>
<method name="set_bone_name">
<return type="void" />
<param index="0" name="bone_idx" type="int" />
@@ -141,6 +149,14 @@
Sets the reference pose transform for bone [param bone_idx].
</description>
</method>
+ <method name="set_required">
+ <return type="void" />
+ <param index="0" name="bone_idx" type="int" />
+ <param index="1" name="required" type="bool" />
+ <description>
+ Sets the required status for bone [param bone_idx] to [param required].
+ </description>
+ </method>
<method name="set_tail_direction">
<return type="void" />
<param index="0" name="bone_idx" type="int" />
diff --git a/doc/classes/SkeletonProfileHumanoid.xml b/doc/classes/SkeletonProfileHumanoid.xml
index 5539d1d980..9c9cc2d8c7 100644
--- a/doc/classes/SkeletonProfileHumanoid.xml
+++ b/doc/classes/SkeletonProfileHumanoid.xml
@@ -6,7 +6,7 @@
<description>
A [SkeletonProfile] as a preset that is optimized for the human form. This exists for standardization, so all parameters are read-only.
A humanoid skeleton profile contains 54 bones divided in 4 groups: [code]"Body"[/code], [code]"Face"[/code], [code]"LeftHand"[/code], and [code]"RightHand"[/code]. It is structured as follows:
- [codeblock]
+ [codeblock lang=text]
Root
└─ Hips
├─ LeftUpperLeg
diff --git a/doc/classes/SkinReference.xml b/doc/classes/SkinReference.xml
index 466dbe2500..cb0c44cefa 100644
--- a/doc/classes/SkinReference.xml
+++ b/doc/classes/SkinReference.xml
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="SkinReference" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
+ A reference-counted holder object for a skeleton RID used in the [RenderingServer].
</brief_description>
<description>
+ An internal object containing a mapping from a [Skin] used within the context of a particular [MeshInstance3D] to refer to the skeleton's [RID] in the RenderingServer.
+ See also [method MeshInstance3D.get_skin_reference] and [method RenderingServer.instance_attach_skeleton].
+ Note that despite the similar naming, the skeleton RID used in the [RenderingServer] does not have a direct one-to-one correspondence to a [Skeleton3D] node.
+ In particular, a [Skeleton3D] node with no [MeshInstance3D] children may be unknown to the [RenderingServer].
+ On the other hand, a [Skeleton3D] with multiple [MeshInstance3D] nodes which each have different [member MeshInstance3D.skin] objects may have multiple SkinReference instances (and hence, multiple skeleton [RID]s).
</description>
<tutorials>
</tutorials>
@@ -10,11 +16,14 @@
<method name="get_skeleton" qualifiers="const">
<return type="RID" />
<description>
+ Returns the [RID] owned by this SkinReference, as returned by [method RenderingServer.skeleton_create].
</description>
</method>
<method name="get_skin" qualifiers="const">
<return type="Skin" />
<description>
+ Returns the [Skin] connected to this SkinReference. In the case of [MeshInstance3D] with no [member MeshInstance3D.skin] assigned, this will reference an internal default [Skin] owned by that [MeshInstance3D].
+ Note that a single [Skin] may have more than one [SkinReference] in the case that it is shared by meshes across multiple [Skeleton3D] nodes.
</description>
</method>
</methods>
diff --git a/doc/classes/SliderJoint3D.xml b/doc/classes/SliderJoint3D.xml
index 49b362041b..8930514492 100644
--- a/doc/classes/SliderJoint3D.xml
+++ b/doc/classes/SliderJoint3D.xml
@@ -13,6 +13,7 @@
<return type="float" />
<param index="0" name="param" type="int" enum="SliderJoint3D.Param" />
<description>
+ Returns the value of the given parameter (see [enum Param] constants).
</description>
</method>
<method name="set_param">
@@ -20,6 +21,7 @@
<param index="0" name="param" type="int" enum="SliderJoint3D.Param" />
<param index="1" name="value" type="float" />
<description>
+ Assigns [param value] to the given parameter (see [enum Param] constants).
</description>
</method>
</methods>
@@ -96,70 +98,70 @@
</members>
<constants>
<constant name="PARAM_LINEAR_LIMIT_UPPER" value="0" enum="Param">
- The maximum difference between the pivot points on their X axis before damping happens.
+ Constant for accessing [member linear_limit/upper_distance]. The maximum difference between the pivot points on their X axis before damping happens.
</constant>
<constant name="PARAM_LINEAR_LIMIT_LOWER" value="1" enum="Param">
- The minimum difference between the pivot points on their X axis before damping happens.
+ Constant for accessing [member linear_limit/lower_distance]. The minimum difference between the pivot points on their X axis before damping happens.
</constant>
<constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2" enum="Param">
- A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement.
+ Constant for accessing [member linear_limit/softness]. A factor applied to the movement across the slider axis once the limits get surpassed. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_LIMIT_RESTITUTION" value="3" enum="Param">
- The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost.
+ Constant for accessing [member linear_limit/restitution]. The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost.
</constant>
<constant name="PARAM_LINEAR_LIMIT_DAMPING" value="4" enum="Param">
- The amount of damping once the slider limits are surpassed.
+ Constant for accessing [member linear_limit/damping]. The amount of damping once the slider limits are surpassed.
</constant>
<constant name="PARAM_LINEAR_MOTION_SOFTNESS" value="5" enum="Param">
- A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement.
+ Constant for accessing [member linear_motion/softness]. A factor applied to the movement across the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_MOTION_RESTITUTION" value="6" enum="Param">
- The amount of restitution inside the slider limits.
+ Constant for accessing [member linear_motion/restitution]. The amount of restitution inside the slider limits.
</constant>
<constant name="PARAM_LINEAR_MOTION_DAMPING" value="7" enum="Param">
- The amount of damping inside the slider limits.
+ Constant for accessing [member linear_motion/damping]. The amount of damping inside the slider limits.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_SOFTNESS" value="8" enum="Param">
- A factor applied to the movement across axes orthogonal to the slider.
+ Constant for accessing [member linear_ortho/softness]. A factor applied to the movement across axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_RESTITUTION" value="9" enum="Param">
- The amount of restitution when movement is across axes orthogonal to the slider.
+ Constant for accessing [member linear_motion/restitution]. The amount of restitution when movement is across axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_DAMPING" value="10" enum="Param">
- The amount of damping when movement is across axes orthogonal to the slider.
+ Constant for accessing [member linear_motion/damping]. The amount of damping when movement is across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_UPPER" value="11" enum="Param">
- The upper limit of rotation in the slider.
+ Constant for accessing [member angular_limit/upper_angle]. The upper limit of rotation in the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_LOWER" value="12" enum="Param">
- The lower limit of rotation in the slider.
+ Constant for accessing [member angular_limit/lower_angle]. The lower limit of rotation in the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="13" enum="Param">
- A factor applied to the all rotation once the limit is surpassed.
+ Constant for accessing [member angular_limit/softness]. A factor applied to the all rotation once the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_RESTITUTION" value="14" enum="Param">
- The amount of restitution of the rotation when the limit is surpassed.
+ Constant for accessing [member angular_limit/restitution]. The amount of restitution of the rotation when the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_DAMPING" value="15" enum="Param">
- The amount of damping of the rotation when the limit is surpassed.
+ Constant for accessing [member angular_limit/damping]. The amount of damping of the rotation when the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_MOTION_SOFTNESS" value="16" enum="Param">
- A factor applied to the all rotation in the limits.
+ Constant for accessing [member angular_motion/softness]. A factor applied to the all rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_MOTION_RESTITUTION" value="17" enum="Param">
- The amount of restitution of the rotation in the limits.
+ Constant for accessing [member angular_motion/restitution]. The amount of restitution of the rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_MOTION_DAMPING" value="18" enum="Param">
- The amount of damping of the rotation in the limits.
+ Constant for accessing [member angular_motion/damping]. The amount of damping of the rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_SOFTNESS" value="19" enum="Param">
- A factor applied to the all rotation across axes orthogonal to the slider.
+ Constant for accessing [member angular_ortho/softness]. A factor applied to the all rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_RESTITUTION" value="20" enum="Param">
- The amount of restitution of the rotation across axes orthogonal to the slider.
+ Constant for accessing [member angular_ortho/restitution]. The amount of restitution of the rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_DAMPING" value="21" enum="Param">
- The amount of damping of the rotation across axes orthogonal to the slider.
+ Constant for accessing [member angular_ortho/damping]. The amount of damping of the rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_MAX" value="22" enum="Param">
Represents the size of the [enum Param] enum.
diff --git a/doc/classes/SoftBody3D.xml b/doc/classes/SoftBody3D.xml
index a4d80a7c3e..195196b78c 100644
--- a/doc/classes/SoftBody3D.xml
+++ b/doc/classes/SoftBody3D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
A deformable 3D physics mesh. Used to create elastic or deformable objects such as cloth, rubber, or other flexible materials.
+ Additionally, [SoftBody3D] is subject to wind forces defined in [Area3D] (see [member Area3D.wind_source_path], [member Area3D.wind_force_magnitude], and [member Area3D.wind_attenuation_factor]).
[b]Note:[/b] There are many known bugs in [SoftBody3D]. Therefore, it's not recommended to use them for things that can affect gameplay (such as trampolines).
</description>
<tutorials>
diff --git a/doc/classes/SphereShape3D.xml b/doc/classes/SphereShape3D.xml
index 313b05dff4..4b14c535dd 100644
--- a/doc/classes/SphereShape3D.xml
+++ b/doc/classes/SphereShape3D.xml
@@ -8,7 +8,7 @@
[b]Performance:[/b] [SphereShape3D] is fast to check collisions against. It is faster than [BoxShape3D], [CapsuleShape3D], and [CylinderShape3D].
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
</tutorials>
<members>
<member name="radius" type="float" setter="set_radius" getter="get_radius" default="0.5">
diff --git a/doc/classes/SpotLight3D.xml b/doc/classes/SpotLight3D.xml
index ba70edb933..8d2177d3fd 100644
--- a/doc/classes/SpotLight3D.xml
+++ b/doc/classes/SpotLight3D.xml
@@ -11,7 +11,7 @@
<tutorials>
<link title="3D lights and shadows">$DOCS_URL/tutorials/3d/lights_and_shadows.html</link>
<link title="Faking global illumination">$DOCS_URL/tutorials/3d/global_illumination/faking_global_illumination.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="shadow_bias" type="float" setter="set_param" getter="get_param" overrides="Light3D" default="0.03" />
diff --git a/doc/classes/Sprite2D.xml b/doc/classes/Sprite2D.xml
index 8dcf286b3a..10ac4b0fcc 100644
--- a/doc/classes/Sprite2D.xml
+++ b/doc/classes/Sprite2D.xml
@@ -7,7 +7,7 @@
A node that displays a 2D texture. The texture displayed can be a region from a larger atlas texture, or a frame from a sprite sheet animation.
</description>
<tutorials>
- <link title="Instancing Demo">https://godotengine.org/asset-library/asset/148</link>
+ <link title="Instancing Demo">https://godotengine.org/asset-library/asset/2716</link>
</tutorials>
<methods>
<method name="get_rect" qualifiers="const">
diff --git a/doc/classes/StaticBody3D.xml b/doc/classes/StaticBody3D.xml
index 81eda8505b..a2a9a97bc1 100644
--- a/doc/classes/StaticBody3D.xml
+++ b/doc/classes/StaticBody3D.xml
@@ -9,9 +9,9 @@
[StaticBody3D] is useful for completely static objects like floors and walls, as well as moving surfaces like conveyor belts and circular revolving platforms (by using [member constant_linear_velocity] and [member constant_angular_velocity]).
</description>
<tutorials>
- <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/675</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Physics Tests Demo">https://godotengine.org/asset-library/asset/2747</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="constant_angular_velocity" type="Vector3" setter="set_constant_angular_velocity" getter="get_constant_angular_velocity" default="Vector3(0, 0, 0)">
diff --git a/doc/classes/StatusIndicator.xml b/doc/classes/StatusIndicator.xml
index 6b015c3d15..e1fcc35ad7 100644
--- a/doc/classes/StatusIndicator.xml
+++ b/doc/classes/StatusIndicator.xml
@@ -22,7 +22,7 @@
<signals>
<signal name="pressed">
<param index="0" name="mouse_button" type="int" />
- <param index="1" name="position" type="Vector2i" />
+ <param index="1" name="mouse_position" type="Vector2i" />
<description>
Emitted when the status indicator is pressed.
</description>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 17f953f48f..a33a1aea41 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -112,7 +112,7 @@
<description>
Performs a case-sensitive comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" and "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order.
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method nocasecmp_to], [method naturalcasecmp_to], and [method naturalnocasecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method nocasecmp_to], [method filecasecmp_to], and [method naturalcasecmp_to].
</description>
</method>
<method name="chr" qualifiers="static">
@@ -184,6 +184,22 @@
Returns a string with [param chars] characters erased starting from [param position]. If [param chars] goes beyond the string's length given the specified [param position], fewer characters will be erased from the returned string. Returns an empty string if either [param position] or [param chars] is negative. Returns the original string unmodified if [param chars] is [code]0[/code].
</description>
</method>
+ <method name="filecasecmp_to" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="to" type="String" />
+ <description>
+ Like [method naturalcasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filenocasecmp_to], [method naturalcasecmp_to], and [method casecmp_to].
+ </description>
+ </method>
+ <method name="filenocasecmp_to" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="to" type="String" />
+ <description>
+ Like [method naturalnocasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filecasecmp_to], [method naturalnocasecmp_to], and [method nocasecmp_to].
+ </description>
+ </method>
<method name="find" qualifiers="const">
<return type="int" />
<param index="0" name="what" type="String" />
@@ -239,6 +255,13 @@
print("User {id} is {name}.".format([["id", 42], ["name", "Godot"]]))
[/codeblock]
See also the [url=$DOCS_URL/tutorials/scripting/gdscript/gdscript_format_string.html]GDScript format string[/url] tutorial.
+ [b]Note:[/b] The replacement of placeholders is not done all at once, instead each placeholder is replaced in the order they are passed, this means that if one of the replacement strings contains a key it will also be replaced. This can be very powerful, but can also cause unexpected results if you are not careful. If you do not need to perform replacement in the replacement strings, make sure your replacements do not contain placeholders to ensure reliable results.
+ [codeblock]
+ print("{0} {1}".format(["{1}", "x"])) # Prints "x x".
+ print("{0} {1}".format(["x", "{0}"])) # Prints "x {0}".
+ print("{foo} {bar}".format({"foo": "{bar}", "bar": "baz"})) # Prints "baz baz".
+ print("{foo} {bar}".format({"bar": "baz", "foo": "{bar}"})) # Prints "{bar} baz".
+ [/codeblock]
[b]Note:[/b] In C#, it's recommended to [url=https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated]interpolate strings with "$"[/url], instead.
</description>
</method>
@@ -586,7 +609,7 @@
Performs a [b]case-sensitive[/b], [i]natural order[/i] comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order.
When used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [code]["1", "2", "3", ...][/code], not [code]["1", "10", "2", "3", ...][/code].
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalnocasecmp_to], [method nocasecmp_to], and [method casecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalnocasecmp_to], [method filecasecmp_to], and [method nocasecmp_to].
</description>
</method>
<method name="naturalnocasecmp_to" qualifiers="const">
@@ -596,7 +619,7 @@
Performs a [b]case-insensitive[/b], [i]natural order[/i] comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.
When used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [code]["1", "2", "3", ...][/code], not [code]["1", "10", "2", "3", ...][/code].
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalcasecmp_to], [method nocasecmp_to], and [method casecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalcasecmp_to], [method filenocasecmp_to], and [method casecmp_to].
</description>
</method>
<method name="nocasecmp_to" qualifiers="const">
@@ -605,7 +628,7 @@
<description>
Performs a [b]case-insensitive[/b] comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method casecmp_to], [method naturalcasecmp_to], and [method naturalnocasecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method casecmp_to], [method filenocasecmp_to], and [method naturalnocasecmp_to].
</description>
</method>
<method name="num" qualifiers="static">
diff --git a/doc/classes/StringName.xml b/doc/classes/StringName.xml
index 41763489f1..e837b65199 100644
--- a/doc/classes/StringName.xml
+++ b/doc/classes/StringName.xml
@@ -107,7 +107,7 @@
<description>
Performs a case-sensitive comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" and "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order.
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method nocasecmp_to], [method naturalcasecmp_to], and [method naturalnocasecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method nocasecmp_to], [method filecasecmp_to], and [method naturalcasecmp_to].
</description>
</method>
<method name="contains" qualifiers="const">
@@ -168,6 +168,22 @@
Returns a string with [param chars] characters erased starting from [param position]. If [param chars] goes beyond the string's length given the specified [param position], fewer characters will be erased from the returned string. Returns an empty string if either [param position] or [param chars] is negative. Returns the original string unmodified if [param chars] is [code]0[/code].
</description>
</method>
+ <method name="filecasecmp_to" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="to" type="String" />
+ <description>
+ Like [method naturalcasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filenocasecmp_to], [method naturalcasecmp_to], and [method casecmp_to].
+ </description>
+ </method>
+ <method name="filenocasecmp_to" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="to" type="String" />
+ <description>
+ Like [method naturalnocasecmp_to] but prioritises strings that begin with periods ([code].[/code]) and underscores ([code]_[/code]) before any other character. Useful when sorting folders or file names.
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method filecasecmp_to], [method naturalnocasecmp_to], and [method nocasecmp_to].
+ </description>
+ </method>
<method name="find" qualifiers="const">
<return type="int" />
<param index="0" name="what" type="String" />
@@ -562,7 +578,7 @@
Performs a [b]case-sensitive[/b], [i]natural order[/i] comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order.
When used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [code]["1", "2", "3", ...][/code], not [code]["1", "10", "2", "3", ...][/code].
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalnocasecmp_to], [method nocasecmp_to], and [method casecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalnocasecmp_to], [method filecasecmp_to], and [method nocasecmp_to].
</description>
</method>
<method name="naturalnocasecmp_to" qualifiers="const">
@@ -572,7 +588,7 @@
Performs a [b]case-insensitive[/b], [i]natural order[/i] comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.
When used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be [code]["1", "2", "3", ...][/code], not [code]["1", "10", "2", "3", ...][/code].
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalcasecmp_to], [method nocasecmp_to], and [method casecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method naturalcasecmp_to], [method filenocasecmp_to], and [method casecmp_to].
</description>
</method>
<method name="nocasecmp_to" qualifiers="const">
@@ -581,7 +597,7 @@
<description>
Performs a [b]case-insensitive[/b] comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "Less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/url] of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison.
With different string lengths, returns [code]1[/code] if this string is longer than the [param to] string, or [code]-1[/code] if shorter. Note that the length of empty strings is [i]always[/i] [code]0[/code].
- To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method casecmp_to], [method naturalcasecmp_to], and [method naturalnocasecmp_to].
+ To get a [bool] result from a string comparison, use the [code]==[/code] operator instead. See also [method casecmp_to], [method filenocasecmp_to], and [method naturalnocasecmp_to].
</description>
</method>
<method name="pad_decimals" qualifiers="const">
diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml
index 2c3908a72c..181e1ff77a 100644
--- a/doc/classes/StyleBoxFlat.xml
+++ b/doc/classes/StyleBoxFlat.xml
@@ -7,13 +7,13 @@
By configuring various properties of this style box, you can achieve many common looks without the need of a texture. This includes optionally rounded borders, antialiasing, shadows, and skew.
Setting corner radius to high values is allowed. As soon as corners overlap, the stylebox will switch to a relative system.
[b]Example:[/b]
- [codeblock]
+ [codeblock lang=text]
height = 30
corner_radius_top_left = 50
corner_radius_bottom_left = 100
[/codeblock]
The relative system now would take the 1:2 ratio of the two left corners to calculate the actual corner width. Both corners added will [b]never[/b] be more than the height. Result:
- [codeblock]
+ [codeblock lang=text]
corner_radius_top_left: 10
corner_radius_bottom_left: 20
[/codeblock]
diff --git a/doc/classes/SubViewport.xml b/doc/classes/SubViewport.xml
index 1a7a4f6e96..605cf949c1 100644
--- a/doc/classes/SubViewport.xml
+++ b/doc/classes/SubViewport.xml
@@ -10,12 +10,12 @@
<tutorials>
<link title="Using Viewports">$DOCS_URL/tutorials/rendering/viewports.html</link>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
- <link title="3D in 2D Demo">https://godotengine.org/asset-library/asset/128</link>
- <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link>
- <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/130</link>
- <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/541</link>
- <link title="3D Viewport Scaling Demo">https://godotengine.org/asset-library/asset/586</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="3D in 2D Viewport Demo">https://godotengine.org/asset-library/asset/2804</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
+ <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/2808</link>
+ <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/2806</link>
+ <link title="3D Resolution Scaling Demo">https://godotengine.org/asset-library/asset/2805</link>
</tutorials>
<members>
<member name="render_target_clear_mode" type="int" setter="set_clear_mode" getter="get_clear_mode" enum="SubViewport.ClearMode" default="0">
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index 094275c349..576587a5df 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -29,7 +29,7 @@
</description>
<tutorials>
<link title="Using the SurfaceTool">$DOCS_URL/tutorials/3d/procedural_geometry/surfacetool.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="add_index">
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index 04d05e7860..db0c1f17b0 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -1070,6 +1070,12 @@
Provide custom tooltip text. The callback method must take the following args: [code]hovered_word: String[/code].
</description>
</method>
+ <method name="skip_selection_for_next_occurrence">
+ <return type="void" />
+ <description>
+ Moves a selection and a caret for the next occurrence of the current selection. If there is no active selection, moves to the next occurrence of the word under caret.
+ </description>
+ </method>
<method name="start_action">
<return type="void" />
<param index="0" name="action" type="int" enum="TextEdit.EditAction" />
@@ -1126,6 +1132,7 @@
<member name="caret_type" type="int" setter="set_caret_type" getter="get_caret_type" enum="TextEdit.CaretType" default="0">
Set the type of caret to draw.
</member>
+ <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" overrides="Control" default="true" />
<member name="context_menu_enabled" type="bool" setter="set_context_menu_enabled" getter="is_context_menu_enabled" default="true">
If [code]true[/code], a right-click displays the context menu.
</member>
diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml
index cd70316aa9..c0cd7f79e7 100644
--- a/doc/classes/TextServer.xml
+++ b/doc/classes/TextServer.xml
@@ -1736,6 +1736,16 @@
[b]Note:[/b] The result may be longer or shorter than the original.
</description>
</method>
+ <method name="string_to_title" qualifiers="const">
+ <return type="String" />
+ <param index="0" name="string" type="String" />
+ <param index="1" name="language" type="String" default="&quot;&quot;" />
+ <description>
+ Returns the string converted to title case.
+ [b]Note:[/b] Casing is locale dependent and context sensitive if server support [constant FEATURE_CONTEXT_SENSITIVE_CASE_CONVERSION] feature (supported by [TextServerAdvanced]).
+ [b]Note:[/b] The result may be longer or shorter than the original.
+ </description>
+ </method>
<method name="string_to_upper" qualifiers="const">
<return type="String" />
<param index="0" name="string" type="String" />
diff --git a/doc/classes/TextServerExtension.xml b/doc/classes/TextServerExtension.xml
index 9b7fc42ddf..06a0daece6 100644
--- a/doc/classes/TextServerExtension.xml
+++ b/doc/classes/TextServerExtension.xml
@@ -1913,6 +1913,15 @@
Returns the string converted to lowercase.
</description>
</method>
+ <method name="_string_to_title" qualifiers="virtual const">
+ <return type="String" />
+ <param index="0" name="string" type="String" />
+ <param index="1" name="language" type="String" />
+ <description>
+ [b]Optional.[/b]
+ Returns the string converted to title case.
+ </description>
+ </method>
<method name="_string_to_upper" qualifiers="virtual const">
<return type="String" />
<param index="0" name="string" type="String" />
diff --git a/doc/classes/TextureButton.xml b/doc/classes/TextureButton.xml
index 6c0d56af05..861981f979 100644
--- a/doc/classes/TextureButton.xml
+++ b/doc/classes/TextureButton.xml
@@ -9,7 +9,7 @@
See also [BaseButton] which contains common properties and methods associated with this node.
</description>
<tutorials>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="flip_h" type="bool" setter="set_flip_h" getter="is_flipped_h" default="false">
diff --git a/doc/classes/TextureRect.xml b/doc/classes/TextureRect.xml
index d18c4a1eee..ab268b6ea5 100644
--- a/doc/classes/TextureRect.xml
+++ b/doc/classes/TextureRect.xml
@@ -7,7 +7,7 @@
A control that displays a texture, for example an icon inside a GUI. The texture's placement can be controlled with the [member stretch_mode] property. It can scale, tile, or stay centered inside its bounding rectangle.
</description>
<tutorials>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<members>
<member name="expand_mode" type="int" setter="set_expand_mode" getter="get_expand_mode" enum="TextureRect.ExpandMode" default="0" experimental="Using [constant EXPAND_FIT_WIDTH], [constant EXPAND_FIT_WIDTH_PROPORTIONAL], [constant EXPAND_FIT_HEIGHT], or [constant EXPAND_FIT_HEIGHT_PROPORTIONAL] may result in unstable behavior in some [Container] controls. This behavior may be re-evaluated and changed in the future.">
diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml
index dbf63c0852..cf77b93d86 100644
--- a/doc/classes/Thread.xml
+++ b/doc/classes/Thread.xml
@@ -14,7 +14,7 @@
<tutorials>
<link title="Using multiple threads">$DOCS_URL/tutorials/performance/using_multiple_threads.html</link>
<link title="Thread-safe APIs">$DOCS_URL/tutorials/performance/thread_safe_apis.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
<methods>
<method name="get_id" qualifiers="const">
diff --git a/doc/classes/TileData.xml b/doc/classes/TileData.xml
index c5b86f079e..91df90580c 100644
--- a/doc/classes/TileData.xml
+++ b/doc/classes/TileData.xml
@@ -93,7 +93,7 @@
<return type="int" />
<param index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor" />
<description>
- Returns the tile's terrain bit for the given [param peering_bit] direction.
+ Returns the tile's terrain bit for the given [param peering_bit] direction. To check that a direction is valid, use [method is_valid_terrain_peering_bit].
</description>
</method>
<method name="is_collision_polygon_one_way" qualifiers="const">
@@ -104,6 +104,13 @@
Returns whether one-way collisions are enabled for the polygon at index [param polygon_index] for TileSet physics layer with index [param layer_id].
</description>
</method>
+ <method name="is_valid_terrain_peering_bit" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor" />
+ <description>
+ Returns whether the given [param peering_bit] direction is valid for this tile.
+ </description>
+ </method>
<method name="remove_collision_polygon">
<return type="void" />
<param index="0" name="layer_id" type="int" />
@@ -200,7 +207,7 @@
<param index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor" />
<param index="1" name="terrain" type="int" />
<description>
- Sets the tile's terrain bit for the given [param peering_bit] direction.
+ Sets the tile's terrain bit for the given [param peering_bit] direction. To check that a direction is valid, use [method is_valid_terrain_peering_bit].
</description>
</method>
</methods>
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index fc19e1de49..687c7194cd 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TileMap" inherits="TileMapLayerGroup" keywords="gridmap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="TileMap" inherits="Node2D" deprecated="Use multiple [TileMapLayer] nodes instead." keywords="gridmap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Node for 2D tile-based maps.
</brief_description>
@@ -10,12 +10,12 @@
</description>
<tutorials>
<link title="Using Tilemaps">$DOCS_URL/tutorials/2d/using_tilemaps.html</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
- <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/112</link>
- <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/111</link>
- <link title="2D Navigation Astar Demo">https://godotengine.org/asset-library/asset/519</link>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
+ <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/2718</link>
+ <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/2717</link>
+ <link title="2D Grid-based Navigation with AStarGrid2D Demo">https://godotengine.org/asset-library/asset/2723</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<methods>
<method name="_tile_data_runtime_update" qualifiers="virtual">
@@ -89,7 +89,8 @@
<param index="1" name="coords" type="Vector2i" />
<param index="2" name="use_proxies" type="bool" default="false" />
<description>
- Returns the tile alternative ID of the cell on layer [param layer] at [param coords]. If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies, returning the raw alternative identifier. See [method TileSet.map_tile_proxy].
+ Returns the tile alternative ID of the cell on layer [param layer] at [param coords].
+ If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies, returning the raw alternative identifier. See [method TileSet.map_tile_proxy].
If [param layer] is negative, the layers are accessed from the last one.
</description>
</method>
@@ -100,7 +101,7 @@
<param index="2" name="use_proxies" type="bool" default="false" />
<description>
Returns the tile atlas coordinates ID of the cell on layer [param layer] at coordinates [param coords]. Returns [code]Vector2i(-1, -1)[/code] if the cell does not exist.
- If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies, returning the raw alternative identifier. See [method TileSet.map_tile_proxy].
+ If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies, returning the raw atlas coordinate identifier. See [method TileSet.map_tile_proxy].
If [param layer] is negative, the layers are accessed from the last one.
</description>
</method>
@@ -111,7 +112,7 @@
<param index="2" name="use_proxies" type="bool" default="false" />
<description>
Returns the tile source ID of the cell on layer [param layer] at coordinates [param coords]. Returns [code]-1[/code] if the cell does not exist.
- If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies, returning the raw alternative identifier. See [method TileSet.map_tile_proxy].
+ If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies, returning the raw source identifier. See [method TileSet.map_tile_proxy].
If [param layer] is negative, the layers are accessed from the last one.
</description>
</method>
@@ -123,7 +124,6 @@
<description>
Returns the [TileData] object associated with the given cell, or [code]null[/code] if the cell does not exist or is not a [TileSetAtlasSource].
If [param layer] is negative, the layers are accessed from the last one.
- If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies, returning the raw alternative identifier. See [method TileSet.map_tile_proxy].
[codeblock]
func get_clicked_tile_power():
var clicked_cell = tile_map.local_to_map(tile_map.get_local_mouse_position())
@@ -133,6 +133,7 @@
else:
return 0
[/codeblock]
+ If [param use_proxies] is [code]false[/code], ignores the [TileSet]'s tile proxies. See [method TileSet.map_tile_proxy].
</description>
</method>
<method name="get_coords_for_body_rid">
@@ -489,6 +490,9 @@
The quadrant size does not apply on Y-sorted layers, as tiles are be grouped by Y position instead in that case.
[b]Note:[/b] As quadrants are created according to the map's coordinate system, the quadrant's "square shape" might not look like square in the TileMap's local coordinate system.
</member>
+ <member name="tile_set" type="TileSet" setter="set_tileset" getter="get_tileset">
+ The [TileSet] used by this [TileMap]. The textures, collisions, and additional behavior of all available tiles are stored here.
+ </member>
</members>
<signals>
<signal name="changed">
diff --git a/doc/classes/TileMapLayer.xml b/doc/classes/TileMapLayer.xml
new file mode 100644
index 0000000000..da716a8fe3
--- /dev/null
+++ b/doc/classes/TileMapLayer.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="TileMapLayer" inherits="Node2D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ Node for 2D tile-based maps.
+ </brief_description>
+ <description>
+ Node for 2D tile-based maps. A [TileMapLayer] uses a [TileSet] which contain a list of tiles which are used to create grid-based maps. Unlike the [TileMap] node, which is deprecated, [TileMapLayer] has only one layer of tiles. You can use several [TileMapLayer] to achieve the same result as a [TileMap] node.
+ For performance reasons, all TileMap updates are batched at the end of a frame. Notably, this means that scene tiles from a [TileSetScenesCollectionSource] may be initialized after their parent. This is only queued when inside the scene tree.
+ To force an update earlier on, call [method update_internals].
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="_tile_data_runtime_update" qualifiers="virtual">
+ <return type="void" />
+ <param index="0" name="coords" type="Vector2i" />
+ <param index="1" name="tile_data" type="TileData" />
+ <description>
+ Called with a [TileData] object about to be used internally by the [TileMapLayer], allowing its modification at runtime.
+ This method is only called if [method _use_tile_data_runtime_update] is implemented and returns [code]true[/code] for the given tile [param coords].
+ [b]Warning:[/b] The [param tile_data] object's sub-resources are the same as the one in the TileSet. Modifying them might impact the whole TileSet. Instead, make sure to duplicate those resources.
+ [b]Note:[/b] If the properties of [param tile_data] object should change over time, use [method notify_runtime_tile_data_update] to notify the [TileMapLayer] it needs an update.
+ </description>
+ </method>
+ <method name="_use_tile_data_runtime_update" qualifiers="virtual">
+ <return type="bool" />
+ <param index="0" name="coords" type="Vector2i" />
+ <description>
+ Should return [code]true[/code] if the tile at coordinates [param coords] requires a runtime update.
+ [b]Warning:[/b] Make sure this function only returns [code]true[/code] when needed. Any tile processed at runtime without a need for it will imply a significant performance penalty.
+ [b]Note:[/b] If the result of this function should change, use [method notify_runtime_tile_data_update] to notify the [TileMapLayer] it needs an update.
+ </description>
+ </method>
+ <method name="clear">
+ <return type="void" />
+ <description>
+ Clears all cells.
+ </description>
+ </method>
+ <method name="erase_cell">
+ <return type="void" />
+ <param index="0" name="coords" type="Vector2i" />
+ <description>
+ Erases the cell at coordinates [param coords].
+ </description>
+ </method>
+ <method name="fix_invalid_tiles">
+ <return type="void" />
+ <description>
+ Clears cells containing tiles that do not exist in the [member tile_set].
+ </description>
+ </method>
+ <method name="get_cell_alternative_tile" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the tile alternative ID of the cell at coordinates [param coords].
+ </description>
+ </method>
+ <method name="get_cell_atlas_coords" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the tile atlas coordinates ID of the cell at coordinates [param coords]. Returns [code]Vector2i(-1, -1)[/code] if the cell does not exist.
+ </description>
+ </method>
+ <method name="get_cell_source_id" qualifiers="const">
+ <return type="int" />
+ <param index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the tile source ID of the cell at coordinates [param coords]. Returns [code]-1[/code] if the cell does not exist.
+ </description>
+ </method>
+ <method name="get_cell_tile_data" qualifiers="const">
+ <return type="TileData" />
+ <param index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the [TileData] object associated with the given cell, or [code]null[/code] if the cell does not exist or is not a [TileSetAtlasSource].
+ [codeblock]
+ func get_clicked_tile_power():
+ var clicked_cell = tile_map_layer.local_to_map(tile_map_layer.get_local_mouse_position())
+ var data = tile_map_layer.get_cell_tile_data(clicked_cell)
+ if data:
+ return data.get_custom_data("power")
+ else:
+ return 0
+ [/codeblock]
+ </description>
+ </method>
+ <method name="get_coords_for_body_rid" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="body" type="RID" />
+ <description>
+ Returns the coordinates of the tile for given physics body [RID]. Such an [RID] can be retrieved from [method KinematicCollision2D.get_collider_rid], when colliding with a tile.
+ </description>
+ </method>
+ <method name="get_navigation_map" qualifiers="const">
+ <return type="RID" />
+ <description>
+ Returns the [RID] of the [NavigationServer2D] navigation used by this [TileMapLayer].
+ By default this returns the default [World2D] navigation map, unless a custom map was provided using [method set_navigation_map].
+ </description>
+ </method>
+ <method name="get_neighbor_cell" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="coords" type="Vector2i" />
+ <param index="1" name="neighbor" type="int" enum="TileSet.CellNeighbor" />
+ <description>
+ Returns the neighboring cell to the one at coordinates [param coords], identified by the [param neighbor] direction. This method takes into account the different layouts a TileMap can take.
+ </description>
+ </method>
+ <method name="get_pattern">
+ <return type="TileMapPattern" />
+ <param index="0" name="coords_array" type="Vector2i[]" />
+ <description>
+ Creates and returns a new [TileMapPattern] from the given array of cells. See also [method set_pattern].
+ </description>
+ </method>
+ <method name="get_surrounding_cells">
+ <return type="Vector2i[]" />
+ <param index="0" name="coords" type="Vector2i" />
+ <description>
+ Returns the list of all neighboring cells to the one at [param coords].
+ </description>
+ </method>
+ <method name="get_used_cells" qualifiers="const">
+ <return type="Vector2i[]" />
+ <description>
+ Returns a [Vector2i] array with the positions of all cells containing a tile. A cell is considered empty if its source identifier equals [code]-1[/code], its atlas coordinate identifier is [code]Vector2(-1, -1)[/code] and its alternative identifier is [code]-1[/code].
+ </description>
+ </method>
+ <method name="get_used_cells_by_id" qualifiers="const">
+ <return type="Vector2i[]" />
+ <param index="0" name="source_id" type="int" default="-1" />
+ <param index="1" name="atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
+ <param index="2" name="alternative_tile" type="int" default="-1" />
+ <description>
+ Returns a [Vector2i] array with the positions of all cells containing a tile. Tiles may be filtered according to their source ([param source_id]), their atlas coordinates ([param atlas_coords]), or alternative id ([param alternative_tile]).
+ If a parameter has its value set to the default one, this parameter is not used to filter a cell. Thus, if all parameters have their respective default values, this method returns the same result as [method get_used_cells].
+ A cell is considered empty if its source identifier equals [code]-1[/code], its atlas coordinate identifier is [code]Vector2(-1, -1)[/code] and its alternative identifier is [code]-1[/code].
+ </description>
+ </method>
+ <method name="get_used_rect" qualifiers="const">
+ <return type="Rect2i" />
+ <description>
+ Returns a rectangle enclosing the used (non-empty) tiles of the map.
+ </description>
+ </method>
+ <method name="has_body_rid" qualifiers="const">
+ <return type="bool" />
+ <param index="0" name="body" type="RID" />
+ <description>
+ Returns whether the provided [param body] [RID] belongs to one of this [TileMapLayer]'s cells.
+ </description>
+ </method>
+ <method name="local_to_map" qualifiers="const">
+ <return type="Vector2i" />
+ <param index="0" name="local_position" type="Vector2" />
+ <description>
+ Returns the map coordinates of the cell containing the given [param local_position]. If [param local_position] is in global coordinates, consider using [method Node2D.to_local] before passing it to this method. See also [method map_to_local].
+ </description>
+ </method>
+ <method name="map_pattern">
+ <return type="Vector2i" />
+ <param index="0" name="position_in_tilemap" type="Vector2i" />
+ <param index="1" name="coords_in_pattern" type="Vector2i" />
+ <param index="2" name="pattern" type="TileMapPattern" />
+ <description>
+ Returns for the given coordinates [param coords_in_pattern] in a [TileMapPattern] the corresponding cell coordinates if the pattern was pasted at the [param position_in_tilemap] coordinates (see [method set_pattern]). This mapping is required as in half-offset tile shapes, the mapping might not work by calculating [code]position_in_tile_map + coords_in_pattern[/code].
+ </description>
+ </method>
+ <method name="map_to_local" qualifiers="const">
+ <return type="Vector2" />
+ <param index="0" name="map_position" type="Vector2i" />
+ <description>
+ Returns the centered position of a cell in the [TileMapLayer]'s local coordinate space. To convert the returned value into global coordinates, use [method Node2D.to_global]. See also [method local_to_map].
+ [b]Note:[/b] This may not correspond to the visual position of the tile, i.e. it ignores the [member TileData.texture_origin] property of individual tiles.
+ </description>
+ </method>
+ <method name="notify_runtime_tile_data_update">
+ <return type="void" />
+ <description>
+ Notifies the [TileMapLayer] node that calls to [method _use_tile_data_runtime_update] or [method _tile_data_runtime_update] will lead to different results. This will thus trigger a [TileMapLayer] update.
+ [b]Warning:[/b] Updating the [TileMapLayer] is computationally expensive and may impact performance. Try to limit the number of calls to this function to avoid unnecessary update.
+ [b]Note:[/b] This does not trigger a direct update of the [TileMapLayer], the update will be done at the end of the frame as usual (unless you call [method update_internals]).
+ </description>
+ </method>
+ <method name="set_cell">
+ <return type="void" />
+ <param index="0" name="coords" type="Vector2i" />
+ <param index="1" name="source_id" type="int" default="-1" />
+ <param index="2" name="atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
+ <param index="3" name="alternative_tile" type="int" default="0" />
+ <description>
+ Sets the tile identifiers for the cell at coordinates [param coords]. Each tile of the [TileSet] is identified using three parts:
+ - The source identifier [param source_id] identifies a [TileSetSource] identifier. See [method TileSet.set_source_id],
+ - The atlas coordinate identifier [param atlas_coords] identifies a tile coordinates in the atlas (if the source is a [TileSetAtlasSource]). For [TileSetScenesCollectionSource] it should always be [code]Vector2i(0, 0)[/code],
+ - The alternative tile identifier [param alternative_tile] identifies a tile alternative in the atlas (if the source is a [TileSetAtlasSource]), and the scene for a [TileSetScenesCollectionSource].
+ If [param source_id] is set to [code]-1[/code], [param atlas_coords] to [code]Vector2i(-1, -1)[/code], or [param alternative_tile] to [code]-1[/code], the cell will be erased. An erased cell gets [b]all[/b] its identifiers automatically set to their respective invalid values, namely [code]-1[/code], [code]Vector2i(-1, -1)[/code] and [code]-1[/code].
+ </description>
+ </method>
+ <method name="set_cells_terrain_connect">
+ <return type="void" />
+ <param index="0" name="cells" type="Vector2i[]" />
+ <param index="1" name="terrain_set" type="int" />
+ <param index="2" name="terrain" type="int" />
+ <param index="3" name="ignore_empty_terrains" type="bool" default="true" />
+ <description>
+ Update all the cells in the [param cells] coordinates array so that they use the given [param terrain] for the given [param terrain_set]. If an updated cell has the same terrain as one of its neighboring cells, this function tries to join the two. This function might update neighboring tiles if needed to create correct terrain transitions.
+ If [param ignore_empty_terrains] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
+ [b]Note:[/b] To work correctly, this method requires the [TileMapLayer]'s TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.
+ </description>
+ </method>
+ <method name="set_cells_terrain_path">
+ <return type="void" />
+ <param index="0" name="path" type="Vector2i[]" />
+ <param index="1" name="terrain_set" type="int" />
+ <param index="2" name="terrain" type="int" />
+ <param index="3" name="ignore_empty_terrains" type="bool" default="true" />
+ <description>
+ Update all the cells in the [param path] coordinates array so that they use the given [param terrain] for the given [param terrain_set]. The function will also connect two successive cell in the path with the same terrain. This function might update neighboring tiles if needed to create correct terrain transitions.
+ If [param ignore_empty_terrains] is true, empty terrains will be ignored when trying to find the best fitting tile for the given terrain constraints.
+ [b]Note:[/b] To work correctly, this method requires the [TileMapLayer]'s TileSet to have terrains set up with all required terrain combinations. Otherwise, it may produce unexpected results.
+ </description>
+ </method>
+ <method name="set_navigation_map">
+ <return type="void" />
+ <param index="0" name="map" type="RID" />
+ <description>
+ Sets a custom [param map] as a [NavigationServer2D] navigation map. If not set, uses the default [World2D] navigation map instead.
+ </description>
+ </method>
+ <method name="set_pattern">
+ <return type="void" />
+ <param index="0" name="position" type="Vector2i" />
+ <param index="1" name="pattern" type="TileMapPattern" />
+ <description>
+ Pastes the [TileMapPattern] at the given [param position] in the tile map. See also [method get_pattern].
+ </description>
+ </method>
+ <method name="update_internals">
+ <return type="void" />
+ <description>
+ Triggers a direct update of the [TileMapLayer]. Usually, calling this function is not needed, as [TileMapLayer] node updates automatically when one of its properties or cells is modified.
+ However, for performance reasons, those updates are batched and delayed to the end of the frame. Calling this function will force the [TileMapLayer] to update right away instead.
+ [b]Warning:[/b] Updating the [TileMapLayer] is computationally expensive and may impact performance. Try to limit the number of updates and how many tiles they impact.
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="collision_enabled" type="bool" setter="set_collision_enabled" getter="is_collision_enabled" default="true">
+ Enable or disable collisions.
+ </member>
+ <member name="collision_visibility_mode" type="int" setter="set_collision_visibility_mode" getter="get_collision_visibility_mode" enum="TileMapLayer.DebugVisibilityMode" default="0">
+ Show or hide the [TileMapLayer]'s collision shapes. If set to [constant DEBUG_VISIBILITY_MODE_DEFAULT], this depends on the show collision debug settings.
+ </member>
+ <member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true">
+ If [code]false[/code], disables this [TileMapLayer] completely (rendering, collision, navigation, scene tiles, etc.)
+ </member>
+ <member name="navigation_enabled" type="bool" setter="set_navigation_enabled" getter="is_navigation_enabled" default="true">
+ If [code]true[/code], navigation regions are enabled.
+ </member>
+ <member name="navigation_visibility_mode" type="int" setter="set_navigation_visibility_mode" getter="get_navigation_visibility_mode" enum="TileMapLayer.DebugVisibilityMode" default="0">
+ Show or hide the [TileMapLayer]'s navigation meshes. If set to [constant DEBUG_VISIBILITY_MODE_DEFAULT], this depends on the show navigation debug settings.
+ </member>
+ <member name="rendering_quadrant_size" type="int" setter="set_rendering_quadrant_size" getter="get_rendering_quadrant_size" default="16">
+ The [TileMapLayer]'s quadrant size. A quadrant is a group of tiles to be drawn together on a single canvas item, for optimization purposes. [member rendering_quadrant_size] defines the length of a square's side, in the map's coordinate system, that forms the quadrant. Thus, the default quandrant size groups together [code]16 * 16 = 256[/code] tiles.
+ The quadrant size does not apply on a Y-sorted [TileMapLayer], as tiles are be grouped by Y position instead in that case.
+ [b]Note:[/b] As quadrants are created according to the map's coordinate system, the quadrant's "square shape" might not look like square in the [TileMapLayer]'s local coordinate system.
+ </member>
+ <member name="tile_map_data" type="PackedByteArray" setter="set_tile_map_data_from_array" getter="get_tile_map_data_as_array" default="PackedByteArray(&quot;AAA=&quot;)">
+ The raw tile map data as a byte array.
+ </member>
+ <member name="tile_set" type="TileSet" setter="set_tile_set" getter="get_tile_set">
+ The [TileSet] used by this layer. The textures, collisions, and additional behavior of all available tiles are stored here.
+ </member>
+ <member name="use_kinematic_bodies" type="bool" setter="set_use_kinematic_bodies" getter="is_using_kinematic_bodies" default="false">
+ If [code]true[/code], this [TileMapLayer] collision shapes will be instantiated as kinematic bodies. This can be needed for moving [TileMapLayer] nodes (i.e. moving platforms).
+ </member>
+ <member name="y_sort_origin" type="int" setter="set_y_sort_origin" getter="get_y_sort_origin" default="0">
+ This Y-sort origin value is added to each tile's Y-sort origin value. This allows, for example, to fake a different height level. This can be useful for top-down view games.
+ </member>
+ </members>
+ <signals>
+ <signal name="changed">
+ <description>
+ Emitted when this [TileMapLayer]'s properties changes. This includes modified cells, properties, or changes made to its assigned [TileSet].
+ [b]Note:[/b] This signal may be emitted very often when batch-modifying a [TileMapLayer]. Avoid executing complex processing in a connected function, and consider delaying it to the end of the frame instead (i.e. calling [method Object.call_deferred]).
+ </description>
+ </signal>
+ </signals>
+ <constants>
+ <constant name="DEBUG_VISIBILITY_MODE_DEFAULT" value="0" enum="DebugVisibilityMode">
+ Hide the collisions or navigation debug shapes in the editor, and use the debug settings to determine their visibility in game (i.e. [member SceneTree.debug_collisions_hint] or [member SceneTree.debug_navigation_hint]).
+ </constant>
+ <constant name="DEBUG_VISIBILITY_MODE_FORCE_HIDE" value="2" enum="DebugVisibilityMode">
+ Always hide the collisions or navigation debug shapes.
+ </constant>
+ <constant name="DEBUG_VISIBILITY_MODE_FORCE_SHOW" value="1" enum="DebugVisibilityMode">
+ Always show the collisions or navigation debug shapes.
+ </constant>
+ </constants>
+</class>
diff --git a/doc/classes/TileMapLayerGroup.xml b/doc/classes/TileMapLayerGroup.xml
deleted file mode 100644
index 3787d3bb17..0000000000
--- a/doc/classes/TileMapLayerGroup.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<class name="TileMapLayerGroup" inherits="Node2D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
- <brief_description>
- Groups a set of tile map layers together, allowing them to share a provided [TileSet].
- </brief_description>
- <description>
- Groups together tile map layers as part or the same map, replacing the [TileMap] node. Child layers will use this node's [member tile_set].
- The editor also uses [TileMapLayerGroup] as a way to store which layers are selected in a given group. This allows highlighting the currently selected layers.
- </description>
- <tutorials>
- </tutorials>
- <members>
- <member name="tile_set" type="TileSet" setter="set_tileset" getter="get_tileset">
- The assigned [TileSet]. This TileSet will be applied to all child layers.
- </member>
- </members>
-</class>
diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml
index 37f4cc5c0b..64cd4fb7b2 100644
--- a/doc/classes/TileSet.xml
+++ b/doc/classes/TileSet.xml
@@ -13,12 +13,12 @@
</description>
<tutorials>
<link title="Using Tilemaps">$DOCS_URL/tutorials/2d/using_tilemaps.html</link>
- <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link>
- <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/112</link>
- <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/111</link>
- <link title="2D Navigation Astar Demo">https://godotengine.org/asset-library/asset/519</link>
- <link title="2D Role Playing Game Demo">https://godotengine.org/asset-library/asset/520</link>
- <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/113</link>
+ <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/2727</link>
+ <link title="2D Isometric Demo">https://godotengine.org/asset-library/asset/2718</link>
+ <link title="2D Hexagonal Demo">https://godotengine.org/asset-library/asset/2717</link>
+ <link title="2D Grid-based Navigation with AStarGrid2D Demo">https://godotengine.org/asset-library/asset/2723</link>
+ <link title="2D Role Playing Game (RPG) Demo">https://godotengine.org/asset-library/asset/2729</link>
+ <link title="2D Kinematic Character Demo">https://godotengine.org/asset-library/asset/2719</link>
</tutorials>
<methods>
<method name="add_custom_data_layer">
diff --git a/doc/classes/Timer.xml b/doc/classes/Timer.xml
index 6eee569443..9de1e09273 100644
--- a/doc/classes/Timer.xml
+++ b/doc/classes/Timer.xml
@@ -15,7 +15,7 @@
[b]Note:[/b] Timers are affected by [member Engine.time_scale]. The higher the time scale, the sooner timers will end. How often a timer processes may depend on the framerate or [member Engine.physics_ticks_per_second].
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="is_stopped" qualifiers="const">
diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml
index 4247ff81ee..345d0512ff 100644
--- a/doc/classes/Transform2D.xml
+++ b/doc/classes/Transform2D.xml
@@ -10,8 +10,8 @@
<tutorials>
<link title="Math documentation index">$DOCS_URL/tutorials/math/index.html</link>
<link title="Matrices and transforms">$DOCS_URL/tutorials/math/matrices_and_transforms.html</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<constructors>
<constructor name="Transform2D">
diff --git a/doc/classes/Transform3D.xml b/doc/classes/Transform3D.xml
index 1827cdf8f0..2a0bbc46af 100644
--- a/doc/classes/Transform3D.xml
+++ b/doc/classes/Transform3D.xml
@@ -12,9 +12,9 @@
<link title="Math documentation index">$DOCS_URL/tutorials/math/index.html</link>
<link title="Matrices and transforms">$DOCS_URL/tutorials/math/matrices_and_transforms.html</link>
<link title="Using 3D transforms">$DOCS_URL/tutorials/3d/using_transforms.html</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
- <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/125</link>
- <link title="2.5D Demo">https://godotengine.org/asset-library/asset/583</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
+ <link title="3D Platformer Demo">https://godotengine.org/asset-library/asset/2748</link>
+ <link title="2.5D Game Demo">https://godotengine.org/asset-library/asset/2783</link>
</tutorials>
<constructors>
<constructor name="Transform3D">
diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml
index 0f318efbd1..d95492479c 100644
--- a/doc/classes/Tree.xml
+++ b/doc/classes/Tree.xml
@@ -414,7 +414,7 @@
</description>
</signal>
<signal name="empty_clicked">
- <param index="0" name="position" type="Vector2" />
+ <param index="0" name="click_position" type="Vector2" />
<param index="1" name="mouse_button_index" type="int" />
<description>
Emitted when a mouse button is clicked in the empty space of the tree.
@@ -442,7 +442,7 @@
</description>
</signal>
<signal name="item_mouse_selected">
- <param index="0" name="position" type="Vector2" />
+ <param index="0" name="mouse_position" type="Vector2" />
<param index="1" name="mouse_button_index" type="int" />
<description>
Emitted when an item is selected with a mouse button.
diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml
index 3d36eafb08..e197f7748c 100644
--- a/doc/classes/UndoRedo.xml
+++ b/doc/classes/UndoRedo.xml
@@ -112,7 +112,8 @@
<return type="void" />
<param index="0" name="object" type="Object" />
<description>
- 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.
+ Register a reference to an object that will be erased if the "do" history is deleted. This is useful for objects added by the "do" action and removed by the "undo" action.
+ When the "do" history is deleted, if the object is a [RefCounted], it will be unreferenced. Otherwise, it will be freed. Do not use for resources.
[codeblock]
var node = Node2D.new()
undo_redo.create_action("Add node")
@@ -143,7 +144,8 @@
<return type="void" />
<param index="0" name="object" type="Object" />
<description>
- Register a reference for "undo" that will be erased if the "undo" history is lost. This is useful mostly for nodes removed with the "do" call (not the "undo" call!).
+ Register a reference to an object that will be erased if the "undo" history is deleted. This is useful for objects added by the "undo" action and removed by the "do" action.
+ When the "undo" history is deleted, if the object is a [RefCounted], it will be unreferenced. Otherwise, it will be freed. Do not use for resources.
[codeblock]
var node = $Node2D
undo_redo.create_action("Remove node")
@@ -272,10 +274,10 @@
Makes "do"/"undo" operations stay in separate actions.
</constant>
<constant name="MERGE_ENDS" value="1" enum="MergeMode">
- Makes so that the action's "undo" operations are from the first action created and the "do" operations are from the last subsequent action with the same name.
+ Merges this action with the previous one if they have the same name. Keeps only the first action's "undo" operations and the last action's "do" operations. Useful for sequential changes to a single value.
</constant>
<constant name="MERGE_ALL" value="2" enum="MergeMode">
- Makes subsequent actions with the same name be merged into one.
+ Merges this action with the previous one if they have the same name.
</constant>
</constants>
</class>
diff --git a/doc/classes/VBoxContainer.xml b/doc/classes/VBoxContainer.xml
index d3ea94c0eb..62484ecdc0 100644
--- a/doc/classes/VBoxContainer.xml
+++ b/doc/classes/VBoxContainer.xml
@@ -8,6 +8,6 @@
</description>
<tutorials>
<link title="Using Containers">$DOCS_URL/tutorials/ui/gui_containers.html</link>
- <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
+ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/2755</link>
</tutorials>
</class>
diff --git a/doc/classes/Variant.xml b/doc/classes/Variant.xml
index 2734800642..eb837a4643 100644
--- a/doc/classes/Variant.xml
+++ b/doc/classes/Variant.xml
@@ -11,7 +11,7 @@
foo = "Now foo is a string!"
foo = RefCounted.new() # foo is an Object
var bar: int = 2 # bar is a statically typed integer.
- # bar = "Uh oh! I can't make static variables become a different type!"
+ # bar = "Uh oh! I can't make statically typed variables become a different type!"
[/gdscript]
[csharp]
// C# is statically typed. Once a variable has a type it cannot be changed. You can use the `var` keyword to let the compiler infer the type automatically.
@@ -36,7 +36,7 @@
match typeof(foo):
TYPE_NIL:
print("foo is null")
- TYPE_INTEGER:
+ TYPE_INT:
print("foo is an integer")
TYPE_OBJECT:
# Note that Objects are their own special category.
diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml
index f33076a92f..7b166a4fb0 100644
--- a/doc/classes/Vector2.xml
+++ b/doc/classes/Vector2.xml
@@ -14,7 +14,7 @@
<link title="Vector math">$DOCS_URL/tutorials/math/vector_math.html</link>
<link title="Advanced vector math">$DOCS_URL/tutorials/math/vectors_advanced.html</link>
<link title="3Blue1Brown Essence of Linear Algebra">https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
<link title="All 2D Demos">https://github.com/godotengine/godot-demo-projects/tree/master/2d</link>
</tutorials>
<constructors>
@@ -110,7 +110,8 @@
<return type="Vector2" />
<param index="0" name="n" type="Vector2" />
<description>
- Returns a new vector "bounced off" from a plane defined by the given normal.
+ Returns the vector "bounced off" from a line defined by the given normal [param n] perpendicular to the line.
+ [b]Note:[/b] [method bounce] performs the operation that most engines and frameworks call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="ceil" qualifiers="const">
@@ -132,7 +133,7 @@
<param index="0" name="with" type="Vector2" />
<description>
Returns the 2D analog of the cross product for this vector and [param with].
- This is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area.
+ This is the signed area of the parallelogram formed by the two vectors. If the second vector is clockwise from the first vector, then the cross product is the positive area. If counter-clockwise, the cross product is the negative area. If the two vectors are parallel this returns zero, making it useful for testing if two vectors are parallel.
[b]Note:[/b] Cross product is not defined in 2D mathematically. This method embeds the 2D vectors in the XY plane of 3D space and uses their cross product's Z component as the analog.
</description>
</method>
@@ -321,9 +322,10 @@
</method>
<method name="reflect" qualifiers="const">
<return type="Vector2" />
- <param index="0" name="n" type="Vector2" />
+ <param index="0" name="line" type="Vector2" />
<description>
- Returns the result of reflecting the vector from a line defined by the given direction vector [param n].
+ Returns the result of reflecting the vector from a line defined by the given direction vector [param line].
+ [b]Note:[/b] [method reflect] differs from what other engines and frameworks call [code skip-lint]reflect()[/code]. In other engines, [code skip-lint]reflect()[/code] takes a normal direction which is a direction perpendicular to the line. In Godot, you specify the direction of the line directly. See also [method bounce] which does what most engines call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="rotated" qualifiers="const">
diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml
index 872534fd89..031d91af78 100644
--- a/doc/classes/Vector3.xml
+++ b/doc/classes/Vector3.xml
@@ -14,7 +14,7 @@
<link title="Vector math">$DOCS_URL/tutorials/math/vector_math.html</link>
<link title="Advanced vector math">$DOCS_URL/tutorials/math/vectors_advanced.html</link>
<link title="3Blue1Brown Essence of Linear Algebra">https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab</link>
- <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/584</link>
+ <link title="Matrix Transform Demo">https://godotengine.org/asset-library/asset/2787</link>
<link title="All 3D Demos">https://github.com/godotengine/godot-demo-projects/tree/master/3d</link>
</tutorials>
<constructors>
@@ -86,7 +86,8 @@
<return type="Vector3" />
<param index="0" name="n" type="Vector3" />
<description>
- Returns the vector "bounced off" from a plane defined by the given normal.
+ Returns the vector "bounced off" from a plane defined by the given normal [param n].
+ [b]Note:[/b] [method bounce] performs the operation that most engines and frameworks call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="ceil" qualifiers="const">
@@ -108,6 +109,7 @@
<param index="0" name="with" type="Vector3" />
<description>
Returns the cross product of this vector and [param with].
+ This returns a vector perpendicular to both this and [param with], which would be the normal vector of the plane defined by the two vectors. As there are two such vectors, in opposite directions, this method returns the vector defined by a right-handed coordinate system. If the two vectors are parallel this returns an empty vector, making it useful for testing if two vectors are parallel.
</description>
</method>
<method name="cubic_interpolate" qualifiers="const">
@@ -305,9 +307,10 @@
</method>
<method name="reflect" qualifiers="const">
<return type="Vector3" />
- <param index="0" name="n" type="Vector3" />
+ <param index="0" name="direction" type="Vector3" />
<description>
- Returns the result of reflecting the vector from a plane defined by the given normal [param n].
+ Returns the result of reflecting the vector from a plane defined by the given direction vector [param direction].
+ [b]Note:[/b] [method reflect] differs from what other engines and frameworks call [code skip-lint]reflect()[/code]. In other engines, [code skip-lint]reflect()[/code] takes a normal direction which is a direction perpendicular to the plane. In Godot, you specify a direction parallel to the plane. See also [method bounce] which does what most engines call [code skip-lint]reflect()[/code].
</description>
</method>
<method name="rotated" qualifiers="const">
diff --git a/doc/classes/VehicleBody3D.xml b/doc/classes/VehicleBody3D.xml
index 359e84c3da..5b79067659 100644
--- a/doc/classes/VehicleBody3D.xml
+++ b/doc/classes/VehicleBody3D.xml
@@ -9,7 +9,7 @@
[b]Note:[/b] This class has known issues and isn't designed to provide realistic 3D vehicle physics. If you want advanced vehicle physics, you may have to write your own physics integration using [CharacterBody3D] or [RigidBody3D].
</description>
<tutorials>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
</tutorials>
<members>
<member name="brake" type="float" setter="set_brake" getter="get_brake" default="0.0">
diff --git a/doc/classes/VehicleWheel3D.xml b/doc/classes/VehicleWheel3D.xml
index 77cb5ca9f8..92b2297bf4 100644
--- a/doc/classes/VehicleWheel3D.xml
+++ b/doc/classes/VehicleWheel3D.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] This class has known issues and isn't designed to provide realistic 3D vehicle physics. If you want advanced vehicle physics, you may need to write your own physics integration using another [PhysicsBody3D] class.
</description>
<tutorials>
- <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/524</link>
+ <link title="3D Truck Town Demo">https://godotengine.org/asset-library/asset/2752</link>
</tutorials>
<methods>
<method name="get_contact_body" qualifiers="const">
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index 13d84d96d6..cf33eac9c7 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -13,12 +13,12 @@
<tutorials>
<link title="Using Viewports">$DOCS_URL/tutorials/rendering/viewports.html</link>
<link title="Viewport and canvas transforms">$DOCS_URL/tutorials/2d/2d_transforms.html</link>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
- <link title="3D in 2D Demo">https://godotengine.org/asset-library/asset/128</link>
- <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link>
- <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/130</link>
- <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/541</link>
- <link title="3D Viewport Scaling Demo">https://godotengine.org/asset-library/asset/586</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="3D in 2D Viewport Demo">https://godotengine.org/asset-library/asset/2804</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
+ <link title="Screen Capture Demo">https://godotengine.org/asset-library/asset/2808</link>
+ <link title="Dynamic Split Screen Demo">https://godotengine.org/asset-library/asset/2806</link>
+ <link title="3D Resolution Scaling Demo">https://godotengine.org/asset-library/asset/2805</link>
</tutorials>
<methods>
<method name="find_world_2d" qualifiers="const">
@@ -347,12 +347,17 @@
Sets the screen-space antialiasing method used. Screen-space antialiasing works by selectively blurring edges in a post-process shader. It differs from MSAA which takes multiple coverage samples while rendering objects. Screen-space AA methods are typically faster than MSAA and will smooth out specular aliasing, but tend to make scenes appear blurry.
</member>
<member name="sdf_oversize" type="int" setter="set_sdf_oversize" getter="get_sdf_oversize" enum="Viewport.SDFOversize" default="1">
+ Controls how much of the original viewport's size should be covered by the 2D signed distance field. This SDF can be sampled in [CanvasItem] shaders and is also used for [GPUParticles2D] collision. Higher values allow portions of occluders located outside the viewport to still be taken into account in the generated signed distance field, at the cost of performance. If you notice particles falling through [LightOccluder2D]s as the occluders leave the viewport, increase this setting.
+ The percentage is added on each axis and on both sides. For example, with the default [constant SDF_OVERSIZE_120_PERCENT], the signed distance field will cover 20% of the viewport's size outside the viewport on each side (top, right, bottom, left).
</member>
<member name="sdf_scale" type="int" setter="set_sdf_scale" getter="get_sdf_scale" enum="Viewport.SDFScale" default="1">
+ The resolution scale to use for the 2D signed distance field. Higher values lead to a more precise and more stable signed distance field as the camera moves, at the cost of performance.
</member>
<member name="snap_2d_transforms_to_pixel" type="bool" setter="set_snap_2d_transforms_to_pixel" getter="is_snap_2d_transforms_to_pixel_enabled" default="false">
+ If [code]true[/code], [CanvasItem] nodes will internally snap to full pixels. Their position can still be sub-pixel, but the decimals will not have effect. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled.
</member>
<member name="snap_2d_vertices_to_pixel" type="bool" setter="set_snap_2d_vertices_to_pixel" getter="is_snap_2d_vertices_to_pixel_enabled" default="false">
+ If [code]true[/code], vertices of [CanvasItem] nodes will snap to full pixels. Only affects the final vertex positions, not the transforms. This can lead to a crisper appearance at the cost of less smooth movement, especially when [Camera2D] smoothing is enabled.
</member>
<member name="texture_mipmap_bias" type="float" setter="set_texture_mipmap_bias" getter="get_texture_mipmap_bias" default="0.0">
Affects the final texture sharpness by reading from a lower or higher mipmap (also called "texture LOD bias"). Negative values make mipmapped textures sharper but grainier when viewed at a distance, while positive values make mipmapped textures blurrier (even when up close).
@@ -389,7 +394,7 @@
<member name="vrs_texture" type="Texture2D" setter="set_vrs_texture" getter="get_vrs_texture">
Texture to use when [member vrs_mode] is set to [constant Viewport.VRS_TEXTURE].
The texture [i]must[/i] use a lossless compression format so that colors can be matched precisely. The following VRS densities are mapped to various colors, with brighter colors representing a lower level of shading precision:
- [codeblock]
+ [codeblock lang=text]
- 1×1 = rgb(0, 0, 0) - #000000
- 1×2 = rgb(0, 85, 0) - #005500
- 2×1 = rgb(85, 0, 0) - #550000
@@ -497,10 +502,16 @@
Represents the size of the [enum RenderInfo] enum.
</constant>
<constant name="RENDER_INFO_TYPE_VISIBLE" value="0" enum="RenderInfoType">
+ Visible render pass (excluding shadows).
</constant>
<constant name="RENDER_INFO_TYPE_SHADOW" value="1" enum="RenderInfoType">
+ Shadow render pass. Objects will be rendered several times depending on the number of amounts of lights with shadows and the number of directional shadow splits.
</constant>
- <constant name="RENDER_INFO_TYPE_MAX" value="2" enum="RenderInfoType">
+ <constant name="RENDER_INFO_TYPE_CANVAS" value="2" enum="RenderInfoType">
+ Canvas item rendering. This includes all 2D rendering.
+ </constant>
+ <constant name="RENDER_INFO_TYPE_MAX" value="3" enum="RenderInfoType">
+ Represents the size of the [enum RenderInfoType] enum.
</constant>
<constant name="DEBUG_DRAW_DISABLED" value="0" enum="DebugDraw">
Objects are displayed normally.
@@ -509,14 +520,16 @@
Objects are displayed without light information.
</constant>
<constant name="DEBUG_DRAW_LIGHTING" value="2" enum="DebugDraw">
+ Objects are displayed without textures and only with lighting information.
</constant>
<constant name="DEBUG_DRAW_OVERDRAW" value="3" enum="DebugDraw">
Objects are displayed semi-transparent with additive blending so you can see where they are drawing over top of one another. A higher overdraw means you are wasting performance on drawing pixels that are being hidden behind others.
</constant>
<constant name="DEBUG_DRAW_WIREFRAME" value="4" enum="DebugDraw">
- Objects are displayed in wireframe style.
+ Objects are displayed as wireframe models.
</constant>
<constant name="DEBUG_DRAW_NORMAL_BUFFER" value="5" enum="DebugDraw">
+ Objects are displayed without lighting information and their textures replaced by normal mapping.
</constant>
<constant name="DEBUG_DRAW_VOXEL_GI_ALBEDO" value="6" enum="DebugDraw">
Objects are displayed with only the albedo value from [VoxelGI]s.
@@ -534,6 +547,7 @@
Draws the shadow atlas that stores shadows from [DirectionalLight3D]s in the upper left quadrant of the [Viewport].
</constant>
<constant name="DEBUG_DRAW_SCENE_LUMINANCE" value="11" enum="DebugDraw">
+ Draws the scene luminance buffer (if available) in the upper left quadrant of the [Viewport].
</constant>
<constant name="DEBUG_DRAW_SSAO" value="12" enum="DebugDraw">
Draws the screen-space ambient occlusion texture instead of the scene so that you can clearly see how it is affecting objects. In order for this display mode to work, you must have [member Environment.ssao_enabled] set in your [WorldEnvironment].
@@ -548,24 +562,36 @@
Draws the decal atlas used by [Decal]s and light projector textures in the upper left quadrant of the [Viewport].
</constant>
<constant name="DEBUG_DRAW_SDFGI" value="16" enum="DebugDraw">
+ Draws the cascades used to render signed distance field global illumination (SDFGI).
+ Does nothing if the current environment's [member Environment.sdfgi_enabled] is [code]false[/code] or SDFGI is not supported on the platform.
</constant>
<constant name="DEBUG_DRAW_SDFGI_PROBES" value="17" enum="DebugDraw">
+ Draws the probes used for signed distance field global illumination (SDFGI).
+ Does nothing if the current environment's [member Environment.sdfgi_enabled] is [code]false[/code] or SDFGI is not supported on the platform.
</constant>
<constant name="DEBUG_DRAW_GI_BUFFER" value="18" enum="DebugDraw">
+ Draws the buffer used for global illumination (GI).
</constant>
<constant name="DEBUG_DRAW_DISABLE_LOD" value="19" enum="DebugDraw">
+ Draws all of the objects at their highest polycount, without low level of detail (LOD).
</constant>
<constant name="DEBUG_DRAW_CLUSTER_OMNI_LIGHTS" value="20" enum="DebugDraw">
+ Draws the cluster used by [OmniLight3D] nodes to optimize light rendering.
</constant>
<constant name="DEBUG_DRAW_CLUSTER_SPOT_LIGHTS" value="21" enum="DebugDraw">
+ Draws the cluster used by [SpotLight3D] nodes to optimize light rendering.
</constant>
<constant name="DEBUG_DRAW_CLUSTER_DECALS" value="22" enum="DebugDraw">
+ Draws the cluster used by [Decal] nodes to optimize decal rendering.
</constant>
<constant name="DEBUG_DRAW_CLUSTER_REFLECTION_PROBES" value="23" enum="DebugDraw">
+ Draws the cluster used by [ReflectionProbe] nodes to optimize decal rendering.
</constant>
<constant name="DEBUG_DRAW_OCCLUDERS" value="24" enum="DebugDraw">
+ Draws the buffer used for occlusion culling.
</constant>
<constant name="DEBUG_DRAW_MOTION_VECTORS" value="25" enum="DebugDraw">
+ Draws vector lines over the viewport to indicate the movement of pixels between frames.
</constant>
<constant name="DEBUG_DRAW_INTERNAL_BUFFER" value="26" enum="DebugDraw">
Draws the internal resolution buffer of the scene before post-processing is applied.
@@ -585,7 +611,7 @@
Use this for non-pixel art textures that may be viewed at a low scale (e.g. due to [Camera2D] zoom or sprite scaling), as mipmaps are important to smooth out pixels that are smaller than on-screen pixels.
</constant>
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_FILTER_MAX" value="4" enum="DefaultCanvasItemTextureFilter">
- Max value for [enum DefaultCanvasItemTextureFilter] enum.
+ Represents the size of the [enum DefaultCanvasItemTextureFilter] enum.
</constant>
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_DISABLED" value="0" enum="DefaultCanvasItemTextureRepeat">
Disables textures repeating. Instead, when reading UVs outside the 0-1 range, the value will be clamped to the edge of the texture, resulting in a stretched out look at the borders of the texture.
@@ -597,34 +623,43 @@
Flip the texture when repeating so that the edge lines up instead of abruptly changing.
</constant>
<constant name="DEFAULT_CANVAS_ITEM_TEXTURE_REPEAT_MAX" value="3" enum="DefaultCanvasItemTextureRepeat">
- Max value for [enum DefaultCanvasItemTextureRepeat] enum.
+ Represents the size of the [enum DefaultCanvasItemTextureRepeat] enum.
</constant>
<constant name="SDF_OVERSIZE_100_PERCENT" value="0" enum="SDFOversize">
+ The signed distance field only covers the viewport's own rectangle.
</constant>
<constant name="SDF_OVERSIZE_120_PERCENT" value="1" enum="SDFOversize">
+ The signed distance field is expanded to cover 20% of the viewport's size around the borders.
</constant>
<constant name="SDF_OVERSIZE_150_PERCENT" value="2" enum="SDFOversize">
+ The signed distance field is expanded to cover 50% of the viewport's size around the borders.
</constant>
<constant name="SDF_OVERSIZE_200_PERCENT" value="3" enum="SDFOversize">
+ The signed distance field is expanded to cover 100% (double) of the viewport's size around the borders.
</constant>
<constant name="SDF_OVERSIZE_MAX" value="4" enum="SDFOversize">
+ Represents the size of the [enum SDFOversize] enum.
</constant>
<constant name="SDF_SCALE_100_PERCENT" value="0" enum="SDFScale">
+ The signed distance field is rendered at full resolution.
</constant>
<constant name="SDF_SCALE_50_PERCENT" value="1" enum="SDFScale">
+ The signed distance field is rendered at half the resolution of this viewport.
</constant>
<constant name="SDF_SCALE_25_PERCENT" value="2" enum="SDFScale">
+ The signed distance field is rendered at a quarter the resolution of this viewport.
</constant>
<constant name="SDF_SCALE_MAX" value="3" enum="SDFScale">
+ Represents the size of the [enum SDFScale] enum.
</constant>
<constant name="VRS_DISABLED" value="0" enum="VRSMode">
- VRS is disabled.
+ Variable Rate Shading is disabled.
</constant>
<constant name="VRS_TEXTURE" value="1" enum="VRSMode">
- VRS uses a texture. Note, for stereoscopic use a texture atlas with a texture for each view.
+ Variable Rate Shading uses a texture. Note, for stereoscopic use a texture atlas with a texture for each view.
</constant>
<constant name="VRS_XR" value="2" enum="VRSMode">
- VRS texture is supplied by the primary [XRInterface].
+ Variable Rate Shading's texture is supplied by the primary [XRInterface].
</constant>
<constant name="VRS_MAX" value="3" enum="VRSMode">
Represents the size of the [enum VRSMode] enum.
diff --git a/doc/classes/ViewportTexture.xml b/doc/classes/ViewportTexture.xml
index e12933d64b..ba2352ab61 100644
--- a/doc/classes/ViewportTexture.xml
+++ b/doc/classes/ViewportTexture.xml
@@ -4,20 +4,21 @@
Provides the content of a [Viewport] as a dynamic texture.
</brief_description>
<description>
- Provides the content of a [Viewport] as a dynamic [Texture2D]. This can be used to mix controls, 2D game objects, and 3D game objects in the same scene.
- To create a [ViewportTexture] in code, use the [method Viewport.get_texture] method on the target viewport.
+ A [ViewportTexture] provides the content of a [Viewport] as a dynamic [Texture2D]. This can be used to combine the rendering of [Control], [Node2D] and [Node3D] nodes. For example, you can use this texture to display a 3D scene inside a [TextureRect], or a 2D overlay in a [Sprite3D].
+ To get a [ViewportTexture] in code, use the [method Viewport.get_texture] method on the target viewport.
[b]Note:[/b] A [ViewportTexture] is always local to its scene (see [member Resource.resource_local_to_scene]). If the scene root is not ready, it may return incorrect data (see [signal Node.ready]).
+ [b]Note:[/b] Instantiating scenes containing a high-resolution [ViewportTexture] may cause noticeable stutter.
</description>
<tutorials>
- <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link>
- <link title="3D in 2D Demo">https://godotengine.org/asset-library/asset/128</link>
- <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link>
- <link title="3D Viewport Scaling Demo">https://godotengine.org/asset-library/asset/586</link>
+ <link title="GUI in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2807</link>
+ <link title="3D in 2D Viewport Demo">https://godotengine.org/asset-library/asset/2804</link>
+ <link title="2D in 3D Viewport Demo">https://godotengine.org/asset-library/asset/2803</link>
+ <link title="3D Resolution Scaling Demo">https://godotengine.org/asset-library/asset/2805</link>
</tutorials>
<members>
<member name="viewport_path" type="NodePath" setter="set_viewport_path_in_scene" getter="get_viewport_path_in_scene" default="NodePath(&quot;&quot;)">
- The path to the [Viewport] node to display. This is relative to the scene root, not to the node that uses the texture.
- [b]Note:[/b] In the editor, this path is automatically updated when the target viewport or one of its ancestors is renamed or moved. At runtime, the path may not be able to automatically update due to the inability to determine the scene root.
+ The path to the [Viewport] node to display. This is relative to the local scene root (see [method Resource.get_local_scene]), [b]not[/b] to the nodes that use this texture.
+ [b]Note:[/b] In the editor, this path is automatically updated when the target viewport or one of its ancestors is renamed or moved. At runtime, this path may not automatically update if the scene root cannot be found.
</member>
</members>
</class>
diff --git a/doc/classes/VisibleOnScreenNotifier2D.xml b/doc/classes/VisibleOnScreenNotifier2D.xml
index 9d22bf6cff..cf4a0c0018 100644
--- a/doc/classes/VisibleOnScreenNotifier2D.xml
+++ b/doc/classes/VisibleOnScreenNotifier2D.xml
@@ -9,7 +9,7 @@
[b]Note:[/b] [VisibleOnScreenNotifier2D] uses the render culling code to determine whether it's visible on screen, so it won't function unless [member CanvasItem.visible] is set to [code]true[/code].
</description>
<tutorials>
- <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/515</link>
+ <link title="2D Dodge The Creeps Demo">https://godotengine.org/asset-library/asset/2712</link>
</tutorials>
<methods>
<method name="is_on_screen" qualifiers="const">
diff --git a/doc/classes/VisualShader.xml b/doc/classes/VisualShader.xml
index 0b416214b5..c8230d94e4 100644
--- a/doc/classes/VisualShader.xml
+++ b/doc/classes/VisualShader.xml
@@ -29,6 +29,15 @@
Adds a new varying value node to the shader.
</description>
</method>
+ <method name="attach_node_to_frame">
+ <return type="void" />
+ <param index="0" name="type" type="int" enum="VisualShader.Type" />
+ <param index="1" name="id" type="int" />
+ <param index="2" name="frame" type="int" />
+ <description>
+ Attaches the given node to the given frame.
+ </description>
+ </method>
<method name="can_connect_nodes" qualifiers="const">
<return type="bool" />
<param index="0" name="type" type="int" enum="VisualShader.Type" />
@@ -62,6 +71,14 @@
Connects the specified nodes and ports, even if they can't be connected. Such connection is invalid and will not function properly.
</description>
</method>
+ <method name="detach_node_from_frame">
+ <return type="void" />
+ <param index="0" name="type" type="int" enum="VisualShader.Type" />
+ <param index="1" name="id" type="int" />
+ <description>
+ Detaches the given node from the frame it is attached to.
+ </description>
+ </method>
<method name="disconnect_nodes">
<return type="void" />
<param index="0" name="type" type="int" enum="VisualShader.Type" />
diff --git a/doc/classes/VisualShaderNode.xml b/doc/classes/VisualShaderNode.xml
index cc6394e2da..5b82d20246 100644
--- a/doc/classes/VisualShaderNode.xml
+++ b/doc/classes/VisualShaderNode.xml
@@ -61,6 +61,9 @@
</method>
</methods>
<members>
+ <member name="linked_parent_graph_frame" type="int" setter="set_frame" getter="get_frame" default="-1">
+ Represents the index of the frame this node is linked to. If set to [code]-1[/code] the node is not linked to any frame.
+ </member>
<member name="output_port_for_preview" type="int" setter="set_output_port_for_preview" getter="get_output_port_for_preview" default="-1">
Sets the output port index which will be showed for preview. If set to [code]-1[/code] no port will be open for preview.
</member>
diff --git a/doc/classes/VisualShaderNodeComment.xml b/doc/classes/VisualShaderNodeComment.xml
deleted file mode 100644
index b4063409b9..0000000000
--- a/doc/classes/VisualShaderNodeComment.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<class name="VisualShaderNodeComment" inherits="VisualShaderNodeResizableBase" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
- <brief_description>
- A comment node to be placed on visual shader graph.
- </brief_description>
- <description>
- A resizable rectangular area with changeable [member title] and [member description] used for better organizing of other visual shader nodes.
- </description>
- <tutorials>
- </tutorials>
- <members>
- <member name="description" type="String" setter="set_description" getter="get_description" default="&quot;&quot;">
- An additional description which placed below the title.
- </member>
- <member name="title" type="String" setter="set_title" getter="get_title" default="&quot;Comment&quot;">
- A title of the node.
- </member>
- </members>
-</class>
diff --git a/doc/classes/VisualShaderNodeFrame.xml b/doc/classes/VisualShaderNodeFrame.xml
new file mode 100644
index 0000000000..3126a56abe
--- /dev/null
+++ b/doc/classes/VisualShaderNodeFrame.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="VisualShaderNodeFrame" inherits="VisualShaderNodeResizableBase" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+ <brief_description>
+ A frame other visual shader nodes can be attached to for better organization.
+ </brief_description>
+ <description>
+ A rectangular frame that can be used to group visual shader nodes together to improve organization.
+ Nodes attached to the frame will move with it when it is dragged and it can automatically resize to enclose all attached nodes.
+ Its title, description and color can be customized.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="add_attached_node">
+ <return type="void" />
+ <param index="0" name="node" type="int" />
+ <description>
+ Adds a node to the list of nodes attached to the frame. Should not be called directly, use the [method VisualShader.attach_node_to_frame] method instead.
+ </description>
+ </method>
+ <method name="remove_attached_node">
+ <return type="void" />
+ <param index="0" name="node" type="int" />
+ <description>
+ Removes a node from the list of nodes attached to the frame. Should not be called directly, use the [method VisualShader.detach_node_from_frame] method instead.
+ </description>
+ </method>
+ </methods>
+ <members>
+ <member name="attached_nodes" type="PackedInt32Array" setter="set_attached_nodes" getter="get_attached_nodes" default="PackedInt32Array()">
+ The list of nodes attached to the frame.
+ </member>
+ <member name="autoshrink" type="bool" setter="set_autoshrink_enabled" getter="is_autoshrink_enabled" default="true">
+ If [code]true[/code], the frame will automatically resize to enclose all attached nodes.
+ </member>
+ <member name="tint_color" type="Color" setter="set_tint_color" getter="get_tint_color" default="Color(0.3, 0.3, 0.3, 0.75)">
+ The color of the frame when [member tint_color_enabled] is [code]true[/code].
+ </member>
+ <member name="tint_color_enabled" type="bool" setter="set_tint_color_enabled" getter="is_tint_color_enabled" default="false">
+ If [code]true[/code], the frame will be tinted with the color specified in [member tint_color].
+ </member>
+ <member name="title" type="String" setter="set_title" getter="get_title" default="&quot;Title&quot;">
+ The title of the node.
+ </member>
+ </members>
+</class>
diff --git a/doc/classes/VoxelGI.xml b/doc/classes/VoxelGI.xml
index 9e4026a750..93679cccf6 100644
--- a/doc/classes/VoxelGI.xml
+++ b/doc/classes/VoxelGI.xml
@@ -12,7 +12,7 @@
</description>
<tutorials>
<link title="Using Voxel global illumination">$DOCS_URL/tutorials/3d/global_illumination/using_voxel_gi.html</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="bake">
diff --git a/doc/classes/VoxelGIData.xml b/doc/classes/VoxelGIData.xml
index 088854e8f4..43bf04b1f5 100644
--- a/doc/classes/VoxelGIData.xml
+++ b/doc/classes/VoxelGIData.xml
@@ -8,7 +8,7 @@
[b]Note:[/b] To prevent text-based scene files ([code].tscn[/code]) from growing too much and becoming slow to load and save, always save [VoxelGIData] to an external binary resource file ([code].res[/code]) instead of embedding it within the scene. This can be done by clicking the dropdown arrow next to the [VoxelGIData] resource, choosing [b]Edit[/b], clicking the floppy disk icon at the top of the Inspector then choosing [b]Save As...[/b].
</description>
<tutorials>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<methods>
<method name="allocate">
diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml
index c7ee160174..80dc46ae93 100644
--- a/doc/classes/WorldEnvironment.xml
+++ b/doc/classes/WorldEnvironment.xml
@@ -10,9 +10,8 @@
</description>
<tutorials>
<link title="Environment and post-processing">$DOCS_URL/tutorials/3d/environment_and_post_processing.html</link>
- <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/123</link>
- <link title="2D HDR Demo">https://godotengine.org/asset-library/asset/110</link>
- <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
+ <link title="3D Material Testers Demo">https://godotengine.org/asset-library/asset/2742</link>
+ <link title="Third Person Shooter (TPS) Demo">https://godotengine.org/asset-library/asset/2710</link>
</tutorials>
<members>
<member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes">
diff --git a/doc/classes/XRBodyModifier3D.xml b/doc/classes/XRBodyModifier3D.xml
index cb1caf12a9..49a226c106 100644
--- a/doc/classes/XRBodyModifier3D.xml
+++ b/doc/classes/XRBodyModifier3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRBodyModifier3D" inherits="Node3D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="XRBodyModifier3D" inherits="SkeletonModifier3D" experimental="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A node for driving body meshes from [XRBodyTracker] data.
</brief_description>
@@ -24,9 +24,6 @@
<member name="show_when_tracked" type="bool" setter="set_show_when_tracked" getter="get_show_when_tracked" default="true">
If true then the nodes visibility is determined by whether tracking data is available.
</member>
- <member name="target" type="NodePath" setter="set_target" getter="get_target" default="NodePath(&quot;&quot;)">
- A [NodePath] to a [Skeleton3D] to animate.
- </member>
</members>
<constants>
<constant name="BODY_UPDATE_UPPER_BODY" value="1" enum="BodyUpdate" is_bitfield="true">
diff --git a/doc/classes/XRHandModifier3D.xml b/doc/classes/XRHandModifier3D.xml
index 3192913b87..9ff27bb982 100644
--- a/doc/classes/XRHandModifier3D.xml
+++ b/doc/classes/XRHandModifier3D.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="XRHandModifier3D" inherits="Node3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
+<class name="XRHandModifier3D" inherits="SkeletonModifier3D" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
A node for driving hand meshes from [XRHandTracker] data.
</brief_description>
@@ -18,9 +18,6 @@
<member name="hand_tracker" type="StringName" setter="set_hand_tracker" getter="get_hand_tracker" default="&amp;&quot;/user/left&quot;">
The name of the [XRHandTracker] registered with [XRServer] to obtain the hand tracking data from.
</member>
- <member name="target" type="NodePath" setter="set_target" getter="get_target" default="NodePath(&quot;&quot;)">
- A [NodePath] to a [Skeleton3D] to animate.
- </member>
</members>
<constants>
<constant name="BONE_UPDATE_FULL" value="0" enum="BoneUpdate">