summaryrefslogtreecommitdiff
path: root/doc/classes
diff options
context:
space:
mode:
Diffstat (limited to 'doc/classes')
-rw-r--r--doc/classes/@GlobalScope.xml11
-rw-r--r--doc/classes/AnimatedSprite2D.xml1
-rw-r--r--doc/classes/AnimatedSprite3D.xml1
-rw-r--r--doc/classes/AnimatedTexture.xml3
-rw-r--r--doc/classes/AnimationPlayer.xml1
-rw-r--r--doc/classes/Array.xml4
-rw-r--r--doc/classes/AudioStreamPlayer3D.xml1
-rw-r--r--doc/classes/BitMap.xml1
-rw-r--r--doc/classes/CollisionShape2D.xml2
-rw-r--r--doc/classes/Control.xml34
-rw-r--r--doc/classes/DynamicFont.xml2
-rw-r--r--doc/classes/EditorDebuggerPlugin.xml103
-rw-r--r--doc/classes/EditorExportPlugin.xml12
-rw-r--r--doc/classes/EditorPlugin.xml18
-rw-r--r--doc/classes/EditorTranslationParserPlugin.xml23
-rw-r--r--doc/classes/Engine.xml2
-rw-r--r--doc/classes/EngineDebugger.xml132
-rw-r--r--doc/classes/Environment.xml65
-rw-r--r--doc/classes/Expression.xml2
-rw-r--r--doc/classes/Gradient.xml4
-rw-r--r--doc/classes/HSlider.xml1
-rw-r--r--doc/classes/Input.xml15
-rw-r--r--doc/classes/JSON.xml22
-rw-r--r--doc/classes/Light3D.xml8
-rw-r--r--doc/classes/Line2D.xml2
-rw-r--r--doc/classes/Node.xml5
-rw-r--r--doc/classes/Object.xml26
-rw-r--r--doc/classes/PhysicsServer2D.xml1
-rw-r--r--doc/classes/ProjectSettings.xml14
-rw-r--r--doc/classes/RenderingServer.xml49
-rw-r--r--doc/classes/RichTextLabel.xml1
-rw-r--r--doc/classes/RigidBody2D.xml1
-rw-r--r--doc/classes/RigidBody3D.xml1
-rw-r--r--doc/classes/Slider.xml1
-rw-r--r--doc/classes/TextEdit.xml3
-rw-r--r--doc/classes/Texture2D.xml2
-rw-r--r--doc/classes/Thread.xml3
-rw-r--r--doc/classes/TileMap.xml2
-rw-r--r--doc/classes/TouchScreenButton.xml6
-rw-r--r--doc/classes/Translation.xml37
-rw-r--r--doc/classes/TranslationServer.xml30
-rw-r--r--doc/classes/VSlider.xml1
-rw-r--r--doc/classes/Vector2.xml3
43 files changed, 537 insertions, 119 deletions
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index 7f7df33471..2b1770f12b 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -27,6 +27,9 @@
<member name="Engine" type="Engine" setter="" getter="">
The [Engine] singleton.
</member>
+ <member name="EngineDebugger" type="EngineDebugger" setter="" getter="">
+ The [EngineDebugger] singleton.
+ </member>
<member name="Geometry2D" type="Geometry2D" setter="" getter="">
The [Geometry2D] singleton.
</member>
@@ -353,16 +356,16 @@
Right Direction key.
</constant>
<constant name="KEY_BACK" value="16777280" enum="KeyList">
- Back key.
+ Media back key. Not to be confused with the Back button on an Android device.
</constant>
<constant name="KEY_FORWARD" value="16777281" enum="KeyList">
- Forward key.
+ Media forward key.
</constant>
<constant name="KEY_STOP" value="16777282" enum="KeyList">
- Stop key.
+ Media stop key.
</constant>
<constant name="KEY_REFRESH" value="16777283" enum="KeyList">
- Refresh key.
+ Media refresh key.
</constant>
<constant name="KEY_VOLUMEDOWN" value="16777284" enum="KeyList">
Volume down key.
diff --git a/doc/classes/AnimatedSprite2D.xml b/doc/classes/AnimatedSprite2D.xml
index 8d0534ccd2..7a992d0c03 100644
--- a/doc/classes/AnimatedSprite2D.xml
+++ b/doc/classes/AnimatedSprite2D.xml
@@ -7,6 +7,7 @@
Animations are created using a [SpriteFrames] resource, which can be configured in the editor via the SpriteFrames panel.
</description>
<tutorials>
+ <link title="2D Sprite animation">https://docs.godotengine.org/en/latest/tutorials/2d/2d_sprite_animation.html</link>
</tutorials>
<methods>
<method name="is_playing" qualifiers="const">
diff --git a/doc/classes/AnimatedSprite3D.xml b/doc/classes/AnimatedSprite3D.xml
index ad9706a52a..e1fb78e5b5 100644
--- a/doc/classes/AnimatedSprite3D.xml
+++ b/doc/classes/AnimatedSprite3D.xml
@@ -7,6 +7,7 @@
Animations are created using a [SpriteFrames] resource, which can be configured in the editor via the SpriteFrames panel.
</description>
<tutorials>
+ <link title="2D Sprite animation (also applies to 3D)">https://docs.godotengine.org/en/latest/tutorials/2d/2d_sprite_animation.html</link>
</tutorials>
<methods>
<method name="is_playing" qualifiers="const">
diff --git a/doc/classes/AnimatedTexture.xml b/doc/classes/AnimatedTexture.xml
index 285e0d5f39..5774842144 100644
--- a/doc/classes/AnimatedTexture.xml
+++ b/doc/classes/AnimatedTexture.xml
@@ -6,7 +6,8 @@
<description>
[AnimatedTexture] is a resource format for frame-based animations, where multiple textures can be chained automatically with a predefined delay for each frame. Unlike [AnimationPlayer] or [AnimatedSprite2D], it isn't a [Node], but has the advantage of being usable anywhere a [Texture2D] resource can be used, e.g. in a [TileSet].
The playback of the animation is controlled by the [member fps] property as well as each frame's optional delay (see [method set_frame_delay]). The animation loops, i.e. it will restart at frame 0 automatically after playing the last frame.
- [AnimatedTexture] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one. Also, it doesn't support [AtlasTexture]. Each frame needs to be separate image.
+ [AnimatedTexture] currently requires all frame textures to have the same size, otherwise the bigger ones will be cropped to match the smallest one.
+ [b]Note:[/b] AnimatedTexture doesn't support using [AtlasTexture]s. Each frame needs to be a separate [Texture2D].
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index 1420b1bf64..6267a5a0a9 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -10,6 +10,7 @@
</description>
<tutorials>
<link>https://docs.godotengine.org/en/latest/getting_started/step_by_step/animations.html</link>
+ <link title="2D Sprite animation">https://docs.godotengine.org/en/latest/tutorials/2d/2d_sprite_animation.html</link>
<link>https://docs.godotengine.org/en/latest/tutorials/animation/index.html</link>
</tutorials>
<methods>
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index b79b24e0bc..61df5e092e 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -119,7 +119,7 @@
<return type="Variant">
</return>
<description>
- Returns the last element of the array, or [code]null[/code] if the array is empty.
+ Returns the last element of the array. Throws an error and returns [code]null[/code] if the array is empty.
</description>
</method>
<method name="bsearch">
@@ -216,7 +216,7 @@
<return type="Variant">
</return>
<description>
- Returns the first element of the array, or [code]null[/code] if the array is empty.
+ Returns the first element of the array. Throws an error and returns [code]null[/code] if the array is empty.
</description>
</method>
<method name="has">
diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml
index bd90e3bd1a..98100370b6 100644
--- a/doc/classes/AudioStreamPlayer3D.xml
+++ b/doc/classes/AudioStreamPlayer3D.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
Plays a sound effect with directed sound effects, dampens with distance if needed, generates effect of hearable position in space.
+ By default, audio is heard from the camera position. This can be changed by adding a [Listener3D] node to the scene and enabling it by calling [method Listener3D.make_current] on it.
</description>
<tutorials>
<link>https://docs.godotengine.org/en/latest/tutorials/audio/audio_streams.html</link>
diff --git a/doc/classes/BitMap.xml b/doc/classes/BitMap.xml
index f0ac7d1160..27ead07e6f 100644
--- a/doc/classes/BitMap.xml
+++ b/doc/classes/BitMap.xml
@@ -60,6 +60,7 @@
<argument index="1" name="rect" type="Rect2">
</argument>
<description>
+ Applies morphological dilation to the bitmap. The first argument is the dilation amount, Rect2 is the area where the dilation will be applied.
</description>
</method>
<method name="opaque_to_polygons" qualifiers="const">
diff --git a/doc/classes/CollisionShape2D.xml b/doc/classes/CollisionShape2D.xml
index e32ce9c9f9..d2676e55d0 100644
--- a/doc/classes/CollisionShape2D.xml
+++ b/doc/classes/CollisionShape2D.xml
@@ -13,7 +13,7 @@
</methods>
<members>
<member name="disabled" type="bool" setter="set_disabled" getter="is_disabled" default="false">
- A disabled collision shape has no effect in the world.
+ A disabled collision shape has no effect in the world. This property should be changed with [method Object.set_deferred].
</member>
<member name="one_way_collision" type="bool" setter="set_one_way_collision" getter="is_one_way_collision_enabled" default="false">
Sets whether this collision shape should only detect collision on one side (top or bottom).
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index 1f495bf91a..594e641b4f 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -13,6 +13,7 @@
Only one [Control] node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the focus, call [method grab_focus]. [Control] nodes lose focus when another node grabs it, or if you hide the node in focus.
Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a [Control] node to ignore mouse or touch events. You'll need it if you place an icon on top of a button.
[Theme] resources change the Control's appearance. If you change the [Theme] on a [Control] node, it affects all of its children. To override some of the theme's parameters, call one of the [code]add_theme_*_override[/code] methods, like [method add_theme_font_override]. You can override the theme with the inspector.
+ [b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you can't access their values using [method Object.get] and [method Object.set]. Instead, use the [code]get_theme_*[/code] and [code]add_theme_*_override[/code] methods provided by this class.
</description>
<tutorials>
<link>https://docs.godotengine.org/en/latest/tutorials/gui/index.html</link>
@@ -97,7 +98,17 @@
<argument index="1" name="color" type="Color">
</argument>
<description>
- Overrides the [Color] with given [code]name[/code] in the [member theme] resource the control uses. If the [code]color[/code] is empty or invalid, the override is cleared and the color from assigned [Theme] is used.
+ Overrides the [Color] with given [code]name[/code] in the [member theme] resource the control uses.
+ [b]Note:[/b] Unlike other theme overrides, there is no way to undo a color override without manually assigning the previous color.
+ [b]Example of overriding a label's color and resetting it later:[/b]
+ [codeblock]
+ # Override the child node "MyLabel"'s font color to orange.
+ $MyLabel.add_theme_color_override("font_color", Color(1, 0.5, 0))
+
+ # Reset the color by creating a new node to get the default value:
+ var default_label_color = Label.new().get_theme_color("font_color")
+ $MyLabel.add_theme_color_override("font_color", default_label_color)
+ [/codeblock]
</description>
</method>
<method name="add_theme_constant_override">
@@ -108,7 +119,7 @@
<argument index="1" name="constant" type="int">
</argument>
<description>
- Overrides an integer constant with given [code]name[/code] in the [member theme] resource the control uses. If the [code]constant[/code] is empty or invalid, the override is cleared and the constant from assigned [Theme] is used.
+ Overrides an integer constant with given [code]name[/code] in the [member theme] resource the control uses. If the [code]constant[/code] is [code]0[/code], the override is cleared and the constant from assigned [Theme] is used.
</description>
</method>
<method name="add_theme_font_override">
@@ -119,7 +130,7 @@
<argument index="1" name="font" type="Font">
</argument>
<description>
- Overrides the font with given [code]name[/code] in the [member theme] resource the control uses. If [code]font[/code] is empty or invalid, the override is cleared and the font from assigned [Theme] is used.
+ Overrides the font with given [code]name[/code] in the [member theme] resource the control uses. If [code]font[/code] is [code]null[/code] or invalid, the override is cleared and the font from assigned [Theme] is used.
</description>
</method>
<method name="add_theme_icon_override">
@@ -130,7 +141,7 @@
<argument index="1" name="texture" type="Texture2D">
</argument>
<description>
- Overrides the icon with given [code]name[/code] in the [member theme] resource the control uses. If [code]icon[/code] is empty or invalid, the override is cleared and the icon from assigned [Theme] is used.
+ Overrides the icon with given [code]name[/code] in the [member theme] resource the control uses. If [code]icon[/code] is [code]null[/code] or invalid, the override is cleared and the icon from assigned [Theme] is used.
</description>
</method>
<method name="add_theme_shader_override">
@@ -141,7 +152,7 @@
<argument index="1" name="shader" type="Shader">
</argument>
<description>
- Overrides the [Shader] with given [code]name[/code] in the [member theme] resource the control uses. If [code]shader[/code] is empty or invalid, the override is cleared and the shader from assigned [Theme] is used.
+ Overrides the [Shader] with given [code]name[/code] in the [member theme] resource the control uses. If [code]shader[/code] is [code]null[/code] or invalid, the override is cleared and the shader from assigned [Theme] is used.
</description>
</method>
<method name="add_theme_stylebox_override">
@@ -153,6 +164,19 @@
</argument>
<description>
Overrides the [StyleBox] with given [code]name[/code] in the [member theme] resource the control uses. If [code]stylebox[/code] is empty or invalid, the override is cleared and the [StyleBox] from assigned [Theme] is used.
+ [b]Example of modifying a property in a StyleBox by duplicating it:[/b]
+ [codeblock]
+ # The snippet below assumes the child node MyButton has a StyleBoxFlat assigned.
+ # Resources are shared across instances, so we need to duplicate it
+ # to avoid modifying the appearance of all other buttons.
+ var new_stylebox_normal = $MyButton.get_theme_stylebox("normal").duplicate()
+ new_stylebox_normal.border_width_top = 3
+ new_stylebox_normal.border_color = Color(0, 1, 0.5)
+ $MyButton.add_theme_stylebox_override("normal", new_stylebox_normal)
+
+ # Remove the stylebox override:
+ $MyButton.add_theme_stylebox_override("normal", null)
+ [/codeblock]
</description>
</method>
<method name="can_drop_data" qualifiers="virtual">
diff --git a/doc/classes/DynamicFont.xml b/doc/classes/DynamicFont.xml
index 24df056c6b..5d8ae29175 100644
--- a/doc/classes/DynamicFont.xml
+++ b/doc/classes/DynamicFont.xml
@@ -12,7 +12,7 @@
dynamic_font.size = 64
$"Label".set("custom_fonts/font", dynamic_font)
[/codeblock]
- [b]Note:[/b] DynamicFont doesn't support features such as right-to-left typesetting, ligatures, text shaping, variable fonts and optional font features yet. If you wish to "bake" an optional font feature into a TTF font file, you can use [url=https://fontforge.org/]FontForge[/url] to do so. In FontForge, use [b]File &gt; Generate Fonts[/b], click [b]Options[/b], choose the desired features then generate the font.
+ [b]Note:[/b] DynamicFont doesn't support features such as kerning, right-to-left typesetting, ligatures, text shaping, variable fonts and optional font features yet. If you wish to "bake" an optional font feature into a TTF font file, you can use [url=https://fontforge.org/]FontForge[/url] to do so. In FontForge, use [b]File &gt; Generate Fonts[/b], click [b]Options[/b], choose the desired features then generate the font.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/EditorDebuggerPlugin.xml b/doc/classes/EditorDebuggerPlugin.xml
new file mode 100644
index 0000000000..b97933e582
--- /dev/null
+++ b/doc/classes/EditorDebuggerPlugin.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EditorDebuggerPlugin" inherits="Control" version="4.0">
+ <brief_description>
+ A base class to implement debugger plugins.
+ </brief_description>
+ <description>
+ All debugger plugin scripts must extend [EditorDebuggerPlugin]. It provides functions related to editor side of debugger.
+ You don't need to instantiate this class. That is handled by the debugger itself. [Control] nodes can be added as child nodes to provide a GUI front-end for the plugin.
+ Do not queue_free/reparent it's instance otherwise the instance becomes unusable.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="has_capture">
+ <return type="bool">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <description>
+ Returns [code]true[/code] if a message capture with given name is present otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="is_breaked">
+ <return type="bool">
+ </return>
+ <description>
+ Returns [code]true[/code] if the game is in break state otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="is_debuggable">
+ <return type="bool">
+ </return>
+ <description>
+ Returns [code]true[/code] if the game can be debugged otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="is_session_active">
+ <return type="bool">
+ </return>
+ <description>
+ Returns [code]true[/code] if there is an instance of the game running with the attached debugger otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="register_message_capture">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <argument index="1" name="callable" type="Callable">
+ </argument>
+ <description>
+ Registers a message capture with given [code]name[/code]. If [code]name[/code] is "my_message" then messages starting with "my_message:" will be called with the given callable.
+ Callable must accept a message string and a data array as argument. If the message and data are valid then callable must return [code]true[/code] otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="send_message">
+ <return type="void">
+ </return>
+ <argument index="0" name="message" type="String">
+ </argument>
+ <argument index="1" name="data" type="Array">
+ </argument>
+ <description>
+ Sends a message with given [code]message[/code] and [code]data[/code] array.
+ </description>
+ </method>
+ <method name="unregister_message_capture">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <description>
+ Unregisters the message capture with given name.
+ </description>
+ </method>
+ </methods>
+ <signals>
+ <signal name="breaked">
+ <argument index="0" name="can_debug" type="bool">
+ </argument>
+ <description>
+ Emitted when the game enters a break state.
+ </description>
+ </signal>
+ <signal name="continued">
+ <description>
+ Emitted when the game exists a break state.
+ </description>
+ </signal>
+ <signal name="started">
+ <description>
+ Emitted when the debugging starts.
+ </description>
+ </signal>
+ <signal name="stopped">
+ <description>
+ Emitted when the debugging stops.
+ </description>
+ </signal>
+ </signals>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/EditorExportPlugin.xml b/doc/classes/EditorExportPlugin.xml
index 8cfd3b63d6..9ef2bd21cc 100644
--- a/doc/classes/EditorExportPlugin.xml
+++ b/doc/classes/EditorExportPlugin.xml
@@ -70,12 +70,24 @@
<description>
</description>
</method>
+ <method name="add_ios_embedded_framework">
+ <return type="void">
+ </return>
+ <argument index="0" name="path" type="String">
+ </argument>
+ <description>
+ Adds a dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project and embeds it into resulting binary.
+ [b]Note:[/b] For static libraries (*.a) works in same way as [code]add_ios_framework[/code].
+ This method should not be used for System libraries as they are already present on the device.
+ </description>
+ </method>
<method name="add_ios_framework">
<return type="void">
</return>
<argument index="0" name="path" type="String">
</argument>
<description>
+ Adds a static library (*.a) or dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project.
</description>
</method>
<method name="add_ios_linker_flags">
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index 99fe9b4bb5..36076d8909 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -76,6 +76,15 @@
During run-time, this will be a simple object with a script so this function does not need to be called then.
</description>
</method>
+ <method name="add_debugger_plugin">
+ <return type="void">
+ </return>
+ <argument index="0" name="script" type="Script">
+ </argument>
+ <description>
+ Adds a [Script] as debugger plugin to the Debugger. The script must extend [EditorDebuggerPlugin].
+ </description>
+ </method>
<method name="add_export_plugin">
<return type="void">
</return>
@@ -424,6 +433,15 @@
Removes a custom type added by [method add_custom_type].
</description>
</method>
+ <method name="remove_debugger_plugin">
+ <return type="void">
+ </return>
+ <argument index="0" name="script" type="Script">
+ </argument>
+ <description>
+ Removes the debugger plugin with given script fromm the Debugger.
+ </description>
+ </method>
<method name="remove_export_plugin">
<return type="void">
</return>
diff --git a/doc/classes/EditorTranslationParserPlugin.xml b/doc/classes/EditorTranslationParserPlugin.xml
index d40fc558de..f5204e7bab 100644
--- a/doc/classes/EditorTranslationParserPlugin.xml
+++ b/doc/classes/EditorTranslationParserPlugin.xml
@@ -5,30 +5,41 @@
</brief_description>
<description>
Plugins are registered via [method EditorPlugin.add_translation_parser_plugin] method. To define the parsing and string extraction logic, override the [method parse_file] method in script.
+ Add the extracted strings to argument [code]msgids[/code] or [code]msgids_context_plural[/code] if context or plural is used.
+ When adding to [code]msgids_context_plural[/code], you must add the data using the format [code]["A", "B", "C"][/code], where [code]A[/code] represents the extracted string, [code]B[/code] represents the context, and [code]C[/code] represents the plural version of the extracted string. If you want to add only context but not plural, put [code]""[/code] for the plural slot. The idea is the same if you only want to add plural but not context. See the code below for concrete examples.
The extracted strings will be written into a POT file selected by user under "POT Generation" in "Localization" tab in "Project Settings" menu.
- Below shows an example of a custom parser that extracts strings in a CSV file to write into a POT.
+ Below shows an example of a custom parser that extracts strings from a CSV file to write into a POT.
[codeblock]
tool
extends EditorTranslationParserPlugin
- func parse_file(path, extracted_strings):
+ func parse_file(path, msgids, msgids_context_plural):
var file = File.new()
file.open(path, File.READ)
var text = file.get_as_text()
var split_strs = text.split(",", false, 0)
for s in split_strs:
- extracted_strings.append(s)
+ msgids.append(s)
#print("Extracted string: " + s)
func get_recognized_extensions():
return ["csv"]
[/codeblock]
+ To add a translatable string associated with context or plural, add it to [code]msgids_context_plural[/code]:
+ [codeblock]
+ # This will add a message with msgid "Test 1", msgctxt "context", and msgid_plural "test 1 plurals".
+ msgids_context_plural.append(["Test 1", "context", "test 1 plurals"])
+ # This will add a message with msgid "A test without context" and msgid_plural "plurals".
+ msgids_context_plural.append(["A test without context", "", "plurals"])
+ # This will add a message with msgid "Only with context" and msgctxt "a friendly context".
+ msgids_context_plural.append(["Only with context", "a friendly context", ""])
+ [/codeblock]
[b]Note:[/b] If you override parsing logic for standard script types (GDScript, C#, etc.), it would be better to load the [code]path[/code] argument using [method ResourceLoader.load]. This is because built-in scripts are loaded as [Resource] type, not [File] type.
For example:
[codeblock]
- func parse_file(path, extracted_strings):
+ func parse_file(path, msgids, msgids_context_plural):
var res = ResourceLoader.load(path, "Script")
var text = res.get_source_code()
# Parsing logic.
@@ -53,7 +64,9 @@
</return>
<argument index="0" name="path" type="String">
</argument>
- <argument index="1" name="extracted_strings" type="Array">
+ <argument index="1" name="msgids" type="Array">
+ </argument>
+ <argument index="2" name="msgids_context_plural" type="Array">
</argument>
<description>
Override this method to define a custom parsing logic to extract the translatable strings.
diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml
index 12701d8688..297cccaaac 100644
--- a/doc/classes/Engine.xml
+++ b/doc/classes/Engine.xml
@@ -34,7 +34,7 @@
</return>
<description>
Returns a Dictionary of Arrays of donor names.
- {[code]platinum_sponsors[/code], [code]gold_sponsors[/code], [code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/code], [code]bronze_donors[/code]}
+ {[code]platinum_sponsors[/code], [code]gold_sponsors[/code], [code]silver_sponsors[/code], [code]bronze_sponsors[/code], [code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/code], [code]bronze_donors[/code]}
</description>
</method>
<method name="get_frames_drawn">
diff --git a/doc/classes/EngineDebugger.xml b/doc/classes/EngineDebugger.xml
new file mode 100644
index 0000000000..7db36b89d0
--- /dev/null
+++ b/doc/classes/EngineDebugger.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="EngineDebugger" inherits="Object" version="4.0">
+ <brief_description>
+ Exposes the internal debugger.
+ </brief_description>
+ <description>
+ [EngineDebugger] handles the communication between the editor and the running game. It is active in the running game. Messages can be sent/received through it. It also manages the profilers.
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="has_capture">
+ <return type="bool">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <description>
+ Returns [code]true[/code] if a capture with the given name is present otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="has_profiler">
+ <return type="bool">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <description>
+ Returns [code]true[/code] if a profiler with the given name is present otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="is_active">
+ <return type="bool">
+ </return>
+ <description>
+ Returns [code]true[/code] if the debugger is active otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="is_profiling">
+ <return type="bool">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <description>
+ Returns [code]true[/code] if a profiler with the given name is present and active otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="profiler_add_frame_data">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <argument index="1" name="data" type="Array">
+ </argument>
+ <description>
+ Calls the [code]add[/code] callable of the profiler with given [code]name[/code] and [code]data[/code].
+ </description>
+ </method>
+ <method name="profiler_enable">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <argument index="1" name="enable" type="bool">
+ </argument>
+ <argument index="2" name="arguments" type="Array" default="[ ]">
+ </argument>
+ <description>
+ Calls the [code]toggle[/code] callable of the profiler with given [code]name[/code] and [code]arguments[/code]. Enables/Disables the same profiler depending on [code]enable[/code] argument.
+ </description>
+ </method>
+ <method name="register_message_capture">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <argument index="1" name="callable" type="Callable">
+ </argument>
+ <description>
+ Registers a message capture with given [code]name[/code]. If [code]name[/code] is "my_message" then messages starting with "my_message:" will be called with the given callable.
+ Callable must accept a message string and a data array as argument. If the message and data are valid then callable must return [code]true[/code] otherwise [code]false[/code].
+ </description>
+ </method>
+ <method name="register_profiler">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <argument index="1" name="toggle" type="Callable">
+ </argument>
+ <argument index="2" name="add" type="Callable">
+ </argument>
+ <argument index="3" name="tick" type="Callable">
+ </argument>
+ <description>
+ Registers a profiler with the given [code]name[/code].
+ [code]toggle[/code] callable is called when the profiler is enabled/disabled. It must take an argument array as an argument.
+ [code]add[/code] callable is called when data is added to profiler using [method EngineDebugger.profiler_add_frame_data]. It must take a data array as argument.
+ [code]tick[/code] callable is called at every active profiler iteration. It must take frame time, idle time, physics time, and physics idle time as arguments.
+ </description>
+ </method>
+ <method name="send_message">
+ <return type="void">
+ </return>
+ <argument index="0" name="message" type="String">
+ </argument>
+ <argument index="1" name="data" type="Array">
+ </argument>
+ <description>
+ Sends a message with given [code]message[/code] and [code]data[/code] array.
+ </description>
+ </method>
+ <method name="unregister_message_capture">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <description>
+ Unregisters the message capture with given [code]name[/code].
+ </description>
+ </method>
+ <method name="unregister_profiler">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="StringName">
+ </argument>
+ <description>
+ Unregisters a profiler with given [code]name[/code].
+ </description>
+ </method>
+ </methods>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index bbab0bf8cf..d90b926647 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -95,47 +95,20 @@
<member name="background_mode" type="int" setter="set_background" getter="get_background" enum="Environment.BGMode" default="0">
The background mode. See [enum BGMode] for possible values.
</member>
- <member name="fog_color" type="Color" setter="set_fog_color" getter="get_fog_color" default="Color( 0.5, 0.6, 0.7, 1 )">
- The fog's [Color].
- </member>
- <member name="fog_depth_begin" type="float" setter="set_fog_depth_begin" getter="get_fog_depth_begin" default="10.0">
- The fog's depth starting distance from the camera.
- </member>
- <member name="fog_depth_curve" type="float" setter="set_fog_depth_curve" getter="get_fog_depth_curve" default="1.0">
- The fog depth's intensity curve. A number of presets are available in the [b]Inspector[/b] by right-clicking the curve.
- </member>
- <member name="fog_depth_enabled" type="bool" setter="set_fog_depth_enabled" getter="is_fog_depth_enabled" default="true">
- If [code]true[/code], the depth fog effect is enabled. When enabled, fog will appear in the distance (relative to the camera).
- </member>
- <member name="fog_depth_end" type="float" setter="set_fog_depth_end" getter="get_fog_depth_end" default="100.0">
- The fog's depth end distance from the camera. If this value is set to 0, it will be equal to the current camera's [member Camera3D.far] value.
+ <member name="fog_density" type="float" setter="set_fog_density" getter="get_fog_density" default="0.001">
</member>
<member name="fog_enabled" type="bool" setter="set_fog_enabled" getter="is_fog_enabled" default="false">
- If [code]true[/code], fog effects are enabled. [member fog_height_enabled] and/or [member fog_depth_enabled] must be set to [code]true[/code] to actually display fog.
- </member>
- <member name="fog_height_curve" type="float" setter="set_fog_height_curve" getter="get_fog_height_curve" default="1.0">
- The height fog's intensity. A number of presets are available in the [b]Inspector[/b] by right-clicking the curve.
+ If [code]true[/code], fog effects are enabled.
</member>
- <member name="fog_height_enabled" type="bool" setter="set_fog_height_enabled" getter="is_fog_height_enabled" default="false">
- If [code]true[/code], the height fog effect is enabled. When enabled, fog will appear in a defined height range, regardless of the distance from the camera. This can be used to simulate "deep water" effects with a lower performance cost compared to a dedicated shader.
+ <member name="fog_height" type="float" setter="set_fog_height" getter="get_fog_height" default="0.0">
</member>
- <member name="fog_height_max" type="float" setter="set_fog_height_max" getter="get_fog_height_max" default="0.0">
- The Y coordinate where the height fog will be the most intense. If this value is greater than [member fog_height_min], fog will be displayed from bottom to top. Otherwise, it will be displayed from top to bottom.
+ <member name="fog_height_density" type="float" setter="set_fog_height_density" getter="get_fog_height_density" default="0.0">
</member>
- <member name="fog_height_min" type="float" setter="set_fog_height_min" getter="get_fog_height_min" default="10.0">
- The Y coordinate where the height fog will be the least intense. If this value is greater than [member fog_height_max], fog will be displayed from top to bottom. Otherwise, it will be displayed from bottom to top.
+ <member name="fog_light_color" type="Color" setter="set_fog_light_color" getter="get_fog_light_color" default="Color( 0.5, 0.6, 0.7, 1 )">
</member>
- <member name="fog_sun_amount" type="float" setter="set_fog_sun_amount" getter="get_fog_sun_amount" default="0.0">
- The intensity of the depth fog color transition when looking towards the sun. The sun's direction is determined automatically using the DirectionalLight3D node in the scene.
+ <member name="fog_light_energy" type="float" setter="set_fog_light_energy" getter="get_fog_light_energy" default="1.0">
</member>
- <member name="fog_sun_color" type="Color" setter="set_fog_sun_color" getter="get_fog_sun_color" default="Color( 1, 0.9, 0.7, 1 )">
- The depth fog's [Color] when looking towards the sun.
- </member>
- <member name="fog_transmit_curve" type="float" setter="set_fog_transmit_curve" getter="get_fog_transmit_curve" default="1.0">
- The intensity of the fog light transmittance effect. Amount of light that the fog transmits.
- </member>
- <member name="fog_transmit_enabled" type="bool" setter="set_fog_transmit_enabled" getter="is_fog_transmit_enabled" default="false">
- Enables fog's light transmission effect. If [code]true[/code], light will be more visible in the fog to simulate light scattering as in real life.
+ <member name="fog_sun_scatter" type="float" setter="set_fog_sun_scatter" getter="get_fog_sun_scatter" default="0.0">
</member>
<member name="glow_blend_mode" type="int" setter="set_glow_blend_mode" getter="get_glow_blend_mode" enum="Environment.GlowBlendMode" default="2">
The glow blending mode.
@@ -265,6 +238,22 @@
<member name="tonemap_white" type="float" setter="set_tonemap_white" getter="get_tonemap_white" default="1.0">
The white reference value for tonemapping. Only effective if the [member tonemap_mode] isn't set to [constant TONE_MAPPER_LINEAR].
</member>
+ <member name="volumetric_fog_density" type="float" setter="set_volumetric_fog_density" getter="get_volumetric_fog_density" default="0.01">
+ </member>
+ <member name="volumetric_fog_detail_spread" type="float" setter="set_volumetric_fog_detail_spread" getter="get_volumetric_fog_detail_spread" default="2.0">
+ </member>
+ <member name="volumetric_fog_enabled" type="bool" setter="set_volumetric_fog_enabled" getter="is_volumetric_fog_enabled" default="false">
+ </member>
+ <member name="volumetric_fog_gi_inject" type="float" setter="set_volumetric_fog_gi_inject" getter="get_volumetric_fog_gi_inject" default="0.0">
+ </member>
+ <member name="volumetric_fog_length" type="float" setter="set_volumetric_fog_length" getter="get_volumetric_fog_length" default="64.0">
+ </member>
+ <member name="volumetric_fog_light" type="Color" setter="set_volumetric_fog_light" getter="get_volumetric_fog_light" default="Color( 0, 0, 0, 1 )">
+ </member>
+ <member name="volumetric_fog_light_energy" type="float" setter="set_volumetric_fog_light_energy" getter="get_volumetric_fog_light_energy" default="1.0">
+ </member>
+ <member name="volumetric_fog_shadow_filter" type="int" setter="set_volumetric_fog_shadow_filter" getter="get_volumetric_fog_shadow_filter" enum="Environment.VolumetricFogShadowFilter" default="1">
+ </member>
</members>
<constants>
<constant name="BG_CLEAR_COLOR" value="0" enum="BGMode">
@@ -360,5 +349,13 @@
</constant>
<constant name="SDFGI_Y_SCALE_50_PERCENT" value="2" enum="SDFGIYScale">
</constant>
+ <constant name="VOLUMETRIC_FOG_SHADOW_FILTER_DISABLED" value="0" enum="VolumetricFogShadowFilter">
+ </constant>
+ <constant name="VOLUMETRIC_FOG_SHADOW_FILTER_LOW" value="1" enum="VolumetricFogShadowFilter">
+ </constant>
+ <constant name="VOLUMETRIC_FOG_SHADOW_FILTER_MEDIUM" value="2" enum="VolumetricFogShadowFilter">
+ </constant>
+ <constant name="VOLUMETRIC_FOG_SHADOW_FILTER_HIGH" value="3" enum="VolumetricFogShadowFilter">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/Expression.xml b/doc/classes/Expression.xml
index fcd1aa43c0..f2611dc850 100644
--- a/doc/classes/Expression.xml
+++ b/doc/classes/Expression.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
An expression can be made of any arithmetic operation, built-in math function call, method call of a passed instance, or built-in type construction call.
- An example expression text using the built-in math functions could be [code]sqrt(pow(3,2) + pow(4,2))[/code].
+ An example expression text using the built-in math functions could be [code]sqrt(pow(3, 2) + pow(4, 2))[/code].
In the following example we use a [LineEdit] node to write our expression and show the result.
[codeblock]
onready var expression = Expression.new()
diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml
index 05aebef9de..abb105a41c 100644
--- a/doc/classes/Gradient.xml
+++ b/doc/classes/Gradient.xml
@@ -20,7 +20,7 @@
Adds the specified color to the end of the ramp, with the specified offset.
</description>
</method>
- <method name="get_color" qualifiers="const">
+ <method name="get_color">
<return type="Color">
</return>
<argument index="0" name="point" type="int">
@@ -29,7 +29,7 @@
Returns the color of the ramp color at index [code]point[/code].
</description>
</method>
- <method name="get_offset" qualifiers="const">
+ <method name="get_offset">
<return type="float">
</return>
<argument index="0" name="point" type="int">
diff --git a/doc/classes/HSlider.xml b/doc/classes/HSlider.xml
index afe9d10d2e..0cbb4fd455 100644
--- a/doc/classes/HSlider.xml
+++ b/doc/classes/HSlider.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
Horizontal slider. See [Slider]. This one goes from left (min) to right (max).
+ [b]Note:[/b] The [signal Range.changed] and [signal Range.value_changed] signals are part of the [Range] class which this class inherits from.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index fc3c3776ce..a3079a12a9 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -47,8 +47,9 @@
<return type="Vector3">
</return>
<description>
- If the device has an accelerometer, this will return the acceleration. Otherwise, it returns an empty [Vector3].
+ Returns the acceleration of the device's accelerometer, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
Note this method returns an empty [Vector3] when running from the editor even when your device has an accelerometer. You must export your project to a supported device to read values from the accelerometer.
+ [b]Note:[/b] This method only works on iOS, Android, and UWP. On other platforms, it always returns [constant Vector3.ZERO].
</description>
</method>
<method name="get_action_strength" qualifiers="const">
@@ -78,14 +79,16 @@
<return type="Vector3">
</return>
<description>
- If the device has an accelerometer, this will return the gravity. Otherwise, it returns an empty [Vector3].
+ Returns the gravity of the device's accelerometer, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
+ [b]Note:[/b] This method only works on Android and iOS. On other platforms, it always returns [constant Vector3.ZERO].
</description>
</method>
<method name="get_gyroscope" qualifiers="const">
<return type="Vector3">
</return>
<description>
- If the device has a gyroscope, this will return the rate of rotation in rad/s around a device's X, Y, and Z axes. Otherwise, it returns an empty [Vector3].
+ Returns the rotation rate in rad/s around a device's X, Y, and Z axes of the gyroscope, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
+ [b]Note:[/b] This method only works on Android. On other platforms, it always returns [constant Vector3.ZERO].
</description>
</method>
<method name="get_joy_axis" qualifiers="const">
@@ -182,7 +185,8 @@
<return type="Vector3">
</return>
<description>
- If the device has a magnetometer, this will return the magnetic field strength in micro-Tesla for all axes.
+ Returns the the magnetic field strength in micro-Tesla for all axes of the device's magnetometer, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
+ [b]Note:[/b] This method only works on Android and UWP. On other platforms, it always returns [constant Vector3.ZERO].
</description>
</method>
<method name="get_mouse_button_mask" qualifiers="const">
@@ -417,7 +421,8 @@
Makes the mouse cursor hidden if it is visible.
</constant>
<constant name="MOUSE_MODE_CAPTURED" value="2" enum="MouseMode">
- Captures the mouse. The mouse will be hidden and unable to leave the game window, but it will still register movement and mouse button presses. On Windows and Linux, the mouse will use raw input mode, which means the reported movement will be unaffected by the OS' mouse acceleration settings.
+ Captures the mouse. The mouse will be hidden and its position locked at the center of the screen.
+ [b]Note:[/b] If you want to process the mouse's movement in this mode, you need to use [member InputEventMouseMotion.relative].
</constant>
<constant name="MOUSE_MODE_CONFINED" value="3" enum="MouseMode">
Makes the mouse cursor visible but confines it to the game window.
diff --git a/doc/classes/JSON.xml b/doc/classes/JSON.xml
index 2e837dea1d..a9fb50c262 100644
--- a/doc/classes/JSON.xml
+++ b/doc/classes/JSON.xml
@@ -30,6 +30,28 @@
<description>
Converts a [Variant] var to JSON text and returns the result. Useful for serializing data to store or send over the network.
[b]Note:[/b] The JSON specification does not define integer or float types, but only a [i]number[/i] type. Therefore, converting a Variant to JSON text will convert all numerical values to [float] types.
+ Use [code]indent[/code] parameter to pretty print the output.
+ [b]Example output:[/b]
+ [codeblock]
+ ## JSON.print(my_dictionary)
+ {"name":"my_dictionary","version":"1.0.0","entities":[{"name":"entity_0","value":"value_0"},{"name":"entity_1","value":"value_1"}]}
+
+ ## JSON.print(my_dictionary, "\t")
+ {
+ "name": "my_dictionary",
+ "version": "1.0.0",
+ "entities": [
+ {
+ "name": "entity_0",
+ "value": "value_0"
+ },
+ {
+ "name": "entity_1",
+ "value": "value_1"
+ }
+ ]
+ }
+ [/codeblock]
</description>
</method>
</methods>
diff --git a/doc/classes/Light3D.xml b/doc/classes/Light3D.xml
index 6979efa569..d4d574627f 100644
--- a/doc/classes/Light3D.xml
+++ b/doc/classes/Light3D.xml
@@ -77,6 +77,8 @@
<member name="shadow_enabled" type="bool" setter="set_shadow" getter="has_shadow" default="false">
If [code]true[/code], the light will cast shadows.
</member>
+ <member name="shadow_fog_fade" type="float" setter="set_param" getter="get_param" default="1.0">
+ </member>
<member name="shadow_normal_bias" type="float" setter="set_param" getter="get_param" default="2.0">
Offsets the lookup into the shadow map by the object's normal. This can be used to reduce self-shadowing artifacts without using [member shadow_bias]. In practice, this value should be tweaked along with [member shadow_bias] to reduce artifacts as much as possible.
</member>
@@ -138,10 +140,12 @@
<constant name="PARAM_SHADOW_BLUR" value="16" enum="Param">
Constant for accessing [member shadow_blur].
</constant>
- <constant name="PARAM_TRANSMITTANCE_BIAS" value="17" enum="Param">
+ <constant name="PARAM_SHADOW_VOLUMETRIC_FOG_FADE" value="17" enum="Param">
+ </constant>
+ <constant name="PARAM_TRANSMITTANCE_BIAS" value="18" enum="Param">
Constant for accessing [member shadow_transmittance_bias].
</constant>
- <constant name="PARAM_MAX" value="18" enum="Param">
+ <constant name="PARAM_MAX" value="19" enum="Param">
Represents the size of the [enum Param] enum.
</constant>
<constant name="BAKE_DISABLED" value="0" enum="BakeMode">
diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml
index cfd23b28bd..22fe4f6194 100644
--- a/doc/classes/Line2D.xml
+++ b/doc/classes/Line2D.xml
@@ -85,7 +85,7 @@
The style for the points between the start and the end.
</member>
<member name="points" type="PackedVector2Array" setter="set_points" getter="get_points" default="PackedVector2Array( )">
- The points that form the lines. The line is drawn between every point set in this array.
+ The points that form the lines. The line is drawn between every point set in this array. Points are interpreted as local vectors.
</member>
<member name="round_precision" type="int" setter="set_round_precision" getter="get_round_precision" default="8">
The smoothness of the rounded joints and caps. This is only used if a cap or joint is set as round.
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index e921cbd58a..d31e336ea3 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -194,6 +194,7 @@
Finds a descendant of this node whose name matches [code]mask[/code] as in [method String.match] (i.e. case-sensitive, but [code]"*"[/code] matches zero or more characters and [code]"?"[/code] matches any single character except [code]"."[/code]).
[b]Note:[/b] It does not match against the full path, just against individual node names.
If [code]owned[/code] is [code]true[/code], this method only finds nodes whose owner is this node. This is especially important for scenes instantiated through a script, because those scenes don't have an owner.
+ [b]Note:[/b] As this method walks through all the descendants of the node, it is the slowest way to get a reference to another node. Whenever possible, consider using [method get_node] instead. To avoid using [method find_node] too often, consider caching the node reference into a variable.
</description>
</method>
<method name="find_parent" qualifiers="const">
@@ -204,6 +205,7 @@
<description>
Finds the first parent of the current node whose name matches [code]mask[/code] as in [method String.match] (i.e. case-sensitive, but [code]"*"[/code] matches zero or more characters and [code]"?"[/code] matches any single character except [code]"."[/code]).
[b]Note:[/b] It does not match against the full path, just against individual node names.
+ [b]Note:[/b] As this method walks upwards in the scene tree, it can be slow in large, deeply nested scene trees. Whenever possible, consider using [method get_node] instead. To avoid using [method find_parent] too often, consider caching the node reference into a variable.
</description>
</method>
<method name="get_child" qualifiers="const">
@@ -918,6 +920,9 @@
<constant name="NOTIFICATION_INTERNAL_PHYSICS_PROCESS" value="26">
Notification received every frame when the internal physics process flag is set (see [method set_physics_process_internal]).
</constant>
+ <constant name="NOTIFICATION_POST_ENTER_TREE" value="27">
+ Notification received when the node is ready, just before [constant NOTIFICATION_READY] is received. Unlike the latter, it's sent every time the node enters tree, instead of only once.
+ </constant>
<constant name="NOTIFICATION_WM_MOUSE_ENTER" value="1002">
Notification received from the OS when the mouse enters the game window.
Implemented on desktop and web platforms.
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index ca6b624359..2395ccd211 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -486,13 +486,35 @@
</description>
</method>
<method name="tr" qualifiers="const">
- <return type="StringName">
+ <return type="String">
</return>
<argument index="0" name="message" type="StringName">
</argument>
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
<description>
- Translates a message using translation catalogs configured in the Project Settings.
+ Translates a message using translation catalogs configured in the Project Settings. An additional context could be used to specify the translation context.
Only works if message translation is enabled (which it is by default), otherwise it returns the [code]message[/code] unchanged. See [method set_message_translation].
+ See [url=https://docs.godotengine.org/en/latest/tutorials/i18n/internationalizing_games.html]Internationalizing games[/url] for examples of the usage of this method.
+ </description>
+ </method>
+ <method name="tr_n" qualifiers="const">
+ <return type="String">
+ </return>
+ <argument index="0" name="message" type="StringName">
+ </argument>
+ <argument index="1" name="plural_message" type="StringName">
+ </argument>
+ <argument index="2" name="n" type="int">
+ </argument>
+ <argument index="3" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
+ <description>
+ Translates a message involving plurals using translation catalogs configured in the Project Settings. An additional context could be used to specify the translation context.
+ Only works if message translation is enabled (which it is by default), otherwise it returns the [code]message[/code] or [code]plural_message[/code] unchanged. See [method set_message_translation].
+ The number [code]n[/code] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.
+ [b]Note:[/b] Negative and floating-point values usually represent physical entities for which singular and plural don't clearly apply. In such cases, use [method tr].
+ See [url=https://docs.godotengine.org/en/latest/tutorials/i18n/localization_using_gettext.html]Localization using gettext[/url] for examples of the usage of this method.
</description>
</method>
</methods>
diff --git a/doc/classes/PhysicsServer2D.xml b/doc/classes/PhysicsServer2D.xml
index b2904c6538..6a1508b0e3 100644
--- a/doc/classes/PhysicsServer2D.xml
+++ b/doc/classes/PhysicsServer2D.xml
@@ -804,6 +804,7 @@
</argument>
<description>
Sets a body state using one of the [enum BodyState] constants.
+ Note that the method doesn't take effect immediately. The state will change on the next physics frame.
</description>
</method>
<method name="body_test_motion">
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index f13dbbae76..f1feade59d 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -990,10 +990,6 @@
</member>
<member name="rendering/limits/time/time_rollover_secs" type="float" setter="" getter="" default="3600">
</member>
- <member name="rendering/quality/2d/gles2_use_nvidia_rect_flicker_workaround" type="bool" setter="" getter="" default="false">
- Some NVIDIA GPU drivers have a bug which produces flickering issues for the [code]draw_rect[/code] method, especially as used in [TileMap]. Refer to [url=https://github.com/godotengine/godot/issues/9913]GitHub issue 9913[/url] for details.
- If [code]true[/code], this option enables a "safe" code path for such NVIDIA GPUs at the cost of performance. This option only impacts the GLES2 rendering backend, and only desktop platforms. It is not necessary when using the Vulkan backend.
- </member>
<member name="rendering/quality/2d/use_pixel_snap" type="bool" setter="" getter="" default="false">
If [code]true[/code], forces snapping of polygons to pixels in 2D rendering. May help in some pixel art styles.
</member>
@@ -1162,6 +1158,16 @@
<member name="rendering/threads/thread_model" type="int" setter="" getter="" default="1">
Thread model for rendering. Rendering on a thread can vastly improve performance, but synchronizing to the main thread can cause a bit more jitter.
</member>
+ <member name="rendering/volumetric_fog/directional_shadow_shrink" type="int" setter="" getter="" default="512">
+ </member>
+ <member name="rendering/volumetric_fog/positional_shadow_shrink" type="int" setter="" getter="" default="512">
+ </member>
+ <member name="rendering/volumetric_fog/use_filter" type="int" setter="" getter="" default="0">
+ </member>
+ <member name="rendering/volumetric_fog/volume_depth" type="int" setter="" getter="" default="128">
+ </member>
+ <member name="rendering/volumetric_fog/volume_size" type="int" setter="" getter="" default="64">
+ </member>
<member name="rendering/vram_compression/import_bptc" type="bool" setter="" getter="" default="false">
If [code]true[/code], the texture importer will import VRAM-compressed textures using the BPTC algorithm. This texture compression algorithm is only supported on desktop platforms, and only when using the Vulkan renderer.
</member>
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index 85eaac454f..24a52d30f7 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -690,52 +690,19 @@
</argument>
<argument index="1" name="enable" type="bool">
</argument>
- <argument index="2" name="color" type="Color">
- </argument>
- <argument index="3" name="sun_color" type="Color">
- </argument>
- <argument index="4" name="sun_amount" type="float">
- </argument>
- <description>
- Sets the variables to be used with the scene fog. See [Environment] for more details.
- </description>
- </method>
- <method name="environment_set_fog_depth">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
+ <argument index="2" name="light_color" type="Color">
</argument>
- <argument index="2" name="depth_begin" type="float">
+ <argument index="3" name="light_energy" type="float">
</argument>
- <argument index="3" name="depth_end" type="float">
- </argument>
- <argument index="4" name="depth_curve" type="float">
- </argument>
- <argument index="5" name="transmit" type="bool">
- </argument>
- <argument index="6" name="transmit_curve" type="float">
- </argument>
- <description>
- Sets the variables to be used with the fog depth effect. See [Environment] for more details.
- </description>
- </method>
- <method name="environment_set_fog_height">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
+ <argument index="4" name="sun_scatter" type="float">
</argument>
- <argument index="2" name="min_height" type="float">
+ <argument index="5" name="density" type="float">
</argument>
- <argument index="3" name="max_height" type="float">
+ <argument index="6" name="height" type="float">
</argument>
- <argument index="4" name="height_curve" type="float">
+ <argument index="7" name="height_density" type="float">
</argument>
<description>
- Sets the variables to be used with the fog height effect. See [Environment] for more details.
</description>
</method>
<method name="environment_set_glow">
@@ -3252,9 +3219,9 @@
<constant name="LIGHT_PARAM_SHADOW_BLUR" value="16" enum="LightParam">
Blurs the edges of the shadow. Can be used to hide pixel artifacts in low resolution shadow maps. A high value can make shadows appear grainy and can cause other unwanted artifacts. Try to keep as near default as possible.
</constant>
- <constant name="LIGHT_PARAM_TRANSMITTANCE_BIAS" value="17" enum="LightParam">
+ <constant name="LIGHT_PARAM_TRANSMITTANCE_BIAS" value="18" enum="LightParam">
</constant>
- <constant name="LIGHT_PARAM_MAX" value="18" enum="LightParam">
+ <constant name="LIGHT_PARAM_MAX" value="19" enum="LightParam">
Represents the size of the [enum LightParam] enum.
</constant>
<constant name="LIGHT_BAKE_DISABLED" value="0" enum="LightBakeMode">
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index c44df72878..a1c4fcc53c 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -6,6 +6,7 @@
<description>
Rich text can contain custom text, fonts, images and some basic formatting. The label manages these as an internal tag stack. It also adapts itself to given width/heights.
[b]Note:[/b] Assignments to [member bbcode_text] clear the tag stack and reconstruct it from the property's contents. Any edits made to [member bbcode_text] will erase previous edits made from other manual sources such as [method append_bbcode] and the [code]push_*[/code] / [method pop] methods.
+ [b]Note:[/b] Unlike [Label], RichTextLabel doesn't have a [i]property[/i] to horizontally align text to the center. Instead, enable [member bbcode_enabled] and surround the text in a [code][center][/code] tag as follows: [code][center]Example[/center][/code]. There is currently no built-in way to vertically align text either, but this can be emulated by relying on anchors/containers and the [member fit_content_height] property.
</description>
<tutorials>
<link>https://docs.godotengine.org/en/latest/tutorials/gui/bbcode_in_richtextlabel.html</link>
diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml
index a7efba518c..1fbcccdbb5 100644
--- a/doc/classes/RigidBody2D.xml
+++ b/doc/classes/RigidBody2D.xml
@@ -9,6 +9,7 @@
[b]Note:[/b] You should not change a RigidBody2D's [code]position[/code] or [code]linear_velocity[/code] every frame or even very often. If you need to directly affect the body's state, use [method _integrate_forces], which allows you to directly access the physics state.
Please also keep in mind that physics bodies manage their own transform which overwrites the ones you set. So any direct or indirect transformation (including scaling of the node or its parent) will be visible in the editor only, and immediately reset at runtime.
If you need to override the default physics behavior or add a transformation at runtime, you can write a custom force integration. See [member custom_integrator].
+ The center of mass is always located at the node's origin without taking into account the [CollisionShape2D] centroid offsets.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/RigidBody3D.xml b/doc/classes/RigidBody3D.xml
index 933885ba77..d53d6b001c 100644
--- a/doc/classes/RigidBody3D.xml
+++ b/doc/classes/RigidBody3D.xml
@@ -8,6 +8,7 @@
A RigidBody3D has 4 behavior [member mode]s: Rigid, Static, Character, and Kinematic.
[b]Note:[/b] Don't change a RigidBody3D's position every frame or very often. Sporadic changes work fine, but physics runs at a different granularity (fixed Hz) than usual rendering (process callback) and maybe even in a separate thread, so changing this from a process loop may result in strange behavior. If you need to directly affect the body's state, use [method _integrate_forces], which allows you to directly access the physics state.
If you need to override the default physics behavior, you can write a custom force integration function. See [member custom_integrator].
+ With Bullet physics (the default), the center of mass is the RigidBody3D center. With GodotPhysics, the center of mass is the average of the [CollisionShape3D] centers.
</description>
<tutorials>
<link>https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html</link>
diff --git a/doc/classes/Slider.xml b/doc/classes/Slider.xml
index 68776df603..f18b2ce39f 100644
--- a/doc/classes/Slider.xml
+++ b/doc/classes/Slider.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
Base class for GUI sliders.
+ [b]Note:[/b] The [signal Range.changed] and [signal Range.value_changed] signals are part of the [Range] class which this class inherits from.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index b7240655af..d4abac15c0 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -430,6 +430,9 @@
<member name="v_scroll_speed" type="float" setter="set_v_scroll_speed" getter="get_v_scroll_speed" default="80.0">
Vertical scroll sensitivity.
</member>
+ <member name="virtual_keyboard_enabled" type="bool" setter="set_virtual_keyboard_enabled" getter="is_virtual_keyboard_enabled" default="true">
+ If [code]true[/code], the native virtual keyboard is shown when focused on platforms that support it.
+ </member>
<member name="wrap_enabled" type="bool" setter="set_wrap_enabled" getter="is_wrap_enabled" default="false">
If [code]true[/code], enables text wrapping when it goes beyond the edge of what is visible.
</member>
diff --git a/doc/classes/Texture2D.xml b/doc/classes/Texture2D.xml
index ffe806cef7..f283efdc3d 100644
--- a/doc/classes/Texture2D.xml
+++ b/doc/classes/Texture2D.xml
@@ -96,7 +96,7 @@
<return type="Image">
</return>
<description>
- Returns an [Image] with the data from this [Texture2D]. [Image]s can be accessed and manipulated directly.
+ Returns an [Image] that is a copy of data from this [Texture2D]. [Image]s can be accessed and manipulated directly.
</description>
</method>
<method name="get_height" qualifiers="const">
diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml
index 5c63d01322..46377ecf20 100644
--- a/doc/classes/Thread.xml
+++ b/doc/classes/Thread.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
A unit of execution in a process. Can run methods on [Object]s simultaneously. The use of synchronization via [Mutex] or [Semaphore] is advised if working with shared objects.
+ [b]Note:[/b] Breakpoints won't break on code if it's running in a thread. This is a current limitation of the GDScript debugger.
</description>
<tutorials>
<link title="Using multiple threads">https://docs.godotengine.org/en/latest/tutorials/threads/using_multiple_threads.html</link>
@@ -15,7 +16,7 @@
<return type="String">
</return>
<description>
- Returns the current [Thread]'s ID, uniquely identifying it among all threads.
+ Returns the current [Thread]'s ID, uniquely identifying it among all threads. If the [Thread] is not running this returns an empty string.
</description>
</method>
<method name="is_active" qualifiers="const">
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index 9df2b656f4..8777841e80 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -166,7 +166,7 @@
If you need these to be immediately updated, you can call [method update_dirty_quadrants].
Overriding this method also overrides it internally, allowing custom logic to be implemented when tiles are placed/removed:
[codeblock]
- func set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)
+ func set_cell(x, y, tile, flip_x=false, flip_y=false, transpose=false, autotile_coord=Vector2())
# Write your custom logic here.
# To call the default method:
.set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)
diff --git a/doc/classes/TouchScreenButton.xml b/doc/classes/TouchScreenButton.xml
index c7f886b3f2..355804f2a3 100644
--- a/doc/classes/TouchScreenButton.xml
+++ b/doc/classes/TouchScreenButton.xml
@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="TouchScreenButton" inherits="Node2D" version="4.0">
<brief_description>
- Button for touch screen devices.
+ Button for touch screen devices for gameplay use.
</brief_description>
<description>
- Button for touch screen devices. You can set it to be visible on all screens, or only on touch devices.
+ TouchScreenButton allows you to create on-screen buttons for touch devices. It's intended for gameplay use, such as a unit you have to touch to move.
+ This node inherits from [Node2D]. Unlike with [Control] nodes, you cannot set anchors on it. If you want to create menus or user interfaces, you may want to use [Button] nodes instead. To make button nodes react to touch events, you can enable the Emulate Mouse option in the Project Settings.
+ You can configure TouchScreenButton to be visible only on touch devices, helping you develop your game both for desktop and mobile devices.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Translation.xml b/doc/classes/Translation.xml
index 11245195bf..1989a63362 100644
--- a/doc/classes/Translation.xml
+++ b/doc/classes/Translation.xml
@@ -18,8 +18,25 @@
</argument>
<argument index="1" name="xlated_message" type="StringName">
</argument>
+ <argument index="2" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
<description>
Adds a message if nonexistent, followed by its translation.
+ An additional context could be used to specify the translation context or differentiate polysemic words.
+ </description>
+ </method>
+ <method name="add_plural_message">
+ <return type="void">
+ </return>
+ <argument index="0" name="src_message" type="StringName">
+ </argument>
+ <argument index="1" name="xlated_messages" type="PackedStringArray">
+ </argument>
+ <argument index="2" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
+ <description>
+ Adds a message involving plural translation if nonexistent, followed by its translation.
+ An additional context could be used to specify the translation context or differentiate polysemic words.
</description>
</method>
<method name="erase_message">
@@ -27,6 +44,8 @@
</return>
<argument index="0" name="src_message" type="StringName">
</argument>
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
<description>
Erases a message.
</description>
@@ -36,6 +55,8 @@
</return>
<argument index="0" name="src_message" type="StringName">
</argument>
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
<description>
Returns a message's translation.
</description>
@@ -54,6 +75,22 @@
Returns all the messages (keys).
</description>
</method>
+ <method name="get_plural_message" qualifiers="const">
+ <return type="StringName">
+ </return>
+ <argument index="0" name="src_message" type="StringName">
+ </argument>
+ <argument index="1" name="src_plural_message" type="StringName">
+ </argument>
+ <argument index="2" name="n" type="int">
+ </argument>
+ <argument index="3" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
+ <description>
+ Returns a message's translation involving plurals.
+ The number [code]n[/code] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.
+ </description>
+ </method>
</methods>
<members>
<member name="locale" type="String" setter="set_locale" getter="get_locale" default="&quot;en&quot;">
diff --git a/doc/classes/TranslationServer.xml b/doc/classes/TranslationServer.xml
index aaf7a4d160..3369663af6 100644
--- a/doc/classes/TranslationServer.xml
+++ b/doc/classes/TranslationServer.xml
@@ -50,6 +50,16 @@
Returns a locale's language and its variant (e.g. [code]"en_US"[/code] would return [code]"English (United States)"[/code]).
</description>
</method>
+ <method name="get_translation_object">
+ <return type="Translation">
+ </return>
+ <argument index="0" name="locale" type="String">
+ </argument>
+ <description>
+ Returns the [Translation] instance based on the [code]locale[/code] passed in.
+ It will return a [code]nullptr[/code] if there is no [Translation] instance that matches the [code]locale[/code].
+ </description>
+ </method>
<method name="remove_translation">
<return type="void">
</return>
@@ -73,8 +83,26 @@
</return>
<argument index="0" name="message" type="StringName">
</argument>
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
+ <description>
+ Returns the current locale's translation for the given message (key) and context.
+ </description>
+ </method>
+ <method name="translate_plural" qualifiers="const">
+ <return type="StringName">
+ </return>
+ <argument index="0" name="message" type="StringName">
+ </argument>
+ <argument index="1" name="plural_message" type="StringName">
+ </argument>
+ <argument index="2" name="n" type="int">
+ </argument>
+ <argument index="3" name="context" type="StringName" default="&quot;&quot;">
+ </argument>
<description>
- Returns the current locale's translation for the given message (key).
+ Returns the current locale's translation for the given message (key), plural_message and context.
+ The number [code]n[/code] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.
</description>
</method>
</methods>
diff --git a/doc/classes/VSlider.xml b/doc/classes/VSlider.xml
index 9394d6b430..5830c9eaf3 100644
--- a/doc/classes/VSlider.xml
+++ b/doc/classes/VSlider.xml
@@ -5,6 +5,7 @@
</brief_description>
<description>
Vertical slider. See [Slider]. This one goes from bottom (min) to top (max).
+ [b]Note:[/b] The [signal Range.changed] and [signal Range.value_changed] signals are part of the [Range] class which this class inherits from.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml
index c0d8628d88..11716f511b 100644
--- a/doc/classes/Vector2.xml
+++ b/doc/classes/Vector2.xml
@@ -43,7 +43,8 @@
<return type="float">
</return>
<description>
- Returns this vector's angle with respect to the X axis, or [code](1, 0)[/code] vector, in radians.
+ Returns this vector's angle with respect to the positive X axis, or [code](1, 0)[/code] vector, in radians.
+ For example, [code]Vector2.RIGHT.angle()[/code] will return zero, [code]Vector2.DOWN.angle()[/code] will return [code]PI / 2[/code] (a quarter turn, or 90 degrees), and [code]Vector2(1, -1).angle()[/code] will return [code]-PI / 4[/code] (a negative eighth turn, or -45 degrees).
Equivalent to the result of [method @GDScript.atan2] when called with the vector's [member y] and [member x] as parameters: [code]atan2(y, x)[/code].
</description>
</method>