diff options
Diffstat (limited to 'doc/classes')
27 files changed, 328 insertions, 61 deletions
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml index 7581ae6935..6f82b103db 100644 --- a/doc/classes/AudioServer.xml +++ b/doc/classes/AudioServer.xml @@ -42,6 +42,7 @@ <return type="Array"> </return> <description> + Returns the names of all audio input devices detected on the system. </description> </method> <method name="capture_set_device"> @@ -52,6 +53,20 @@ <description> </description> </method> + <method name="capture_start"> + <return type="int" enum="Error"> + </return> + <description> + Attempts to start recording from the audio driver's capture device. On success, the return value is [constant OK]. + </description> + </method> + <method name="capture_stop"> + <return type="int" enum="Error"> + </return> + <description> + Attempts to stop recording from the audio driver's capture device. On success, the return value is [constant OK]. + </description> + </method> <method name="generate_bus_layout" qualifiers="const"> <return type="AudioBusLayout"> </return> @@ -158,11 +173,32 @@ Returns the volume of the bus at index [code]bus_idx[/code] in dB. </description> </method> + <method name="get_capture_buffer"> + <return type="PoolIntArray"> + </return> + <description> + Returns an [PoolIntArray] containing audio frames from the capture device. + </description> + </method> + <method name="get_capture_position"> + <return type="int"> + </return> + <description> + Returns the write position of the capture device buffer. + </description> + </method> + <method name="get_capture_size"> + <return type="int"> + </return> + <description> + Returns the size of the capture device buffer. + </description> + </method> <method name="get_device_list"> <return type="Array"> </return> <description> - Returns the names of all audio devices detected on the system. + Returns the names of all audio output devices detected on the system. </description> </method> <method name="get_mix_rate" qualifiers="const"> @@ -388,7 +424,10 @@ Number of available audio buses. </member> <member name="device" type="String" setter="set_device" getter="get_device" default=""Default""> - Name of the current device (see [method get_device_list]). + Name of the current device for audio output (see [method get_device_list]). + </member> + <member name="capture_device" type="String" setter="capture_set_device" getter="capture_get_device" default=""Default""> + Name of the current device for audio input (see [method capture_get_device_list]). </member> <member name="global_rate_scale" type="float" setter="set_global_rate_scale" getter="get_global_rate_scale" default="1.0"> Scales the rate at which audio is played (i.e. setting it to [code]0.5[/code] will make the audio be played twice as fast). diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml index 750b6851b6..f524a02934 100644 --- a/doc/classes/Camera2D.xml +++ b/doc/classes/Camera2D.xml @@ -154,9 +154,11 @@ </member> <member name="offset_h" type="float" setter="set_h_offset" getter="get_h_offset" default="0.0"> The horizontal offset of the camera, relative to the drag margins. + [b]Note:[/b] Offset H is used only to force offset relative to margins. It's not updated in any way if drag margins are enabled and can be used to set inital offset. </member> <member name="offset_v" type="float" setter="set_v_offset" getter="get_v_offset" default="0.0"> The vertical offset of the camera, relative to the drag margins. + [b]Note:[/b] Used the same as [member offset_h]. </member> <member name="process_mode" type="int" setter="set_process_mode" getter="get_process_mode" enum="Camera2D.Camera2DProcessMode" default="1"> </member> diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml index 80b5e90717..93c42a85a3 100644 --- a/doc/classes/CheckBox.xml +++ b/doc/classes/CheckBox.xml @@ -14,6 +14,7 @@ </constants> <theme_items> <theme_item name="check_vadjust" type="int" default="0"> + The vertical offset used when rendering the check icons. </theme_item> <theme_item name="checked" type="Texture"> </theme_item> diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml index f4d0e0657b..4744894fc1 100644 --- a/doc/classes/CheckButton.xml +++ b/doc/classes/CheckButton.xml @@ -14,6 +14,7 @@ </constants> <theme_items> <theme_item name="check_vadjust" type="int" default="0"> + The vertical offset used when rendering the icons. </theme_item> <theme_item name="disabled" type="StyleBox"> </theme_item> diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml index eb69a4aed4..b9ec9480cf 100644 --- a/doc/classes/CollisionObject2D.xml +++ b/doc/classes/CollisionObject2D.xml @@ -19,7 +19,7 @@ <argument index="2" name="shape_idx" type="int"> </argument> <description> - Accepts unhandled [InputEvent]s. [code]shape_idx[/code] is the child index of the clicked [Shape2D]. Connect to the [code]input_event[/code] signal to easily pick up these events. + Accepts unhandled [InputEvent]s. Requires [member input_pickable] to be [code]true[/code]. [code]shape_idx[/code] is the child index of the clicked [Shape2D]. Connect to the [code]input_event[/code] signal to easily pick up these events. </description> </method> <method name="create_shape_owner"> @@ -227,17 +227,17 @@ <argument index="2" name="shape_idx" type="int"> </argument> <description> - Emitted when an input event occurs. Requires [code]input_pickable[/code] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. See [method _input_event] for details. + Emitted when an input event occurs. Requires [member input_pickable] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. See [method _input_event] for details. </description> </signal> <signal name="mouse_entered"> <description> - Emitted when the mouse pointer enters any of this object's shapes. Requires [code]input_pickable[/code] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. + Emitted when the mouse pointer enters any of this object's shapes. Requires [member input_pickable] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. </description> </signal> <signal name="mouse_exited"> <description> - Emitted when the mouse pointer exits all this object's shapes. Requires [code]input_pickable[/code] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. + Emitted when the mouse pointer exits all this object's shapes. Requires [member input_pickable] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. </description> </signal> </signals> diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index 69fec750a2..6c3cf66c20 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -21,13 +21,16 @@ <return type="bool"> </return> <description> + Virtual method to be implemented by the user. Returns whether [method _gui_input] should not be called for children controls outside this control's rectangle. Input will be clipped to the Rect of this [Control]. Similar to [member rect_clip_content], but doesn't affect visibility. + If not overriden, defaults to [code]false[/code]. </description> </method> <method name="_get_minimum_size" qualifiers="virtual"> <return type="Vector2"> </return> <description> - Returns the minimum size for this control. See [member rect_min_size]. + Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to [member rect_min_size] for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately). + If not overriden, defaults to [constant Vector2.ZERO]. </description> </method> <method name="_gui_input" qualifiers="virtual"> @@ -36,8 +39,20 @@ <argument index="0" name="event" type="InputEvent"> </argument> <description> - Use this method to process and accept inputs on UI elements. See [method accept_event]. - Replaces Godot 2's [code]_input_event[/code]. + Virtual method to be implemented by the user. Use this method to process and accept inputs on UI elements. See [method accept_event]. + Example: clicking a control. + [codeblock] + func _gui_input(event): + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT and event.pressed: + print("I've been clicked D:") + [/codeblock] + The event won't trigger if: + * clicking outside the control (see [method has_point]); + * control has [member mouse_filter] set to [member MOUSE_FILTER_IGNORE]; + * control is obstructed by another [Control] on top of it, which doesn't have [member mouse_filter] set to [member MOUSE_FILTER_IGNORE]; + * control's parent has [member mouse_filter] set to [member MOUSE_FILTER_STOP] or has accepted the event; + * it happens outside parent's rectangle and the parent has either [member rect_clip_content] or [member _clips_input] enabled. </description> </method> <method name="_make_custom_tooltip" qualifiers="virtual"> @@ -46,6 +61,23 @@ <argument index="0" name="for_text" type="String"> </argument> <description> + Virtual method to be implemented by the user. Returns a [Control] node that should be used as a tooltip instead of the default one. Use [code]for_text[/code] parameter to determine what text the tooltip should contain (likely the contents of [member hint_tooltip]). + The returned node must be of type [Control] or Control-derieved. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance, not e.g. a node from scene. When null or non-Control node is returned, the default tooltip will be used instead. + [b]Note:[/b] The tooltip is shrunk to miminal size. If you want to ensure it's fully visible, you might want to set its [member rect_min_size] to some non-zero value. + Example of usage with custom-constructed node: + [codeblock] + func _make_custom_tooltip(for_text): + var label = Label.new() + label.text = for_text + return label + [/codeblock] + Example of usage with custom scene instance: + [codeblock] + func _make_custom_tooltip(for_text): + var tooltip = preload("SomeTooltipScene.tscn").instance() + tooltip.get_node("Label").text = for_text + return tooltip + [/codeblock] </description> </method> <method name="accept_event"> @@ -63,7 +95,7 @@ <argument index="1" name="color" type="Color"> </argument> <description> - Overrides the color in the [member theme] resource the node uses. + 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. </description> </method> <method name="add_constant_override"> @@ -74,7 +106,7 @@ <argument index="1" name="constant" type="int"> </argument> <description> - Overrides an integer constant in the [member theme] resource the node uses. If the [code]constant[/code] is invalid, Godot clears the override. + 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. </description> </method> <method name="add_font_override"> @@ -85,7 +117,7 @@ <argument index="1" name="font" type="Font"> </argument> <description> - Overrides the [code]name[/code] font in the [member theme] resource the node uses. If [code]font[/code] is empty, Godot clears the override. + 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. </description> </method> <method name="add_icon_override"> @@ -96,7 +128,7 @@ <argument index="1" name="texture" type="Texture"> </argument> <description> - Overrides the [code]name[/code] icon in the [member theme] resource the node uses. If [code]icon[/code] is empty, Godot clears the override. + 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. </description> </method> <method name="add_shader_override"> @@ -107,7 +139,7 @@ <argument index="1" name="shader" type="Shader"> </argument> <description> - Overrides the [code]name[/code] shader in the [member theme] resource the node uses. If [code]shader[/code] is empty, Godot clears the override. + 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. </description> </method> <method name="add_stylebox_override"> @@ -118,7 +150,7 @@ <argument index="1" name="stylebox" type="StyleBox"> </argument> <description> - Overrides the [code]name[/code] [StyleBox] in the [member theme] resource the node uses. If [code]stylebox[/code] is empty, Godot clears the override. + 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. </description> </method> <method name="can_drop_data" qualifiers="virtual"> @@ -132,8 +164,6 @@ Godot calls this method to test if [code]data[/code] from a control's [method get_drag_data] can be dropped at [code]position[/code]. [code]position[/code] is local to this control. This method should only be used to test the data. Process the data in [method drop_data]. [codeblock] - extends Control - func can_drop_data(position, data): # Check position if it is relevant to you # Otherwise, just check data @@ -151,8 +181,6 @@ <description> Godot calls this method to pass you the [code]data[/code] from a control's [method get_drag_data] result. Godot first calls [method can_drop_data] to test if [code]data[/code] is allowed to drop at [code]position[/code] where [code]position[/code] is local to this control. [codeblock] - extends ColorRect - func can_drop_data(position, data): return typeof(data) == TYPE_DICTIONARY and data.has("color") @@ -179,6 +207,7 @@ <argument index="0" name="margin" type="int" enum="Margin"> </argument> <description> + Returns the anchor identified by [code]margin[/code] constant from [enum Margin] enum. A getter method for [member anchor_bottom], [member anchor_left], [member anchor_right] and [member anchor_top]. </description> </method> <method name="get_begin" qualifiers="const"> @@ -196,12 +225,18 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns a color from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. + [codeblock] + func _ready(): + modulate = get_color("font_color", "Button") #get the color defined for button fonts + [/codeblock] </description> </method> <method name="get_combined_minimum_size" qualifiers="const"> <return type="Vector2"> </return> <description> + Returns combined minimum size from [member rect_min_size] and [method get_minimum_size]. </description> </method> <method name="get_constant" qualifiers="const"> @@ -212,6 +247,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns a constant from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. </description> </method> <method name="get_cursor_shape" qualifiers="const"> @@ -232,8 +268,6 @@ Godot calls this method to get data that can be dragged and dropped onto controls that expect drop data. Returns [code]null[/code] if there is no data to drag. Controls that want to receive drop data should implement [method can_drop_data] and [method drop_data]. [code]position[/code] is local to this control. Drag may be forced with [method force_drag]. A preview that will follow the mouse that should represent the data can be set with [method set_drag_preview]. A good time to set the preview is in this method. [codeblock] - extends Control - func get_drag_data(position): var mydata = make_data() set_drag_preview(make_preview(mydata)) @@ -254,6 +288,7 @@ <argument index="0" name="margin" type="int" enum="Margin"> </argument> <description> + Returns the focus neighbour identified by [code]margin[/code] constant from [enum Margin] enum. A getter method for [member focus_neighbour_bottom], [member focus_neighbour_left], [member focus_neighbour_right] and [member focus_neighbour_top]. </description> </method> <method name="get_focus_owner" qualifiers="const"> @@ -271,6 +306,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns a font from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. </description> </method> <method name="get_global_rect" qualifiers="const"> @@ -288,6 +324,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns an icon from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. </description> </method> <method name="get_margin" qualifiers="const"> @@ -296,6 +333,7 @@ <argument index="0" name="margin" type="int" enum="Margin"> </argument> <description> + Returns the anchor identified by [code]margin[/code] constant from [enum Margin] enum. A getter method for [member margin_bottom], [member margin_left], [member margin_right] and [member margin_top]. </description> </method> <method name="get_minimum_size" qualifiers="const"> @@ -341,6 +379,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns a [StyleBox] from assigned [Theme] with given [code]name[/code] and associated with [Control] of given [code]type[/code]. </description> </method> <method name="get_tooltip" qualifiers="const"> @@ -349,13 +388,18 @@ <argument index="0" name="at_position" type="Vector2" default="Vector2( 0, 0 )"> </argument> <description> - Returns the tooltip, which will appear when the cursor is resting over this control. + Returns the tooltip, which will appear when the cursor is resting over this control. See [member]hint_tooltip[/member]. </description> </method> <method name="grab_click_focus"> <return type="void"> </return> <description> + Creates an [InputEventMouseButton] that attempts to click the control. If the event is received, the control aquires focus. + [codeblock] + func _process(delta): + grab_click_focus() #when clicking another Control node, this node will be clicked instead + [/codeblock] </description> </method> <method name="grab_focus"> @@ -373,6 +417,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns [code]true[/code] if [Color] with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. </description> </method> <method name="has_color_override" qualifiers="const"> @@ -381,6 +426,7 @@ <argument index="0" name="name" type="String"> </argument> <description> + Returns [code]true[/code] if [Color] with given [code]name[/code] has a valid override in this [Control] node. </description> </method> <method name="has_constant" qualifiers="const"> @@ -391,6 +437,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns [code]true[/code] if constant with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. </description> </method> <method name="has_constant_override" qualifiers="const"> @@ -399,6 +446,7 @@ <argument index="0" name="name" type="String"> </argument> <description> + Returns [code]true[/code] if constant with given [code]name[/code] has a valid override in this [Control] node. </description> </method> <method name="has_focus" qualifiers="const"> @@ -416,6 +464,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns [code]true[/code] if font with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. </description> </method> <method name="has_font_override" qualifiers="const"> @@ -424,6 +473,7 @@ <argument index="0" name="name" type="String"> </argument> <description> + Returns [code]true[/code] if font with given [code]name[/code] has a valid override in this [Control] node. </description> </method> <method name="has_icon" qualifiers="const"> @@ -434,6 +484,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns [code]true[/code] if icon with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. </description> </method> <method name="has_icon_override" qualifiers="const"> @@ -442,6 +493,7 @@ <argument index="0" name="name" type="String"> </argument> <description> + Returns [code]true[/code] if icon with given [code]name[/code] has a valid override in this [Control] node. </description> </method> <method name="has_point" qualifiers="virtual"> @@ -450,6 +502,9 @@ <argument index="0" name="point" type="Vector2"> </argument> <description> + Virtual method to be implemented by the user. Returns whether the given [code]point[/code] is inside this control. + If not overriden, default behavior is checking if the point is within control's Rect. + [b]Node:[/b] If you want to check if a point is inside the control, you can use [code]get_rect().has_point(point)[/code]. </description> </method> <method name="has_shader_override" qualifiers="const"> @@ -458,6 +513,7 @@ <argument index="0" name="name" type="String"> </argument> <description> + Returns [code]true[/code] if [Shader] with given [code]name[/code] has a valid override in this [Control] node. </description> </method> <method name="has_stylebox" qualifiers="const"> @@ -468,6 +524,7 @@ <argument index="1" name="type" type="String" default=""""> </argument> <description> + Returns [code]true[/code] if [StyleBox] with given [code]name[/code] and associated with [Control] of given [code]type[/code] exists in assigned [Theme]. </description> </method> <method name="has_stylebox_override" qualifiers="const"> @@ -476,12 +533,14 @@ <argument index="0" name="name" type="String"> </argument> <description> + Returns [code]true[/code] if [StyleBox] with given [code]name[/code] has a valid override in this [Control] node. </description> </method> <method name="minimum_size_changed"> <return type="void"> </return> <description> + Invalidates the size cache in this node and in parent nodes up to toplevel. Intended to be used with [method get_minimum_size] when the return value is changed. Setting [member rect_min_size] directly calls this method automatically. </description> </method> <method name="release_focus"> @@ -503,6 +562,9 @@ <argument index="3" name="push_opposite_anchor" type="bool" default="true"> </argument> <description> + Sets the anchor identified by [code]margin[/code] constant from [enum Margin] enum to value [code]anchor[/code]. A setter method for [member anchor_bottom], [member anchor_left], [member anchor_right] and [member anchor_top]. + If [code]keep_margin[/code] is [code]true[/code], margins aren't updated after this operation. + If [code]push_opposite_anchor[/code] is [code]true[/code] and the opposite anchor overlaps this anchor, the opposite one will have its value overriden. For example, when setting left anchor to 1 and the right anchor has value of 0.5, the right anchor will also get value of 1. If [code]push_opposite_anchor[/code] was [code]false[/code], the left anchor would get value 0.5. </description> </method> <method name="set_anchor_and_margin"> @@ -517,6 +579,7 @@ <argument index="3" name="push_opposite_anchor" type="bool" default="false"> </argument> <description> + Works the same as [method set_anchor], but instead of [code]keep_margin[/code] argument and automatic update of margin, it allows to set the margin offset yourself (see [method set_margin]). </description> </method> <method name="set_anchors_and_margins_preset"> @@ -529,6 +592,7 @@ <argument index="2" name="margin" type="int" default="0"> </argument> <description> + Sets both anchor preset and margin preset. See [method set_anchors_preset] and [method set_margins_preset]. </description> </method> <method name="set_anchors_preset"> @@ -539,6 +603,8 @@ <argument index="1" name="keep_margins" type="bool" default="false"> </argument> <description> + Sets the anchors to a [code]preset[/code] from [enum Control.LayoutPreset] enum. This is code equivalent of using the Layout menu in 2D editor. + If [code]keep_margins[/code] is [code]true[/code], control's position will also be updated. </description> </method> <method name="set_begin"> @@ -547,7 +613,7 @@ <argument index="0" name="position" type="Vector2"> </argument> <description> - Sets [member margin_left] and [member margin_top] at the same time. + Sets [member margin_left] and [member margin_top] at the same time. Equivalent of changing [member rect_position]. </description> </method> <method name="set_drag_forwarding"> @@ -606,6 +672,7 @@ <argument index="1" name="neighbour" type="NodePath"> </argument> <description> + Sets the anchor identified by [code]margin[/code] constant from [enum Margin] enum to [Control] at [code]neighbor[/code] node path. A setter method for [member focus_neighbour_bottom], [member focus_neighbour_left], [member focus_neighbour_right] and [member focus_neighbour_top]. </description> </method> <method name="set_global_position"> @@ -616,6 +683,8 @@ <argument index="1" name="keep_margins" type="bool" default="false"> </argument> <description> + Sets the [member rect_global_position] to given [code]position[/code]. + If [code]keep_margins[/code] is [code]true[/code], control's anchors will be updated instead of margins. </description> </method> <method name="set_margin"> @@ -626,6 +695,7 @@ <argument index="1" name="offset" type="float"> </argument> <description> + Sets the margin identified by [code]margin[/code] constant from [enum Margin] enum to given [code]offset[/code]. A setter method for [member margin_bottom], [member margin_left], [member margin_right] and [member margin_top]. </description> </method> <method name="set_margins_preset"> @@ -638,6 +708,9 @@ <argument index="2" name="margin" type="int" default="0"> </argument> <description> + Sets the margins to a [code]preset[/code] from [enum Control.LayoutPreset] enum. This is code equivalent of using the Layout menu in 2D editor. + Use parameter [code]resize_mode[/code] with constants from [enum Control.LayoutPresetMode] to better determine the resulting size of the [Control]. Constant size will be ignored if used with presets that change size, e.g. [code]PRESET_LEFT_WIDE[/code]. + Use parameter [code]margin[/code] to determine the gap between the [Control] and the edges. </description> </method> <method name="set_position"> @@ -648,6 +721,8 @@ <argument index="1" name="keep_margins" type="bool" default="false"> </argument> <description> + Sets the [member rect_position] to given [code]position[/code]. + If [code]keep_margins[/code] is [code]true[/code], control's anchors will be updated instead of margins. </description> </method> <method name="set_rotation"> @@ -667,6 +742,8 @@ <argument index="1" name="keep_margins" type="bool" default="false"> </argument> <description> + Sets the size (see [member rect_size]). + If [code]keep_margins[/code] is [code]true[/code], control's anchors will be updated instead of margins. </description> </method> <method name="show_modal"> @@ -676,6 +753,7 @@ </argument> <description> Displays a control as modal. Control must be a subwindow. Modal controls capture the input signals until closed or the area outside them is accessed. When a modal control loses focus, or the ESC key is pressed, they automatically hide. Modal controls are used extensively for popup dialogs and menus. + If [code]exclusive[/code] is [code]true[/code], other controls will not receive input and clicking outside this control will not close it. </description> </method> <method name="warp_mouse"> @@ -684,21 +762,22 @@ <argument index="0" name="to_position" type="Vector2"> </argument> <description> + Moves the mouse cursor to [code]to_position[/code], relative to [member rect_position] of this [Control]. </description> </method> </methods> <members> <member name="anchor_bottom" type="float" setter="_set_anchor" getter="get_anchor" default="0.0"> - Anchors the bottom edge of the node to the origin, the center, or the end of its parent control. It changes how the bottom margin updates when the node moves or changes size. You can use one of the [code]ANCHOR_*[/code] constants for convenience. + Anchors the bottom edge of the node to the origin, the center, or the end of its parent control. It changes how the bottom margin updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience. </member> <member name="anchor_left" type="float" setter="_set_anchor" getter="get_anchor" default="0.0"> - Anchors the left edge of the node to the origin, the center or the end of its parent control. It changes how the left margin updates when the node moves or changes size. You can use one of the [code]ANCHOR_*[/code] constants for convenience. + Anchors the left edge of the node to the origin, the center or the end of its parent control. It changes how the left margin updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience. </member> <member name="anchor_right" type="float" setter="_set_anchor" getter="get_anchor" default="0.0"> - Anchors the right edge of the node to the origin, the center or the end of its parent control. It changes how the right margin updates when the node moves or changes size. You can use one of the [code]ANCHOR_*[/code] constants for convenience. + Anchors the right edge of the node to the origin, the center or the end of its parent control. It changes how the right margin updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience. </member> <member name="anchor_top" type="float" setter="_set_anchor" getter="get_anchor" default="0.0"> - Anchors the top edge of the node to the origin, the center or the end of its parent control. It changes how the top margin updates when the node moves or changes size. You can use one of the [code]ANCHOR_*[/code] constants for convenience. + Anchors the top edge of the node to the origin, the center or the end of its parent control. It changes how the top margin updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience. </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode" default="0"> The focus access mode for the control (None, Click or All). Only one Control can be focused at the same time, and it will receive keyboard signals. @@ -730,7 +809,7 @@ Controls the direction on the vertical axis in which the control should grow if its vertical minimum size is changed to be greater than its current size, as the control always has to be at least the minimum size. </member> <member name="hint_tooltip" type="String" setter="set_tooltip" getter="_get_tooltip" default=""""> - Changes the tooltip text. The tooltip appears when the user's mouse cursor stays idle over this control for a few moments, provided that the [member mouse_filter] property is not [constant MOUSE_FILTER_IGNORE]. + Changes the tooltip text. The tooltip appears when the user's mouse cursor stays idle over this control for a few moments, provided that the [member mouse_filter] property is not [constant MOUSE_FILTER_IGNORE]. You can change the time required for the tooltip to appear with [code]gui/timers/tooltip_delay_sec[/code] option in Project Settings. </member> <member name="margin_bottom" type="float" setter="set_margin" getter="get_margin" default="0.0"> Distance between the node's bottom edge and its parent control, based on [member anchor_bottom]. @@ -780,13 +859,13 @@ The size of the node's bounding rectangle, in pixels. [Container] nodes update this property automatically. </member> <member name="size_flags_horizontal" type="int" setter="set_h_size_flags" getter="get_h_size_flags" default="1"> - Tells the parent [Container] nodes how they should resize and place the node on the X axis. Use one of the [code]SIZE_*[/code] constants to change the flags. See the constants to learn what each does. + Tells the parent [Container] nodes how they should resize and place the node on the X axis. Use one of the [enum SizeFlags] constants to change the flags. See the constants to learn what each does. </member> <member name="size_flags_stretch_ratio" type="float" setter="set_stretch_ratio" getter="get_stretch_ratio" default="1.0"> If the node and at least one of its neighbours uses the [constant SIZE_EXPAND] size flag, the parent [Container] will let it take more or less space depending on this property. If this node has a stretch ratio of 2 and its neighbour a ratio of 1, this node will take two thirds of the available space. </member> <member name="size_flags_vertical" type="int" setter="set_v_size_flags" getter="get_v_size_flags" default="1"> - Tells the parent [Container] nodes how they should resize and place the node on the Y axis. Use one of the [code]SIZE_*[/code] constants to change the flags. See the constants to learn what each does. + Tells the parent [Container] nodes how they should resize and place the node on the Y axis. Use one of the [enum SizeFlags] constants to change the flags. See the constants to learn what each does. </member> <member name="theme" type="Theme" setter="set_theme" getter="get_theme"> Changing this property replaces the current [Theme] resource this node and all its [Control] children use. @@ -978,12 +1057,16 @@ Snap all 4 anchors to the respective corners of the parent control. Set all 4 margins to 0 after you applied this preset and the [Control] will fit its parent control. This is equivalent to the "Full Rect" layout option in the editor. Use with [method set_anchors_preset]. </constant> <constant name="PRESET_MODE_MINSIZE" value="0" enum="LayoutPresetMode"> + The control will be resized to its minimum size. </constant> <constant name="PRESET_MODE_KEEP_WIDTH" value="1" enum="LayoutPresetMode"> + The control's width will not change. </constant> <constant name="PRESET_MODE_KEEP_HEIGHT" value="2" enum="LayoutPresetMode"> + The control's height will not change. </constant> <constant name="PRESET_MODE_KEEP_SIZE" value="3" enum="LayoutPresetMode"> + The control's size will not change. </constant> <constant name="SIZE_FILL" value="1" enum="SizeFlags"> Tells the parent [Container] to expand the bounds of this node to fill all the available space without pushing any other node. Use with [member size_flags_horizontal] and [member size_flags_vertical]. diff --git a/doc/classes/DirectionalLight.xml b/doc/classes/DirectionalLight.xml index 4d0ff7f13b..687e7519b2 100644 --- a/doc/classes/DirectionalLight.xml +++ b/doc/classes/DirectionalLight.xml @@ -21,7 +21,7 @@ <member name="directional_shadow_depth_range" type="int" setter="set_shadow_depth_range" getter="get_shadow_depth_range" enum="DirectionalLight.ShadowDepthRange" default="0"> Optimizes shadow rendering for detail versus movement. See [enum ShadowDepthRange]. </member> - <member name="directional_shadow_max_distance" type="float" setter="set_param" getter="get_param" default="200.0"> + <member name="directional_shadow_max_distance" type="float" setter="set_param" getter="get_param" default="100.0"> The maximum distance for shadow splits. </member> <member name="directional_shadow_mode" type="int" setter="set_shadow_mode" getter="get_shadow_mode" enum="DirectionalLight.ShadowMode" default="2"> diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml index 6f07682b04..d55e810c9e 100644 --- a/doc/classes/EditorInterface.xml +++ b/doc/classes/EditorInterface.xml @@ -166,6 +166,7 @@ <argument index="0" name="file" type="String"> </argument> <description> + Selects the file, with the path provided by [code]file[/code], in the FileSystem dock. </description> </method> <method name="set_plugin_enabled"> diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml index bd9a100267..fddc5e9d36 100644 --- a/doc/classes/EditorPlugin.xml +++ b/doc/classes/EditorPlugin.xml @@ -29,7 +29,7 @@ <argument index="1" name="title" type="String"> </argument> <description> - Adds a control to the bottom panel (together with Output, Debug, Animation, etc). Returns a reference to the button added. It's up to you to hide/show the button when needed. When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_bottom_panel] and free it with [code]queue_free()[/code]. + Adds a control to the bottom panel (together with Output, Debug, Animation, etc). Returns a reference to the button added. It's up to you to hide/show the button when needed. When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_bottom_panel] and free it with [method Node.queue_free]. </description> </method> <method name="add_control_to_container"> @@ -40,9 +40,9 @@ <argument index="1" name="control" type="Control"> </argument> <description> - Adds a custom control to a container (see [code]CONTAINER_*[/code] enum). There are many locations where custom controls can be added in the editor UI. + Adds a custom control to a container (see [enum CustomControlContainer]). There are many locations where custom controls can be added in the editor UI. Please remember that you have to manage the visibility of your custom controls yourself (and likely hide it after adding it). - When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_container] and free it with [code]queue_free()[/code]. + When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_container] and free it with [method Node.queue_free]. </description> </method> <method name="add_control_to_dock"> @@ -53,9 +53,9 @@ <argument index="1" name="control" type="Control"> </argument> <description> - Adds the control to a specific dock slot (see [code]DOCK_*[/code] enum for options). + Adds the control to a specific dock slot (see [enum DockSlot] for options). If the dock is repositioned and as long as the plugin is active, the editor will save the dock position on further sessions. - When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_docks] and free it with [code]queue_free()[/code]. + When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_docks] and free it with [method Node.queue_free]. </description> </method> <method name="add_custom_type"> @@ -167,6 +167,7 @@ <return type="void"> </return> <description> + Called by the engine when the user disables the [EditorPlugin] in the Plugin tab of the project settings window. </description> </method> <method name="edit" qualifiers="virtual"> @@ -182,6 +183,7 @@ <return type="void"> </return> <description> + Called by the engine when the user enables the [EditorPlugin] in the Plugin tab of the project settings window. </description> </method> <method name="forward_canvas_draw_over_viewport" qualifiers="virtual"> @@ -190,12 +192,6 @@ <argument index="0" name="overlay" type="Control"> </argument> <description> - This method is called when there is an input event in the 2D viewport, e.g. the user clicks with the mouse in the 2D space (canvas GUI). Keep in mind that for this method to be called you have to first declare the virtual method [method handles] so the editor knows that you want to work with the workspace: - [codeblock] - func handles(object): - return true - [/codeblock] - Also note that the edited scene must have a root node. </description> </method> <method name="forward_canvas_force_draw_over_viewport" qualifiers="virtual"> @@ -212,6 +208,22 @@ <argument index="0" name="event" type="InputEvent"> </argument> <description> + Called when there is a root node in the current edited scene, [method handles] is implemented and an [InputEvent] happens in the 2D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [code]event[/code], otherwise forwards [code]event[/code] to other Editor classes. Example: + [codeblock] + # Prevents the InputEvent to reach other Editor classes + func forward_canvas_gui_input(event): + var forward = true + return forward + [/codeblock] + Must [code]return false[/code] in order to forward the [InputEvent] to other Editor classes. Example: + [codeblock] + # Consumes InputEventMouseMotion and forwards other InputEvent types + func forward_canvas_gui_input(event): + var forward = false + if event is InputEventMouseMotion: + forward = true + return forward + [/codeblock] </description> </method> <method name="forward_spatial_gui_input" qualifiers="virtual"> @@ -222,12 +234,22 @@ <argument index="1" name="event" type="InputEvent"> </argument> <description> - This method is called when there is an input event in the 3D viewport, e.g. the user clicks with the mouse in the 3D space (spatial GUI). Keep in mind that for this method to be called you have to first declare the virtual method [method handles] so the editor knows that you want to work with the workspace: + Called when there is a root node in the current edited scene, [method handles] is implemented and an [InputEvent] happens in the 3D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [code]event[/code], otherwise forwards [code]event[/code] to other Editor classes. Example: + [codeblock] + # Prevents the InputEvent to reach other Editor classes + func forward_spatial_gui_input(camera, event): + var forward = true + return forward + [/codeblock] + Must [code]return false[/code] in order to forward the [InputEvent] to other Editor classes. Example: [codeblock] - func handles(object): - return true + # Consumes InputEventMouseMotion and forwards other InputEvent types + func forward_spatial_gui_input(camera, event): + var forward = false + if event is InputEventMouseMotion: + forward = true + return forward [/codeblock] - Also note that the edited scene must have a root node. </description> </method> <method name="get_breakpoints" qualifiers="virtual"> @@ -349,7 +371,7 @@ <argument index="0" name="control" type="Control"> </argument> <description> - Removes the control from the bottom panel. You have to manually [code]queue_free()[/code] the control. + Removes the control from the bottom panel. You have to manually [method Node.queue_free] the control. </description> </method> <method name="remove_control_from_container"> @@ -360,7 +382,7 @@ <argument index="1" name="control" type="Control"> </argument> <description> - Removes the control from the specified container. You have to manually [code]queue_free()[/code] the control. + Removes the control from the specified container. You have to manually [method Node.queue_free] the control. </description> </method> <method name="remove_control_from_docks"> @@ -369,7 +391,7 @@ <argument index="0" name="control" type="Control"> </argument> <description> - Removes the control from the dock. You have to manually [code]queue_free()[/code] the control. + Removes the control from the dock. You have to manually [method Node.queue_free] the control. </description> </method> <method name="remove_custom_type"> diff --git a/doc/classes/EditorSceneImporter.xml b/doc/classes/EditorSceneImporter.xml index 4707543c91..96d8ce698d 100644 --- a/doc/classes/EditorSceneImporter.xml +++ b/doc/classes/EditorSceneImporter.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="EditorSceneImporter" inherits="Reference" category="Core" version="3.2"> <brief_description> + Imports scenes from third-parties' 3D files. </brief_description> <description> </description> diff --git a/doc/classes/FuncRef.xml b/doc/classes/FuncRef.xml index e35d7a68c5..9803ae0838 100644 --- a/doc/classes/FuncRef.xml +++ b/doc/classes/FuncRef.xml @@ -17,10 +17,20 @@ Calls the referenced function previously set by [method set_function] or [method @GDScript.funcref]. </description> </method> + <method name="call_funcv"> + <return type="Variant"> + </return> + <argument index="0" name="arg_array" type="Array"> + </argument> + <description> + Calls the referenced function previously set by [method set_function] or [method @GDScript.funcref]. Contrarily to [method call_func], this method does not support a variable number of arguments but expects all parameters to be passed via a single [Array]. + </description> + </method> <method name="is_valid" qualifiers="const"> <return type="bool"> </return> <description> + Returns whether the object still exists and has the function assigned. </description> </method> <method name="set_function"> diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml index 111bf2109e..3cc40b7cef 100644 --- a/doc/classes/GraphEdit.xml +++ b/doc/classes/GraphEdit.xml @@ -233,6 +233,11 @@ Signal sent when user dragging connection from output port into empty space of the graph. </description> </signal> + <signal name="copy_nodes_request"> + <description> + Signal sent when the user presses [code]Ctrl + C[/code]. + </description> + </signal> <signal name="delete_nodes_request"> <description> Signal sent when a GraphNode is attempted to be removed from the GraphEdit. @@ -263,6 +268,11 @@ Emitted when a GraphNode is selected. </description> </signal> + <signal name="paste_nodes_request"> + <description> + Signal sent when the user presses [code]Ctrl + V[/code]. + </description> + </signal> <signal name="popup_request"> <argument index="0" name="position" type="Vector2"> </argument> diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml index 8cd69ba0da..a4df0d5c19 100644 --- a/doc/classes/Image.xml +++ b/doc/classes/Image.xml @@ -415,6 +415,17 @@ Saves the image as a PNG file to [code]path[/code]. </description> </method> + <method name="save_exr" qualifiers="const"> + <return type="int" enum="Error"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="grayscale" type="bool" default="false"> + </argument> + <description> + Saves the image as an EXR file to [code]path[/code]. If grayscale is true and the image has only one channel, it will be saved explicitely as monochrome rather than one red channel. This function will return [constant ERR_UNAVAILABLE] if Godot was compiled without the TinyEXR module. + </description> + </method> <method name="set_pixel"> <return type="void"> </return> diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml index bbf1ee186f..91ebcd52f6 100644 --- a/doc/classes/Input.xml +++ b/doc/classes/Input.xml @@ -222,7 +222,7 @@ <argument index="0" name="action" type="String"> </argument> <description> - Returns [code]true[/code] if you are pressing the action event. + Returns [code]true[/code] if you are pressing the action event. Note that if an action has multiple buttons asigned and more than one of them is pressed, releasing one button will release the action, even if some other button assigned to this action is still pressed. </description> </method> <method name="is_joy_button_pressed" qualifiers="const"> @@ -318,6 +318,7 @@ <description> Sets the default cursor shape to be used in the viewport instead of [constant CURSOR_ARROW]. [b]Note:[/b] If you want to change the default cursor shape for [Control]'s nodes, use [member Control.mouse_default_cursor_shape] instead. + [b]Note:[/b] This method generates an [InputEventMouseMotion] to update cursor immediately. </description> </method> <method name="set_mouse_mode"> diff --git a/doc/classes/KinematicBody.xml b/doc/classes/KinematicBody.xml index b7c4200b95..2fab689f89 100644 --- a/doc/classes/KinematicBody.xml +++ b/doc/classes/KinematicBody.xml @@ -5,7 +5,7 @@ </brief_description> <description> Kinematic bodies are special types of bodies that are meant to be user-controlled. They are not affected by physics at all; to other types of bodies, such as a character or a rigid body, these are the same as a static body. However, they have two main uses: - [b]Simulated motion:[/b] When these bodies are moved manually, either from code or from an AnimationPlayer (with process mode set to fixed), the physics will automatically compute an estimate of their linear and angular velocity. This makes them very useful for moving platforms or other AnimationPlayer-controlled objects (like a door, a bridge that opens, etc). + [b]Simulated motion:[/b] When these bodies are moved manually, either from code or from an [AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set to "physics"), the physics will automatically compute an estimate of their linear and angular velocity. This makes them very useful for moving platforms or other AnimationPlayer-controlled objects (like a door, a bridge that opens, etc). [b]Kinematic characters:[/b] KinematicBody also has an API for moving objects (the [method move_and_collide] and [method move_and_slide] methods) while performing collision tests. This makes them really useful to implement characters that collide against a world, but that don't require advanced physics. </description> <tutorials> diff --git a/doc/classes/KinematicBody2D.xml b/doc/classes/KinematicBody2D.xml index 39d84c6e31..99a83765eb 100644 --- a/doc/classes/KinematicBody2D.xml +++ b/doc/classes/KinematicBody2D.xml @@ -5,7 +5,7 @@ </brief_description> <description> Kinematic bodies are special types of bodies that are meant to be user-controlled. They are not affected by physics at all; to other types of bodies, such as a character or a rigid body, these are the same as a static body. However, they have two main uses: - [b]Simulated motion:[/b] When these bodies are moved manually, either from code or from an AnimationPlayer (with process mode set to fixed), the physics will automatically compute an estimate of their linear and angular velocity. This makes them very useful for moving platforms or other AnimationPlayer-controlled objects (like a door, a bridge that opens, etc). + [b]Simulated motion:[/b] When these bodies are moved manually, either from code or from an [AnimationPlayer] (with [member AnimationPlayer.playback_process_mode] set to "physics"), the physics will automatically compute an estimate of their linear and angular velocity. This makes them very useful for moving platforms or other AnimationPlayer-controlled objects (like a door, a bridge that opens, etc). [b]Kinematic characters:[/b] KinematicBody2D also has an API for moving objects (the [method move_and_collide] and [method move_and_slide] methods) while performing collision tests. This makes them really useful to implement characters that collide against a world, but that don't require advanced physics. </description> <tutorials> @@ -76,6 +76,7 @@ </argument> <description> Moves the body along the vector [code]rel_vec[/code]. The body will stop if it collides. Returns a [KinematicCollision2D], which contains information about the collision. + If [code]test_only[/code] is [code]true[/code], the body does not move but the would-be collision information is given. </description> </method> <method name="move_and_slide"> diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml index b87e912b45..4b77197e29 100644 --- a/doc/classes/Object.xml +++ b/doc/classes/Object.xml @@ -112,7 +112,7 @@ <argument index="1" name="arg_array" type="Array"> </argument> <description> - Calls the [code]method[/code] on the object and returns the result. Contrarily to [method call], this method does not support a variable number of arguments but expected all parameters passed via a single [Array]. + Calls the [code]method[/code] on the object and returns the result. Contrarily to [method call], this method does not support a variable number of arguments but expects all parameters to be via a single [Array]. [codeblock] callv("set", [ "position", Vector2(42.0, 0.0) ]) [/codeblock] diff --git a/doc/classes/PointMesh.xml b/doc/classes/PointMesh.xml new file mode 100644 index 0000000000..dc7dd065cf --- /dev/null +++ b/doc/classes/PointMesh.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PointMesh" inherits="PrimitiveMesh" category="Core" version="3.2"> + <brief_description> + Mesh with a single Point primitive. + </brief_description> + <description> + The PointMesh is made from a single point. Instead of relying on triangles, points are rendered as a single rectangle on the screen with a constant size. They are intended to be used with Particle systems, but can be used as a cheap way to render constant size billboarded sprites (for example in a point cloud). + PointMeshes, must be used with a material that has a point size. Point size can be accessed in a shader with [code]POINT_SIZE[/code], or in a [SpatialMaterial] by setting [member SpatialMaterial.flags_use_point_size] and the variable [member SpatialMaterial.params_point_size]. + When using PointMeshes, properties that normally alter vertices will be ignored, including billboard mode, grow, and cull face. + </description> + <tutorials> + </tutorials> + <methods> + </methods> + <constants> + </constants> +</class> diff --git a/doc/classes/PoolIntArray.xml b/doc/classes/PoolIntArray.xml index 730833b097..28a28b2bba 100644 --- a/doc/classes/PoolIntArray.xml +++ b/doc/classes/PoolIntArray.xml @@ -6,6 +6,7 @@ <description> An [Array] specifically designed to hold integer values ([int]). Optimized for memory usage, does not fragment the memory. [b]Note:[/b] This type is passed by value and not by reference. + [b]Note:[/b] This type is limited to signed 32-bit integers, which means it can only 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. </description> <tutorials> </tutorials> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 7ab29e67ae..9f18eea0d4 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -650,12 +650,15 @@ <member name="network/limits/debugger_stdout/max_chars_per_second" type="int" setter="" getter="" default="2048"> Maximum amount of characters allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> - <member name="network/limits/debugger_stdout/max_errors_per_frame" type="int" setter="" getter="" default="10"> - Maximum amount of errors allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. + <member name="network/limits/debugger_stdout/max_errors_per_second" type="int" setter="" getter="" default="100"> + Maximum number of errors allowed to be sent as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> <member name="network/limits/debugger_stdout/max_messages_per_frame" type="int" setter="" getter="" default="10"> Maximum amount of messages allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> + <member name="network/limits/debugger_stdout/max_warnings_per_second" type="int" setter="" getter="" default="100"> + Maximum number of warnings allowed to be sent as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. + </member> <member name="network/limits/packet_peer_stream/max_buffer_po2" type="int" setter="" getter="" default="16"> Default size of packet peer stream for deserializing Godot data. Over this size, data is dropped. </member> @@ -727,6 +730,12 @@ <member name="rendering/limits/rendering/max_renderable_elements" type="int" setter="" getter="" default="65536"> Max amount of elements renderable in a frame. If more than this are visible per frame, they will be dropped. Keep in mind elements refer to mesh surfaces and not meshes themselves. </member> + <member name="rendering/limits/rendering/max_renderable_lights" type="int" setter="" getter="" default="4096"> + Max number of lights renderable in a frame. If more than this number are used, they will be ignored. On some systems (particularly web) setting this number as low as possible can increase the speed of shader compilation. + </member> + <member name="rendering/limits/rendering/max_renderable_reflections" type="int" setter="" getter="" default="1024"> + Max number of reflection probes renderable in a frame. If more than this number are used, they will be ignored. On some systems (particularly web) setting this number as low as possible can increase the speed of shader compilation. + </member> <member name="rendering/limits/time/time_rollover_secs" type="float" setter="" getter="" default="3600"> Shaders have a time variable that constantly increases. At some point, it needs to be rolled back to zero to avoid precision errors on shader animations. This setting specifies when (in seconds). </member> @@ -825,7 +834,7 @@ <member name="rendering/quality/subsurface_scattering/weight_samples" type="bool" setter="" getter="" default="true"> Weight subsurface scattering samples. Helps to avoid reading samples from unrelated parts of the screen. </member> - <member name="rendering/quality/voxel_cone_tracing/high_quality" type="bool" setter="" getter="" default="true"> + <member name="rendering/quality/voxel_cone_tracing/high_quality" type="bool" setter="" getter="" default="false"> Use high-quality voxel cone tracing. This results in better-looking reflections, but is much more expensive on the GPU. </member> <member name="rendering/threads/thread_model" type="int" setter="" getter="" default="1"> diff --git a/doc/classes/SpatialMaterial.xml b/doc/classes/SpatialMaterial.xml index f684f09263..df315d7430 100644 --- a/doc/classes/SpatialMaterial.xml +++ b/doc/classes/SpatialMaterial.xml @@ -192,7 +192,7 @@ </member> <member name="metallic_texture" type="Texture" setter="set_texture" getter="get_texture"> </member> - <member name="metallic_texture_channel" type="int" setter="set_metallic_texture_channel" getter="get_metallic_texture_channel" enum="SpatialMaterial.TextureChannel" default="2"> + <member name="metallic_texture_channel" type="int" setter="set_metallic_texture_channel" getter="get_metallic_texture_channel" enum="SpatialMaterial.TextureChannel" default="0"> </member> <member name="normal_enabled" type="bool" setter="set_feature" getter="get_feature" default="false"> If [code]true[/code], normal mapping is enabled. @@ -277,7 +277,7 @@ </member> <member name="roughness_texture" type="Texture" setter="set_texture" getter="get_texture"> </member> - <member name="roughness_texture_channel" type="int" setter="set_roughness_texture_channel" getter="get_roughness_texture_channel" enum="SpatialMaterial.TextureChannel" default="1"> + <member name="roughness_texture_channel" type="int" setter="set_roughness_texture_channel" getter="get_roughness_texture_channel" enum="SpatialMaterial.TextureChannel" default="0"> </member> <member name="subsurf_scatter_enabled" type="bool" setter="set_feature" getter="get_feature" default="false"> If [code]true[/code], subsurface scattering is enabled. Emulates light that penetrates an object's surface, is scattered, and then emerges. diff --git a/doc/classes/Sprite.xml b/doc/classes/Sprite.xml index e5aea961f4..b77db1ce9a 100644 --- a/doc/classes/Sprite.xml +++ b/doc/classes/Sprite.xml @@ -46,6 +46,9 @@ <member name="frame" type="int" setter="set_frame" getter="get_frame" default="0"> Current frame to display from sprite sheet. [member vframes] or [member hframes] must be greater than 1. </member> + <member name="frame_coords" type="Vector2" setter="set_frame_coords" getter="get_frame_coords" default="Vector2( 0, 0 )"> + Coordinates of the frame to display from sprite sheet. This is as an alias for the [member frame] property. [member vframes] or [member hframes] must be greater than 1. + </member> <member name="hframes" type="int" setter="set_hframes" getter="get_hframes" default="1"> The number of columns in the sprite sheet. </member> diff --git a/doc/classes/Sprite3D.xml b/doc/classes/Sprite3D.xml index 9a51302bf1..e458d4301e 100644 --- a/doc/classes/Sprite3D.xml +++ b/doc/classes/Sprite3D.xml @@ -14,6 +14,9 @@ <member name="frame" type="int" setter="set_frame" getter="get_frame" default="0"> Current frame to display from sprite sheet. [member vframes] or [member hframes] must be greater than 1. </member> + <member name="frame_coords" type="Vector2" setter="set_frame_coords" getter="get_frame_coords" default="Vector2( 0, 0 )"> + Coordinates of the frame to display from sprite sheet. This is as an alias for the [member frame] property. [member vframes] or [member hframes] must be greater than 1. + </member> <member name="hframes" type="int" setter="set_hframes" getter="get_hframes" default="1"> The number of columns in the sprite sheet. </member> diff --git a/doc/classes/String.xml b/doc/classes/String.xml index e513a44b1d..f6ec85c87d 100644 --- a/doc/classes/String.xml +++ b/doc/classes/String.xml @@ -272,6 +272,32 @@ 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. </description> </method> + <method name="count"> + <return type="int"> + </return> + <argument index="0" name="what" type="String"> + </argument> + <argument index="1" name="from" type="int" default="0"> + </argument> + <argument index="2" name="to" type="int" default="0"> + </argument> + <description> + Returns the number of occurrences of substring [code]what[/code] between [code]from[/code] and [code]to[/code] positions. If [code]from[/code] and [code]to[/code] equals 0 the whole string will be used. If only [code]to[/code] equals 0 the remained substring will be used. + </description> + </method> + <method name="countn"> + <return type="int"> + </return> + <argument index="0" name="what" type="String"> + </argument> + <argument index="1" name="from" type="int" default="0"> + </argument> + <argument index="2" name="to" type="int" default="0"> + </argument> + <description> + Returns the number of occurrences of substring [code]what[/code] (ignoring case) between [code]from[/code] and [code]to[/code] positions. If [code]from[/code] and [code]to[/code] equals 0 the whole string will be used. If only [code]to[/code] equals 0 the remained substring will be used. + </description> + </method> <method name="dedent"> <return type="String"> </return> diff --git a/doc/classes/Variant.xml b/doc/classes/Variant.xml index eb07c70cc6..522e131b45 100644 --- a/doc/classes/Variant.xml +++ b/doc/classes/Variant.xml @@ -5,6 +5,19 @@ </brief_description> <description> A Variant takes up only 20 bytes and can store almost any engine datatype inside of it. Variants are rarely used to hold information for long periods of time. Instead, they are used mainly for communication, editing, serialization and moving data around. + A Variant: + - Can store almost any datatype. + - Can perform operations between many variants. GDScript uses Variant as its atomic/native datatype. + - Can be hashed, so it can be compared quickly to other variants. + - Can be used to convert safely between datatypes. + - Can be used to abstract calling methods and their arguments. Godot exports all its functions through variants. + - Can be used to defer calls or move data between threads. + - Can be serialized as binary and stored to disk, or transferred via network. + - Can be serialized to text and use it for printing values and editable settings. + - Can work as an exported property, so the editor can edit it universally. + - Can be used for dictionaries, arrays, parsers, etc. + [b]Containers ([Array] and [Dictionary]):[/b] Both are implemented using variants. A [Dictionary] can match any datatype used as key to any other datatype. An [Array] just holds an array of Variants. Of course, a Variant can also hold a [Dictionary] and an [Array] inside, making it even more flexible. + Modifications to a container will modify all references to it. A [Mutex] should be created to lock it if multi-threaded access is desired. </description> <tutorials> </tutorials> diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml index 0c96c50c58..237b596fad 100644 --- a/doc/classes/Vector2.xml +++ b/doc/classes/Vector2.xml @@ -4,7 +4,7 @@ Vector used for 2D math. </brief_description> <description> - 2-element structure that can be used to represent positions in 2d space or any other pair of numeric values. + 2-element structure that can be used to represent positions in 2D space or any other pair of numeric values. </description> <tutorials> <link>https://docs.godotengine.org/en/latest/tutorials/math/index.html</link> diff --git a/doc/classes/VehicleWheel.xml b/doc/classes/VehicleWheel.xml index 6de6429531..ff6004bcba 100644 --- a/doc/classes/VehicleWheel.xml +++ b/doc/classes/VehicleWheel.xml @@ -13,6 +13,7 @@ <return type="float"> </return> <description> + Returns the rotational speed of the wheel in revolutions per minute. </description> </method> <method name="get_skidinfo" qualifiers="const"> @@ -31,12 +32,23 @@ </method> </methods> <members> + <member name="brake" type="float" setter="set_brake" getter="get_brake" default="0.0"> + Slows down the wheel by applying a braking force. The wheel is only slowed down if it is in contact with a surface. The force you need to apply to adequately slow down your vehicle depends on the [member RigidBody.mass] of the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 30 range for hard braking. + </member> <member name="damping_compression" type="float" setter="set_damping_compression" getter="get_damping_compression" default="0.83"> The damping applied to the spring when the spring is being compressed. This value should be between 0.0 (no damping) and 1.0. A value of 0.0 means the car will keep bouncing as the spring keeps its energy. A good value for this is around 0.3 for a normal car, 0.5 for a race car. </member> <member name="damping_relaxation" type="float" setter="set_damping_relaxation" getter="get_damping_relaxation" default="0.88"> The damping applied to the spring when relaxing. This value should be between 0.0 (no damping) and 1.0. This value should always be slightly higher than the [member damping_compression] property. For a [member damping_compression] value of 0.3, try a relaxation value of 0.5. </member> + <member name="engine_force" type="float" setter="set_engine_force" getter="get_engine_force" default="0.0"> + Accelerates the wheel by applying an engine force. The wheel is only speed up if it is in contact with a surface. The [member RigidBody.mass] of the vehicle has an effect on the acceleration of the vehicle. For a vehicle with a mass set to 1000, try a value in the 25 - 50 range for acceleration. + [b]Note:[/b] The simulation does not take the effect of gears into account, you will need to add logic for this if you wish to simulate gears. + A negative value will result in the wheel reversing. + </member> + <member name="steering" type="float" setter="set_steering" getter="get_steering" default="0.0"> + The steering angle for the wheel. Setting this to a non-zero value will result in the vehicle turning when it's moving. + </member> <member name="suspension_max_force" type="float" setter="set_suspension_max_force" getter="get_suspension_max_force" default="6000.0"> The maximum force the spring can resist. This value should be higher than a quarter of the [member RigidBody.mass] of the [VehicleBody] or the spring will not carry the weight of the vehicle. Good results are often obtained by a value that is about 3× to 4× this number. </member> @@ -47,10 +59,10 @@ This is the distance the suspension can travel. As Godot units are equivalent to meters, keep this setting relatively low. Try a value between 0.1 and 0.3 depending on the type of car. </member> <member name="use_as_steering" type="bool" setter="set_use_as_steering" getter="is_used_as_steering" default="false"> - If [code]true[/code], this wheel will be turned when the car steers. + If [code]true[/code], this wheel will be turned when the car steers. This value is used in conjunction with [member VehicleBody.steering] and ignored if you are using the per-wheel [member steering] value instead. </member> <member name="use_as_traction" type="bool" setter="set_use_as_traction" getter="is_used_as_traction" default="false"> - If [code]true[/code], this wheel transfers engine force to the ground to propel the vehicle forward. + If [code]true[/code], this wheel transfers engine force to the ground to propel the vehicle forward. This value is used in conjunction with [member VehicleBody.engine_force] and ignored if you are using the per-wheel [member engine_force] value instead. </member> <member name="wheel_friction_slip" type="float" setter="set_friction_slip" getter="get_friction_slip" default="10.5"> This determines how much grip this wheel has. It is combined with the friction setting of the surface the wheel is in contact with. 0.0 means no grip, 1.0 is normal grip. For a drift car setup, try setting the grip of the rear wheels slightly lower than the front wheels, or use a lower value to simulate tire wear. |