diff options
Diffstat (limited to 'doc/classes')
224 files changed, 5336 insertions, 1403 deletions
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml index 71b0901b3d..3d01c60aea 100644 --- a/doc/classes/@GlobalScope.xml +++ b/doc/classes/@GlobalScope.xml @@ -463,7 +463,7 @@ var ratio = inverse_lerp(20, 30, 27.5) # `ratio` is now 0.75. [/codeblock] - See also [method lerp] which performs the reverse of this operation, and [method range_lerp] to map a continuous series of values to another. + See also [method lerp] which performs the reverse of this operation, and [method remap] to map a continuous series of values to another. </description> </method> <method name="is_equal_approx"> @@ -523,7 +523,7 @@ [codeblock] lerp(0, 4, 0.75) # Returns 3.0 [/codeblock] - See also [method inverse_lerp] which performs the reverse of this operation. To perform eased interpolation with [method lerp], combine it with [method ease] or [method smoothstep]. See also [method range_lerp] to map a continuous series of values to another. + See also [method inverse_lerp] which performs the reverse of this operation. To perform eased interpolation with [method lerp], combine it with [method ease] or [method smoothstep]. See also [method remap] to map a continuous series of values to another. [b]Note:[/b] For better type safety, you can use [method lerpf], [method Vector2.lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color.lerp], [method Quaternion.slerp] or [method Basis.slerp] instead. </description> </method> @@ -888,7 +888,7 @@ [b]Note:[/b] This method is called automatically when the project is run. If you need to fix the seed to have reproducible results, use [method seed] to initialize the random number generator. </description> </method> - <method name="range_lerp"> + <method name="remap"> <return type="float" /> <param index="0" name="value" type="float" /> <param index="1" name="istart" type="float" /> @@ -896,9 +896,9 @@ <param index="3" name="ostart" type="float" /> <param index="4" name="ostop" type="float" /> <description> - Maps a [param value] from range [code][istart, istop][/code] to [code][ostart, ostop][/code]. See also [method lerp] and [method inverse_lerp]. If [param value] is outside [code][istart, istop][/code], then the resulting value will also be outside [code][ostart, ostop][/code]. Use [method clamp] on the result of [method range_lerp] if this is not desired. + Maps a [param value] from range [code][istart, istop][/code] to [code][ostart, ostop][/code]. See also [method lerp] and [method inverse_lerp]. If [param value] is outside [code][istart, istop][/code], then the resulting value will also be outside [code][ostart, ostop][/code]. Use [method clamp] on the result of [method remap] if this is not desired. [codeblock] - range_lerp(75, 0, 100, -1, 1) # Returns 0.5 + remap(75, 0, 100, -1, 1) # Returns 0.5 [/codeblock] For complex use cases where you need multiple ranges, consider using [Curve] or [Gradient] instead. </description> @@ -1275,8 +1275,8 @@ The [JavaClassWrapper] singleton. [b]Note:[/b] Only implemented on Android. </member> - <member name="JavaScript" type="JavaScript" setter="" getter=""> - The [JavaScript] singleton. + <member name="JavaScriptBridge" type="JavaScriptBridge" setter="" getter=""> + The [JavaScriptBridge] singleton. [b]Note:[/b] Only implemented on the Web platform. </member> <member name="Marshalls" type="Marshalls" setter="" getter=""> @@ -1302,9 +1302,15 @@ <member name="PhysicsServer2D" type="PhysicsServer2D" setter="" getter=""> The [PhysicsServer2D] singleton. </member> + <member name="PhysicsServer2DManager" type="PhysicsServer2DManager" setter="" getter=""> + The [PhysicsServer2DManager] singleton. + </member> <member name="PhysicsServer3D" type="PhysicsServer3D" setter="" getter=""> The [PhysicsServer3D] singleton. </member> + <member name="PhysicsServer3DManager" type="PhysicsServer3DManager" setter="" getter=""> + The [PhysicsServer3DManager] singleton. + </member> <member name="ProjectSettings" type="ProjectSettings" setter="" getter=""> The [ProjectSettings] singleton. </member> @@ -1437,385 +1443,385 @@ <constant name="KEY_NONE" value="0" enum="Key"> Enum value which doesn't correspond to any key. This is used to initialize [enum Key] properties with a generic state. </constant> - <constant name="KEY_SPECIAL" value="16777216" enum="Key"> + <constant name="KEY_SPECIAL" value="4194304" enum="Key"> Keycodes with this bit applied are non-printable. </constant> - <constant name="KEY_ESCAPE" value="16777217" enum="Key"> + <constant name="KEY_ESCAPE" value="4194305" enum="Key"> Escape key. </constant> - <constant name="KEY_TAB" value="16777218" enum="Key"> + <constant name="KEY_TAB" value="4194306" enum="Key"> Tab key. </constant> - <constant name="KEY_BACKTAB" value="16777219" enum="Key"> + <constant name="KEY_BACKTAB" value="4194307" enum="Key"> Shift + Tab key. </constant> - <constant name="KEY_BACKSPACE" value="16777220" enum="Key"> + <constant name="KEY_BACKSPACE" value="4194308" enum="Key"> Backspace key. </constant> - <constant name="KEY_ENTER" value="16777221" enum="Key"> + <constant name="KEY_ENTER" value="4194309" enum="Key"> Return key (on the main keyboard). </constant> - <constant name="KEY_KP_ENTER" value="16777222" enum="Key"> + <constant name="KEY_KP_ENTER" value="4194310" enum="Key"> Enter key on the numeric keypad. </constant> - <constant name="KEY_INSERT" value="16777223" enum="Key"> + <constant name="KEY_INSERT" value="4194311" enum="Key"> Insert key. </constant> - <constant name="KEY_DELETE" value="16777224" enum="Key"> + <constant name="KEY_DELETE" value="4194312" enum="Key"> Delete key. </constant> - <constant name="KEY_PAUSE" value="16777225" enum="Key"> + <constant name="KEY_PAUSE" value="4194313" enum="Key"> Pause key. </constant> - <constant name="KEY_PRINT" value="16777226" enum="Key"> + <constant name="KEY_PRINT" value="4194314" enum="Key"> Print Screen key. </constant> - <constant name="KEY_SYSREQ" value="16777227" enum="Key"> + <constant name="KEY_SYSREQ" value="4194315" enum="Key"> System Request key. </constant> - <constant name="KEY_CLEAR" value="16777228" enum="Key"> + <constant name="KEY_CLEAR" value="4194316" enum="Key"> Clear key. </constant> - <constant name="KEY_HOME" value="16777229" enum="Key"> + <constant name="KEY_HOME" value="4194317" enum="Key"> Home key. </constant> - <constant name="KEY_END" value="16777230" enum="Key"> + <constant name="KEY_END" value="4194318" enum="Key"> End key. </constant> - <constant name="KEY_LEFT" value="16777231" enum="Key"> + <constant name="KEY_LEFT" value="4194319" enum="Key"> Left arrow key. </constant> - <constant name="KEY_UP" value="16777232" enum="Key"> + <constant name="KEY_UP" value="4194320" enum="Key"> Up arrow key. </constant> - <constant name="KEY_RIGHT" value="16777233" enum="Key"> + <constant name="KEY_RIGHT" value="4194321" enum="Key"> Right arrow key. </constant> - <constant name="KEY_DOWN" value="16777234" enum="Key"> + <constant name="KEY_DOWN" value="4194322" enum="Key"> Down arrow key. </constant> - <constant name="KEY_PAGEUP" value="16777235" enum="Key"> + <constant name="KEY_PAGEUP" value="4194323" enum="Key"> Page Up key. </constant> - <constant name="KEY_PAGEDOWN" value="16777236" enum="Key"> + <constant name="KEY_PAGEDOWN" value="4194324" enum="Key"> Page Down key. </constant> - <constant name="KEY_SHIFT" value="16777237" enum="Key"> + <constant name="KEY_SHIFT" value="4194325" enum="Key"> Shift key. </constant> - <constant name="KEY_CTRL" value="16777238" enum="Key"> + <constant name="KEY_CTRL" value="4194326" enum="Key"> Control key. </constant> - <constant name="KEY_META" value="16777239" enum="Key"> + <constant name="KEY_META" value="4194327" enum="Key"> Meta key. </constant> - <constant name="KEY_ALT" value="16777240" enum="Key"> + <constant name="KEY_ALT" value="4194328" enum="Key"> Alt key. </constant> - <constant name="KEY_CAPSLOCK" value="16777241" enum="Key"> + <constant name="KEY_CAPSLOCK" value="4194329" enum="Key"> Caps Lock key. </constant> - <constant name="KEY_NUMLOCK" value="16777242" enum="Key"> + <constant name="KEY_NUMLOCK" value="4194330" enum="Key"> Num Lock key. </constant> - <constant name="KEY_SCROLLLOCK" value="16777243" enum="Key"> + <constant name="KEY_SCROLLLOCK" value="4194331" enum="Key"> Scroll Lock key. </constant> - <constant name="KEY_F1" value="16777244" enum="Key"> + <constant name="KEY_F1" value="4194332" enum="Key"> F1 key. </constant> - <constant name="KEY_F2" value="16777245" enum="Key"> + <constant name="KEY_F2" value="4194333" enum="Key"> F2 key. </constant> - <constant name="KEY_F3" value="16777246" enum="Key"> + <constant name="KEY_F3" value="4194334" enum="Key"> F3 key. </constant> - <constant name="KEY_F4" value="16777247" enum="Key"> + <constant name="KEY_F4" value="4194335" enum="Key"> F4 key. </constant> - <constant name="KEY_F5" value="16777248" enum="Key"> + <constant name="KEY_F5" value="4194336" enum="Key"> F5 key. </constant> - <constant name="KEY_F6" value="16777249" enum="Key"> + <constant name="KEY_F6" value="4194337" enum="Key"> F6 key. </constant> - <constant name="KEY_F7" value="16777250" enum="Key"> + <constant name="KEY_F7" value="4194338" enum="Key"> F7 key. </constant> - <constant name="KEY_F8" value="16777251" enum="Key"> + <constant name="KEY_F8" value="4194339" enum="Key"> F8 key. </constant> - <constant name="KEY_F9" value="16777252" enum="Key"> + <constant name="KEY_F9" value="4194340" enum="Key"> F9 key. </constant> - <constant name="KEY_F10" value="16777253" enum="Key"> + <constant name="KEY_F10" value="4194341" enum="Key"> F10 key. </constant> - <constant name="KEY_F11" value="16777254" enum="Key"> + <constant name="KEY_F11" value="4194342" enum="Key"> F11 key. </constant> - <constant name="KEY_F12" value="16777255" enum="Key"> + <constant name="KEY_F12" value="4194343" enum="Key"> F12 key. </constant> - <constant name="KEY_F13" value="16777256" enum="Key"> + <constant name="KEY_F13" value="4194344" enum="Key"> F13 key. </constant> - <constant name="KEY_F14" value="16777257" enum="Key"> + <constant name="KEY_F14" value="4194345" enum="Key"> F14 key. </constant> - <constant name="KEY_F15" value="16777258" enum="Key"> + <constant name="KEY_F15" value="4194346" enum="Key"> F15 key. </constant> - <constant name="KEY_F16" value="16777259" enum="Key"> + <constant name="KEY_F16" value="4194347" enum="Key"> F16 key. </constant> - <constant name="KEY_F17" value="16777260" enum="Key"> + <constant name="KEY_F17" value="4194348" enum="Key"> F17 key. </constant> - <constant name="KEY_F18" value="16777261" enum="Key"> + <constant name="KEY_F18" value="4194349" enum="Key"> F18 key. </constant> - <constant name="KEY_F19" value="16777262" enum="Key"> + <constant name="KEY_F19" value="4194350" enum="Key"> F19 key. </constant> - <constant name="KEY_F20" value="16777263" enum="Key"> + <constant name="KEY_F20" value="4194351" enum="Key"> F20 key. </constant> - <constant name="KEY_F21" value="16777264" enum="Key"> + <constant name="KEY_F21" value="4194352" enum="Key"> F21 key. </constant> - <constant name="KEY_F22" value="16777265" enum="Key"> + <constant name="KEY_F22" value="4194353" enum="Key"> F22 key. </constant> - <constant name="KEY_F23" value="16777266" enum="Key"> + <constant name="KEY_F23" value="4194354" enum="Key"> F23 key. </constant> - <constant name="KEY_F24" value="16777267" enum="Key"> + <constant name="KEY_F24" value="4194355" enum="Key"> F24 key. </constant> - <constant name="KEY_F25" value="16777268" enum="Key"> + <constant name="KEY_F25" value="4194356" enum="Key"> F25 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F26" value="16777269" enum="Key"> + <constant name="KEY_F26" value="4194357" enum="Key"> F26 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F27" value="16777270" enum="Key"> + <constant name="KEY_F27" value="4194358" enum="Key"> F27 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F28" value="16777271" enum="Key"> + <constant name="KEY_F28" value="4194359" enum="Key"> F28 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F29" value="16777272" enum="Key"> + <constant name="KEY_F29" value="4194360" enum="Key"> F29 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F30" value="16777273" enum="Key"> + <constant name="KEY_F30" value="4194361" enum="Key"> F30 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F31" value="16777274" enum="Key"> + <constant name="KEY_F31" value="4194362" enum="Key"> F31 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F32" value="16777275" enum="Key"> + <constant name="KEY_F32" value="4194363" enum="Key"> F32 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F33" value="16777276" enum="Key"> + <constant name="KEY_F33" value="4194364" enum="Key"> F33 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F34" value="16777277" enum="Key"> + <constant name="KEY_F34" value="4194365" enum="Key"> F34 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_F35" value="16777278" enum="Key"> + <constant name="KEY_F35" value="4194366" enum="Key"> F35 key. Only supported on macOS and Linux due to a Windows limitation. </constant> - <constant name="KEY_KP_MULTIPLY" value="16777345" enum="Key"> + <constant name="KEY_KP_MULTIPLY" value="4194433" enum="Key"> Multiply (*) key on the numeric keypad. </constant> - <constant name="KEY_KP_DIVIDE" value="16777346" enum="Key"> + <constant name="KEY_KP_DIVIDE" value="4194434" enum="Key"> Divide (/) key on the numeric keypad. </constant> - <constant name="KEY_KP_SUBTRACT" value="16777347" enum="Key"> + <constant name="KEY_KP_SUBTRACT" value="4194435" enum="Key"> Subtract (-) key on the numeric keypad. </constant> - <constant name="KEY_KP_PERIOD" value="16777348" enum="Key"> + <constant name="KEY_KP_PERIOD" value="4194436" enum="Key"> Period (.) key on the numeric keypad. </constant> - <constant name="KEY_KP_ADD" value="16777349" enum="Key"> + <constant name="KEY_KP_ADD" value="4194437" enum="Key"> Add (+) key on the numeric keypad. </constant> - <constant name="KEY_KP_0" value="16777350" enum="Key"> + <constant name="KEY_KP_0" value="4194438" enum="Key"> Number 0 on the numeric keypad. </constant> - <constant name="KEY_KP_1" value="16777351" enum="Key"> + <constant name="KEY_KP_1" value="4194439" enum="Key"> Number 1 on the numeric keypad. </constant> - <constant name="KEY_KP_2" value="16777352" enum="Key"> + <constant name="KEY_KP_2" value="4194440" enum="Key"> Number 2 on the numeric keypad. </constant> - <constant name="KEY_KP_3" value="16777353" enum="Key"> + <constant name="KEY_KP_3" value="4194441" enum="Key"> Number 3 on the numeric keypad. </constant> - <constant name="KEY_KP_4" value="16777354" enum="Key"> + <constant name="KEY_KP_4" value="4194442" enum="Key"> Number 4 on the numeric keypad. </constant> - <constant name="KEY_KP_5" value="16777355" enum="Key"> + <constant name="KEY_KP_5" value="4194443" enum="Key"> Number 5 on the numeric keypad. </constant> - <constant name="KEY_KP_6" value="16777356" enum="Key"> + <constant name="KEY_KP_6" value="4194444" enum="Key"> Number 6 on the numeric keypad. </constant> - <constant name="KEY_KP_7" value="16777357" enum="Key"> + <constant name="KEY_KP_7" value="4194445" enum="Key"> Number 7 on the numeric keypad. </constant> - <constant name="KEY_KP_8" value="16777358" enum="Key"> + <constant name="KEY_KP_8" value="4194446" enum="Key"> Number 8 on the numeric keypad. </constant> - <constant name="KEY_KP_9" value="16777359" enum="Key"> + <constant name="KEY_KP_9" value="4194447" enum="Key"> Number 9 on the numeric keypad. </constant> - <constant name="KEY_SUPER_L" value="16777280" enum="Key"> + <constant name="KEY_SUPER_L" value="4194368" enum="Key"> Left Super key (Windows key). </constant> - <constant name="KEY_SUPER_R" value="16777281" enum="Key"> + <constant name="KEY_SUPER_R" value="4194369" enum="Key"> Right Super key (Windows key). </constant> - <constant name="KEY_MENU" value="16777282" enum="Key"> + <constant name="KEY_MENU" value="4194370" enum="Key"> Context menu key. </constant> - <constant name="KEY_HYPER_L" value="16777283" enum="Key"> + <constant name="KEY_HYPER_L" value="4194371" enum="Key"> Left Hyper key. </constant> - <constant name="KEY_HYPER_R" value="16777284" enum="Key"> + <constant name="KEY_HYPER_R" value="4194372" enum="Key"> Right Hyper key. </constant> - <constant name="KEY_HELP" value="16777285" enum="Key"> + <constant name="KEY_HELP" value="4194373" enum="Key"> Help key. </constant> - <constant name="KEY_DIRECTION_L" value="16777286" enum="Key"> + <constant name="KEY_DIRECTION_L" value="4194374" enum="Key"> Left Direction key. </constant> - <constant name="KEY_DIRECTION_R" value="16777287" enum="Key"> + <constant name="KEY_DIRECTION_R" value="4194375" enum="Key"> Right Direction key. </constant> - <constant name="KEY_BACK" value="16777288" enum="Key"> + <constant name="KEY_BACK" value="4194376" enum="Key"> Media back key. Not to be confused with the Back button on an Android device. </constant> - <constant name="KEY_FORWARD" value="16777289" enum="Key"> + <constant name="KEY_FORWARD" value="4194377" enum="Key"> Media forward key. </constant> - <constant name="KEY_STOP" value="16777290" enum="Key"> + <constant name="KEY_STOP" value="4194378" enum="Key"> Media stop key. </constant> - <constant name="KEY_REFRESH" value="16777291" enum="Key"> + <constant name="KEY_REFRESH" value="4194379" enum="Key"> Media refresh key. </constant> - <constant name="KEY_VOLUMEDOWN" value="16777292" enum="Key"> + <constant name="KEY_VOLUMEDOWN" value="4194380" enum="Key"> Volume down key. </constant> - <constant name="KEY_VOLUMEMUTE" value="16777293" enum="Key"> + <constant name="KEY_VOLUMEMUTE" value="4194381" enum="Key"> Mute volume key. </constant> - <constant name="KEY_VOLUMEUP" value="16777294" enum="Key"> + <constant name="KEY_VOLUMEUP" value="4194382" enum="Key"> Volume up key. </constant> - <constant name="KEY_BASSBOOST" value="16777295" enum="Key"> + <constant name="KEY_BASSBOOST" value="4194383" enum="Key"> Bass Boost key. </constant> - <constant name="KEY_BASSUP" value="16777296" enum="Key"> + <constant name="KEY_BASSUP" value="4194384" enum="Key"> Bass up key. </constant> - <constant name="KEY_BASSDOWN" value="16777297" enum="Key"> + <constant name="KEY_BASSDOWN" value="4194385" enum="Key"> Bass down key. </constant> - <constant name="KEY_TREBLEUP" value="16777298" enum="Key"> + <constant name="KEY_TREBLEUP" value="4194386" enum="Key"> Treble up key. </constant> - <constant name="KEY_TREBLEDOWN" value="16777299" enum="Key"> + <constant name="KEY_TREBLEDOWN" value="4194387" enum="Key"> Treble down key. </constant> - <constant name="KEY_MEDIAPLAY" value="16777300" enum="Key"> + <constant name="KEY_MEDIAPLAY" value="4194388" enum="Key"> Media play key. </constant> - <constant name="KEY_MEDIASTOP" value="16777301" enum="Key"> + <constant name="KEY_MEDIASTOP" value="4194389" enum="Key"> Media stop key. </constant> - <constant name="KEY_MEDIAPREVIOUS" value="16777302" enum="Key"> + <constant name="KEY_MEDIAPREVIOUS" value="4194390" enum="Key"> Previous song key. </constant> - <constant name="KEY_MEDIANEXT" value="16777303" enum="Key"> + <constant name="KEY_MEDIANEXT" value="4194391" enum="Key"> Next song key. </constant> - <constant name="KEY_MEDIARECORD" value="16777304" enum="Key"> + <constant name="KEY_MEDIARECORD" value="4194392" enum="Key"> Media record key. </constant> - <constant name="KEY_HOMEPAGE" value="16777305" enum="Key"> + <constant name="KEY_HOMEPAGE" value="4194393" enum="Key"> Home page key. </constant> - <constant name="KEY_FAVORITES" value="16777306" enum="Key"> + <constant name="KEY_FAVORITES" value="4194394" enum="Key"> Favorites key. </constant> - <constant name="KEY_SEARCH" value="16777307" enum="Key"> + <constant name="KEY_SEARCH" value="4194395" enum="Key"> Search key. </constant> - <constant name="KEY_STANDBY" value="16777308" enum="Key"> + <constant name="KEY_STANDBY" value="4194396" enum="Key"> Standby key. </constant> - <constant name="KEY_OPENURL" value="16777309" enum="Key"> + <constant name="KEY_OPENURL" value="4194397" enum="Key"> Open URL / Launch Browser key. </constant> - <constant name="KEY_LAUNCHMAIL" value="16777310" enum="Key"> + <constant name="KEY_LAUNCHMAIL" value="4194398" enum="Key"> Launch Mail key. </constant> - <constant name="KEY_LAUNCHMEDIA" value="16777311" enum="Key"> + <constant name="KEY_LAUNCHMEDIA" value="4194399" enum="Key"> Launch Media key. </constant> - <constant name="KEY_LAUNCH0" value="16777312" enum="Key"> + <constant name="KEY_LAUNCH0" value="4194400" enum="Key"> Launch Shortcut 0 key. </constant> - <constant name="KEY_LAUNCH1" value="16777313" enum="Key"> + <constant name="KEY_LAUNCH1" value="4194401" enum="Key"> Launch Shortcut 1 key. </constant> - <constant name="KEY_LAUNCH2" value="16777314" enum="Key"> + <constant name="KEY_LAUNCH2" value="4194402" enum="Key"> Launch Shortcut 2 key. </constant> - <constant name="KEY_LAUNCH3" value="16777315" enum="Key"> + <constant name="KEY_LAUNCH3" value="4194403" enum="Key"> Launch Shortcut 3 key. </constant> - <constant name="KEY_LAUNCH4" value="16777316" enum="Key"> + <constant name="KEY_LAUNCH4" value="4194404" enum="Key"> Launch Shortcut 4 key. </constant> - <constant name="KEY_LAUNCH5" value="16777317" enum="Key"> + <constant name="KEY_LAUNCH5" value="4194405" enum="Key"> Launch Shortcut 5 key. </constant> - <constant name="KEY_LAUNCH6" value="16777318" enum="Key"> + <constant name="KEY_LAUNCH6" value="4194406" enum="Key"> Launch Shortcut 6 key. </constant> - <constant name="KEY_LAUNCH7" value="16777319" enum="Key"> + <constant name="KEY_LAUNCH7" value="4194407" enum="Key"> Launch Shortcut 7 key. </constant> - <constant name="KEY_LAUNCH8" value="16777320" enum="Key"> + <constant name="KEY_LAUNCH8" value="4194408" enum="Key"> Launch Shortcut 8 key. </constant> - <constant name="KEY_LAUNCH9" value="16777321" enum="Key"> + <constant name="KEY_LAUNCH9" value="4194409" enum="Key"> Launch Shortcut 9 key. </constant> - <constant name="KEY_LAUNCHA" value="16777322" enum="Key"> + <constant name="KEY_LAUNCHA" value="4194410" enum="Key"> Launch Shortcut A key. </constant> - <constant name="KEY_LAUNCHB" value="16777323" enum="Key"> + <constant name="KEY_LAUNCHB" value="4194411" enum="Key"> Launch Shortcut B key. </constant> - <constant name="KEY_LAUNCHC" value="16777324" enum="Key"> + <constant name="KEY_LAUNCHC" value="4194412" enum="Key"> Launch Shortcut C key. </constant> - <constant name="KEY_LAUNCHD" value="16777325" enum="Key"> + <constant name="KEY_LAUNCHD" value="4194413" enum="Key"> Launch Shortcut D key. </constant> - <constant name="KEY_LAUNCHE" value="16777326" enum="Key"> + <constant name="KEY_LAUNCHE" value="4194414" enum="Key"> Launch Shortcut E key. </constant> - <constant name="KEY_LAUNCHF" value="16777327" enum="Key"> + <constant name="KEY_LAUNCHF" value="4194415" enum="Key"> Launch Shortcut F key. </constant> - <constant name="KEY_UNKNOWN" value="33554431" enum="Key"> + <constant name="KEY_UNKNOWN" value="16777215" enum="Key"> Unknown key. </constant> <constant name="KEY_SPACE" value="32" enum="Key"> @@ -2223,27 +2229,27 @@ <constant name="KEY_YDIAERESIS" value="255" enum="Key"> ÿ key. </constant> - <constant name="KEY_CODE_MASK" value="33554431" enum="KeyModifierMask"> + <constant name="KEY_CODE_MASK" value="8388607" enum="KeyModifierMask"> Key Code mask. </constant> - <constant name="KEY_MODIFIER_MASK" value="2130706432" enum="KeyModifierMask"> + <constant name="KEY_MODIFIER_MASK" value="532676608" enum="KeyModifierMask"> Modifier key mask. </constant> + <constant name="KEY_MASK_CMD_OR_CTRL" value="16777216" enum="KeyModifierMask"> + Automatically remapped to [constant KEY_META] on macOS and [constant KEY_CTRL] on other platforms, this mask is never set in the actual events, and should be used for key mapping only. + </constant> <constant name="KEY_MASK_SHIFT" value="33554432" enum="KeyModifierMask"> Shift key mask. </constant> <constant name="KEY_MASK_ALT" value="67108864" enum="KeyModifierMask"> - Alt key mask. + Alt or Option (on macOS) key mask. </constant> <constant name="KEY_MASK_META" value="134217728" enum="KeyModifierMask"> - Meta key mask. + Command (on macOS) or Meta/Windows key mask. </constant> <constant name="KEY_MASK_CTRL" value="268435456" enum="KeyModifierMask"> Ctrl key mask. </constant> - <constant name="KEY_MASK_CMD" value="platform-dependent" enum="KeyModifierMask"> - Command key mask. On macOS, this is equivalent to [constant KEY_MASK_META]. On other platforms, this is equivalent to [constant KEY_MASK_CTRL]. This mask should be preferred to [constant KEY_MASK_META] or [constant KEY_MASK_CTRL] for system shortcuts as it handles all platforms correctly. - </constant> <constant name="KEY_MASK_KPAD" value="536870912" enum="KeyModifierMask"> Keypad key mask. </constant> @@ -2614,7 +2620,7 @@ No hint for the edited property. </constant> <constant name="PROPERTY_HINT_RANGE" value="1" enum="PropertyHint"> - Hints that an integer or float property should be within a range specified via the hint string [code]"min,max"[/code] or [code]"min,max,step"[/code]. The hint string can optionally include [code]"or_greater"[/code] and/or [code]"or_lesser"[/code] to allow manual input going respectively above the max or below the min values. Example: [code]"-360,360,1,or_greater,or_lesser"[/code]. + Hints that an integer or float property should be within a range specified via the hint string [code]"min,max"[/code] or [code]"min,max,step"[/code]. The hint string can optionally include [code]"or_greater"[/code] and/or [code]"or_less"[/code] to allow manual input going respectively above the max or below the min values. Example: [code]"-360,360,1,or_greater,or_less"[/code]. Additionally, other keywords can be included: [code]"exp"[/code] for exponential range editing, [code]"radians"[/code] for editing radian angles in degrees, [code]"degrees"[/code] to hint at an angle and [code]"no_slider"[/code] to hide the slider. </constant> <constant name="PROPERTY_HINT_ENUM" value="2" enum="PropertyHint"> diff --git a/doc/classes/AABB.xml b/doc/classes/AABB.xml index e2e4e7c61d..23dd41f275 100644 --- a/doc/classes/AABB.xml +++ b/doc/classes/AABB.xml @@ -142,24 +142,24 @@ Returns a copy of the [AABB] grown a given number of units towards all the sides. </description> </method> - <method name="has_no_surface" qualifiers="const"> + <method name="has_point" qualifiers="const"> <return type="bool" /> + <param index="0" name="point" type="Vector3" /> <description> - Returns [code]true[/code] if the [AABB] is empty. + Returns [code]true[/code] if the [AABB] contains a point. Points on the faces of the AABB are considered included, though float-point precision errors may impact the accuracy of such checks. + [b]Note:[/b] This method is not reliable for [AABB] with a [i]negative size[/i]. Use [method abs] to get a positive sized equivalent [AABB] to check for contained points. </description> </method> - <method name="has_no_volume" qualifiers="const"> + <method name="has_surface" qualifiers="const"> <return type="bool" /> <description> - Returns [code]true[/code] if the [AABB] is flat or empty. + Returns [code]true[/code] if the [AABB] has a surface or a length, and [code]false[/code] if the [AABB] is empty (all components of [member size] are zero or negative). </description> </method> - <method name="has_point" qualifiers="const"> + <method name="has_volume" qualifiers="const"> <return type="bool" /> - <param index="0" name="point" type="Vector3" /> <description> - Returns [code]true[/code] if the [AABB] contains a point. Points on the faces of the AABB are considered included, though float-point precision errors may impact the accuracy of such checks. - [b]Note:[/b] This method is not reliable for [AABB] with a [i]negative size[/i]. Use [method abs] to get a positive sized equivalent [AABB] to check for contained points. + Returns [code]true[/code] if the [AABB] has a volume, and [code]false[/code] if the [AABB] is flat, empty, or has a negative [member size]. </description> </method> <method name="intersection" qualifiers="const"> diff --git a/doc/classes/AESContext.xml b/doc/classes/AESContext.xml index 69cd54a79b..7f582e4be7 100644 --- a/doc/classes/AESContext.xml +++ b/doc/classes/AESContext.xml @@ -45,6 +45,7 @@ public class Example : Node { public AESContext Aes = new AESContext(); + public override void _Ready() { string key = "My secret key!!!"; // Key must be either 16 or 32 bytes. diff --git a/doc/classes/AStarGrid2D.xml b/doc/classes/AStarGrid2D.xml new file mode 100644 index 0000000000..331862ebfa --- /dev/null +++ b/doc/classes/AStarGrid2D.xml @@ -0,0 +1,188 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="AStarGrid2D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + A* (or "A-Star") pathfinding tailored to find the shortest paths on 2D grids. + </brief_description> + <description> + Compared to [AStar2D] you don't need to manually create points or connect them together. It also supports multiple type of heuristics and modes for diagonal movement. This class also provides a jumping mode which is faster to calculate than without it in the [AStar2D] class. + In contrast to [AStar2D], you only need set the [member size] of the grid, optionally set the [member cell_size] and then call the [method update] method: + [codeblocks] + [gdscript] + var astar_grid = AStarGrid2D.new() + astar_grid.size = Vector2i(32, 32) + astar_grid.cell_size = Vector2(16, 16) + astar_grid.update() + print(astar_grid.get_id_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, 0), (1, 1), (2, 2), (3, 3), (3, 4) + print(astar_grid.get_point_path(Vector2i(0, 0), Vector2i(3, 4))) # prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64) + [/gdscript] + [csharp] + AStarGrid2D astarGrid = new AStarGrid2D(); + astarGrid.Size = new Vector2i(32, 32); + astarGrid.CellSize = new Vector2i(16, 16); + astarGrid.Update(); + GD.Print(astarGrid.GetIdPath(Vector2i.Zero, new Vector2i(3, 4))); // prints (0, 0), (1, 1), (2, 2), (3, 3), (3, 4) + GD.Print(astarGrid.GetPointPath(Vector2i.Zero, new Vector2i(3, 4))); // prints (0, 0), (16, 16), (32, 32), (48, 48), (48, 64) + [/csharp] + [/codeblocks] + </description> + <tutorials> + </tutorials> + <methods> + <method name="_compute_cost" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="from_id" type="Vector2i" /> + <param index="1" name="to_id" type="Vector2i" /> + <description> + Called when computing the cost between two connected points. + Note that this function is hidden in the default [code]AStarGrid2D[/code] class. + </description> + </method> + <method name="_estimate_cost" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="from_id" type="Vector2i" /> + <param index="1" name="to_id" type="Vector2i" /> + <description> + Called when estimating the cost between a point and the path's ending point. + Note that this function is hidden in the default [code]AStarGrid2D[/code] class. + </description> + </method> + <method name="clear"> + <return type="void" /> + <description> + Clears the grid and sets the [member size] to [constant Vector2i.ZERO]. + </description> + </method> + <method name="get_id_path"> + <return type="PackedVector2Array" /> + <param index="0" name="from_id" type="Vector2i" /> + <param index="1" name="to_id" type="Vector2i" /> + <description> + Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path. + </description> + </method> + <method name="get_point_path"> + <return type="PackedVector2Array" /> + <param index="0" name="from_id" type="Vector2i" /> + <param index="1" name="to_id" type="Vector2i" /> + <description> + Returns an array with the points that are in the path found by AStarGrid2D between the given points. The array is ordered from the starting point to the ending point of the path. + [b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty [PackedVector3Array] and will print an error message. + </description> + </method> + <method name="is_dirty" qualifiers="const"> + <return type="bool" /> + <description> + Indicates that the grid parameters were changed and [method update] needs to be called. + </description> + </method> + <method name="is_in_bounds" qualifiers="const"> + <return type="bool" /> + <param index="0" name="x" type="int" /> + <param index="1" name="y" type="int" /> + <description> + Returns [code]true[/code] if the [param x] and [param y] is a valid grid coordinate (id). + </description> + </method> + <method name="is_in_boundsv" qualifiers="const"> + <return type="bool" /> + <param index="0" name="id" type="Vector2i" /> + <description> + Returns [code]true[/code] if the [param id] vector is a valid grid coordinate. + </description> + </method> + <method name="is_point_solid" qualifiers="const"> + <return type="bool" /> + <param index="0" name="id" type="Vector2i" /> + <description> + Returns [code]true[/code] if a point is disabled for pathfinding. By default, all points are enabled. + </description> + </method> + <method name="set_point_solid"> + <return type="void" /> + <param index="0" name="id" type="Vector2i" /> + <param index="1" name="solid" type="bool" default="true" /> + <description> + Disables or enables the specified point for pathfinding. Useful for making an obstacle. By default, all points are enabled. + </description> + </method> + <method name="update"> + <return type="void" /> + <description> + Updates the internal state of the grid according to the parameters to prepare it to search the path. Needs to be called if parameters like [member size], [member cell_size] or [member offset] are changed. [method is_dirty] will return [code]true[/code] if this is the case and this needs to be called. + </description> + </method> + </methods> + <members> + <member name="cell_size" type="Vector2" setter="set_cell_size" getter="get_cell_size" default="Vector2(1, 1)"> + The size of the point cell which will be applied to calculate the resulting point position returned by [method get_point_path]. If changed, [method update] needs to be called before finding the next path. + </member> + <member name="default_heuristic" type="int" setter="set_default_heuristic" getter="get_default_heuristic" enum="AStarGrid2D.Heuristic" default="0"> + The default [enum Heuristic] which will be used to calculate the path if [method _compute_cost] and/or [method _estimate_cost] were not overridden. + </member> + <member name="diagonal_mode" type="int" setter="set_diagonal_mode" getter="get_diagonal_mode" enum="AStarGrid2D.DiagonalMode" default="0"> + A specific [enum DiagonalMode] mode which will force the path to avoid or accept the specified diagonals. + </member> + <member name="jumping_enabled" type="bool" setter="set_jumping_enabled" getter="is_jumping_enabled" default="false"> + Enables or disables jumping to skip up the intermediate points and speeds up the searching algorithm. + </member> + <member name="offset" type="Vector2" setter="set_offset" getter="get_offset" default="Vector2(0, 0)"> + The offset of the grid which will be applied to calculate the resulting point position returned by [method get_point_path]. If changed, [method update] needs to be called before finding the next path. + </member> + <member name="size" type="Vector2i" setter="set_size" getter="get_size" default="Vector2i(0, 0)"> + The size of the grid (number of cells of size [member cell_size] on each axis). If changed, [method update] needs to be called before finding the next path. + </member> + </members> + <constants> + <constant name="HEURISTIC_EUCLIDEAN" value="0" enum="Heuristic"> + The Euclidean heuristic to be used for the pathfinding using the following formula: + [codeblock] + dx = abs(to_id.x - from_id.x) + dy = abs(to_id.y - from_id.y) + result = sqrt(dx * dx + dy * dy) + [/codeblock] + </constant> + <constant name="HEURISTIC_MANHATTAN" value="1" enum="Heuristic"> + The Manhattan heuristic to be used for the pathfinding using the following formula: + [codeblock] + dx = abs(to_id.x - from_id.x) + dy = abs(to_id.y - from_id.y) + result = dx + dy + [/codeblock] + </constant> + <constant name="HEURISTIC_OCTILE" value="2" enum="Heuristic"> + The Octile heuristic to be used for the pathfinding using the following formula: + [codeblock] + dx = abs(to_id.x - from_id.x) + dy = abs(to_id.y - from_id.y) + f = sqrt(2) - 1 + result = (dx < dy) ? f * dx + dy : f * dy + dx; + [/codeblock] + </constant> + <constant name="HEURISTIC_CHEBYSHEV" value="3" enum="Heuristic"> + The Chebyshev heuristic to be used for the pathfinding using the following formula: + [codeblock] + dx = abs(to_id.x - from_id.x) + dy = abs(to_id.y - from_id.y) + result = max(dx, dy) + [/codeblock] + </constant> + <constant name="HEURISTIC_MAX" value="4" enum="Heuristic"> + Represents the size of the [enum Heuristic] enum. + </constant> + <constant name="DIAGONAL_MODE_ALWAYS" value="0" enum="DiagonalMode"> + The pathfinding algorithm will ignore solid neighbors around the target cell and allow passing using diagonals. + </constant> + <constant name="DIAGONAL_MODE_NEVER" value="1" enum="DiagonalMode"> + The pathfinding algorithm will ignore all diagonals and the way will be always orthogonal. + </constant> + <constant name="DIAGONAL_MODE_AT_LEAST_ONE_WALKABLE" value="2" enum="DiagonalMode"> + The pathfinding algorithm will avoid using diagonals if at least two obstacles have been placed around the neighboring cells of the specific path segment. + </constant> + <constant name="DIAGONAL_MODE_ONLY_IF_NO_OBSTACLES" value="3" enum="DiagonalMode"> + The pathfinding algorithm will avoid using diagonals if any obstacle has been placed around the neighboring cells of the specific path segment. + </constant> + <constant name="DIAGONAL_MODE_MAX" value="4" enum="DiagonalMode"> + Represents the size of the [enum DiagonalMode] enum. + </constant> + </constants> +</class> diff --git a/doc/classes/AcceptDialog.xml b/doc/classes/AcceptDialog.xml index c83ea8c60a..b5a1461876 100644 --- a/doc/classes/AcceptDialog.xml +++ b/doc/classes/AcceptDialog.xml @@ -99,8 +99,11 @@ </signal> </signals> <theme_items> + <theme_item name="buttons_separation" data_type="constant" type="int" default="10"> + The size of the vertical space between the dialog's content and the button row. + </theme_item> <theme_item name="panel" data_type="style" type="StyleBox"> - Panel that fills up the background of the window. + The panel that fills the background of the window. </theme_item> </theme_items> </class> diff --git a/doc/classes/AnimatedSprite2D.xml b/doc/classes/AnimatedSprite2D.xml index b207eda27f..afbe34816a 100644 --- a/doc/classes/AnimatedSprite2D.xml +++ b/doc/classes/AnimatedSprite2D.xml @@ -5,6 +5,8 @@ </brief_description> <description> [AnimatedSprite2D] is similar to the [Sprite2D] node, except it carries multiple textures as animation frames. Animations are created using a [SpriteFrames] resource, which allows you to import image files (or a folder containing said files) to provide the animation frames for the sprite. The [SpriteFrames] resource can be configured in the editor via the SpriteFrames bottom panel. + After setting up [member frames], [method play] may be called. It's also possible to select an [member animation] and toggle [member playing], even within the editor. + To pause the current animation, call [method stop] or set [member playing] to [code]false[/code]. Alternatively, setting [member speed_scale] to [code]0[/code] also preserves the current frame's elapsed time. [b]Note:[/b] You can associate a set of normal or specular maps by creating additional [SpriteFrames] resources with a [code]_normal[/code] or [code]_specular[/code] suffix. For example, having 3 [SpriteFrames] resources [code]run[/code], [code]run_normal[/code], and [code]run_specular[/code] will make it so the [code]run[/code] animation uses normal and specular maps. </description> <tutorials> @@ -17,13 +19,14 @@ <param index="0" name="anim" type="StringName" default="&""" /> <param index="1" name="backwards" type="bool" default="false" /> <description> - Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. If [code]backwards[/code] is [code]true[/code], the animation will be played in reverse. + Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. If [param backwards] is [code]true[/code], the animation is played in reverse. </description> </method> <method name="stop"> <return type="void" /> <description> - Stops the current animation (does not reset the frame counter). + Stops the current [member animation] at the current [member frame]. + [b]Note:[/b] This method resets the current frame's elapsed time. If this behavior is undesired, consider setting [member speed_scale] to [code]0[/code], instead. </description> </method> </methods> @@ -50,10 +53,10 @@ The texture's drawing offset. </member> <member name="playing" type="bool" setter="set_playing" getter="is_playing" default="false"> - If [code]true[/code], the [member animation] is currently playing. + If [code]true[/code], the [member animation] is currently playing. Setting this property to [code]false[/code] is the equivalent of calling [method stop]. </member> <member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale" default="1.0"> - The animation speed is multiplied by this value. + The animation speed is multiplied by this value. If set to a negative value, the animation is played in reverse. If set to [code]0[/code], the animation is paused, preserving the current frame's elapsed time. </member> </members> <signals> diff --git a/doc/classes/AnimatedSprite3D.xml b/doc/classes/AnimatedSprite3D.xml index 68354f092c..09baf882fb 100644 --- a/doc/classes/AnimatedSprite3D.xml +++ b/doc/classes/AnimatedSprite3D.xml @@ -4,29 +4,27 @@ 2D sprite node in 3D world, that can use multiple 2D textures for animation. </brief_description> <description> - Animations are created using a [SpriteFrames] resource, which can be configured in the editor via the SpriteFrames panel. + [AnimatedSprite3D] is similar to the [Sprite3D] node, except it carries multiple textures as animation [member frames]. Animations are created using a [SpriteFrames] resource, which allows you to import image files (or a folder containing said files) to provide the animation frames for the sprite. The [SpriteFrames] resource can be configured in the editor via the SpriteFrames bottom panel. + After setting up [member frames], [method play] may be called. It's also possible to select an [member animation] and toggle [member playing], even within the editor. + To pause the current animation, call [method stop] or set [member playing] to [code]false[/code]. Alternatively, setting [member speed_scale] to [code]0[/code] also preserves the current frame's elapsed time. </description> <tutorials> <link title="2D Sprite animation (also applies to 3D)">$DOCS_URL/tutorials/2d/2d_sprite_animation.html</link> </tutorials> <methods> - <method name="is_playing" qualifiers="const"> - <return type="bool" /> - <description> - Returns [code]true[/code] if an animation is currently being played. - </description> - </method> <method name="play"> <return type="void" /> <param index="0" name="anim" type="StringName" default="&""" /> + <param index="1" name="backwards" type="bool" default="false" /> <description> - Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. + Plays the animation named [param anim]. If no [param anim] is provided, the current animation is played. If [param backwards] is [code]true[/code], the animation is played in reverse. </description> </method> <method name="stop"> <return type="void" /> <description> - Stops the current animation (does not reset the frame counter). + Stops the current [member animation] at the current [member frame]. + [b]Note:[/b] This method resets the current frame's elapsed time. If this behavior is undesired, consider setting [member speed_scale] to [code]0[/code], instead. </description> </method> </methods> @@ -40,8 +38,11 @@ <member name="frames" type="SpriteFrames" setter="set_sprite_frames" getter="get_sprite_frames"> The [SpriteFrames] resource containing the animation(s). </member> - <member name="playing" type="bool" setter="_set_playing" getter="_is_playing" default="false"> - If [code]true[/code], the [member animation] is currently playing. + <member name="playing" type="bool" setter="set_playing" getter="is_playing" default="false"> + If [code]true[/code], the [member animation] is currently playing. Setting this property to [code]false[/code] is the equivalent of calling [method stop]. + </member> + <member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale" default="1.0"> + The animation speed is multiplied by this value. If set to a negative value, the animation is played in reverse. If set to [code]0[/code], the animation is paused, preserving the current frame's elapsed time. </member> </members> <signals> diff --git a/doc/classes/AnimatedTexture.xml b/doc/classes/AnimatedTexture.xml index 5ad4c4e10a..f0c86ba47b 100644 --- a/doc/classes/AnimatedTexture.xml +++ b/doc/classes/AnimatedTexture.xml @@ -5,18 +5,18 @@ </brief_description> <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. + The playback of the animation is controlled by the [member speed_scale] property, as well as each frame's duration (see [method set_frame_duration]). 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. [b]Note:[/b] AnimatedTexture doesn't support using [AtlasTexture]s. Each frame needs to be a separate [Texture2D]. </description> <tutorials> </tutorials> <methods> - <method name="get_frame_delay" qualifiers="const"> + <method name="get_frame_duration" qualifiers="const"> <return type="float" /> <param index="0" name="frame" type="int" /> <description> - Returns the given frame's delay value. + Returns the given [param frame]'s duration, in seconds. </description> </method> <method name="get_frame_texture" qualifiers="const"> @@ -26,19 +26,12 @@ Returns the given frame's [Texture2D]. </description> </method> - <method name="set_frame_delay"> + <method name="set_frame_duration"> <return type="void" /> <param index="0" name="frame" type="int" /> - <param index="1" name="delay" type="float" /> + <param index="1" name="duration" type="float" /> <description> - Sets an additional delay (in seconds) between this frame and the next one, that will be added to the time interval defined by [member fps]. By default, frames have no delay defined. If a delay value is defined, the final time interval between this frame and the next will be [code]1.0 / fps + delay[/code]. - For example, for an animation with 3 frames, 2 FPS and a frame delay on the second frame of 1.2, the resulting playback will be: - [codeblock] - Frame 0: 0.5 s (1 / fps) - Frame 1: 1.7 s (1 / fps + 1.2) - Frame 2: 0.5 s (1 / fps) - Total duration: 2.7 s - [/codeblock] + Sets the duration of any given [param frame]. The final duration is affected by the [member speed_scale]. If set to [code]0[/code], the frame is skipped during playback. </description> </method> <method name="set_frame_texture"> @@ -55,19 +48,18 @@ <member name="current_frame" type="int" setter="set_current_frame" getter="get_current_frame"> Sets the currently visible frame of the texture. </member> - <member name="fps" type="float" setter="set_fps" getter="get_fps" default="4.0"> - Animation speed in frames per second. This value defines the default time interval between two frames of the animation, and thus the overall duration of the animation loop based on the [member frames] property. A value of 0 means no predefined number of frames per second, the animation will play according to each frame's frame delay (see [method set_frame_delay]). - For example, an animation with 8 frames, no frame delay and a [code]fps[/code] value of 2 will run for 4 seconds, with each frame lasting 0.5 seconds. - </member> <member name="frames" type="int" setter="set_frames" getter="get_frames" default="1"> Number of frames to use in the animation. While you can create the frames independently with [method set_frame_texture], you need to set this value for the animation to take new frames into account. The maximum number of frames is [constant MAX_FRAMES]. </member> - <member name="oneshot" type="bool" setter="set_oneshot" getter="get_oneshot" default="false"> + <member name="one_shot" type="bool" setter="set_one_shot" getter="get_one_shot" default="false"> If [code]true[/code], the animation will only play once and will not loop back to the first frame after reaching the end. Note that reaching the end will not set [member pause] to [code]true[/code]. </member> <member name="pause" type="bool" setter="set_pause" getter="get_pause" default="false"> If [code]true[/code], the animation will pause where it currently is (i.e. at [member current_frame]). The animation will continue from where it was paused when changing this property to [code]false[/code]. </member> + <member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale" default="1.0"> + The animation speed is multiplied by this value. If set to a negative value, the animation is played in reverse. + </member> </members> <constants> <constant name="MAX_FRAMES" value="256"> diff --git a/doc/classes/AnimationNodeBlendTree.xml b/doc/classes/AnimationNodeBlendTree.xml index 4c7943ece3..2a765ac8d6 100644 --- a/doc/classes/AnimationNodeBlendTree.xml +++ b/doc/classes/AnimationNodeBlendTree.xml @@ -87,6 +87,14 @@ The global offset of all sub-nodes. </member> </members> + <signals> + <signal name="node_changed"> + <param index="0" name="node_name" type="StringName" /> + <description> + Emitted when the input port information is changed. + </description> + </signal> + </signals> <constants> <constant name="CONNECTION_OK" value="0"> The connection was successful. diff --git a/doc/classes/AnimationNodeTransition.xml b/doc/classes/AnimationNodeTransition.xml index d574bc044d..f6e2fc5eb2 100644 --- a/doc/classes/AnimationNodeTransition.xml +++ b/doc/classes/AnimationNodeTransition.xml @@ -40,12 +40,12 @@ </method> </methods> <members> + <member name="enabled_inputs" type="int" setter="set_enabled_inputs" getter="get_enabled_inputs" default="0"> + The number of enabled input ports for this node. + </member> <member name="from_start" type="bool" setter="set_from_start" getter="is_from_start" default="true"> If [code]true[/code], the destination animation is played back from the beginning when switched. </member> - <member name="input_count" type="int" setter="set_enabled_inputs" getter="get_enabled_inputs" default="0"> - The number of available input ports for this node. - </member> <member name="xfade_curve" type="Curve" setter="set_xfade_curve" getter="get_xfade_curve"> </member> <member name="xfade_time" type="float" setter="set_xfade_time" getter="get_xfade_time" default="0.0"> diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml index 710dc55a4b..d24703203b 100644 --- a/doc/classes/AnimationPlayer.xml +++ b/doc/classes/AnimationPlayer.xml @@ -268,6 +268,11 @@ [b]Note:[/b] This signal is not emitted if an animation is looping. </description> </signal> + <signal name="animation_list_changed"> + <description> + Notifies when an animation list is changed. + </description> + </signal> <signal name="animation_started"> <param index="0" name="anim_name" type="StringName" /> <description> diff --git a/doc/classes/AnimationTree.xml b/doc/classes/AnimationTree.xml index f2bf74f495..27797b00b5 100644 --- a/doc/classes/AnimationTree.xml +++ b/doc/classes/AnimationTree.xml @@ -54,6 +54,13 @@ The root animation node of this [AnimationTree]. See [AnimationNode]. </member> </members> + <signals> + <signal name="animation_player_changed"> + <description> + Emitted when the [member anim_player] is changed. + </description> + </signal> + </signals> <constants> <constant name="ANIMATION_PROCESS_PHYSICS" value="0" enum="AnimationProcessCallback"> The animations will progress during the physics frame (i.e. [method Node._physics_process]). diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml index f1e40d4979..29592f133d 100644 --- a/doc/classes/Area2D.xml +++ b/doc/classes/Area2D.xml @@ -25,10 +25,24 @@ <method name="get_overlapping_bodies" qualifiers="const"> <return type="Node2D[]" /> <description> - Returns a list of intersecting [PhysicsBody2D]s. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. + Returns a list of intersecting [PhysicsBody2D]s and [TileMap]s. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> + <method name="has_overlapping_areas" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [Area2D]s, otherwise returns [code]false[/code]. The overlapping area's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping areas is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> + <method name="has_overlapping_bodies" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [PhysicsBody2D]s or [TileMap]s, otherwise returns [code]false[/code]. The overlapping body's [member CollisionObject2D.collision_layer] must be part of this area's [member CollisionObject2D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping bodies is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> <method name="overlaps_area" qualifiers="const"> <return type="bool" /> <param index="0" name="area" type="Node" /> diff --git a/doc/classes/Area3D.xml b/doc/classes/Area3D.xml index 14081918cf..ce49be9bc1 100644 --- a/doc/classes/Area3D.xml +++ b/doc/classes/Area3D.xml @@ -23,10 +23,24 @@ <method name="get_overlapping_bodies" qualifiers="const"> <return type="Node3D[]" /> <description> - Returns a list of intersecting [PhysicsBody3D]s. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. + Returns a list of intersecting [PhysicsBody3D]s and [GridMap]s. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. </description> </method> + <method name="has_overlapping_areas" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [Area3D]s, otherwise returns [code]false[/code]. The overlapping area's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping areas is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> + <method name="has_overlapping_bodies" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if intersecting any [PhysicsBody3D]s or [GridMap]s, otherwise returns [code]false[/code]. The overlapping body's [member CollisionObject3D.collision_layer] must be part of this area's [member CollisionObject3D.collision_mask] in order to be detected. + For performance reasons (collisions are all processed at the same time) the list of overlapping bodies is modified once during the physics step, not immediately after objects are moved. Consider using signals instead. + </description> + </method> <method name="overlaps_area" qualifiers="const"> <return type="bool" /> <param index="0" name="area" type="Node" /> diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml index f6d926031d..d8c4b8fdb5 100644 --- a/doc/classes/Array.xml +++ b/doc/classes/Array.xml @@ -53,6 +53,15 @@ </constructor> <constructor name="Array"> <return type="Array" /> + <param index="0" name="base" type="Array" /> + <param index="1" name="type" type="int" /> + <param index="2" name="class_name" type="StringName" /> + <param index="3" name="script" type="Variant" /> + <description> + </description> + </constructor> + <constructor name="Array"> + <return type="Array" /> <param index="0" name="from" type="Array" /> <description> Constructs an [Array] as a copy of the given [Array]. @@ -303,6 +312,21 @@ [b]Note:[/b] Calling this function is not the same as writing [code]array[0][/code]. If the array is empty, accessing by index will pause project execution when running from the editor. </description> </method> + <method name="get_typed_builtin" qualifiers="const"> + <return type="int" /> + <description> + </description> + </method> + <method name="get_typed_class_name" qualifiers="const"> + <return type="StringName" /> + <description> + </description> + </method> + <method name="get_typed_script" qualifiers="const"> + <return type="Variant" /> + <description> + </description> + </method> <method name="has" qualifiers="const"> <return type="bool" /> <param index="0" name="value" type="Variant" /> @@ -366,6 +390,16 @@ Returns [code]true[/code] if the array is empty. </description> </method> + <method name="is_read_only" qualifiers="const"> + <return type="bool" /> + <description> + </description> + </method> + <method name="is_typed" qualifiers="const"> + <return type="bool" /> + <description> + </description> + </method> <method name="map" qualifiers="const"> <return type="Array" /> <param index="0" name="method" type="Callable" /> @@ -479,6 +513,20 @@ Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array. </description> </method> + <method name="set_read_only"> + <return type="void" /> + <param index="0" name="enable" type="bool" /> + <description> + </description> + </method> + <method name="set_typed"> + <return type="void" /> + <param index="0" name="type" type="int" /> + <param index="1" name="class_name" type="StringName" /> + <param index="2" name="script" type="Variant" /> + <description> + </description> + </method> <method name="shuffle"> <return type="void" /> <description> @@ -556,6 +604,12 @@ [/codeblocks] </description> </method> + <method name="typed_assign"> + <return type="bool" /> + <param index="0" name="array" type="Array" /> + <description> + </description> + </method> </methods> <operators> <operator name="operator !="> diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml index c766becce2..ab948dd0de 100644 --- a/doc/classes/ArrayMesh.xml +++ b/doc/classes/ArrayMesh.xml @@ -61,7 +61,7 @@ <return type="void" /> <param index="0" name="primitive" type="int" enum="Mesh.PrimitiveType" /> <param index="1" name="arrays" type="Array" /> - <param index="2" name="blend_shapes" type="Array" default="[]" /> + <param index="2" name="blend_shapes" type="Array[]" default="[]" /> <param index="3" name="lods" type="Dictionary" default="{}" /> <param index="4" name="compress_flags" type="int" default="0" /> <description> diff --git a/doc/classes/AudioEffectCapture.xml b/doc/classes/AudioEffectCapture.xml index c2a5ec3b45..bac9167223 100644 --- a/doc/classes/AudioEffectCapture.xml +++ b/doc/classes/AudioEffectCapture.xml @@ -5,10 +5,12 @@ </brief_description> <description> AudioEffectCapture is an AudioEffect which copies all audio frames from the attached audio effect bus into its internal ring buffer. - Application code should consume these audio frames from this ring buffer using [method get_buffer] and process it as needed, for example to capture data from a microphone, implement application defined effects, or to transmit audio over the network. When capturing audio data from a microphone, the format of the samples will be stereo 32-bit floating point PCM. + Application code should consume these audio frames from this ring buffer using [method get_buffer] and process it as needed, for example to capture data from an [AudioStreamMicrophone], implement application-defined effects, or to transmit audio over the network. When capturing audio data from a microphone, the format of the samples will be stereo 32-bit floating point PCM. + [b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be [code]true[/code] for audio input to work. See also that setting's description for caveats related to permissions and operating system privacy settings. </description> <tutorials> <link title="Audio buses">$DOCS_URL/tutorials/audio/audio_buses.html</link> + <link title="Audio Mic Record Demo">https://github.com/godotengine/godot-demo-projects/tree/master/audio/mic_record</link> </tutorials> <methods> <method name="can_get_buffer" qualifiers="const"> diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml index 8dc80e3bdc..36f12dd5c4 100644 --- a/doc/classes/AudioServer.xml +++ b/doc/classes/AudioServer.xml @@ -33,6 +33,7 @@ <return type="PackedStringArray" /> <description> Returns the names of all audio input devices detected on the system. + [b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be [code]true[/code] for audio input to work. See also that setting's description for caveats related to permissions and operating system privacy settings. </description> </method> <method name="generate_bus_layout" qualifiers="const"> @@ -302,7 +303,8 @@ Number of available audio buses. </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 get_device_list]). On systems with multiple audio inputs (such as analog, USB and HDMI audio), this can be used to select the audio input device. The value [code]"Default"[/code] will record audio on the system-wide default audio input. If an invalid device name is set, the value will be reverted back to [code]"Default"[/code]. + Name of the current device for audio input (see [method capture_get_device_list]). On systems with multiple audio inputs (such as analog, USB and HDMI audio), this can be used to select the audio input device. The value [code]"Default"[/code] will record audio on the system-wide default audio input. If an invalid device name is set, the value will be reverted back to [code]"Default"[/code]. + [b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be [code]true[/code] for audio input to work. See also that setting's description for caveats related to permissions and operating system privacy settings. </member> <member name="device" type="String" setter="set_device" getter="get_device" default=""Default""> Name of the current device for audio output (see [method get_device_list]). On systems with multiple audio outputs (such as analog, USB and HDMI audio), this can be used to select the audio output device. The value [code]"Default"[/code] will play audio on the system-wide default audio output. If an invalid device name is set, the value will be reverted back to [code]"Default"[/code]. diff --git a/doc/classes/AudioStreamMicrophone.xml b/doc/classes/AudioStreamMicrophone.xml index e760bd526a..be3e91e037 100644 --- a/doc/classes/AudioStreamMicrophone.xml +++ b/doc/classes/AudioStreamMicrophone.xml @@ -1,9 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="AudioStreamMicrophone" inherits="AudioStream" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + Plays real-time audio input data. </brief_description> <description> + When used directly in an [AudioStreamPlayer] node, [AudioStreamMicrophone] plays back microphone input in real-time. This can be used in conjunction with [AudioEffectCapture] to process the data or save it. + [b]Note:[/b] [member ProjectSettings.audio/driver/enable_input] must be [code]true[/code] for audio input to work. See also that setting's description for caveats related to permissions and operating system privacy settings. </description> <tutorials> + <link title="Audio Mic Record Demo">https://github.com/godotengine/godot-demo-projects/tree/master/audio/mic_record</link> </tutorials> </class> diff --git a/doc/classes/BaseMaterial3D.xml b/doc/classes/BaseMaterial3D.xml index 2262c4fe47..cbb58a3e1e 100644 --- a/doc/classes/BaseMaterial3D.xml +++ b/doc/classes/BaseMaterial3D.xml @@ -28,7 +28,7 @@ <return type="Texture2D" /> <param index="0" name="param" type="int" enum="BaseMaterial3D.TextureParam" /> <description> - Returns the [Texture] associated with the specified [enum TextureParam]. + Returns the [Texture2D] associated with the specified [enum TextureParam]. </description> </method> <method name="set_feature"> @@ -194,10 +194,13 @@ The emitted light's color. See [member emission_enabled]. </member> <member name="emission_enabled" type="bool" setter="set_feature" getter="get_feature" default="false"> - If [code]true[/code], the body emits light. Emitting light makes the object appear brighter. The object can also cast light on other objects if a [VoxelGI] is used and this object is used in baked lighting. + If [code]true[/code], the body emits light. Emitting light makes the object appear brighter. The object can also cast light on other objects if a [VoxelGI], SDFGI, or [LightmapGI] is used and this object is used in baked lighting. </member> - <member name="emission_energy" type="float" setter="set_emission_energy" getter="get_emission_energy" default="1.0"> - The emitted light's strength. See [member emission_enabled]. + <member name="emission_energy_multiplier" type="float" setter="set_emission_energy_multiplier" getter="get_emission_energy_multiplier" default="1.0"> + Multiplier for emitted light. See [member emission_enabled]. + </member> + <member name="emission_intensity" type="float" setter="set_emission_intensity" getter="get_emission_intensity"> + Luminance of emitted light, measured in nits (candela per square meter). Only available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled. The default is roughly equivalent to an indoor lightbulb. </member> <member name="emission_on_uv2" type="bool" setter="set_flag" getter="get_flag" default="false"> Use [code]UV2[/code] to read from the [member emission_texture]. diff --git a/doc/classes/BitMap.xml b/doc/classes/BitMap.xml index 9323642274..b3fa55f154 100644 --- a/doc/classes/BitMap.xml +++ b/doc/classes/BitMap.xml @@ -17,7 +17,7 @@ </method> <method name="create"> <return type="void" /> - <param index="0" name="size" type="Vector2" /> + <param index="0" name="size" type="Vector2i" /> <description> Creates a bitmap with the specified size, filled with [code]false[/code]. </description> @@ -32,13 +32,21 @@ </method> <method name="get_bit" qualifiers="const"> <return type="bool" /> - <param index="0" name="position" type="Vector2" /> + <param index="0" name="x" type="int" /> + <param index="1" name="y" type="int" /> + <description> + Returns bitmap's value at the specified position. + </description> + </method> + <method name="get_bitv" qualifiers="const"> + <return type="bool" /> + <param index="0" name="position" type="Vector2i" /> <description> Returns bitmap's value at the specified position. </description> </method> <method name="get_size" qualifiers="const"> - <return type="Vector2" /> + <return type="Vector2i" /> <description> Returns bitmap's dimensions. </description> @@ -52,14 +60,14 @@ <method name="grow_mask"> <return type="void" /> <param index="0" name="pixels" type="int" /> - <param index="1" name="rect" type="Rect2" /> + <param index="1" name="rect" type="Rect2i" /> <description> Applies morphological dilation or erosion to the bitmap. If [param pixels] is positive, dilation is applied to the bitmap. If [param pixels] is negative, erosion is applied to the bitmap. [param rect] defines the area where the morphological operation is applied. Pixels located outside the [param rect] are unaffected by [method grow_mask]. </description> </method> <method name="opaque_to_polygons" qualifiers="const"> <return type="PackedVector2Array[]" /> - <param index="0" name="rect" type="Rect2" /> + <param index="0" name="rect" type="Rect2i" /> <param index="1" name="epsilon" type="float" default="2.0" /> <description> Creates an [Array] of polygons covering a rectangular portion of the bitmap. It uses a marching squares algorithm, followed by Ramer-Douglas-Peucker (RDP) reduction of the number of vertices. Each polygon is described as a [PackedVector2Array] of its vertices. @@ -72,26 +80,35 @@ </method> <method name="resize"> <return type="void" /> - <param index="0" name="new_size" type="Vector2" /> + <param index="0" name="new_size" type="Vector2i" /> <description> Resizes the image to [param new_size]. </description> </method> <method name="set_bit"> <return type="void" /> - <param index="0" name="position" type="Vector2" /> - <param index="1" name="bit" type="bool" /> + <param index="0" name="x" type="int" /> + <param index="1" name="y" type="int" /> + <param index="2" name="bit" type="bool" /> <description> Sets the bitmap's element at the specified position, to the specified value. </description> </method> <method name="set_bit_rect"> <return type="void" /> - <param index="0" name="rect" type="Rect2" /> + <param index="0" name="rect" type="Rect2i" /> <param index="1" name="bit" type="bool" /> <description> Sets a rectangular portion of the bitmap to the specified value. </description> </method> + <method name="set_bitv"> + <return type="void" /> + <param index="0" name="position" type="Vector2i" /> + <param index="1" name="bit" type="bool" /> + <description> + Sets the bitmap's element at the specified position, to the specified value. + </description> + </method> </methods> </class> diff --git a/doc/classes/BoneAttachment3D.xml b/doc/classes/BoneAttachment3D.xml index dc3d448621..f29525038e 100644 --- a/doc/classes/BoneAttachment3D.xml +++ b/doc/classes/BoneAttachment3D.xml @@ -16,10 +16,11 @@ Returns the [NodePath] to the external [Skeleton3D] node, if one has been set. </description> </method> - <method name="get_override_mode" qualifiers="const"> + <method name="get_override_mode" qualifiers="const" is_deprecated="true"> <return type="int" /> <description> - Returns the override mode for the BoneAttachment3D node. + Deprecated. Local pose overrides will be removed. + Returns the override mode for the BoneAttachment3D node (0=global / 1=local). </description> </method> <method name="get_override_pose" qualifiers="const"> @@ -48,11 +49,12 @@ Sets the [NodePath] to the external skeleton that the BoneAttachment3D node should use. The external [Skeleton3D] node is only used when [code]use_external_skeleton[/code] is set to [code]true[/code]. </description> </method> - <method name="set_override_mode"> + <method name="set_override_mode" is_deprecated="true"> <return type="void" /> <param index="0" name="override_mode" type="int" /> <description> - Sets the override mode for the BoneAttachment3D node. The override mode defines which of the bone poses the BoneAttachment3D node will override. + Deprecated. Local pose overrides will be removed. + Sets the override mode for the BoneAttachment3D node (0=global / 1=local). The override mode defines which of the bone poses the BoneAttachment3D node will override. </description> </method> <method name="set_override_pose"> diff --git a/doc/classes/BoxContainer.xml b/doc/classes/BoxContainer.xml index 65ceab3e30..a06b0e9c4b 100644 --- a/doc/classes/BoxContainer.xml +++ b/doc/classes/BoxContainer.xml @@ -22,13 +22,25 @@ <member name="alignment" type="int" setter="set_alignment" getter="get_alignment" enum="BoxContainer.AlignmentMode" default="0"> The alignment of the container's children (must be one of [constant ALIGNMENT_BEGIN], [constant ALIGNMENT_CENTER], or [constant ALIGNMENT_END]). </member> + <member name="vertical" type="bool" setter="set_vertical" getter="is_vertical" default="false"> + If [code]true[/code], the [BoxContainer] will arrange its children vertically, rather than horizontally. + Can't be changed when using [HBoxContainer] and [VBoxContainer]. + </member> </members> <constants> <constant name="ALIGNMENT_BEGIN" value="0" enum="AlignmentMode"> + The child controls will be arranged at the beginning of the container, i.e. top if orientation is vertical, left if orientation is horizontal (right for RTL layout). </constant> <constant name="ALIGNMENT_CENTER" value="1" enum="AlignmentMode"> + The child controls will be centered in the container. </constant> <constant name="ALIGNMENT_END" value="2" enum="AlignmentMode"> + The child controls will be arranged at the end of the container, i.e. bottom if orientation is vertical, right if orientation is horizontal (left for RTL layout). </constant> </constants> + <theme_items> + <theme_item name="separation" data_type="constant" type="int" default="4"> + The space between the [BoxContainer]'s elements, in pixels. + </theme_item> + </theme_items> </class> diff --git a/doc/classes/Callable.xml b/doc/classes/Callable.xml index 6838bdeb70..dd48ee6790 100644 --- a/doc/classes/Callable.xml +++ b/doc/classes/Callable.xml @@ -75,6 +75,17 @@ <return type="void" /> <description> Calls the method represented by this [Callable] in deferred mode, i.e. during the idle frame. Arguments can be passed and should match the method's signature. + [codeblock] + func _ready(): + grab_focus.call_deferred() + [/codeblock] + </description> + </method> + <method name="callv" qualifiers="const"> + <return type="Variant" /> + <param index="0" name="arguments" type="Array" /> + <description> + Calls the method represented by this [Callable]. Contrary to [method call], this method does not take a variable number of arguments but expects all arguments to be passed via a single [Array]. </description> </method> <method name="get_method" qualifiers="const"> diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml index edb5235b75..a1d24f778d 100644 --- a/doc/classes/Camera2D.xml +++ b/doc/classes/Camera2D.xml @@ -7,7 +7,7 @@ Camera node for 2D scenes. It forces the screen (current layer) to scroll following this node. This makes it easier (and faster) to program scrollable scenes than manually changing the position of [CanvasItem]-based nodes. Cameras register themselves in the nearest [Viewport] node (when ascending the tree). Only one camera can be active per viewport. If no viewport is available ascending the tree, the camera will register in the global viewport. This node is intended to be a simple helper to get things going quickly, but more functionality may be desired to change how the camera works. To make your own custom camera node, inherit it from [Node2D] and change the transform of the canvas by setting [member Viewport.canvas_transform] in [Viewport] (you can obtain the current [Viewport] by using [method Node.get_viewport]). - Note that the [Camera2D] node's [code]position[/code] doesn't represent the actual position of the screen, which may differ due to applied smoothing or limits. You can use [method get_camera_screen_center] to get the real position. + Note that the [Camera2D] node's [code]position[/code] doesn't represent the actual position of the screen, which may differ due to applied smoothing or limits. You can use [method get_screen_center_position] to get the real position. </description> <tutorials> <link title="2D Platformer Demo">https://godotengine.org/asset-library/asset/120</link> @@ -27,20 +27,6 @@ Forces the camera to update scroll immediately. </description> </method> - <method name="get_camera_position" qualifiers="const"> - <return type="Vector2" /> - <description> - Returns the camera's [code]position[/code] (the tracked point the camera attempts to follow), relative to the origin. - [b]Note:[/b] The returned value is not the same as [member Node2D.position] or [member Node2D.global_position], as it is affected by the [code]drag[/code] properties. - </description> - </method> - <method name="get_camera_screen_center" qualifiers="const"> - <return type="Vector2" /> - <description> - Returns the location of the [Camera2D]'s screen-center, relative to the origin. - [b]Note:[/b] The real [code]position[/code] of the camera may be different, see [method get_camera_position]. - </description> - </method> <method name="get_drag_margin" qualifiers="const"> <return type="float" /> <param index="0" name="margin" type="int" enum="Side" /> @@ -55,6 +41,20 @@ Returns the camera limit for the specified [enum Side]. See also [member limit_bottom], [member limit_top], [member limit_left], and [member limit_right]. </description> </method> + <method name="get_screen_center_position" qualifiers="const"> + <return type="Vector2" /> + <description> + Returns the center of the screen from this camera's point of view, in global coordinates. + [b]Note:[/b] The exact targeted position of the camera may be different. See [method get_target_position]. + </description> + </method> + <method name="get_target_position" qualifiers="const"> + <return type="Vector2" /> + <description> + Returns this camera's target position, in global coordinates. + [b]Note:[/b] The returned value is not the same as [member Node2D.global_position], as it is affected by the drag properties. It is also not the same as the current position if [member smoothing_enabled] is [code]true[/code] (see [method get_screen_center_position]). + </description> + </method> <method name="reset_smoothing"> <return type="void" /> <description> @@ -124,6 +124,9 @@ <member name="editor_draw_screen" type="bool" setter="set_screen_drawing_enabled" getter="is_screen_drawing_enabled" default="true"> If [code]true[/code], draws the camera's screen rectangle in the editor. </member> + <member name="ignore_rotation" type="bool" setter="set_ignore_rotation" getter="is_ignoring_rotation" default="true"> + If [code]true[/code], the camera's rendered view is not affected by its [member Node2D.rotation] and [member Node2D.global_rotation]. + </member> <member name="limit_bottom" type="int" setter="set_limit" getter="get_limit" default="10000000"> Bottom scroll limit in pixels. The camera stops moving when reaching this value, but [member offset] can push the view past the limit. </member> @@ -147,9 +150,6 @@ <member name="process_callback" type="int" setter="set_process_callback" getter="get_process_callback" enum="Camera2D.Camera2DProcessCallback" default="1"> The camera's process callback. See [enum Camera2DProcessCallback]. </member> - <member name="rotating" type="bool" setter="set_rotating" getter="is_rotating" default="false"> - If [code]true[/code], the camera view rotates with the target. - </member> <member name="smoothing_enabled" type="bool" setter="set_enable_follow_smoothing" getter="is_follow_smoothing_enabled" default="false"> If [code]true[/code], the camera smoothly moves towards the target at [member smoothing_speed]. </member> diff --git a/doc/classes/Camera3D.xml b/doc/classes/Camera3D.xml index 65fdecc3c6..322c4f0bf4 100644 --- a/doc/classes/Camera3D.xml +++ b/doc/classes/Camera3D.xml @@ -150,6 +150,9 @@ </method> </methods> <members> + <member name="attributes" type="CameraAttributes" setter="set_attributes" getter="get_attributes"> + The [CameraAttributes] to use for this camera. + </member> <member name="cull_mask" type="int" setter="set_cull_mask" getter="get_cull_mask" default="1048575"> The culling mask that describes which 3D render layers are rendered by this camera. </member> @@ -160,9 +163,6 @@ <member name="doppler_tracking" type="int" setter="set_doppler_tracking" getter="get_doppler_tracking" enum="Camera3D.DopplerTracking" default="0"> If not [constant DOPPLER_TRACKING_DISABLED], this camera will simulate the [url=https://en.wikipedia.org/wiki/Doppler_effect]Doppler effect[/url] for objects changed in particular [code]_process[/code] methods. See [enum DopplerTracking] for possible values. </member> - <member name="effects" type="CameraEffects" setter="set_effects" getter="get_effects"> - The [CameraEffects] to use for this camera. - </member> <member name="environment" type="Environment" setter="set_environment" getter="get_environment"> The [Environment] to use for this camera. </member> diff --git a/doc/classes/CameraAttributes.xml b/doc/classes/CameraAttributes.xml new file mode 100644 index 0000000000..a741728c14 --- /dev/null +++ b/doc/classes/CameraAttributes.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="CameraAttributes" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Parent class for camera settings. + </brief_description> + <description> + Controls camera-specific attributes such as depth of field and exposure override. + When used in a [WorldEnvironment] it provides default settings for exposure, auto-exposure, and depth of field that will be used by all cameras without their own [CameraAttributes], including the editor camera. When used in a [Camera3D] it will override any [CameraAttributes] set in the [WorldEnvironment]. When used in [VoxelGI] or [LightmapGI], only the exposure settings will be used. + See also [Environment] for general 3D environment settings. + This is a pure virtual class that is inherited by [CameraAttributesPhysical] and [CameraAttributesPractical]. + </description> + <tutorials> + </tutorials> + <members> + <member name="auto_exposure_enabled" type="bool" setter="set_auto_exposure_enabled" getter="is_auto_exposure_enabled"> + If [code]true[/code], enables the tonemapping auto exposure mode of the scene renderer. If [code]true[/code], the renderer will automatically determine the exposure setting to adapt to the scene's illumination and the observed light. + </member> + <member name="auto_exposure_scale" type="float" setter="set_auto_exposure_scale" getter="get_auto_exposure_scale"> + The scale of the auto exposure effect. Affects the intensity of auto exposure. + </member> + <member name="auto_exposure_speed" type="float" setter="set_auto_exposure_speed" getter="get_auto_exposure_speed"> + The speed of the auto exposure effect. Affects the time needed for the camera to perform auto exposure. + </member> + <member name="exposure_multiplier" type="float" setter="set_exposure_multiplier" getter="get_exposure_multiplier"> + Multiplier for the exposure amount. A higher value results in a brighter image. + </member> + <member name="exposure_sensitivity" type="float" setter="set_exposure_sensitivity" getter="get_exposure_sensitivity"> + Sensitivity of camera sensors, measured in ISO. A higher sensitivity results in a brighter image. Only available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled. When [member auto_exposure_enabled] this can be used as a method of exposure compensation, doubling the value will increase the exposure value (measured in EV100) by 1 stop. + </member> + </members> +</class> diff --git a/doc/classes/CameraAttributesPhysical.xml b/doc/classes/CameraAttributesPhysical.xml new file mode 100644 index 0000000000..a61e735932 --- /dev/null +++ b/doc/classes/CameraAttributesPhysical.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="CameraAttributesPhysical" inherits="CameraAttributes" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Physically-based camera settings. + </brief_description> + <description> + [CameraAttributesPhysical] is used to set rendering settings based on a physically-based camera's settings. It is responsible for exposure, auto-exposure, and depth of field. + When used in a [WorldEnvironment] it provides default settings for exposure, auto-exposure, and depth of field that will be used by all cameras without their own [CameraAttributes], including the editor camera. When used in a [Camera3D] it will override any [CameraAttributes] set in the [WorldEnvironment] and will override the [Camera3D]s [member Camera3D.far], [member Camera3D.near], [member Camera3D.fov], and [member Camera3D.keep_aspect] properties. When used in [VoxelGI] or [LightmapGI], only the exposure settings will be used. + The default settings are intended for use in an outdoor environment, tips for settings for use in an indoor environment can be found in each setting's documentation. + </description> + <tutorials> + </tutorials> + <methods> + <method name="get_fov" qualifiers="const"> + <return type="float" /> + <description> + Returns the vertical field of view that corresponds to the [member frustum_focal_length]. This value is calculated internally whenever [member frustum_focal_length] is changed. + </description> + </method> + </methods> + <members> + <member name="auto_exposure_max_exposure_value" type="float" setter="set_auto_exposure_max_exposure_value" getter="get_auto_exposure_max_exposure_value" default="10.0"> + The maximum luminance (in EV100) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing below a certain brightness, resulting in a cut off point where the scene will remain bright. + </member> + <member name="auto_exposure_min_exposure_value" type="float" setter="set_auto_exposure_min_exposure_value" getter="get_auto_exposure_min_exposure_value" default="-8.0"> + The minimum luminance luminance (in EV100) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing above a certain brightness, resulting in a cut off point where the scene will remain dark. + </member> + <member name="exposure_aperture" type="float" setter="set_aperture" getter="get_aperture" default="16.0"> + Size of the aperture of the camera, measured in f-stops. An f-stop is a unitless ratio between the focal length of the camera and the diameter of the aperture. A high aperture setting will result in a smaller aperture which leads to a dimmer image and sharper focus. A low aperture results in a wide aperture which lets in more light resulting in a brighter, less-focused image. Default is appropriate for outdoors at daytime (i.e. for use with a default [DirectionalLight3D]), for indoor lighting, a value between 2 and 4 is more appropriate. + Only available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled. + </member> + <member name="exposure_shutter_speed" type="float" setter="set_shutter_speed" getter="get_shutter_speed" default="100.0"> + Time for shutter to open and close, measured in seconds. A higher value will let in more light leading to a brighter image, while a lower amount will let in less light leading to a darker image. + Only available when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled. + </member> + <member name="frustum_far" type="float" setter="set_far" getter="get_far" default="4000.0"> + Override value for [member Camera3D.far]. Used internally when calculating depth of field. When attached to a [Camera3D] as its [member Camera3D.attributes], it will override the [member Camera3D.far] property. + </member> + <member name="frustum_focal_length" type="float" setter="set_focal_length" getter="get_focal_length" default="35.0"> + Distance between camera lens and camera aperture, measured in millimeters. Controls field of view and depth of field. A larger focal length will result in a smaller field of view and a narrower depth of field meaning fewer objects will be in focus. A smaller focal length will result in a wider field of view and a larger depth of field meaning more objects will be in focus. When attached to a [Camera3D] as its [member Camera3D.attributes], it will override the [member Camera3D.fov] property and the [member Camera3D.keep_aspect] property. + </member> + <member name="frustum_focus_distance" type="float" setter="set_focus_distance" getter="get_focus_distance" default="10.0"> + Distance from camera of object that will be in focus, measured in meters. Internally this will be clamped to be at least 1 millimeter larger than [member frustum_focal_length]. + </member> + <member name="frustum_near" type="float" setter="set_near" getter="get_near" default="0.05"> + Override value for [member Camera3D.near]. Used internally when calculating depth of field. When attached to a [Camera3D] as its [member Camera3D.attributes], it will override the [member Camera3D.near] property. + </member> + </members> +</class> diff --git a/doc/classes/CameraAttributesPractical.xml b/doc/classes/CameraAttributesPractical.xml new file mode 100644 index 0000000000..924b02fc79 --- /dev/null +++ b/doc/classes/CameraAttributesPractical.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="CameraAttributesPractical" inherits="CameraAttributes" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Camera settings in an easy to use format. + </brief_description> + <description> + Controls camera-specific attributes such as auto-exposure, depth of field, and exposure override. + When used in a [WorldEnvironment] it provides default settings for exposure, auto-exposure, and depth of field that will be used by all cameras without their own [CameraAttributes], including the editor camera. When used in a [Camera3D] it will override any [CameraAttributes] set in the [WorldEnvironment]. When used in [VoxelGI] or [LightmapGI], only the exposure settings will be used. + </description> + <tutorials> + </tutorials> + <members> + <member name="auto_exposure_max_sensitivity" type="float" setter="set_auto_exposure_max_sensitivity" getter="get_auto_exposure_max_sensitivity" default="800.0"> + The maximum sensitivity (in ISO) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing below a certain brightness, resulting in a cut off point where the scene will remain bright. + </member> + <member name="auto_exposure_min_sensitivity" type="float" setter="set_auto_exposure_min_sensitivity" getter="get_auto_exposure_min_sensitivity" default="0.0"> + The minimum sensitivity (in ISO) used when calculating auto exposure. When calculating scene average luminance, color values will be clamped to at least this value. This limits the auto-exposure from exposing above a certain brightness, resulting in a cut off point where the scene will remain dark. + </member> + <member name="dof_blur_amount" type="float" setter="set_dof_blur_amount" getter="get_dof_blur_amount" default="0.1"> + Sets the maximum amount of blur. When using physically-based blur amounts, will instead act as a multiplier. High values lead to an increased amount of bluriness, but can be much more expensive to calculate. It is best to keep this as low as possible for a given art style. + </member> + <member name="dof_blur_far_distance" type="float" setter="set_dof_blur_far_distance" getter="get_dof_blur_far_distance" default="10.0"> + Objects further from the [Camera3D] by this amount will be blurred by the depth of field effect. Measured in meters. + </member> + <member name="dof_blur_far_enabled" type="bool" setter="set_dof_blur_far_enabled" getter="is_dof_blur_far_enabled" default="false"> + Enables depth of field blur for objects further than [member dof_blur_far_distance]. Strength of blur is controlled by [member dof_blur_amount] and modulated by [member dof_blur_far_transition]. + </member> + <member name="dof_blur_far_transition" type="float" setter="set_dof_blur_far_transition" getter="get_dof_blur_far_transition" default="5.0"> + When positive, distance over which (starting from [member dof_blur_far_distance]) blur effect will scale from 0 to [member dof_blur_amount]. When negative, uses physically-based scaling so depth of field effect will scale from 0 at [member dof_blur_far_distance] and will increase in a physically accurate way as objects get further from the [Camera3D]. + </member> + <member name="dof_blur_near_distance" type="float" setter="set_dof_blur_near_distance" getter="get_dof_blur_near_distance" default="2.0"> + Objects closer from the [Camera3D] by this amount will be blurred by the depth of field effect. Measured in meters. + </member> + <member name="dof_blur_near_enabled" type="bool" setter="set_dof_blur_near_enabled" getter="is_dof_blur_near_enabled" default="false"> + Enables depth of field blur for objects closer than [member dof_blur_near_distance]. Strength of blur is controlled by [member dof_blur_amount] and modulated by [member dof_blur_near_transition]. + </member> + <member name="dof_blur_near_transition" type="float" setter="set_dof_blur_near_transition" getter="get_dof_blur_near_transition" default="1.0"> + When positive, distance over which blur effect will scale from 0 to [member dof_blur_amount], ending at [member dof_blur_near_distance]. When negative, uses physically-based scaling so depth of field effect will scale from 0 at [member dof_blur_near_distance] and will increase in a physically accurate way as objects get closer to the [Camera3D]. + </member> + </members> +</class> diff --git a/doc/classes/CameraEffects.xml b/doc/classes/CameraEffects.xml deleted file mode 100644 index c108b30f23..0000000000 --- a/doc/classes/CameraEffects.xml +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="CameraEffects" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> - <brief_description> - Contains camera-specific effects such as depth of field and exposure override. - </brief_description> - <description> - Contains camera-specific effects such as depth of field and exposure override. - See also [Environment] for general 3D environment settings. - </description> - <tutorials> - </tutorials> - <members> - <member name="dof_blur_amount" type="float" setter="set_dof_blur_amount" getter="get_dof_blur_amount" default="0.1"> - The amount of blur for both near and far depth-of-field effects. The amount of blur increases the radius of the blur effect, making the affected area blurrier. However, If the amount is too high, you might start to see lines appearing, especially when using a low quality blur. - </member> - <member name="dof_blur_far_distance" type="float" setter="set_dof_blur_far_distance" getter="get_dof_blur_far_distance" default="10.0"> - The distance from the camera where the far blur effect affects the rendering. - </member> - <member name="dof_blur_far_enabled" type="bool" setter="set_dof_blur_far_enabled" getter="is_dof_blur_far_enabled" default="false"> - If [code]true[/code], enables the depth-of-field far blur effect. This has a significant performance cost. Consider disabling it in scenes where there are no far away objects. - </member> - <member name="dof_blur_far_transition" type="float" setter="set_dof_blur_far_transition" getter="get_dof_blur_far_transition" default="5.0"> - The length of the transition between the no-blur area and far blur. - </member> - <member name="dof_blur_near_distance" type="float" setter="set_dof_blur_near_distance" getter="get_dof_blur_near_distance" default="2.0"> - Distance from the camera where the near blur effect affects the rendering. - </member> - <member name="dof_blur_near_enabled" type="bool" setter="set_dof_blur_near_enabled" getter="is_dof_blur_near_enabled" default="false"> - If [code]true[/code], enables the depth-of-field near blur effect. This has a significant performance cost. Consider disabling it in scenes where there are no nearby objects. - </member> - <member name="dof_blur_near_transition" type="float" setter="set_dof_blur_near_transition" getter="get_dof_blur_near_transition" default="1.0"> - The length of the transition between the near blur and no-blur area. - </member> - <member name="override_exposure" type="float" setter="set_override_exposure" getter="get_override_exposure" default="1.0"> - The exposure override value to use. Higher values will result in a brighter scene. Only effective if [member override_exposure_enabled] is [code]true[/code]. - </member> - <member name="override_exposure_enabled" type="bool" setter="set_override_exposure_enabled" getter="is_override_exposure_enabled" default="false"> - If [code]true[/code], overrides the manual or automatic exposure defined in the [Environment] with the value in [member override_exposure]. - </member> - </members> -</class> diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml index d1fdca5814..d74f49c897 100644 --- a/doc/classes/CanvasItem.xml +++ b/doc/classes/CanvasItem.xml @@ -5,7 +5,7 @@ </brief_description> <description> Base class of anything 2D. Canvas items are laid out in a tree; children inherit and extend their parent's transform. [CanvasItem] is extended by [Control] for anything GUI-related, and by [Node2D] for anything related to the 2D engine. - Any [CanvasItem] can draw. For this, [method update] is called by the engine, then [constant NOTIFICATION_DRAW] will be received on idle time to request redraw. Because of this, canvas items don't need to be redrawn on every frame, improving the performance significantly. Several functions for drawing on the [CanvasItem] are provided (see [code]draw_*[/code] functions). However, they can only be used inside [method _draw], its corresponding [method Object._notification] or methods connected to the [signal draw] signal. + Any [CanvasItem] can draw. For this, [method queue_redraw] is called by the engine, then [constant NOTIFICATION_DRAW] will be received on idle time to request redraw. Because of this, canvas items don't need to be redrawn on every frame, improving the performance significantly. Several functions for drawing on the [CanvasItem] are provided (see [code]draw_*[/code] functions). However, they can only be used inside [method _draw], its corresponding [method Object._notification] or methods connected to the [signal draw] signal. Canvas items are drawn in tree order. By default, children are on top of their parents so a root [CanvasItem] will be drawn behind everything. This behavior can be changed on a per-item basis. A [CanvasItem] can also be hidden, which will also hide its children. It provides many ways to change parameters such as modulation (for itself and its children) and self modulation (only for itself), as well as its blend mode. Ultimately, a transform notification can be requested, which will notify the node that its global position changed in case the parent tree changed. @@ -20,7 +20,7 @@ <method name="_draw" qualifiers="virtual"> <return type="void" /> <description> - Called when [CanvasItem] has been requested to redraw (when [method update] is called, either manually or by the engine). + Called when [CanvasItem] has been requested to redraw (after [method queue_redraw] is called, either manually or by the engine). Corresponds to the [constant NOTIFICATION_DRAW] notification in [method Object._notification]. </description> </method> @@ -310,16 +310,16 @@ # If using this method in a script that redraws constantly, move the # `default_font` declaration to a member variable assigned in `_ready()` # so the Control is only created once. - var default_font = Control.new().get_font("font") - var default_font_size = Control.new().get_font_size("font_size") - draw_string(default_font, Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, font_size) + var default_font = ThemeDB.fallback_font + var default_font_size = ThemeDB.fallback_font_size + draw_string(default_font, Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, default_font_size) [/gdscript] [csharp] // If using this method in a script that redraws constantly, move the - // `default_font` declaration to a member variable assigned in `_ready()` + // `default_font` declaration to a member variable assigned in `_Ready()` // so the Control is only created once. - Font defaultFont = new Control().GetFont("font"); - int defaultFontSize = new Control().GetFontSize("font_size"); + Font defaultFont = ThemeDB.FallbackFont; + int defaultFontSize = ThemeDB.FallbackFontSize; DrawString(defaultFont, new Vector2(64, 64), "Hello world", HORIZONTAL_ALIGNMENT_LEFT, -1, defaultFontSize); [/csharp] [/codeblocks] @@ -500,6 +500,19 @@ Transformations issued by [param event]'s inputs are applied in local space instead of global space. </description> </method> + <method name="move_to_front"> + <return type="void" /> + <description> + Moves this node to display on top of its siblings. This has more use in [Control], as [Node2D] can be ordered with [member Node2D.z_index]. + Internally, the node is moved to the bottom of parent's children list. The method has no effect on nodes without a parent. + </description> + </method> + <method name="queue_redraw"> + <return type="void" /> + <description> + Queues the [CanvasItem] to redraw. During idle time, if [CanvasItem] is visible, [constant NOTIFICATION_DRAW] is sent and [method _draw] is called. This only occurs [b]once[/b] per frame, even if this method has been called multiple times. + </description> + </method> <method name="set_notify_local_transform"> <return type="void" /> <param index="0" name="enable" type="bool" /> @@ -520,12 +533,6 @@ Show the [CanvasItem] if it's currently hidden. This is equivalent to setting [member visible] to [code]true[/code]. For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead. </description> </method> - <method name="update"> - <return type="void" /> - <description> - Queues the [CanvasItem] to redraw. During idle time, if [CanvasItem] is visible, [constant NOTIFICATION_DRAW] is sent and [method _draw] is called. This only occurs [b]once[/b] per frame, even if this method has been called multiple times. - </description> - </method> </methods> <members> <member name="clip_children" type="bool" setter="set_clip_children" getter="is_clipping_children" default="false"> diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml index 555137ac45..50c0860d1f 100644 --- a/doc/classes/CanvasLayer.xml +++ b/doc/classes/CanvasLayer.xml @@ -36,7 +36,8 @@ The custom [Viewport] node assigned to the [CanvasLayer]. If [code]null[/code], uses the default viewport instead. </member> <member name="follow_viewport_enabled" type="bool" setter="set_follow_viewport" getter="is_following_viewport" default="false"> - Sets the layer to follow the viewport in order to simulate a pseudo 3D effect. + If enabled, the [CanvasLayer] will use the viewport's transform, so it will move when camera moves instead of being anchored in a fixed position on the screen. + Together with [member follow_viewport_scale] it can be used for a pseudo 3D effect. </member> <member name="follow_viewport_scale" type="float" setter="set_follow_viewport_scale" getter="get_follow_viewport_scale" default="1.0"> Scales the layer when using [member follow_viewport_enabled]. Layers moving into the foreground should have increasing scales, while layers moving into the background should have decreasing scales. diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml index d39b75ae52..2ffe880971 100644 --- a/doc/classes/CheckBox.xml +++ b/doc/classes/CheckBox.xml @@ -35,7 +35,7 @@ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)"> The [CheckBox] text's font color when it's pressed. </theme_item> - <theme_item name="check_v_adjust" data_type="constant" type="int" default="0"> + <theme_item name="check_v_offset" data_type="constant" type="int" default="0"> The vertical offset used when rendering the check icons (in pixels). </theme_item> <theme_item name="h_separation" data_type="constant" type="int" default="4"> diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml index f49da69926..2f584103be 100644 --- a/doc/classes/CheckButton.xml +++ b/doc/classes/CheckButton.xml @@ -35,7 +35,7 @@ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)"> The [CheckButton] text's font color when it's pressed. </theme_item> - <theme_item name="check_v_adjust" data_type="constant" type="int" default="0"> + <theme_item name="check_v_offset" data_type="constant" type="int" default="0"> The vertical offset used when rendering the toggle icons (in pixels). </theme_item> <theme_item name="h_separation" data_type="constant" type="int" default="4"> @@ -50,30 +50,30 @@ <theme_item name="font_size" data_type="font_size" type="int"> Font size of the [CheckButton]'s text. </theme_item> - <theme_item name="off" data_type="icon" type="Texture2D"> - The icon to display when the [CheckButton] is unchecked (for left-to-right layouts). - </theme_item> - <theme_item name="off_disabled" data_type="icon" type="Texture2D"> - The icon to display when the [CheckButton] is unchecked and disabled (for left-to-right layouts). - </theme_item> - <theme_item name="off_disabled_mirrored" data_type="icon" type="Texture2D"> - The icon to display when the [CheckButton] is unchecked and disabled (for right-to-left layouts). - </theme_item> - <theme_item name="off_mirrored" data_type="icon" type="Texture2D"> - The icon to display when the [CheckButton] is unchecked (for right-to-left layouts). - </theme_item> - <theme_item name="on" data_type="icon" type="Texture2D"> + <theme_item name="checked" data_type="icon" type="Texture2D"> The icon to display when the [CheckButton] is checked (for left-to-right layouts). </theme_item> - <theme_item name="on_disabled" data_type="icon" type="Texture2D"> + <theme_item name="checked_disabled" data_type="icon" type="Texture2D"> The icon to display when the [CheckButton] is checked and disabled (for left-to-right layouts). </theme_item> - <theme_item name="on_disabled_mirrored" data_type="icon" type="Texture2D"> + <theme_item name="checked_disabled_mirrored" data_type="icon" type="Texture2D"> The icon to display when the [CheckButton] is checked and disabled (for right-to-left layouts). </theme_item> - <theme_item name="on_mirrored" data_type="icon" type="Texture2D"> + <theme_item name="checked_mirrored" data_type="icon" type="Texture2D"> The icon to display when the [CheckButton] is checked (for right-to-left layouts). </theme_item> + <theme_item name="unchecked" data_type="icon" type="Texture2D"> + The icon to display when the [CheckButton] is unchecked (for left-to-right layouts). + </theme_item> + <theme_item name="unchecked_disabled" data_type="icon" type="Texture2D"> + The icon to display when the [CheckButton] is unchecked and disabled (for left-to-right layouts). + </theme_item> + <theme_item name="unchecked_disabled_mirrored" data_type="icon" type="Texture2D"> + The icon to display when the [CheckButton] is unchecked and disabled (for right-to-left layouts). + </theme_item> + <theme_item name="unchecked_mirrored" data_type="icon" type="Texture2D"> + The icon to display when the [CheckButton] is unchecked (for right-to-left layouts). + </theme_item> <theme_item name="disabled" data_type="style" type="StyleBox"> The [StyleBox] to display as a background when the [CheckButton] is disabled. </theme_item> diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml index 705d2282c1..e992d6f9d4 100644 --- a/doc/classes/ColorPicker.xml +++ b/doc/classes/ColorPicker.xml @@ -55,6 +55,7 @@ <member name="presets_visible" type="bool" setter="set_presets_visible" getter="are_presets_visible" default="true"> If [code]true[/code], saved color presets are visible. </member> + <member name="vertical" type="bool" setter="set_vertical" getter="is_vertical" overrides="BoxContainer" default="true" /> </members> <signals> <signal name="color_changed"> diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml index d3ad4e6e4b..7ba53f852b 100644 --- a/doc/classes/ConfigFile.xml +++ b/doc/classes/ConfigFile.xml @@ -98,6 +98,12 @@ Removes the entire contents of the config. </description> </method> + <method name="encode_to_text" qualifiers="const"> + <return type="String" /> + <description> + Obtain the text version of this config file (the same text that would be written to a file). + </description> + </method> <method name="erase_section"> <return type="void" /> <param index="0" name="section" type="String" /> diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index 0e71dbd0b1..7b9bf0fa37 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -553,6 +553,7 @@ <return type="void" /> <description> Steal the focus from another control and become the focused control (see [member focus_mode]). + [b]Note[/b]: Using this method together with [method Callable.call_deferred] makes it more reliable, especially when called inside [method Node._ready]. </description> </method> <method name="has_focus" qualifiers="const"> @@ -971,7 +972,7 @@ <member name="clip_contents" type="bool" setter="set_clip_contents" getter="is_clipping_contents" default="false"> Enables whether rendering of [CanvasItem] based children should be clipped to this control's rectangle. If [code]true[/code], parts of a child which would be visibly outside of this control's rectangle will not be rendered and won't receive input. </member> - <member name="custom_minimum_size" type="Vector2" setter="set_custom_minimum_size" getter="get_custom_minimum_size" default="Vector2(0, 0)"> + <member name="custom_minimum_size" type="Vector2i" setter="set_custom_minimum_size" getter="get_custom_minimum_size" default="Vector2i(0, 0)"> The minimum size of the node's bounding rectangle. If you set it to a value greater than (0, 0), the node's bounding rectangle will always have at least this size, even if its content is smaller. If it's set to (0, 0), the node sizes automatically to fit its content, be it a texture or child nodes. </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode" default="0"> diff --git a/doc/classes/Crypto.xml b/doc/classes/Crypto.xml index dab2a77584..ade63225dc 100644 --- a/doc/classes/Crypto.xml +++ b/doc/classes/Crypto.xml @@ -110,7 +110,7 @@ <return type="CryptoKey" /> <param index="0" name="size" type="int" /> <description> - Generates an RSA [CryptoKey] that can be used for creating self-signed certificates and passed to [method StreamPeerSSL.accept_stream]. + Generates an RSA [CryptoKey] that can be used for creating self-signed certificates and passed to [method StreamPeerTLS.accept_stream]. </description> </method> <method name="generate_self_signed_certificate"> diff --git a/doc/classes/CryptoKey.xml b/doc/classes/CryptoKey.xml index 1f502846b4..7db810177f 100644 --- a/doc/classes/CryptoKey.xml +++ b/doc/classes/CryptoKey.xml @@ -5,7 +5,7 @@ </brief_description> <description> The CryptoKey class represents a cryptographic key. Keys can be loaded and saved like any other [Resource]. - They can be used to generate a self-signed [X509Certificate] via [method Crypto.generate_self_signed_certificate] and as private key in [method StreamPeerSSL.accept_stream] along with the appropriate certificate. + They can be used to generate a self-signed [X509Certificate] via [method Crypto.generate_self_signed_certificate] and as private key in [method StreamPeerTLS.accept_stream] along with the appropriate certificate. </description> <tutorials> </tutorials> diff --git a/doc/classes/Cubemap.xml b/doc/classes/Cubemap.xml index 7173388027..0cdebeda95 100644 --- a/doc/classes/Cubemap.xml +++ b/doc/classes/Cubemap.xml @@ -4,9 +4,9 @@ 6-sided texture typically used in 3D rendering. </brief_description> <description> - A cubemap is a 6-sided texture typically used for faking reflections in 3D rendering. It can be used to make an object look as if it's reflecting its surroundings. This usually delivers much better performance than other reflection methods. + A cubemap is made of 6 textures organized in layers. They are typically used for faking reflections (see [ReflectionProbe]) in 3D rendering. It can be used to make an object look as if it's reflecting its surroundings. This usually delivers much better performance than other reflection methods. This resource is typically used as a uniform in custom shaders. Few core Godot methods make use of Cubemap resources. - [b]Note:[/b] Godot doesn't support using cubemaps as a [PanoramaSkyMaterial]. You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cube map to an equirectangular sky map. + [b]Note:[/b] Godot doesn't support using cubemaps in a [PanoramaSkyMaterial]. You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cubemap to an equirectangular sky map. </description> <tutorials> </tutorials> diff --git a/doc/classes/CubemapArray.xml b/doc/classes/CubemapArray.xml index 4fca842b5a..7f001155e4 100644 --- a/doc/classes/CubemapArray.xml +++ b/doc/classes/CubemapArray.xml @@ -1,8 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="CubemapArray" inherits="ImageTextureLayered" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + A single composite texture resource which consists of multiple [Cubemap]s. </brief_description> <description> + [CubemapArray]s are made of an array of [Cubemap]s. Accordingly, like [Cubemap]s they are made of multiple textures the amount of which must be divisible by 6 (one image for each face of the cube). The primary benefit of [CubemapArray]s is that they can be accessed in shader code using a single texture reference. In other words, you can pass multiple [Cubemap]s into a shader using a single [CubemapArray]. + Generally, [CubemapArray]s provide a more efficent way for storing multiple [Cubemap]s, than storing multiple [Cubemap]s themselves in an array. + Internally Godot, uses [CubemapArray]s for many effects including the [Sky], if you set [member ProjectSettings.rendering/reflections/sky_reflections/texture_array_reflections] to [code]true[/code]. + [b]Note:[/b] [CubemapArray] is not supported in the OpenGL 3 rendering backend. </description> <tutorials> </tutorials> diff --git a/doc/classes/Curve.xml b/doc/classes/Curve.xml index ae9add995b..20b9dafd0d 100644 --- a/doc/classes/Curve.xml +++ b/doc/classes/Curve.xml @@ -74,27 +74,27 @@ Returns the right tangent angle (in degrees) for the point at [param index]. </description> </method> - <method name="interpolate" qualifiers="const"> + <method name="remove_point"> + <return type="void" /> + <param index="0" name="index" type="int" /> + <description> + Removes the point at [code]index[/code] from the curve. + </description> + </method> + <method name="sample" qualifiers="const"> <return type="float" /> <param index="0" name="offset" type="float" /> <description> Returns the Y value for the point that would exist at the X position [param offset] along the curve. </description> </method> - <method name="interpolate_baked" qualifiers="const"> + <method name="sample_baked" qualifiers="const"> <return type="float" /> <param index="0" name="offset" type="float" /> <description> Returns the Y value for the point that would exist at the X position [param offset] along the curve using the baked cache. Bakes the curve's points if not already baked. </description> </method> - <method name="remove_point"> - <return type="void" /> - <param index="0" name="index" type="int" /> - <description> - Removes the point at [param index] from the curve. - </description> - </method> <method name="set_point_left_mode"> <return type="void" /> <param index="0" name="index" type="int" /> diff --git a/doc/classes/Curve2D.xml b/doc/classes/Curve2D.xml index f15c0d74ca..cc4124d084 100644 --- a/doc/classes/Curve2D.xml +++ b/doc/classes/Curve2D.xml @@ -43,7 +43,7 @@ <return type="float" /> <param index="0" name="to_point" type="Vector2" /> <description> - Returns the closest offset to [param to_point]. This offset is meant to be used in [method interpolate_baked]. + Returns the closest offset to [param to_point]. This offset is meant to be used in [method sample_baked]. [param to_point] must be in this curve's local space. </description> </method> @@ -76,7 +76,14 @@ Returns the position of the vertex [param idx]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code]. </description> </method> - <method name="interpolate" qualifiers="const"> + <method name="remove_point"> + <return type="void" /> + <param index="0" name="idx" type="int" /> + <description> + Deletes the point [code]idx[/code] from the curve. Sends an error to the console if [code]idx[/code] is out of bounds. + </description> + </method> + <method name="sample" qualifiers="const"> <return type="Vector2" /> <param index="0" name="idx" type="int" /> <param index="1" name="t" type="float" /> @@ -85,7 +92,7 @@ If [param idx] is out of bounds it is truncated to the first or last vertex, and [param t] is ignored. If the curve has no points, the function sends an error to the console, and returns [code](0, 0)[/code]. </description> </method> - <method name="interpolate_baked" qualifiers="const"> + <method name="sample_baked" qualifiers="const"> <return type="Vector2" /> <param index="0" name="offset" type="float" /> <param index="1" name="cubic" type="bool" default="false" /> @@ -95,18 +102,11 @@ Cubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough). </description> </method> - <method name="interpolatef" qualifiers="const"> + <method name="samplef" qualifiers="const"> <return type="Vector2" /> <param index="0" name="fofs" type="float" /> <description> - Returns the position at the vertex [param fofs]. It calls [method interpolate] using the integer part of [param fofs] as [code]idx[/code], and its fractional part as [code]t[/code]. - </description> - </method> - <method name="remove_point"> - <return type="void" /> - <param index="0" name="idx" type="int" /> - <description> - Deletes the point [param idx] from the curve. Sends an error to the console if [param idx] is out of bounds. + Returns the position at the vertex [param fofs]. It calls [method sample] using the integer part of [param fofs] as [code]idx[/code], and its fractional part as [code]t[/code]. </description> </method> <method name="set_point_in"> diff --git a/doc/classes/Curve3D.xml b/doc/classes/Curve3D.xml index 0843453820..3e4e05f51a 100644 --- a/doc/classes/Curve3D.xml +++ b/doc/classes/Curve3D.xml @@ -56,7 +56,7 @@ <return type="float" /> <param index="0" name="to_point" type="Vector3" /> <description> - Returns the closest offset to [param to_point]. This offset is meant to be used in [method interpolate_baked] or [method interpolate_baked_up_vector]. + Returns the closest offset to [param to_point]. This offset is meant to be used in [method sample_baked] or [method sample_baked_up_vector]. [param to_point] must be in this curve's local space. </description> </method> @@ -96,7 +96,14 @@ Returns the tilt angle in radians for the point [param idx]. If the index is out of bounds, the function sends an error to the console, and returns [code]0[/code]. </description> </method> - <method name="interpolate" qualifiers="const"> + <method name="remove_point"> + <return type="void" /> + <param index="0" name="idx" type="int" /> + <description> + Deletes the point [code]idx[/code] from the curve. Sends an error to the console if [code]idx[/code] is out of bounds. + </description> + </method> + <method name="sample" qualifiers="const"> <return type="Vector3" /> <param index="0" name="idx" type="int" /> <param index="1" name="t" type="float" /> @@ -105,7 +112,7 @@ If [param idx] is out of bounds it is truncated to the first or last vertex, and [param t] is ignored. If the curve has no points, the function sends an error to the console, and returns [code](0, 0, 0)[/code]. </description> </method> - <method name="interpolate_baked" qualifiers="const"> + <method name="sample_baked" qualifiers="const"> <return type="Vector3" /> <param index="0" name="offset" type="float" /> <param index="1" name="cubic" type="bool" default="false" /> @@ -115,7 +122,7 @@ Cubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough). </description> </method> - <method name="interpolate_baked_up_vector" qualifiers="const"> + <method name="sample_baked_up_vector" qualifiers="const"> <return type="Vector3" /> <param index="0" name="offset" type="float" /> <param index="1" name="apply_tilt" type="bool" default="false" /> @@ -125,18 +132,11 @@ If the curve has no up vectors, the function sends an error to the console, and returns [code](0, 1, 0)[/code]. </description> </method> - <method name="interpolatef" qualifiers="const"> + <method name="samplef" qualifiers="const"> <return type="Vector3" /> <param index="0" name="fofs" type="float" /> <description> - Returns the position at the vertex [param fofs]. It calls [method interpolate] using the integer part of [param fofs] as [code]idx[/code], and its fractional part as [code]t[/code]. - </description> - </method> - <method name="remove_point"> - <return type="void" /> - <param index="0" name="idx" type="int" /> - <description> - Deletes the point [param idx] from the curve. Sends an error to the console if [param idx] is out of bounds. + Returns the position at the vertex [param fofs]. It calls [method sample] using the integer part of [param fofs] as [code]idx[/code], and its fractional part as [code]t[/code]. </description> </method> <method name="set_point_in"> diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml index 40b5e88fff..a86aff060d 100644 --- a/doc/classes/Dictionary.xml +++ b/doc/classes/Dictionary.xml @@ -4,7 +4,7 @@ Dictionary type. </brief_description> <description> - Dictionary type. Associative container which contains values referenced by unique keys. Dictionaries are composed of pairs of keys (which must be unique) and values. Dictionaries will preserve the insertion order when adding elements, even though this may not be reflected when printing the dictionary. In other programming languages, this data structure is sometimes referred to as a hash map or associative array. + Dictionary type. Associative container, which contains values referenced by unique keys. Dictionaries are composed of pairs of keys (which must be unique) and values. Dictionaries will preserve the insertion order when adding elements. In other programming languages, this data structure is sometimes referred to as a hash map or associative array. You can define a dictionary by placing a comma-separated list of [code]key: value[/code] pairs in curly braces [code]{}[/code]. Erasing elements while iterating over them [b]is not supported[/b] and will result in undefined behavior. [b]Note:[/b] Dictionaries are always passed by reference. To get a copy of a dictionary which can be modified independently of the original dictionary, use [method duplicate]. @@ -218,6 +218,14 @@ [b]Note:[/b] Don't erase elements while iterating over the dictionary. You can iterate over the [method keys] array instead. </description> </method> + <method name="find_key" qualifiers="const"> + <return type="Variant" /> + <param index="0" name="value" type="Variant" /> + <description> + Returns the first key whose associated value is equal to [param value], or [code]null[/code] if no such value is found. + [b]Note:[/b] [code]null[/code] is also a valid key. If you have it in your [Dictionary], the [method find_key] method can give misleading results. + </description> + </method> <method name="get" qualifiers="const"> <return type="Variant" /> <param index="0" name="key" type="Variant" /> diff --git a/doc/classes/Directory.xml b/doc/classes/DirAccess.xml index c9a9f346a5..af498a6519 100644 --- a/doc/classes/Directory.xml +++ b/doc/classes/DirAccess.xml @@ -1,18 +1,26 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="Directory" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="DirAccess" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Type used to handle the filesystem. </brief_description> <description> Directory type. It is used to manage directories and their content (not restricted to the project folder). - When creating a new [Directory], it must be explicitly opened using [method open] before most methods can be used. However, [method file_exists] and [method dir_exists] can be used without opening a directory. If so, they use a path relative to [code]res://[/code]. + [DirAccess] can't be instantiated directly. Instead it is created with a static method that takes a path for which it will be opened. + Most of the methods have a static alternative that can be used without creating a [DirAccess]. Static methods only support absolute paths (including [code]res://[/code] and [code]user://[/code]). + [codeblock] + # Standard + var dir = DirAccess.open("user://levels") + dir.make_dir("world1") + # Static + DirAccess.make_dir_absolute("user://levels/world1") + [/codeblock] [b]Note:[/b] Many resources types are imported (e.g. textures or sound files), and their source asset will not be included in the exported game, as only the imported version is used. Use [ResourceLoader] to access imported resources. Here is an example on how to iterate through the files of a directory: [codeblocks] [gdscript] func dir_contents(path): - var dir = Directory.new() - if dir.open(path) == OK: + var dir = DirAccess.open(path) + if dir: dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": @@ -27,8 +35,8 @@ [csharp] public void DirContents(string path) { - var dir = new Directory(); - if (dir.Open(path) == Error.Ok) + using var dir = DirAccess.Open(path); + if (dir != null) { dir.ListDirBegin(); string fileName = dir.GetNext(); @@ -59,7 +67,7 @@ <methods> <method name="change_dir"> <return type="int" enum="Error" /> - <param index="0" name="todir" type="String" /> + <param index="0" name="to_dir" type="String" /> <description> Changes the currently opened directory to the one passed as an argument. The argument can be relative to the current directory (e.g. [code]newdir[/code] or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/code] or [code]res://somedir/newdir[/code]). Returns one of the [enum Error] code constants ([code]OK[/code] on success). @@ -69,11 +77,22 @@ <return type="int" enum="Error" /> <param index="0" name="from" type="String" /> <param index="1" name="to" type="String" /> + <param index="2" name="chmod_flags" type="int" default="-1" /> <description> Copies the [param from] file to the [param to] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten. + If [param chmod_flags] is different than [code]-1[/code], the unix permissions for the destination path will be set to the provided value, if available on the current operating system. Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="copy_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="from" type="String" /> + <param index="1" name="to" type="String" /> + <param index="2" name="chmod_flags" type="int" default="-1" /> + <description> + Static version of [method copy]. Supports only absolute paths. + </description> + </method> <method name="current_is_dir" qualifiers="const"> <return type="bool" /> <description> @@ -85,7 +104,13 @@ <param index="0" name="path" type="String" /> <description> Returns whether the target directory exists. The argument can be relative to the current directory, or an absolute path. - If the [Directory] is not open, the path is relative to [code]res://[/code]. + </description> + </method> + <method name="dir_exists_absolute" qualifiers="static"> + <return type="bool" /> + <param index="0" name="path" type="String" /> + <description> + Static version of [method dir_exists]. Supports only absolute paths. </description> </method> <method name="file_exists"> @@ -93,11 +118,12 @@ <param index="0" name="path" type="String" /> <description> Returns whether the target file exists. The argument can be relative to the current directory, or an absolute path. - If the [Directory] is not open, the path is relative to [code]res://[/code]. + For a static equivalent, use [method FileAccess.file_exists]. </description> </method> - <method name="get_current_dir"> + <method name="get_current_dir" qualifiers="const"> <return type="String" /> + <param index="0" name="include_drive" type="bool" default="true" /> <description> Returns the absolute path to the currently opened directory (e.g. [code]res://folder[/code] or [code]C:\tmp\folder[/code]). </description> @@ -105,7 +131,7 @@ <method name="get_current_drive"> <return type="int" /> <description> - Returns the currently opened directory's drive index. See [method get_drive] to convert returned index to the name of the drive. + Returns the currently opened directory's drive index. See [method get_drive_name] to convert returned index to the name of the drive. </description> </method> <method name="get_directories"> @@ -115,17 +141,15 @@ Affected by [member include_hidden] and [member include_navigational]. </description> </method> - <method name="get_drive"> - <return type="String" /> - <param index="0" name="idx" type="int" /> + <method name="get_directories_at" qualifiers="static"> + <return type="PackedStringArray" /> + <param index="0" name="path" type="String" /> <description> - On Windows, returns the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]). - On macOS, returns the path to the mounted volume passed as an argument. - On Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument. - On other platforms, or if the requested drive does not exist, the method returns an empty String. + Returns a [PackedStringArray] containing filenames of the directory contents, excluding files, at the given [param path]. The array is sorted alphabetically. + Use [method get_directories] if you want more control of what gets included. </description> </method> - <method name="get_drive_count"> + <method name="get_drive_count" qualifiers="static"> <return type="int" /> <description> On Windows, returns the number of drives (partitions) mounted on the current filesystem. @@ -134,6 +158,16 @@ On other platforms, the method returns 0. </description> </method> + <method name="get_drive_name" qualifiers="static"> + <return type="String" /> + <param index="0" name="idx" type="int" /> + <description> + On Windows, returns the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]). + On macOS, returns the path to the mounted volume passed as an argument. + On Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument. + On other platforms, or if the requested drive does not exist, the method returns an empty String. + </description> + </method> <method name="get_files"> <return type="PackedStringArray" /> <description> @@ -141,11 +175,25 @@ Affected by [member include_hidden]. </description> </method> + <method name="get_files_at" qualifiers="static"> + <return type="PackedStringArray" /> + <param index="0" name="path" type="String" /> + <description> + Returns a [PackedStringArray] containing filenames of the directory contents, excluding directories, at the given [param path]. The array is sorted alphabetically. + Use [method get_files] if you want more control of what gets included. + </description> + </method> <method name="get_next"> <return type="String" /> <description> - Returns the next element (file or directory) in the current directory (including [code].[/code] and [code]..[/code], unless [code]skip_navigational[/code] was given to [method list_dir_begin]). - The name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty String and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case). + Returns the next element (file or directory) in the current directory. + The name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty [String] and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case). + </description> + </method> + <method name="get_open_error" qualifiers="static"> + <return type="int" enum="Error" /> + <description> + Returns the result of the last [method open] call in the current thread. </description> </method> <method name="get_space_left"> @@ -176,6 +224,13 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="make_dir_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="path" type="String" /> + <description> + Static version of [method make_dir]. Supports only absolute paths. + </description> + </method> <method name="make_dir_recursive"> <return type="int" enum="Error" /> <param index="0" name="path" type="String" /> @@ -184,12 +239,19 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> - <method name="open"> + <method name="make_dir_recursive_absolute" qualifiers="static"> <return type="int" enum="Error" /> <param index="0" name="path" type="String" /> <description> - Opens an existing directory of the filesystem. The [param path] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]). - Returns one of the [enum Error] code constants ([code]OK[/code] on success). + Static version of [method make_dir_recursive]. Supports only absolute paths. + </description> + </method> + <method name="open" qualifiers="static"> + <return type="DirAccess" /> + <param index="0" name="path" type="String" /> + <description> + Creates a new [DirAccess] object and opens an existing directory of the filesystem. The [param path] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]). + Returns [code]null[/code] if opening the directory failed. You can use [method get_open_error] to check the error that ocurred. </description> </method> <method name="remove"> @@ -201,6 +263,13 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="remove_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="path" type="String" /> + <description> + Static version of [method remove]. Supports only absolute paths. + </description> + </method> <method name="rename"> <return type="int" enum="Error" /> <param index="0" name="from" type="String" /> @@ -210,13 +279,21 @@ Returns one of the [enum Error] code constants ([code]OK[/code] on success). </description> </method> + <method name="rename_absolute" qualifiers="static"> + <return type="int" enum="Error" /> + <param index="0" name="from" type="String" /> + <param index="1" name="to" type="String" /> + <description> + Static version of [method rename]. Supports only absolute paths. + </description> + </method> </methods> <members> - <member name="include_hidden" type="bool" setter="set_include_hidden" getter="get_include_hidden" default="false"> + <member name="include_hidden" type="bool" setter="set_include_hidden" getter="get_include_hidden"> If [code]true[/code], hidden files are included when the navigating directory. Affects [method list_dir_begin], [method get_directories] and [method get_files]. </member> - <member name="include_navigational" type="bool" setter="set_include_navigational" getter="get_include_navigational" default="false"> + <member name="include_navigational" type="bool" setter="set_include_navigational" getter="get_include_navigational"> If [code]true[/code], [code].[/code] and [code]..[/code] are included when navigating the directory. Affects [method list_dir_begin] and [method get_directories]. </member> diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml index 35a2861c54..6d3f3a7362 100644 --- a/doc/classes/DisplayServer.xml +++ b/doc/classes/DisplayServer.xml @@ -104,6 +104,13 @@ <description> </description> </method> + <method name="get_accent_color" qualifiers="const"> + <return type="Color" /> + <description> + Returns OS theme accent color. Returns [code]Color(0, 0, 0, 0)[/code], if accent color is unknown. + [b]Note:[/b] This method is implemented on macOS and Windows. + </description> + </method> <method name="get_display_cutouts" qualifiers="const"> <return type="Rect2[]" /> <description> @@ -148,9 +155,10 @@ <param index="0" name="menu_root" type="String" /> <param index="1" name="label" type="String" /> <param index="2" name="callback" type="Callable" /> - <param index="3" name="tag" type="Variant" default="null" /> - <param index="4" name="accelerator" type="int" enum="Key" default="0" /> - <param index="5" name="index" type="int" default="-1" /> + <param index="3" name="key_callback" type="Callable" /> + <param index="4" name="tag" type="Variant" default="null" /> + <param index="5" name="accelerator" type="int" enum="Key" default="0" /> + <param index="6" name="index" type="int" default="-1" /> <description> Adds a new checkable item with text [param label] to the global menu with ID [param menu_root]. Returns index of the inserted item, it's not guaranteed to be the same as [param index] value. @@ -168,9 +176,10 @@ <param index="1" name="icon" type="Texture2D" /> <param index="2" name="label" type="String" /> <param index="3" name="callback" type="Callable" /> - <param index="4" name="tag" type="Variant" default="null" /> - <param index="5" name="accelerator" type="int" enum="Key" default="0" /> - <param index="6" name="index" type="int" default="-1" /> + <param index="4" name="key_callback" type="Callable" /> + <param index="5" name="tag" type="Variant" default="null" /> + <param index="6" name="accelerator" type="int" enum="Key" default="0" /> + <param index="7" name="index" type="int" default="-1" /> <description> Adds a new checkable item with text [param label] and icon [param icon] to the global menu with ID [param menu_root]. Returns index of the inserted item, it's not guaranteed to be the same as [param index] value. @@ -188,9 +197,10 @@ <param index="1" name="icon" type="Texture2D" /> <param index="2" name="label" type="String" /> <param index="3" name="callback" type="Callable" /> - <param index="4" name="tag" type="Variant" default="null" /> - <param index="5" name="accelerator" type="int" enum="Key" default="0" /> - <param index="6" name="index" type="int" default="-1" /> + <param index="4" name="key_callback" type="Callable" /> + <param index="5" name="tag" type="Variant" default="null" /> + <param index="6" name="accelerator" type="int" enum="Key" default="0" /> + <param index="7" name="index" type="int" default="-1" /> <description> Adds a new item with text [param label] and icon [param icon] to the global menu with ID [param menu_root]. Returns index of the inserted item, it's not guaranteed to be the same as [param index] value. @@ -208,9 +218,10 @@ <param index="1" name="icon" type="Texture2D" /> <param index="2" name="label" type="String" /> <param index="3" name="callback" type="Callable" /> - <param index="4" name="tag" type="Variant" default="null" /> - <param index="5" name="accelerator" type="int" enum="Key" default="0" /> - <param index="6" name="index" type="int" default="-1" /> + <param index="4" name="key_callback" type="Callable" /> + <param index="5" name="tag" type="Variant" default="null" /> + <param index="6" name="accelerator" type="int" enum="Key" default="0" /> + <param index="7" name="index" type="int" default="-1" /> <description> Adds a new radio-checkable item with text [param label] and icon [param icon] to the global menu with ID [param menu_root]. Returns index of the inserted item, it's not guaranteed to be the same as [param index] value. @@ -228,9 +239,10 @@ <param index="0" name="menu_root" type="String" /> <param index="1" name="label" type="String" /> <param index="2" name="callback" type="Callable" /> - <param index="3" name="tag" type="Variant" default="null" /> - <param index="4" name="accelerator" type="int" enum="Key" default="0" /> - <param index="5" name="index" type="int" default="-1" /> + <param index="3" name="key_callback" type="Callable" /> + <param index="4" name="tag" type="Variant" default="null" /> + <param index="5" name="accelerator" type="int" enum="Key" default="0" /> + <param index="6" name="index" type="int" default="-1" /> <description> Adds a new item with text [param label] to the global menu with ID [param menu_root]. Returns index of the inserted item, it's not guaranteed to be the same as [param index] value. @@ -249,9 +261,10 @@ <param index="2" name="max_states" type="int" /> <param index="3" name="default_state" type="int" /> <param index="4" name="callback" type="Callable" /> - <param index="5" name="tag" type="Variant" default="null" /> - <param index="6" name="accelerator" type="int" enum="Key" default="0" /> - <param index="7" name="index" type="int" default="-1" /> + <param index="5" name="key_callback" type="Callable" /> + <param index="6" name="tag" type="Variant" default="null" /> + <param index="7" name="accelerator" type="int" enum="Key" default="0" /> + <param index="8" name="index" type="int" default="-1" /> <description> Adds a new item with text [param labe] to the global menu with ID [param menu_root]. Contrarily to normal binary items, multistate items can have more than two states, as defined by [param max_states]. Each press or activate of the item will increase the state by one. The default value is defined by [param default_state]. @@ -270,9 +283,10 @@ <param index="0" name="menu_root" type="String" /> <param index="1" name="label" type="String" /> <param index="2" name="callback" type="Callable" /> - <param index="3" name="tag" type="Variant" default="null" /> - <param index="4" name="accelerator" type="int" enum="Key" default="0" /> - <param index="5" name="index" type="int" default="-1" /> + <param index="3" name="key_callback" type="Callable" /> + <param index="4" name="tag" type="Variant" default="null" /> + <param index="5" name="accelerator" type="int" enum="Key" default="0" /> + <param index="6" name="index" type="int" default="-1" /> <description> Adds a new radio-checkable item with text [param label] to the global menu with ID [param menu_root]. Returns index of the inserted item, it's not guaranteed to be the same as [param index] value. @@ -384,6 +398,15 @@ [b]Note:[/b] This method is implemented on macOS. </description> </method> + <method name="global_menu_get_item_key_callback" qualifiers="const"> + <return type="Callable" /> + <param index="0" name="menu_root" type="String" /> + <param index="1" name="idx" type="int" /> + <description> + Returns the callback of the item accelerator at index [param idx]. + [b]Note:[/b] This method is implemented on macOS. + </description> + </method> <method name="global_menu_get_item_max_states" qualifiers="const"> <return type="int" /> <param index="0" name="menu_root" type="String" /> @@ -502,7 +525,7 @@ <param index="1" name="idx" type="int" /> <param index="2" name="callback" type="Callable" /> <description> - Sets the callback of the item at index [param idx]. Callback is emitted when an item is pressed or its accelerator is activated. + Sets the callback of the item at index [param idx]. Callback is emitted when an item is pressed. [b]Note:[/b] This method is implemented on macOS. </description> </method> @@ -557,6 +580,16 @@ [b]Note:[/b] This method is implemented on macOS. </description> </method> + <method name="global_menu_set_item_key_callback"> + <return type="void" /> + <param index="0" name="menu_root" type="String" /> + <param index="1" name="idx" type="int" /> + <param index="2" name="key_callback" type="Callable" /> + <description> + Sets the callback of the item at index [param idx]. Callback is emitted when its accelerator is activated. + [b]Note:[/b] This method is implemented on macOS. + </description> + </method> <method name="global_menu_set_item_max_states"> <return type="void" /> <param index="0" name="menu_root" type="String" /> @@ -644,6 +677,20 @@ <description> </description> </method> + <method name="is_dark_mode" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if OS is using dark mode. + [b]Note:[/b] This method is implemented on macOS, Windows and Linux. + </description> + </method> + <method name="is_dark_mode_supported" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if OS supports dark mode. + [b]Note:[/b] This method is implemented on macOS, Windows and Linux. + </description> + </method> <method name="keyboard_get_current_layout" qualifiers="const"> <return type="int" /> <description> @@ -1277,6 +1324,7 @@ <param index="0" name="window_id" type="int" /> <param index="1" name="parent_window_id" type="int" /> <description> + Sets window transient parent. Transient window is will be destroyed with its transient parent and displayed on top of non-exclusive full-screen parent window. Transient windows can't enter full-screen mode. </description> </method> <method name="window_set_vsync_mode"> @@ -1289,6 +1337,15 @@ Depending on the platform and used renderer, the engine will fall back to [constant VSYNC_ENABLED], if the desired mode is not supported. </description> </method> + <method name="window_set_window_buttons_offset"> + <return type="void" /> + <param index="0" name="offset" type="Vector2i" /> + <param index="1" name="window_id" type="int" default="0" /> + <description> + When [constant WINDOW_FLAG_EXTEND_TO_TITLE] flag is set, set offset to the center of the first titlebar button. + [b]Note:[/b] This flag is implemented on macOS. + </description> + </method> <method name="window_set_window_event_callback"> <return type="void" /> <param index="0" name="callback" type="Callable" /> @@ -1462,7 +1519,8 @@ Window is floating above other regular windows. This flag is ignored for full-screen windows. </constant> <constant name="WINDOW_FLAG_TRANSPARENT" value="3" enum="WindowFlags"> - Window is will be destroyed with its transient parent and displayed on top of non-exclusive full-screen parent window. Transient windows can't enter full-screen mode. + Window background can be transparent. + [b]Note:[/b] This flag has no effect if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to [code]false[/code]. </constant> <constant name="WINDOW_FLAG_NO_FOCUS" value="4" enum="WindowFlags"> Window can't be focused. No-focus window will ignore all input, except mouse clicks. @@ -1490,6 +1548,8 @@ </constant> <constant name="WINDOW_EVENT_DPI_CHANGE" value="6" enum="WindowEvent"> </constant> + <constant name="WINDOW_EVENT_TITLEBAR_CHANGE" value="7" enum="WindowEvent"> + </constant> <constant name="VSYNC_DISABLED" value="0" enum="VSyncMode"> No vertical synchronization, which means the engine will display frames as fast as possible (tearing may be visible). </constant> diff --git a/doc/classes/EditorExportPlatform.xml b/doc/classes/EditorExportPlatform.xml new file mode 100644 index 0000000000..1d63af9233 --- /dev/null +++ b/doc/classes/EditorExportPlatform.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="EditorExportPlatform" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> +</class> diff --git a/doc/classes/EditorExportPlugin.xml b/doc/classes/EditorExportPlugin.xml index 091bac7d8e..3e8ce10aa5 100644 --- a/doc/classes/EditorExportPlugin.xml +++ b/doc/classes/EditorExportPlugin.xml @@ -10,6 +10,51 @@ <tutorials> </tutorials> <methods> + <method name="_begin_customize_resources" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="platform" type="EditorExportPlatform" /> + <param index="1" name="features" type="PackedStringArray" /> + <description> + Return true if this plugin will customize resources based on the platform and features used. + </description> + </method> + <method name="_begin_customize_scenes" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="platform" type="EditorExportPlatform" /> + <param index="1" name="features" type="PackedStringArray" /> + <description> + Return true if this plugin will customize scenes based on the platform and features used. + </description> + </method> + <method name="_customize_resource" qualifiers="virtual"> + <return type="Resource" /> + <param index="0" name="resource" type="Resource" /> + <param index="1" name="path" type="String" /> + <description> + Customize a resource. If changes are made to it, return the same or a new resource. Otherwise, return [code]null[/code]. + The [i]path[/i] argument is only used when customizing an actual file, otherwise this means that this resource is part of another one and it will be empty. + </description> + </method> + <method name="_customize_scene" qualifiers="virtual"> + <return type="Node" /> + <param index="0" name="scene" type="Node" /> + <param index="1" name="path" type="String" /> + <description> + Customize a scene. If changes are made to it, return the same or a new scene. Otherwise, return [code]null[/code]. If a new scene is returned, it is up to you to dispose of the old one. + </description> + </method> + <method name="_end_customize_resources" qualifiers="virtual"> + <return type="void" /> + <description> + This is called when the customization process for resources ends. + </description> + </method> + <method name="_end_customize_scenes" qualifiers="virtual"> + <return type="void" /> + <description> + This is called when the customization process for scenes ends. + </description> + </method> <method name="_export_begin" qualifiers="virtual"> <return type="void" /> <param index="0" name="features" type="PackedStringArray" /> @@ -36,6 +81,18 @@ Calling [method skip] inside this callback will make the file not included in the export. </description> </method> + <method name="_get_customization_configuration_hash" qualifiers="virtual const"> + <return type="int" /> + <description> + Return a hash based on the configuration passed (for both scenes and resources). This helps keep separate caches for separate export configurations. + </description> + </method> + <method name="_get_name" qualifiers="virtual const"> + <return type="String" /> + <description> + Return the name identifier of this plugin (for future identification by the exporter). + </description> + </method> <method name="add_file"> <return type="void" /> <param index="0" name="path" type="String" /> diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml index f7f1d456d0..c395815117 100644 --- a/doc/classes/EditorImportPlugin.xml +++ b/doc/classes/EditorImportPlugin.xml @@ -9,7 +9,7 @@ Below is an example EditorImportPlugin that imports a [Mesh] from a file with the extension ".special" or ".spec": [codeblocks] [gdscript] - tool + @tool extends EditorImportPlugin func _get_importer_name(): @@ -44,7 +44,7 @@ # Fill the Mesh with data read in "file", left as an exercise to the reader. var filename = save_path + "." + _get_save_extension() - return ResourceSaver.save(filename, mesh) + return ResourceSaver.save(mesh, filename) [/gdscript] [csharp] using Godot; @@ -103,7 +103,7 @@ var mesh = new ArrayMesh(); // Fill the Mesh with data read in "file", left as an exercise to the reader. String filename = savePath + "." + GetSaveExtension(); - return (int)ResourceSaver.Save(filename, mesh); + return (int)ResourceSaver.Save(mesh, filename); } } [/csharp] @@ -214,8 +214,8 @@ <param index="0" name="source_file" type="String" /> <param index="1" name="save_path" type="String" /> <param index="2" name="options" type="Dictionary" /> - <param index="3" name="platform_variants" type="Array" /> - <param index="4" name="gen_files" type="Array" /> + <param index="3" name="platform_variants" type="String[]" /> + <param index="4" name="gen_files" type="String[]" /> <description> Imports [param source_file] into [param save_path] with the import [param options] specified. The [param platform_variants] and [param gen_files] arrays will be modified by this function. This method must be overridden to do the actual importing work. See this class' description for an example of overriding this method. diff --git a/doc/classes/EditorInspector.xml b/doc/classes/EditorInspector.xml index 280a7bf34a..a1a43dd5bf 100644 --- a/doc/classes/EditorInspector.xml +++ b/doc/classes/EditorInspector.xml @@ -13,6 +13,14 @@ </description> <tutorials> </tutorials> + <methods> + <method name="get_selected_path" qualifiers="const"> + <return type="String" /> + <description> + Gets the path of the currently selected property. + </description> + </method> + </methods> <members> <member name="horizontal_scroll_mode" type="int" setter="set_horizontal_scroll_mode" getter="get_horizontal_scroll_mode" overrides="ScrollContainer" enum="ScrollContainer.ScrollMode" default="0" /> </members> diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml index 49cd715f5e..1e3b1f07ee 100644 --- a/doc/classes/EditorInterface.xml +++ b/doc/classes/EditorInterface.xml @@ -60,11 +60,10 @@ Returns the edited (current) scene's root [Node]. </description> </method> - <method name="get_editor_main_control"> - <return type="Control" /> + <method name="get_editor_main_screen"> + <return type="VBoxContainer" /> <description> - Returns the main editor control. Use this as a parent for main screens. - [b]Note:[/b] This returns the main editor control containing the whole editor, not the 2D or 3D viewports specifically. + Returns the editor control responsible for main screen plugins and tools. Use it with plugins that implement [method EditorPlugin._has_main_screen]. [b]Warning:[/b] Removing and freeing this node will render a part of the editor useless and may cause a crash. </description> </method> @@ -167,7 +166,7 @@ </method> <method name="make_mesh_previews"> <return type="Texture2D[]" /> - <param index="0" name="meshes" type="Array" /> + <param index="0" name="meshes" type="Mesh[]" /> <param index="1" name="preview_size" type="int" /> <description> Returns mesh previews rendered at the given size as an [Array] of [Texture2D]s. diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml index fdd3807b69..27cf410c15 100644 --- a/doc/classes/EditorPlugin.xml +++ b/doc/classes/EditorPlugin.xml @@ -64,8 +64,8 @@ if event is InputEventMouseMotion: # Redraw viewport when cursor is moved. update_overlays() - return true - return false + return EditorPlugin.AFTER_GUI_INPUT_STOP + return EditorPlugin.AFTER_GUI_INPUT_PASS [/gdscript] [csharp] public override void _Forward3dDrawOverViewport(Godot.Control overlay) @@ -74,15 +74,15 @@ overlay.DrawCircle(overlay.GetLocalMousePosition(), 64, Colors.White); } - public override bool _Forward3dGuiInput(Godot.Camera3D camera, InputEvent @event) + public override EditorPlugin.AfterGUIInput _Forward3dGuiInput(Godot.Camera3D camera, InputEvent @event) { if (@event is InputEventMouseMotion) { // Redraw viewport when cursor is moved. UpdateOverlays(); - return true; + return EditorPlugin.AFTER_GUI_INPUT_STOP; } - return false; + return EditorPlugin.AFTER_GUI_INPUT_PASS; [/csharp] [/codeblocks] </description> @@ -100,33 +100,33 @@ <param index="0" name="viewport_camera" type="Camera3D" /> <param index="1" name="event" type="InputEvent" /> <description> - Called when there is a root node in the current edited scene, [method _handles] is implemented and an [InputEvent] happens in the 3D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [param event], otherwise forwards [param event] to other Editor classes. Example: + Called when there is a root node in the current edited scene, [method _handles] is implemented, and an [InputEvent] happens in the 3D viewport. The return value decides whether the [InputEvent] is consumed or forwarded to other [EditorPlugin]s. See [enum AfterGUIInput] for options. Example: [codeblocks] [gdscript] - # Prevents the InputEvent to reach other Editor classes. + # Prevents the InputEvent from reaching other Editor classes. func _forward_3d_gui_input(camera, event): return EditorPlugin.AFTER_GUI_INPUT_STOP [/gdscript] [csharp] - // Prevents the InputEvent to reach other Editor classes. - public override bool _Forward3dGuiInput(Camera3D camera, InputEvent @event) + // Prevents the InputEvent from reaching other Editor classes. + public override EditorPlugin.AfterGUIInput _Forward3dGuiInput(Camera3D camera, InputEvent @event) { return EditorPlugin.AFTER_GUI_INPUT_STOP; } [/csharp] [/codeblocks] - Must [code]return false[/code] in order to forward the [InputEvent] to other Editor classes. Example: + Must [code]return EditorPlugin.AFTER_GUI_INPUT_PASS[/code] in order to forward the [InputEvent] to other Editor classes. Example: [codeblocks] [gdscript] # Consumes InputEventMouseMotion and forwards other InputEvent types. func _forward_3d_gui_input(camera, event): - return event is InputEventMouseMotion + return EditorPlugin.AFTER_GUI_INPUT_STOP if event is InputEventMouseMotion else EditorPlugin.AFTER_GUI_INPUT_PASS [/gdscript] [csharp] // Consumes InputEventMouseMotion and forwards other InputEvent types. - public override bool _Forward3dGuiInput(Camera3D camera, InputEvent @event) + public override EditorPlugin.AfterGUIInput _Forward3dGuiInput(Camera3D camera, InputEvent @event) { - return @event is InputEventMouseMotion; + return @event is InputEventMouseMotion ? EditorPlugin.AFTER_GUI_INPUT_STOP : EditorPlugin.AFTER_GUI_INPUT_PASS; } [/csharp] [/codeblocks] @@ -185,12 +185,12 @@ Called when there is a root node in the current edited scene, [method _handles] is implemented and an [InputEvent] happens in the 2D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [param event], otherwise forwards [param event] to other Editor classes. Example: [codeblocks] [gdscript] - # Prevents the InputEvent to reach other Editor classes. + # Prevents the InputEvent from reaching other Editor classes. func _forward_canvas_gui_input(event): return true [/gdscript] [csharp] - // Prevents the InputEvent to reach other Editor classes. + // Prevents the InputEvent from reaching other Editor classes. public override bool ForwardCanvasGuiInput(InputEvent @event) { return true; @@ -237,7 +237,7 @@ # You can use a custom icon: return preload("res://addons/my_plugin/my_plugin_icon.svg") # Or use a built-in icon: - return get_editor_interface().get_base_control().get_icon("Node", "EditorIcons") + return get_editor_interface().get_base_control().get_theme_icon("Node", "EditorIcons") [/gdscript] [csharp] public override Texture2D GetPluginIcon() @@ -245,7 +245,7 @@ // You can use a custom icon: return ResourceLoader.Load<Texture2D>("res://addons/my_plugin/my_plugin_icon.svg"); // Or use a built-in icon: - return GetEditorInterface().GetBaseControl().GetIcon("Node", "EditorIcons"); + return GetEditorInterface().GetBaseControl().GetThemeIcon("Node", "EditorIcons"); } [/csharp] [/codeblocks] @@ -303,7 +303,7 @@ func _enter_tree(): plugin_control = preload("my_plugin_control.tscn").instantiate() - get_editor_interface().get_editor_main_control().add_child(plugin_control) + get_editor_interface().get_editor_main_screen().add_child(plugin_control) plugin_control.hide() func _has_main_screen(): @@ -406,6 +406,7 @@ When a given node or resource is selected, the base type will be instantiated (e.g. "Node3D", "Control", "Resource"), then the script will be loaded and set to this object. You can use the virtual method [method _handles] to check if your custom object is being edited by checking the script or using the [code]is[/code] keyword. During run-time, this will be a simple object with a script so this function does not need to be called then. + [b]Note:[/b] Custom types added this way are not true classes. They are just a helper to create a node with specific script. </description> </method> <method name="add_debugger_plugin"> @@ -754,5 +755,14 @@ <constant name="DOCK_SLOT_MAX" value="8" enum="DockSlot"> Represents the size of the [enum DockSlot] enum. </constant> + <constant name="AFTER_GUI_INPUT_PASS" value="0" enum="AfterGUIInput"> + Forwards the [InputEvent] to other EditorPlugins. + </constant> + <constant name="AFTER_GUI_INPUT_STOP" value="1" enum="AfterGUIInput"> + Prevents the [InputEvent] from reaching other Editor classes. + </constant> + <constant name="AFTER_GUI_INPUT_CUSTOM" value="2" enum="AfterGUIInput"> + Pass the [InputEvent] to other editor plugins except the main [Node3D] one. This can be used to prevent node selection changes and work with sub-gizmos instead. + </constant> </constants> </class> diff --git a/doc/classes/EditorProperty.xml b/doc/classes/EditorProperty.xml index 7bac4bf7ac..9170c449bf 100644 --- a/doc/classes/EditorProperty.xml +++ b/doc/classes/EditorProperty.xml @@ -9,6 +9,13 @@ <tutorials> </tutorials> <methods> + <method name="_set_read_only" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="read_only" type="bool" /> + <description> + Called when the read-only status of the property is changed. It may be used to change custom controls into a read-only or modifiable state. + </description> + </method> <method name="_update_property" qualifiers="virtual"> <return type="void" /> <description> diff --git a/doc/classes/EditorScenePostImport.xml b/doc/classes/EditorScenePostImport.xml index 395b094bf2..2bf2accf17 100644 --- a/doc/classes/EditorScenePostImport.xml +++ b/doc/classes/EditorScenePostImport.xml @@ -8,7 +8,7 @@ The [method _post_import] callback receives the imported scene's root node and returns the modified version of the scene. Usage example: [codeblocks] [gdscript] - tool # Needed so it runs in editor. + @tool # Needed so it runs in editor. extends EditorScenePostImport # This sample changes all node names. # Called right after the scene is imported and gets the root node. diff --git a/doc/classes/EditorScript.xml b/doc/classes/EditorScript.xml index 2ff8a7ba2a..dfc04c9cde 100644 --- a/doc/classes/EditorScript.xml +++ b/doc/classes/EditorScript.xml @@ -9,7 +9,7 @@ [b]Example script:[/b] [codeblocks] [gdscript] - tool + @tool extends EditorScript func _run(): diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml index 56c1f6e55a..6007128965 100644 --- a/doc/classes/EditorSettings.xml +++ b/doc/classes/EditorSettings.xml @@ -135,7 +135,7 @@ <method name="set_builtin_action_override"> <return type="void" /> <param index="0" name="name" type="String" /> - <param index="1" name="actions_list" type="Array" /> + <param index="1" name="actions_list" type="InputEvent[]" /> <description> Overrides the built-in editor action [param name] with the input actions defined in [param actions_list]. </description> @@ -405,7 +405,7 @@ If [code]true[/code], allows panning by holding down [kbd]Space[/kbd] in the 2D editor viewport (in addition to panning with the middle or right mouse buttons). If [code]false[/code], the left mouse button must be held down while holding down [kbd]Space[/kbd] to pan in the 2D editor viewport. </member> <member name="editors/panning/sub_editors_panning_scheme" type="int" setter="" getter=""> - Controls whether the mouse wheel scroll zooms or pans in subeditors. The list of affected subeditors is: animation blend tree editor, [Polygon2D] editor, tileset editor, texture region editor, visual shader editor and visual script editor. See also [member editors/panning/2d_editor_panning_scheme] and [member editors/panning/animation_editors_panning_scheme]. + Controls whether the mouse wheel scroll zooms or pans in subeditors. The list of affected subeditors is: animation blend tree editor, [Polygon2D] editor, tileset editor, texture region editor and visual shader editor. See also [member editors/panning/2d_editor_panning_scheme] and [member editors/panning/animation_editors_panning_scheme]. </member> <member name="editors/panning/warped_mouse_panning" type="bool" setter="" getter=""> If [code]true[/code], warps the mouse around the 2D viewport while panning in the 2D editor. This makes it possible to pan over a large area without having to exit panning then mouse the mouse back constantly. @@ -424,10 +424,10 @@ [b]Note:[/b] Only effective if [member editors/tiles_editor/display_grid] is [code]true[/code]. </member> <member name="editors/visual_editors/lines_curvature" type="float" setter="" getter=""> - The curvature to use for connection lines in the visual script and visual shader editors. Higher values will make connection lines appear more curved, with values above [code]0.5[/code] resulting in more "angular" turns in the middle of connection lines. + The curvature to use for connection lines in the visual shader editor. Higher values will make connection lines appear more curved, with values above [code]0.5[/code] resulting in more "angular" turns in the middle of connection lines. </member> <member name="editors/visual_editors/minimap_opacity" type="float" setter="" getter=""> - The opacity of the minimap displayed in the bottom-right corner of the visual script and visual shader editors. + The opacity of the minimap displayed in the bottom-right corner of the visual shader editor. </member> <member name="editors/visual_editors/visual_shader/port_preview_size" type="int" setter="" getter=""> The size to use for port previews in the visual shader uniforms (toggled by clicking the "eye" icon next to an output). The value is defined in pixels at 100% zoom, and will scale with zoom automatically. @@ -616,8 +616,8 @@ The port number to use to contact the HTTP and HTTPS proxy in the editor (for the asset library and export template downloads). See also [member network/http_proxy/host]. [b]Note:[/b] Godot currently doesn't automatically use system proxy settings, so you have to enter them manually here if needed. </member> - <member name="network/ssl/editor_ssl_certificates" type="String" setter="" getter=""> - The SSL certificate bundle to use for HTTP requests made within the editor (e.g. from the AssetLib tab). If left empty, the [url=https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]included Mozilla certificate bundle[/url] will be used. + <member name="network/tls/editor_tls_certificates" type="String" setter="" getter=""> + The TLS certificate bundle to use for HTTP requests made within the editor (e.g. from the AssetLib tab). If left empty, the [url=https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]included Mozilla certificate bundle[/url] will be used. </member> <member name="project_manager/sorting_order" type="int" setter="" getter=""> The sorting order to use in the project manager. When changing the sorting order in the project manager, this setting is set permanently in the editor settings. @@ -647,9 +647,9 @@ The monitor to display the project on when starting the project from the editor. </member> <member name="text_editor/appearance/caret/caret_blink" type="bool" setter="" getter=""> - If [code]true[/code], makes the caret blink according to [member text_editor/appearance/caret/caret_blink_speed]. Disabling this setting can improve battery life on laptops if you spend long amounts of time in the script editor, since it will reduce the frequency at which the editor needs to be redrawn. + If [code]true[/code], makes the caret blink according to [member text_editor/appearance/caret/caret_blink_interval]. Disabling this setting can improve battery life on laptops if you spend long amounts of time in the script editor, since it will reduce the frequency at which the editor needs to be redrawn. </member> - <member name="text_editor/appearance/caret/caret_blink_speed" type="float" setter="" getter=""> + <member name="text_editor/appearance/caret/caret_blink_interval" type="float" setter="" getter=""> The interval at which to blink the caret (in seconds). See also [member text_editor/appearance/caret/caret_blink]. </member> <member name="text_editor/appearance/caret/highlight_all_occurrences" type="bool" setter="" getter=""> diff --git a/doc/classes/EditorTranslationParserPlugin.xml b/doc/classes/EditorTranslationParserPlugin.xml index bbae06899c..df10c645ef 100644 --- a/doc/classes/EditorTranslationParserPlugin.xml +++ b/doc/classes/EditorTranslationParserPlugin.xml @@ -11,7 +11,7 @@ Below shows an example of a custom parser that extracts strings from a CSV file to write into a POT. [codeblocks] [gdscript] - tool + @tool extends EditorTranslationParserPlugin func _parse_file(path, msgids, msgids_context_plural): @@ -72,7 +72,7 @@ msgidsContextPlural.Add(new Godot.Collections.Array{"Only with context", "a friendly context", ""}); [/csharp] [/codeblocks] - [b]Note:[/b] If you override parsing logic for standard script types (GDScript, C#, etc.), it would be better to load the [code]path[/code] argument using [method ResourceLoader.load]. This is because built-in scripts are loaded as [Resource] type, not [File] type. + [b]Note:[/b] If you override parsing logic for standard script types (GDScript, C#, etc.), it would be better to load the [code]path[/code] argument using [method ResourceLoader.load]. This is because built-in scripts are loaded as [Resource] type, not [FileAccess] type. For example: [codeblocks] [gdscript] @@ -112,8 +112,8 @@ <method name="_parse_file" qualifiers="virtual"> <return type="void" /> <param index="0" name="path" type="String" /> - <param index="1" name="msgids" type="Array" /> - <param index="2" name="msgids_context_plural" type="Array" /> + <param index="1" name="msgids" type="String[]" /> + <param index="2" name="msgids_context_plural" type="Array[]" /> <description> Override this method to define a custom parsing logic to extract the translatable strings. </description> diff --git a/doc/classes/EditorVCSInterface.xml b/doc/classes/EditorVCSInterface.xml index 89ba79f7d9..b766978c04 100644 --- a/doc/classes/EditorVCSInterface.xml +++ b/doc/classes/EditorVCSInterface.xml @@ -1,97 +1,276 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="EditorVCSInterface" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - Version Control System (VCS) interface which reads and writes to the local VCS in use. + Version Control System (VCS) interface, which reads and writes to the local VCS in use. </brief_description> <description> - Used by the editor to display VCS extracted information in the editor. The implementation of this API is included in VCS addons, which are essentially GDExtension plugins that need to be put into the project folder. These VCS addons are scripts which are attached (on demand) to the object instance of [code]EditorVCSInterface[/code]. All the functions listed below, instead of performing the task themselves, they call the internally defined functions in the VCS addons to provide a plug-n-play experience. + Defines the API that the editor uses to extract information from the underlying VCS. The implementation of this API is included in VCS plugins, which are GDExtension plugins that inherit [EditorVCSInterface] and are attached (on demand) to the singleton instance of [EditorVCSInterface]. Instead of performing the task themselves, all the virtual functions listed below are calling the internally overridden functions in the VCS plugins to provide a plug-n-play experience. A custom VCS plugin is supposed to inherit from [EditorVCSInterface] and override each of these virtual functions. </description> <tutorials> </tutorials> <methods> - <method name="commit"> + <method name="_checkout_branch" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="branch_name" type="String" /> + <description> + Checks out a [code]branch_name[/code] in the VCS. + </description> + </method> + <method name="_commit" qualifiers="virtual"> <return type="void" /> <param index="0" name="msg" type="String" /> <description> - Creates a version commit if the addon is initialized, else returns without doing anything. Uses the files which have been staged previously, with the commit message set to a value as provided as in the argument. + Commits the currently staged changes and applies the commit [code]msg[/code] to the resulting commit. </description> </method> - <method name="get_file_diff"> - <return type="Dictionary[]" /> + <method name="_create_branch" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="branch_name" type="String" /> + <description> + Creates a new branch named [code]branch_name[/code] in the VCS. + </description> + </method> + <method name="_create_remote" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="remote_name" type="String" /> + <param index="1" name="remote_url" type="String" /> + <description> + Creates a new remote destination with name [code]remote_name[/code] and points it to [code]remote_url[/code]. This can be an HTTPS remote or an SSH remote. + </description> + </method> + <method name="_discard_file" qualifiers="virtual"> + <return type="void" /> <param index="0" name="file_path" type="String" /> <description> - Returns an [Array] of [Dictionary] objects containing the diff output from the VCS in use, if a VCS addon is initialized, else returns an empty [Array] object. The diff contents also consist of some contextual lines which provide context to the observed line change in the file. - Each [Dictionary] object has the line diff contents under the keys: - - [code]"content"[/code] to store a [String] containing the line contents - - [code]"status"[/code] to store a [String] which contains [code]"+"[/code] in case the content is a line addition but it stores a [code]"-"[/code] in case of deletion and an empty string in the case the line content is neither an addition nor a deletion. - - [code]"new_line_number"[/code] to store an integer containing the new line number of the line content. - - [code]"line_count"[/code] to store an integer containing the number of lines in the line content. - - [code]"old_line_number"[/code] to store an integer containing the old line number of the line content. - - [code]"offset"[/code] to store the offset of the line change since the first contextual line content. + Discards the changes made in a file present at [code]file_path[/code]. </description> </method> - <method name="get_modified_files_data"> - <return type="Dictionary" /> + <method name="_fetch" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="remote" type="String" /> <description> - Returns a [Dictionary] containing the path of the detected file change mapped to an integer signifying what kind of change the corresponding file has experienced. - The following integer values are being used to signify that the detected file is: - - [code]0[/code]: New to the VCS working directory - - [code]1[/code]: Modified - - [code]2[/code]: Renamed - - [code]3[/code]: Deleted - - [code]4[/code]: Typechanged + Fetches new changes from the remote, but doesn't write changes to the current working directory. Equivalent to [code]git fetch[/code]. </description> </method> - <method name="get_project_name"> + <method name="_get_branch_list" qualifiers="virtual"> + <return type="Dictionary[]" /> + <description> + Gets an instance of an [Array] of [String]s containing available branch names in the VCS. + </description> + </method> + <method name="_get_current_branch_name" qualifiers="virtual"> <return type="String" /> <description> - Returns the project name of the VCS working directory. + Gets the current branch name defined in the VCS. + </description> + </method> + <method name="_get_diff" qualifiers="virtual"> + <return type="Dictionary[]" /> + <param index="0" name="identifier" type="String" /> + <param index="1" name="area" type="int" /> + <description> + Returns an array of [Dictionary] items (see [method create_diff_file], [method create_diff_hunk], [method create_diff_line], [method add_line_diffs_into_diff_hunk] and [method add_diff_hunks_into_diff_file]), each containing information about a diff. If [code]identifier[/code] is a file path, returns a file diff, and if it is a commit identifier, then returns a commit diff. + </description> + </method> + <method name="_get_line_diff" qualifiers="virtual"> + <return type="Dictionary[]" /> + <param index="0" name="file_path" type="String" /> + <param index="1" name="text" type="String" /> + <description> + Returns an [Array] of [Dictionary] items (see [method create_diff_hunk]), each containing a line diff between a file at [code]file_path[/code] and the [code]text[/code] which is passed in. </description> </method> - <method name="get_vcs_name"> + <method name="_get_modified_files_data" qualifiers="virtual"> + <return type="Dictionary[]" /> + <description> + Returns an [Array] of [Dictionary] items (see [method create_status_file]), each containing the status data of every modified file in the project folder. + </description> + </method> + <method name="_get_previous_commits" qualifiers="virtual"> + <return type="Dictionary[]" /> + <param index="0" name="max_commits" type="int" /> + <description> + Returns an [Array] of [Dictionary] items (see [method create_commit]), each containing the data for a past commit. + </description> + </method> + <method name="_get_remotes" qualifiers="virtual"> + <return type="Dictionary[]" /> + <description> + Returns an [Array] of [String]s, each containing the name of a remote configured in the VCS. + </description> + </method> + <method name="_get_vcs_name" qualifiers="virtual"> <return type="String" /> <description> - Returns the name of the VCS if the VCS has been initialized, else return an empty string. + Returns the name of the underlying VCS provider. </description> </method> - <method name="initialize"> + <method name="_initialize" qualifiers="virtual"> <return type="bool" /> - <param index="0" name="project_root_path" type="String" /> + <param index="0" name="project_path" type="String" /> <description> - Initializes the VCS addon if not already. Uses the argument value as the path to the working directory of the project. Creates the initial commit if required. Returns [code]true[/code] if no failure occurs, else returns [code]false[/code]. + Initializes the VCS plugin when called from the editor. Returns whether or not the plugin was successfully initialized. A VCS project is initialized at [code]project_path[/code]. </description> </method> - <method name="is_addon_ready"> - <return type="bool" /> + <method name="_pull" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="remote" type="String" /> <description> - Returns [code]true[/code] if the addon is ready to respond to function calls, else returns [code]false[/code]. + Pulls changes from the remote. This can give rise to merge conflicts. </description> </method> - <method name="is_vcs_initialized"> - <return type="bool" /> + <method name="_push" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="remote" type="String" /> + <param index="1" name="force" type="bool" /> + <description> + Pushes changes to the [code]remote[/code]. Optionally, if [code]force[/code] is set to true, a force push will override the change history already present on the remote. + </description> + </method> + <method name="_remove_branch" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="branch_name" type="String" /> + <description> + Remove a branch from the local VCS. + </description> + </method> + <method name="_remove_remote" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="remote_name" type="String" /> + <description> + Remove a remote from the local VCS. + </description> + </method> + <method name="_set_credentials" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="username" type="String" /> + <param index="1" name="password" type="String" /> + <param index="2" name="ssh_public_key_path" type="String" /> + <param index="3" name="ssh_private_key_path" type="String" /> + <param index="4" name="ssh_passphrase" type="String" /> <description> - Returns [code]true[/code] if the VCS addon has been initialized, else returns [code]false[/code]. + Set user credentials in the underlying VCS. [code]username[/code] and [code]password[/code] are used only during HTTPS authentication unless not already mentioned in the remote URL. [code]ssh_public_key_path[/code], [code]ssh_private_key_path[/code], and [code]ssh_passphrase[/code] are only used during SSH authentication. </description> </method> - <method name="shut_down"> + <method name="_shut_down" qualifiers="virtual"> <return type="bool" /> <description> - Shuts down the VCS addon to allow cleanup code to run on call. Returns [code]true[/code] is no failure occurs, else returns [code]false[/code]. + Shuts down VCS plugin instance. Called when the user either closes the editor or shuts down the VCS plugin through the editor UI. </description> </method> - <method name="stage_file"> + <method name="_stage_file" qualifiers="virtual"> <return type="void" /> <param index="0" name="file_path" type="String" /> <description> - Stages the file which should be committed when [method EditorVCSInterface.commit] is called. Argument should contain the absolute path. + Stages the file present at [code]file_path[/code] to the staged area. </description> </method> - <method name="unstage_file"> + <method name="_unstage_file" qualifiers="virtual"> <return type="void" /> <param index="0" name="file_path" type="String" /> <description> - Unstages the file which was staged previously to be committed, so that it is no longer committed when [method EditorVCSInterface.commit] is called. Argument should contain the absolute path. + Unstages the file present at [code]file_path[/code] from the staged area to the unstaged area. + </description> + </method> + <method name="add_diff_hunks_into_diff_file"> + <return type="Dictionary" /> + <param index="0" name="diff_file" type="Dictionary" /> + <param index="1" name="diff_hunks" type="Dictionary[]" /> + <description> + Helper function to add an array of [code]diff_hunks[/code] into a [code]diff_file[/code]. + </description> + </method> + <method name="add_line_diffs_into_diff_hunk"> + <return type="Dictionary" /> + <param index="0" name="diff_hunk" type="Dictionary" /> + <param index="1" name="line_diffs" type="Dictionary[]" /> + <description> + Helper function to add an array of [code]line_diffs[/code] into a [code]diff_hunk[/code]. + </description> + </method> + <method name="create_commit"> + <return type="Dictionary" /> + <param index="0" name="msg" type="String" /> + <param index="1" name="author" type="String" /> + <param index="2" name="id" type="String" /> + <param index="3" name="unix_timestamp" type="int" /> + <param index="4" name="offset_minutes" type="int" /> + <description> + Helper function to create a commit [Dictionary] item. [code]msg[/code] is the commit message of the commit. [code]author[/code] is a single human-readable string containing all the author's details, e.g. the email and name configured in the VCS. [code]id[/code] is the identifier of the commit, in whichever format your VCS may provide an identifier to commits. [code]unix_timestamp[/code] is the UTC Unix timestamp of when the commit was created. [code]offset_minutes[/code] is the timezone offset in minutes, recorded from the system timezone where the commit was created. + </description> + </method> + <method name="create_diff_file"> + <return type="Dictionary" /> + <param index="0" name="new_file" type="String" /> + <param index="1" name="old_file" type="String" /> + <description> + Helper function to create a [code]Dictionary[/code] for storing old and new diff file paths. + </description> + </method> + <method name="create_diff_hunk"> + <return type="Dictionary" /> + <param index="0" name="old_start" type="int" /> + <param index="1" name="new_start" type="int" /> + <param index="2" name="old_lines" type="int" /> + <param index="3" name="new_lines" type="int" /> + <description> + Helper function to create a [code]Dictionary[/code] for storing diff hunk data. [code]old_start[/code] is the starting line number in old file. [code]new_start[/code] is the starting line number in new file. [code]old_lines[/code] is the number of lines in the old file. [code]new_lines[/code] is the number of lines in the new file. + </description> + </method> + <method name="create_diff_line"> + <return type="Dictionary" /> + <param index="0" name="new_line_no" type="int" /> + <param index="1" name="old_line_no" type="int" /> + <param index="2" name="content" type="String" /> + <param index="3" name="status" type="String" /> + <description> + Helper function to create a [code]Dictionary[/code] for storing a line diff. [code]new_line_no[/code] is the line number in the new file (can be [code]-1[/code] if the line is deleted). [code]old_line_no[/code] is the line number in the old file (can be [code]-1[/code] if the line is added). [code]content[/code] is the diff text. [code]status[/code] is a single character string which stores the line origin. + </description> + </method> + <method name="create_status_file"> + <return type="Dictionary" /> + <param index="0" name="file_path" type="String" /> + <param index="1" name="change_type" type="int" enum="EditorVCSInterface.ChangeType" /> + <param index="2" name="area" type="int" enum="EditorVCSInterface.TreeArea" /> + <description> + Helper function to create a [code]Dictionary[/code] used by editor to read the status of a file. + </description> + </method> + <method name="popup_error"> + <return type="void" /> + <param index="0" name="msg" type="String" /> + <description> + Pops up an error message in the edior which is shown as coming from the underlying VCS. Use this to show VCS specific error messages. </description> </method> </methods> + <constants> + <constant name="CHANGE_TYPE_NEW" value="0" enum="ChangeType"> + A new file has been added. + </constant> + <constant name="CHANGE_TYPE_MODIFIED" value="1" enum="ChangeType"> + An earlier added file has been modified. + </constant> + <constant name="CHANGE_TYPE_RENAMED" value="2" enum="ChangeType"> + An earlier added file has been renamed. + </constant> + <constant name="CHANGE_TYPE_DELETED" value="3" enum="ChangeType"> + An earlier added file has been deleted. + </constant> + <constant name="CHANGE_TYPE_TYPECHANGE" value="4" enum="ChangeType"> + An earlier added file has been typechanged. + </constant> + <constant name="CHANGE_TYPE_UNMERGED" value="5" enum="ChangeType"> + A file is left unmerged. + </constant> + <constant name="TREE_AREA_COMMIT" value="0" enum="TreeArea"> + A commit is encountered from the commit area. + </constant> + <constant name="TREE_AREA_STAGED" value="1" enum="TreeArea"> + A file is encountered from the staged area. + </constant> + <constant name="TREE_AREA_UNSTAGED" value="2" enum="TreeArea"> + A file is encountered from the unstaged area. + </constant> + </constants> </class> diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml index 301a3e55fb..ecf3d87a70 100644 --- a/doc/classes/Engine.xml +++ b/doc/classes/Engine.xml @@ -14,12 +14,20 @@ <description> Returns the name of the CPU architecture the Godot binary was built for. Possible return values are [code]x86_64[/code], [code]x86_32[/code], [code]arm64[/code], [code]armv7[/code], [code]rv64[/code], [code]riscv[/code], [code]ppc64[/code], [code]ppc[/code], [code]wasm64[/code] and [code]wasm32[/code]. To detect whether the current CPU architecture is 64-bit, you can use the fact that all 64-bit architecture names have [code]64[/code] in their name: - [codeblock] + [codeblocks] + [gdscript] if "64" in Engine.get_architecture_name(): print("Running on 64-bit CPU.") else: print("Running on 32-bit CPU.") - [/codeblock] + [/gdscript] + [csharp] + if (Engine.GetArchitectureName().Contains("64")) + GD.Print("Running on 64-bit CPU."); + else + GD.Print("Running on 32-bit CPU."); + [/csharp] + [/codeblocks] [b]Note:[/b] [method get_architecture_name] does [i]not[/i] return the name of the host CPU architecture. For example, if running an x86_32 Godot binary on a x86_64 system, the returned value will be [code]x86_32[/code]. </description> </method> @@ -83,11 +91,24 @@ <description> Returns the total number of frames passed since engine initialization which is advanced on each [b]physics frame[/b]. See also [method get_process_frames]. [method get_physics_frames] can be used to run expensive logic less often without relying on a [Timer]: - [codeblock] + [codeblocks] + [gdscript] func _physics_process(_delta): if Engine.get_physics_frames() % 2 == 0: pass # Run expensive logic only once every 2 physics frames here. - [/codeblock] + [/gdscript] + [csharp] + public override void _PhysicsProcess(double delta) + { + base._PhysicsProcess(delta); + + if (Engine.GetPhysicsFrames() % 2 == 0) + { + // Run expensive logic only once every 2 physics frames here. + } + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_physics_interpolation_fraction" qualifiers="const"> @@ -101,11 +122,24 @@ <description> Returns the total number of frames passed since engine initialization which is advanced on each [b]process frame[/b], regardless of whether the render loop is enabled. See also [method get_frames_drawn] and [method get_physics_frames]. [method get_process_frames] can be used to run expensive logic less often without relying on a [Timer]: - [codeblock] + [codeblocks] + [gdscript] func _process(_delta): if Engine.get_process_frames() % 2 == 0: pass # Run expensive logic only once every 2 process (render) frames here. - [/codeblock] + [/gdscript] + [csharp] + public override void _Process(double delta) + { + base._Process(delta); + + if (Engine.GetProcessFrames() % 2 == 0) + { + // Run expensive logic only once every 2 physics frames here. + } + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_script_language" qualifiers="const"> @@ -182,12 +216,20 @@ <return type="bool" /> <description> Returns [code]true[/code] if the script is currently running inside the editor, [code]false[/code] otherwise. This is useful for [code]@tool[/code] scripts to conditionally draw editor helpers, or prevent accidentally running "game" code that would affect the scene state while in the editor: - [codeblock] + [codeblocks] + [gdscript] if Engine.is_editor_hint(): draw_gizmos() else: simulate_physics() - [/codeblock] + [/gdscript] + [csharp] + if (Engine.IsEditorHint()) + DrawGizmos(); + else + SimulatePhysics(); + [/csharp] + [/codeblocks] See [url=$DOCS_URL/tutorials/plugins/running_code_in_the_editor.html]Running code in the editor[/url] in the documentation for more information. [b]Note:[/b] To detect whether the script is run from an editor [i]build[/i] (e.g. when pressing [kbd]F5[/kbd]), use [method OS.has_feature] with the [code]"editor"[/code] argument instead. [code]OS.has_feature("editor")[/code] will evaluate to [code]true[/code] both when the code is running in the editor and when running the project from the editor, but it will evaluate to [code]false[/code] when the code is run from an exported project. </description> diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml index 864dbd423a..243a28e73d 100644 --- a/doc/classes/Environment.xml +++ b/doc/classes/Environment.xml @@ -63,21 +63,6 @@ <member name="ambient_light_source" type="int" setter="set_ambient_source" getter="get_ambient_source" enum="Environment.AmbientSource" default="0"> The ambient light source to use for rendering materials and global illumination. </member> - <member name="auto_exposure_enabled" type="bool" setter="set_tonemap_auto_exposure_enabled" getter="is_tonemap_auto_exposure_enabled" default="false"> - If [code]true[/code], enables the tonemapping auto exposure mode of the scene renderer. If [code]true[/code], the renderer will automatically determine the exposure setting to adapt to the scene's illumination and the observed light. - </member> - <member name="auto_exposure_max_luma" type="float" setter="set_tonemap_auto_exposure_max" getter="get_tonemap_auto_exposure_max" default="8.0"> - The maximum luminance value for the auto exposure. - </member> - <member name="auto_exposure_min_luma" type="float" setter="set_tonemap_auto_exposure_min" getter="get_tonemap_auto_exposure_min" default="0.05"> - The minimum luminance value for the auto exposure. - </member> - <member name="auto_exposure_scale" type="float" setter="set_tonemap_auto_exposure_grey" getter="get_tonemap_auto_exposure_grey" default="0.4"> - The scale of the auto exposure effect. Affects the intensity of auto exposure. - </member> - <member name="auto_exposure_speed" type="float" setter="set_tonemap_auto_exposure_speed" getter="get_tonemap_auto_exposure_speed" default="0.5"> - The speed of the auto exposure effect. Affects the time needed for the camera to perform auto exposure. - </member> <member name="background_camera_feed_id" type="int" setter="set_camera_feed_id" getter="get_camera_feed_id" default="1"> The ID of the camera feed to show in the background. </member> @@ -87,18 +72,21 @@ <member name="background_color" type="Color" setter="set_bg_color" getter="get_bg_color" default="Color(0, 0, 0, 1)"> The [Color] displayed for clear areas of the scene. Only effective when using the [constant BG_COLOR] background mode. </member> - <member name="background_energy" type="float" setter="set_bg_energy" getter="get_bg_energy" default="1.0"> - The power of the light emitted by the background. + <member name="background_energy_multiplier" type="float" setter="set_bg_energy_multiplier" getter="get_bg_energy_multiplier" default="1.0"> + Multiplier for background energy. Increase to make background brighter, decrease to make background dimmer. + </member> + <member name="background_intensity" type="float" setter="set_bg_intensity" getter="get_bg_intensity" default="30000.0"> + Luminance of background measured in nits (candela per square meter). Only used when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is enabled. The default value is roughly equivalent to the sky at midday. </member> <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_aerial_perspective" type="float" setter="set_fog_aerial_perspective" getter="get_fog_aerial_perspective" default="0.0"> - Blend factor between the fog's color and the color of the background [Sky]. Must have [member background_mode] set to [constant BG_SKY]. + If set above [code]0.0[/code] (exclusive), blends between the fog's color and the color of the background [Sky]. This has a small performance cost when set above [code]0.0[/code]. Must have [member background_mode] set to [constant BG_SKY]. This is useful to simulate [url=https://en.wikipedia.org/wiki/Aerial_perspective]aerial perspective[/url] in large scenes with low density fog. However, it is not very useful for high-density fog, as the sky will shine through. When set to [code]1.0[/code], the fog color comes completely from the [Sky]. If set to [code]0.0[/code], aerial perspective is disabled. </member> <member name="fog_density" type="float" setter="set_fog_density" getter="get_fog_density" default="0.01"> - The exponential fog density to use. Higher values result in a more dense fog. + The [i]exponential[/i] fog density to use. Higher values result in a more dense fog. Fog rendering is exponential as in real life. </member> <member name="fog_enabled" type="bool" setter="set_fog_enabled" getter="is_fog_enabled" default="false"> If [code]true[/code], fog effects are enabled. @@ -115,6 +103,10 @@ <member name="fog_light_energy" type="float" setter="set_fog_light_energy" getter="get_fog_light_energy" default="1.0"> The fog's brightness. Higher values result in brighter fog. </member> + <member name="fog_sky_affect" type="float" setter="set_fog_sky_affect" getter="get_fog_sky_affect" default="1.0"> + The factor to use when affecting the sky with non-volumetric fog. [code]1.0[/code] means that fog can fully obscure the sky. Lower values reduce the impact of fog on sky rendering, with [code]0.0[/code] not affecting sky rendering at all. + [b]Note:[/b] [member fog_sky_affect] has no visual effect if [member fog_aerial_perspective] is [code]1.0[/code]. + </member> <member name="fog_sun_scatter" type="float" setter="set_fog_sun_scatter" getter="get_fog_sun_scatter" default="0.0"> If set above [code]0.0[/code], renders the scene's directional light(s) in the fog color depending on the view angle. This can be used to give the impression that the sun is "piercing" through the fog. </member> @@ -300,13 +292,15 @@ The [Color] of the volumetric fog when interacting with lights. Mist and fog have an albedo close to [code]Color(1, 1, 1, 1)[/code] while smoke has a darker albedo. </member> <member name="volumetric_fog_ambient_inject" type="float" setter="set_volumetric_fog_ambient_inject" getter="get_volumetric_fog_ambient_inject" default="0.0"> - Scales the strength of ambient light used in the volumetric fog. A value of [code]0[/code] means that ambient light will not impact the volumetric fog. + Scales the strength of ambient light used in the volumetric fog. A value of [code]0.0[/code] means that ambient light will not impact the volumetric fog. [member volumetric_fog_ambient_inject] has a small performance cost when set above [code]0.0[/code]. + [b]Note:[/b] This has no visible effect if [member volumetric_fog_density] is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black color. </member> <member name="volumetric_fog_anisotropy" type="float" setter="set_volumetric_fog_anisotropy" getter="get_volumetric_fog_anisotropy" default="0.2"> - The direction of scattered light as it goes through the volumetric fog. A value close [code]1[/code] means almost all light is scattered forward. A value close to [code]0[/code] means light is scattered equally in all directions. A value close to [code]-1[/code] means light is scattered mostly backward. Fog and mist scatter light slightly forward, while smoke scatters light equally in all directions. + The direction of scattered light as it goes through the volumetric fog. A value close to [code]1.0[/code] means almost all light is scattered forward. A value close to [code]0.0[/code] means light is scattered equally in all directions. A value close to [code]-1.0[/code] means light is scattered mostly backward. Fog and mist scatter light slightly forward, while smoke scatters light equally in all directions. </member> <member name="volumetric_fog_density" type="float" setter="set_volumetric_fog_density" getter="get_volumetric_fog_density" default="0.05"> - The base density of the volumetric fog. Set this to the lowest density you want to have globally. + The base [i]exponential[/i] density of the volumetric fog. Set this to the lowest density you want to have globally. [FogVolume]s can be used to add to or subtract from this density in specific areas. Fog rendering is exponential as in real life. + A value of [code]0.0[/code] disables global volumetric fog while allowing [FogVolume]s to display volumetric fog in specific areas. </member> <member name="volumetric_fog_detail_spread" type="float" setter="set_volumetric_fog_detail_spread" getter="get_volumetric_fog_detail_spread" default="2.0"> The distribution of size down the length of the froxel buffer. A higher value compresses the froxels closer to the camera and places more detail closer to the camera. @@ -319,19 +313,25 @@ </member> <member name="volumetric_fog_enabled" type="bool" setter="set_volumetric_fog_enabled" getter="is_volumetric_fog_enabled" default="false"> Enables the volumetric fog effect. Volumetric fog uses a screen-aligned froxel buffer to calculate accurate volumetric scattering in the short to medium range. Volumetric fog interacts with [FogVolume]s and lights to calculate localized and global fog. Volumetric fog uses a PBR single-scattering model based on extinction, scattering, and emission which it exposes to users as density, albedo, and emission. + [b]Note:[/b] Volumetric fog is only available in the forward plus renderer. It is not available in the mobile renderer or the compatibility renderer. </member> <member name="volumetric_fog_gi_inject" type="float" setter="set_volumetric_fog_gi_inject" getter="get_volumetric_fog_gi_inject" default="1.0"> - Scales the strength of Global Illumination used in the volumetric fog. A value of [code]0.0[/code] means that Global Illumination will not impact the volumetric fog. + Scales the strength of Global Illumination used in the volumetric fog's albedo color. A value of [code]0.0[/code] means that Global Illumination will not impact the volumetric fog. [member volumetric_fog_gi_inject] has a small performance cost when set above [code]0.0[/code]. + [b]Note:[/b] This has no visible effect if [member volumetric_fog_density] is [code]0.0[/code] or if [member volumetric_fog_albedo] is a fully black color. [b]Note:[/b] Only [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) are taken into account when using [member volumetric_fog_gi_inject]. Global illumination from [LightmapGI], [ReflectionProbe] and SSIL (see [member ssil_enabled]) will be ignored by volumetric fog. </member> <member name="volumetric_fog_length" type="float" setter="set_volumetric_fog_length" getter="get_volumetric_fog_length" default="64.0"> - The distance over which the volumetric fog is computed. Increase to compute fog over a greater range, decrease to add more detail when a long range is not needed. For best quality fog, keep this as low as possible. + The distance over which the volumetric fog is computed. Increase to compute fog over a greater range, decrease to add more detail when a long range is not needed. For best quality fog, keep this as low as possible. See also [member ProjectSettings.rendering/environment/volumetric_fog/volume_depth]. + </member> + <member name="volumetric_fog_sky_affect" type="float" setter="set_volumetric_fog_sky_affect" getter="get_volumetric_fog_sky_affect" default="1.0"> + The factor to use when affecting the sky with volumetric fog. [code]1.0[/code] means that volumetric fog can fully obscure the sky. Lower values reduce the impact of volumetric fog on sky rendering, with [code]0.0[/code] not affecting sky rendering at all. + [b]Note:[/b] [member volumetric_fog_sky_affect] also affects [FogVolume]s, even if [member volumetric_fog_density] is [code]0.0[/code]. If you notice [FogVolume]s are disappearing when looking towards the sky, set [member volumetric_fog_sky_affect] to [code]1.0[/code]. </member> <member name="volumetric_fog_temporal_reprojection_amount" type="float" setter="set_volumetric_fog_temporal_reprojection_amount" getter="get_volumetric_fog_temporal_reprojection_amount" default="0.9"> The amount by which to blend the last frame with the current frame. A higher number results in smoother volumetric fog, but makes "ghosting" much worse. A lower value reduces ghosting but can result in the per-frame temporal jitter becoming visible. </member> <member name="volumetric_fog_temporal_reprojection_enabled" type="bool" setter="set_volumetric_fog_temporal_reprojection_enabled" getter="is_volumetric_fog_temporal_reprojection_enabled" default="true"> - Enables temporal reprojection in the volumetric fog. Temporal reprojection blends the current frame's volumetric fog with the last frame's volumetric fog to smooth out jagged edges. The performance cost is minimal, however it does lead to moving [FogVolume]s and [Light3D]s "ghosting" and leaving a trail behind them. When temporal reprojection is enabled, try to avoid moving [FogVolume]s or [Light3D]s too fast. + Enables temporal reprojection in the volumetric fog. Temporal reprojection blends the current frame's volumetric fog with the last frame's volumetric fog to smooth out jagged edges. The performance cost is minimal; however, it leads to moving [FogVolume]s and [Light3D]s "ghosting" and leaving a trail behind them. When temporal reprojection is enabled, try to avoid moving [FogVolume]s or [Light3D]s too fast. Short-lived dynamic lighting effects should have [member Light3D.light_volumetric_fog_energy] set to [code]0.0[/code] to avoid ghosting. </member> </members> <constants> diff --git a/doc/classes/File.xml b/doc/classes/FileAccess.xml index 76c6a4871c..adc0f4c3dd 100644 --- a/doc/classes/File.xml +++ b/doc/classes/FileAccess.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="File" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="FileAccess" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Type to handle file reading and writing operations. </brief_description> @@ -9,39 +9,42 @@ [codeblocks] [gdscript] func save(content): - var file = File.new() - file.open("user://save_game.dat", File.WRITE) + var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE) file.store_string(content) - file.close() func load(): - var file = File.new() - file.open("user://save_game.dat", File.READ) + var file = FileAccess.open("user://save_game.dat", FileAccess.READ) var content = file.get_as_text() - file.close() return content [/gdscript] [csharp] public void Save(string content) { - var file = new File(); - file.Open("user://save_game.dat", File.ModeFlags.Write); + using var file = FileAccess.Open("user://save_game.dat", File.ModeFlags.Write); file.StoreString(content); - file.Close(); } public string Load() { - var file = new File(); - file.Open("user://save_game.dat", File.ModeFlags.Read); + using var file = FileAccess.Open("user://save_game.dat", File.ModeFlags.Read); string content = file.GetAsText(); - file.Close(); return content; } [/csharp] [/codeblocks] In the example above, the file will be saved in the user data folder as specified in the [url=$DOCS_URL/tutorials/io/data_paths.html]Data paths[/url] documentation. - [b]Note:[/b] To access project resources once exported, it is recommended to use [ResourceLoader] instead of the [File] API, as some files are converted to engine-specific formats and their original source files might not be present in the exported PCK package. + There is no method to close a file in order to free it from use. Instead, [FileAccess] will close when it's freed, which happens when it goes out of scope or when it gets assigned with [code]null[/code]. In C# the reference must be disposed after we are done using it, this can be done with the [code]using[/code] statement or calling the [code]Dispose[/code] method directly. + [codeblocks] + [gdscript] + var file = FileAccess.open("res://something") # File is opened and locked for use. + file = null # File is closed. + [/gdscript] + [csharp] + using var file = FileAccess.Open("res://something"); // File is opened and locked for use. + // The using statement calls Dispose when going out of scope. + [/csharp] + [/codeblocks] + [b]Note:[/b] To access project resources once exported, it is recommended to use [ResourceLoader] instead of the [FileAccess] API, as some files are converted to engine-specific formats and their original source files might not be present in the exported PCK package. [b]Note:[/b] Files are automatically closed only if the process exits "normally" (such as by clicking the window manager's close button or pressing [b]Alt + F4[/b]). If you stop the project execution by pressing [b]F8[/b] while the project is running, the file won't be closed as the game process will be killed. You can work around this by calling [method flush] at regular intervals. </description> <tutorials> @@ -49,12 +52,6 @@ <link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link> </tutorials> <methods> - <method name="close"> - <return type="void" /> - <description> - Closes the currently opened file and prevents subsequent read/write operations. Use [method flush] to persist the data to disk without closing the file. - </description> - </method> <method name="eof_reached" qualifiers="const"> <return type="bool" /> <description> @@ -80,12 +77,13 @@ <description> Returns [code]true[/code] if the file exists in the given path. [b]Note:[/b] Many resources types are imported (e.g. textures or sound files), and their source asset will not be included in the exported game, as only the imported version is used. See [method ResourceLoader.exists] for an alternative approach that takes resource remapping into account. + For a non-static, relative equivalent, use [method DirAccess.file_exists]. </description> </method> <method name="flush"> <return type="void" /> <description> - Writes the file's buffer to disk. Flushing is automatically performed when the file is closed. This means you don't need to call [method flush] manually before closing a file using [method close]. Still, calling [method flush] can be used to ensure the data is safe even if the project crashes instead of being closed gracefully. + Writes the file's buffer to disk. Flushing is automatically performed when the file is closed. This means you don't need to call [method flush] manually before closing a file. Still, calling [method flush] can be used to ensure the data is safe even if the project crashes instead of being closed gracefully. [b]Note:[/b] Only call [method flush] when you actually need it. Otherwise, it will decrease performance due to constant disk writes. </description> </method> @@ -174,20 +172,26 @@ Text is interpreted as being UTF-8 encoded. </description> </method> - <method name="get_md5" qualifiers="const"> + <method name="get_md5" qualifiers="static"> <return type="String" /> <param index="0" name="path" type="String" /> <description> Returns an MD5 String representing the file at the given path or an empty [String] on failure. </description> </method> - <method name="get_modified_time" qualifiers="const"> + <method name="get_modified_time" qualifiers="static"> <return type="int" /> <param index="0" name="file" type="String" /> <description> Returns the last time the [param file] was modified in Unix timestamp format or returns a [String] "ERROR IN [code]file[/code]". This Unix timestamp can be converted to another format using the [Time] singleton. </description> </method> + <method name="get_open_error" qualifiers="static"> + <return type="int" enum="Error" /> + <description> + Returns the result of the last [method open] call in the current thread. + </description> + </method> <method name="get_pascal_string"> <return type="String" /> <description> @@ -219,7 +223,7 @@ Returns the next bits from the file as a floating-point number. </description> </method> - <method name="get_sha256" qualifiers="const"> + <method name="get_sha256" qualifiers="static"> <return type="String" /> <param index="0" name="path" type="String" /> <description> @@ -240,41 +244,45 @@ Returns [code]true[/code] if the file is currently opened. </description> </method> - <method name="open"> - <return type="int" enum="Error" /> + <method name="open" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="flags" type="int" enum="File.ModeFlags" /> + <param index="1" name="flags" type="int" enum="FileAccess.ModeFlags" /> <description> - Opens the file for writing or reading, depending on the flags. + Creates a new [FileAccess] object and opens the file for writing or reading, depending on the flags. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that ocurred. </description> </method> - <method name="open_compressed"> - <return type="int" enum="Error" /> + <method name="open_compressed" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="mode_flags" type="int" enum="File.ModeFlags" /> - <param index="2" name="compression_mode" type="int" enum="File.CompressionMode" default="0" /> + <param index="1" name="mode_flags" type="int" enum="FileAccess.ModeFlags" /> + <param index="2" name="compression_mode" type="int" enum="FileAccess.CompressionMode" default="0" /> <description> - Opens a compressed file for reading or writing. + Creates a new [FileAccess] object and opens a compressed file for reading or writing. [b]Note:[/b] [method open_compressed] can only read files that were saved by Godot, not third-party compression formats. See [url=https://github.com/godotengine/godot/issues/28999]GitHub issue #28999[/url] for a workaround. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that ocurred. </description> </method> - <method name="open_encrypted"> - <return type="int" enum="Error" /> + <method name="open_encrypted" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="mode_flags" type="int" enum="File.ModeFlags" /> + <param index="1" name="mode_flags" type="int" enum="FileAccess.ModeFlags" /> <param index="2" name="key" type="PackedByteArray" /> <description> - Opens an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it. + Creates a new [FileAccess] object and opens an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it. [b]Note:[/b] The provided key must be 32 bytes long. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that ocurred. </description> </method> - <method name="open_encrypted_with_pass"> - <return type="int" enum="Error" /> + <method name="open_encrypted_with_pass" qualifiers="static"> + <return type="FileAccess" /> <param index="0" name="path" type="String" /> - <param index="1" name="mode_flags" type="int" enum="File.ModeFlags" /> + <param index="1" name="mode_flags" type="int" enum="FileAccess.ModeFlags" /> <param index="2" name="pass" type="String" /> <description> - Opens an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it. + Creates a new [FileAccess] object and opens an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it. + Returns [code]null[/code] if opening the file failed. You can use [method get_open_error] to check the error that ocurred. </description> </method> <method name="seek"> @@ -432,7 +440,7 @@ </method> </methods> <members> - <member name="big_endian" type="bool" setter="set_big_endian" getter="is_big_endian" default="false"> + <member name="big_endian" type="bool" setter="set_big_endian" getter="is_big_endian"> If [code]true[/code], the file is read with big-endian [url=https://en.wikipedia.org/wiki/Endianness]endianness[/url]. If [code]false[/code], the file is read with little-endian endianness. If in doubt, leave this to [code]false[/code] as most files are written with little-endian endianness. [b]Note:[/b] [member big_endian] is only about the file format, not the CPU type. The CPU endianness doesn't affect the default endianness for files written. [b]Note:[/b] This is always reset to [code]false[/code] whenever you open the file. Therefore, you must set [member big_endian] [i]after[/i] opening the file, not before. diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml index 43a941c8c8..af04956e61 100644 --- a/doc/classes/FileDialog.xml +++ b/doc/classes/FileDialog.xml @@ -131,13 +131,13 @@ </constant> </constants> <theme_items> - <theme_item name="file_icon_modulate" data_type="color" type="Color" default="Color(1, 1, 1, 1)"> - The color modulation applied to the file icon. - </theme_item> - <theme_item name="files_disabled" data_type="color" type="Color" default="Color(1, 1, 1, 0.25)"> + <theme_item name="file_disabled_color" data_type="color" type="Color" default="Color(1, 1, 1, 0.25)"> The color tint for disabled files (when the [FileDialog] is used in open folder mode). </theme_item> - <theme_item name="folder_icon_modulate" data_type="color" type="Color" default="Color(1, 1, 1, 1)"> + <theme_item name="file_icon_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)"> + The color modulation applied to the file icon. + </theme_item> + <theme_item name="folder_icon_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)"> The color modulation applied to the folder icon. </theme_item> <theme_item name="back_folder" data_type="icon" type="Texture2D"> diff --git a/doc/classes/FlowContainer.xml b/doc/classes/FlowContainer.xml index 256e20447b..d449049ef1 100644 --- a/doc/classes/FlowContainer.xml +++ b/doc/classes/FlowContainer.xml @@ -17,4 +17,18 @@ </description> </method> </methods> + <members> + <member name="vertical" type="bool" setter="set_vertical" getter="is_vertical" default="false"> + If [code]true[/code], the [FlowContainer] will arrange its children vertically, rather than horizontally. + Can't be changed when using [HFlowContainer] and [VFlowContainer]. + </member> + </members> + <theme_items> + <theme_item name="h_separation" data_type="constant" type="int" default="4"> + The horizontal separation of children nodes. + </theme_item> + <theme_item name="v_separation" data_type="constant" type="int" default="4"> + The vertical separation of children nodes. + </theme_item> + </theme_items> </class> diff --git a/doc/classes/FogMaterial.xml b/doc/classes/FogMaterial.xml index e63d4ddf3e..7428d6169a 100644 --- a/doc/classes/FogMaterial.xml +++ b/doc/classes/FogMaterial.xml @@ -5,27 +5,28 @@ </brief_description> <description> A [Material] resource that can be used by [FogVolume]s to draw volumetric effects. + If you need more advanced effects, use a custom [url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]fog shader[/url]. </description> <tutorials> </tutorials> <members> <member name="albedo" type="Color" setter="set_albedo" getter="get_albedo" default="Color(1, 1, 1, 1)"> - Sets the single-scattering [Color] of the [FogVolume]. Internally [member albedo] is converted into single-scattering which is additively blended with other [FogVolume]s and the [member Environment.volumetric_fog_albedo]. + The single-scattering [Color] of the [FogVolume]. Internally, [member albedo] is converted into single-scattering, which is additively blended with other [FogVolume]s and the [member Environment.volumetric_fog_albedo]. </member> <member name="density" type="float" setter="set_density" getter="get_density" default="1.0"> - Sets the density of the [FogVolume]. Denser objects are more opaque, but may suffer from under-sampling artifacts that look like stripes. + The density of the [FogVolume]. Denser objects are more opaque, but may suffer from under-sampling artifacts that look like stripes. Negative values can be used to subtract fog from other [FogVolume]s or global volumetric fog. </member> <member name="density_texture" type="Texture3D" setter="set_density_texture" getter="get_density_texture"> - Sets a 3D texture that is used to scale the [member density] of the [FogVolume]. + The 3D texture that is used to scale the [member density] of the [FogVolume]. This can be used to vary fog density within the [FogVolume] with any kind of static pattern. For animated effects, consider using a custom [url=$DOCS_URL/tutorials/shaders/shader_reference/fog_shader.html]fog shader[/url]. </member> <member name="edge_fade" type="float" setter="set_edge_fade" getter="get_edge_fade" default="0.1"> - Sets the hardness of the edges of the [FogVolume]. A higher number will result in softer edges while a lower number will result in harder edges. + The hardness of the edges of the [FogVolume]. A higher value will result in softer edges, while a lower value will result in harder edges. </member> <member name="emission" type="Color" setter="set_emission" getter="get_emission" default="Color(0, 0, 0, 1)"> - Sets the [Color] of the light emitted by the [FogVolume]. Emitted light will not cast light or shadows on other objects, but can be useful for modulating the [Color] of the [FogVolume] independently from light sources. + The [Color] of the light emitted by the [FogVolume]. Emitted light will not cast light or shadows on other objects, but can be useful for modulating the [Color] of the [FogVolume] independently from light sources. </member> <member name="height_falloff" type="float" setter="set_height_falloff" getter="get_height_falloff" default="0.0"> - Sets the rate by which the height-based fog decreases in density as height increases in world space. A high falloff will result in a sharp transition, while a low falloff will result in a smoother transition. A value of [code]0[/code] results in uniform-density fog. The height threshold is determined by the height of the associated [FogVolume]. + The rate by which the height-based fog decreases in density as height increases in world space. A high falloff will result in a sharp transition, while a low falloff will result in a smoother transition. A value of [code]0.0[/code] results in uniform-density fog. The height threshold is determined by the height of the associated [FogVolume]. </member> </members> </class> diff --git a/doc/classes/FogVolume.xml b/doc/classes/FogVolume.xml index 3f2ee3035c..d9fa2e6ebb 100644 --- a/doc/classes/FogVolume.xml +++ b/doc/classes/FogVolume.xml @@ -4,22 +4,23 @@ A node used to add local fog with the volumetric fog effect. </brief_description> <description> - [FogVolume]s are used to add localized fog into the global volumetric fog effect. + [FogVolume]s are used to add localized fog into the global volumetric fog effect. [FogVolume]s can also remove volumetric fog from specific areas if using a [FogMaterial] with a negative [member FogMaterial.density]. Performance of [FogVolume]s is directly related to their relative size on the screen and the complexity of their attached [FogMaterial]. It is best to keep [FogVolume]s relatively small and simple where possible. + [b]Note:[/b] [FogVolume]s only have a visible effect if [member Environment.volumetric_fog_enabled] is [code]true[/code]. If you don't want fog to be globally visible (but only within [FogVolume] nodes), set [member Environment.volumetric_fog_density] to [code]0.0[/code]. </description> <tutorials> </tutorials> <members> <member name="extents" type="Vector3" setter="set_extents" getter="get_extents" default="Vector3(1, 1, 1)"> - Sets the size of the [FogVolume] when [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX]. + The size of the [FogVolume] when [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER] or [constant RenderingServer.FOG_VOLUME_SHAPE_BOX]. [b]Note:[/b] Thin fog volumes may appear to flicker when the camera moves or rotates. This can be alleviated by increasing [member ProjectSettings.rendering/environment/volumetric_fog/volume_depth] (at a performance cost) or by decreasing [member Environment.volumetric_fog_length] (at no performance cost, but at the cost of lower fog range). Alternatively, the [FogVolume] can be made thicker and use a lower density in the [member material]. [b]Note:[/b] If [member shape] is [constant RenderingServer.FOG_VOLUME_SHAPE_CONE] or [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], the cone/cylinder will be adjusted to fit within the extents. Non-uniform scaling of cone/cylinder shapes via the [member extents] property is not supported, but you can scale the [FogVolume] node instead. </member> <member name="material" type="Material" setter="set_material" getter="get_material"> - Sets the [Material] to be used by the [FogVolume]. Can be either a [FogMaterial] or a custom [ShaderMaterial]. + The [Material] used by the [FogVolume]. Can be either a built-in [FogMaterial] or a custom [ShaderMaterial]. </member> <member name="shape" type="int" setter="set_shape" getter="get_shape" enum="RenderingServer.FogVolumeShape" default="3"> - Sets the shape of the [FogVolume] to either [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]. + The shape of the [FogVolume]. This can be set to either [constant RenderingServer.FOG_VOLUME_SHAPE_ELLIPSOID], [constant RenderingServer.FOG_VOLUME_SHAPE_CONE], [constant RenderingServer.FOG_VOLUME_SHAPE_CYLINDER], [constant RenderingServer.FOG_VOLUME_SHAPE_BOX] or [constant RenderingServer.FOG_VOLUME_SHAPE_WORLD]. </member> </members> </class> diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml index ad3a16afbb..6a42b62bcf 100644 --- a/doc/classes/Font.xml +++ b/doc/classes/Font.xml @@ -228,9 +228,15 @@ <description> Returns the size of a bounding box of a single-line string, taking kerning and advance into account. See also [method get_multiline_string_size] and [method draw_string]. For example, to get the string size as displayed by a single-line Label, use: - [codeblock] + [codeblocks] + [gdscript] var string_size = $Label.get_theme_font("font").get_string_size($Label.text, HORIZONTAL_ALIGNMENT_LEFT, -1, $Label.get_theme_font_size("font_size")) - [/codeblock] + [/gdscript] + [csharp] + Label label = GetNode<Label>("Label"); + Vector2 stringSize = label.GetThemeFont("font").GetStringSize(label.Text, HorizontalAlignment.Left, -1, label.GetThemeFontSize("font_size")); + [/csharp] + [/codeblocks] [b]Note:[/b] Real height of the string is context-dependent and can be significantly different from the value returned by [method get_height]. </description> </method> diff --git a/doc/classes/Geometry2D.xml b/doc/classes/Geometry2D.xml index 392ca2cabb..0142018f1a 100644 --- a/doc/classes/Geometry2D.xml +++ b/doc/classes/Geometry2D.xml @@ -33,6 +33,13 @@ Given an array of [Vector2]s, returns the convex hull as a list of points in counterclockwise order. The last point is the same as the first one. </description> </method> + <method name="decompose_polygon_in_convex"> + <return type="PackedVector2Array[]" /> + <param index="0" name="polygon" type="PackedVector2Array" /> + <description> + Decomposes the [param polygon] into multiple convex hulls and returns an array of [PackedVector2Array]. + </description> + </method> <method name="exclude_polygons"> <return type="PackedVector2Array[]" /> <param index="0" name="polygon_a" type="PackedVector2Array" /> @@ -126,7 +133,7 @@ <return type="Dictionary" /> <param index="0" name="sizes" type="PackedVector2Array" /> <description> - Given an array of [Vector2]s representing tiles, builds an atlas. The returned dictionary has two keys: [code]points[/code] is an array of [Vector2] that specifies the positions of each tile, [code]size[/code] contains the overall size of the whole atlas as [Vector2]. + Given an array of [Vector2]s representing tiles, builds an atlas. The returned dictionary has two keys: [code]points[/code] is a [PackedVector2Array] that specifies the positions of each tile, [code]size[/code] contains the overall size of the whole atlas as [Vector2i]. </description> </method> <method name="merge_polygons"> diff --git a/doc/classes/GeometryInstance3D.xml b/doc/classes/GeometryInstance3D.xml index 79a60a9e62..4d8ab91718 100644 --- a/doc/classes/GeometryInstance3D.xml +++ b/doc/classes/GeometryInstance3D.xml @@ -9,9 +9,9 @@ <tutorials> </tutorials> <methods> - <method name="get_instance_shader_uniform" qualifiers="const"> + <method name="get_instance_shader_parameter" qualifiers="const"> <return type="Variant" /> - <param index="0" name="uniform" type="StringName" /> + <param index="0" name="name" type="StringName" /> <description> </description> </method> @@ -22,9 +22,9 @@ Overrides the bounding box of this node with a custom one. To remove it, set an [AABB] with all fields set to zero. </description> </method> - <method name="set_instance_shader_uniform"> + <method name="set_instance_shader_parameter"> <return type="void" /> - <param index="0" name="uniform" type="StringName" /> + <param index="0" name="name" type="StringName" /> <param index="1" name="value" type="Variant" /> <description> </description> diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml index f081174b67..33f0a7979a 100644 --- a/doc/classes/Gradient.xml +++ b/doc/classes/Gradient.xml @@ -38,13 +38,6 @@ Returns the number of colors in the gradient. </description> </method> - <method name="interpolate"> - <return type="Color" /> - <param index="0" name="offset" type="float" /> - <description> - Returns the interpolated color specified by [param offset]. - </description> - </method> <method name="remove_point"> <return type="void" /> <param index="0" name="point" type="int" /> @@ -58,6 +51,13 @@ Reverses/mirrors the gradient. </description> </method> + <method name="sample"> + <return type="Color" /> + <param index="0" name="offset" type="float" /> + <description> + Returns the interpolated color specified by [code]offset[/code]. + </description> + </method> <method name="set_color"> <return type="void" /> <param index="0" name="point" type="int" /> diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml index dc093acdcd..5050ce7715 100644 --- a/doc/classes/GraphEdit.xml +++ b/doc/classes/GraphEdit.xml @@ -1,37 +1,38 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="GraphEdit" inherits="Control" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - GraphEdit is an area capable of showing various GraphNodes. It manages connection events between them. + GraphEdit is a control responsible for displaying and manipulating graph-like data using [GraphNode]s. It provides access to creation, removal, connection, and disconnection of nodes. </brief_description> <description> - GraphEdit manages the showing of GraphNodes it contains, as well as connections and disconnections between them. Signals are sent for each of these two events. Disconnection between GraphNode slots is disabled by default. - It is greatly advised to enable low-processor usage mode (see [member OS.low_processor_usage_mode]) when using GraphEdits. + GraphEdit provides tools for creation, manipulation, and display of various graphs. Its main purpose in the engine is to power the visual programming systems, such as visual shaders, but it is also available for use in user projects. + GraphEdit by itself is only an empty container, representing an infinite grid where [GraphNode]s can be placed. Each [GraphNode] represent a node in the graph, a single unit of data in the connected scheme. GraphEdit, in turn, helps to control various interactions with nodes and between nodes. When the user attempts to connect, disconnect, or close a [GraphNode], a signal is emitted in the GraphEdit, but no action is taken by default. It is the responsibility of the programmer utilizing this control to implement the necessary logic to determine how each request should be handled. + [b]Performance:[/b] It is greatly advised to enable low-processor usage mode (see [member OS.low_processor_usage_mode]) when using GraphEdits. </description> <tutorials> </tutorials> <methods> <method name="_get_connection_line" qualifiers="virtual const"> <return type="PackedVector2Array" /> - <param index="0" name="from" type="Vector2" /> - <param index="1" name="to" type="Vector2" /> + <param index="0" name="from_position" type="Vector2" /> + <param index="1" name="to_position" type="Vector2" /> <description> Virtual method which can be overridden to customize how connections are drawn. </description> </method> <method name="_is_in_input_hotzone" qualifiers="virtual"> <return type="bool" /> - <param index="0" name="graph_node" type="Object" /> - <param index="1" name="slot_index" type="int" /> + <param index="0" name="in_node" type="Object" /> + <param index="1" name="in_port" type="int" /> <param index="2" name="mouse_position" type="Vector2" /> <description> Returns whether the [param mouse_position] is in the input hot zone. - By default, a hot zone is a [Rect2] positioned such that its center is at [param graph_node].[method GraphNode.get_connection_input_position]([param slot_index]) (For output's case, call [method GraphNode.get_connection_output_position] instead). The hot zone's width is twice the Theme Property [code]port_grab_distance_horizontal[/code], and its height is twice the [code]port_grab_distance_vertical[/code]. + By default, a hot zone is a [Rect2] positioned such that its center is at [param in_node].[method GraphNode.get_connection_input_position]([param in_port]) (For output's case, call [method GraphNode.get_connection_output_position] instead). The hot zone's width is twice the Theme Property [code]port_grab_distance_horizontal[/code], and its height is twice the [code]port_grab_distance_vertical[/code]. Below is a sample code to help get started: [codeblock] - func _is_in_input_hotzone(graph_node, slot_index, mouse_position): - var slot_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) - var slot_pos : Vector2 = graph_node.get_position() + graph_node.get_connection_input_position(slot_index) - slot_size / 2 - var rect = Rect2(slot_pos, slot_size) + func _is_in_input_hotzone(in_node, in_port, mouse_position): + var port_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) + var port_pos : Vector2 = in_node.get_position() + in_node.get_connection_input_position(in_port) - port_size / 2 + var rect = Rect2(port_pos, port_size) return rect.has_point(mouse_position) [/codeblock] @@ -39,17 +40,17 @@ </method> <method name="_is_in_output_hotzone" qualifiers="virtual"> <return type="bool" /> - <param index="0" name="graph_node" type="Object" /> - <param index="1" name="slot_index" type="int" /> + <param index="0" name="in_node" type="Object" /> + <param index="1" name="in_port" type="int" /> <param index="2" name="mouse_position" type="Vector2" /> <description> Returns whether the [param mouse_position] is in the output hot zone. For more information on hot zones, see [method _is_in_input_hotzone]. Below is a sample code to help get started: [codeblock] - func _is_in_output_hotzone(graph_node, slot_index, mouse_position): - var slot_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) - var slot_pos : Vector2 = graph_node.get_position() + graph_node.get_connection_output_position(slot_index) - slot_size / 2 - var rect = Rect2(slot_pos, slot_size) + func _is_in_output_hotzone(in_node, in_port, mouse_position): + var port_size : Vector2 = Vector2(get_theme_constant("port_grab_distance_horizontal"), get_theme_constant("port_grab_distance_vertical")) + var port_pos : Vector2 = in_node.get_position() + in_node.get_connection_output_position(in_port) - port_size / 2 + var rect = Rect2(port_pos, port_size) return rect.has_point(mouse_position) [/codeblock] @@ -57,17 +58,17 @@ </method> <method name="_is_node_hover_valid" qualifiers="virtual"> <return type="bool" /> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> - <param index="2" name="to" type="StringName" /> - <param index="3" name="to_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> + <param index="2" name="to_node" type="StringName" /> + <param index="3" name="to_port" type="int" /> <description> This virtual method can be used to insert additional error detection while the user is dragging a connection over a valid port. Return [code]true[/code] if the connection is indeed valid or return [code]false[/code] if the connection is impossible. If the connection is impossible, no snapping to the port and thus no connection request to that port will happen. In this example a connection to same node is suppressed: [codeblocks] [gdscript] - func _is_node_hover_valid(from, from_slot, to, to_slot): + func _is_node_hover_valid(from, from_port, to, to_port): return from != to [/gdscript] [csharp] @@ -83,21 +84,22 @@ <param index="0" name="from_type" type="int" /> <param index="1" name="to_type" type="int" /> <description> - Makes possible the connection between two different slot types. The type is defined with the [method GraphNode.set_slot] method. + Allows the connection between two different port types. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method. + See also [method is_valid_connection_type] and [method remove_valid_connection_type]. </description> </method> <method name="add_valid_left_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Makes possible to disconnect nodes when dragging from the slot at the left if it has the specified type. + Allows to disconnect nodes when dragging from the left port of the [GraphNode]'s slot if it has the specified type. See also [method remove_valid_left_disconnect_type]. </description> </method> <method name="add_valid_right_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Makes possible to disconnect nodes when dragging from the slot at the right if it has the specified type. + Allows to disconnect nodes when dragging from the right port of the [GraphNode]'s slot if it has the specified type. See also [method remove_valid_right_disconnect_type]. </description> </method> <method name="arrange_nodes"> @@ -114,22 +116,22 @@ </method> <method name="connect_node"> <return type="int" enum="Error" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <description> - Create a connection between the [param from_port] slot of the [param from] GraphNode and the [param to_port] slot of the [param to] GraphNode. If the connection already exists, no connection is created. + Create a connection between the [param from_port] of the [param from_node] [GraphNode] and the [param to_port] of the [param to_node] [GraphNode]. If the connection already exists, no connection is created. </description> </method> <method name="disconnect_node"> <return type="void" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <description> - Removes the connection between the [param from_port] slot of the [param from] GraphNode and the [param to_port] slot of the [param to] GraphNode. If the connection does not exist, no connection is removed. + Removes the connection between the [param from_port] of the [param from_node] [GraphNode] and the [param to_port] of the [param to_node] [GraphNode]. If the connection does not exist, no connection is removed. </description> </method> <method name="force_connection_drag_end"> @@ -142,10 +144,10 @@ </method> <method name="get_connection_line"> <return type="PackedVector2Array" /> - <param index="0" name="from" type="Vector2" /> - <param index="1" name="to" type="Vector2" /> + <param index="0" name="from_node" type="Vector2" /> + <param index="1" name="to_node" type="Vector2" /> <description> - Returns the points which would make up a connection between [param from] and [param to]. + Returns the points which would make up a connection between [param from_node] and [param to_node]. </description> </method> <method name="get_connection_list" qualifiers="const"> @@ -163,12 +165,12 @@ </method> <method name="is_node_connected"> <return type="bool" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <description> - Returns [code]true[/code] if the [param from_port] slot of the [param from] GraphNode is connected to the [param to_port] slot of the [param to] GraphNode. + Returns [code]true[/code] if the [param from_port] of the [param from_node] [GraphNode] is connected to the [param to_port] of the [param to_node] [GraphNode]. </description> </method> <method name="is_valid_connection_type" qualifiers="const"> @@ -176,7 +178,8 @@ <param index="0" name="from_type" type="int" /> <param index="1" name="to_type" type="int" /> <description> - Returns whether it's possible to connect slots of the specified types. + Returns whether it's possible to make a connection between two different port types. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method. + See also [method add_valid_connection_type] and [method remove_valid_connection_type]. </description> </method> <method name="remove_valid_connection_type"> @@ -184,32 +187,33 @@ <param index="0" name="from_type" type="int" /> <param index="1" name="to_type" type="int" /> <description> - Makes it not possible to connect between two different slot types. The type is defined with the [method GraphNode.set_slot] method. + Disallows the connection between two different port types previously allowed by [method add_valid_connection_type]. The port type is defined individually for the left and the right port of each slot with the [method GraphNode.set_slot] method. + See also [method is_valid_connection_type]. </description> </method> <method name="remove_valid_left_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Removes the possibility to disconnect nodes when dragging from the slot at the left if it has the specified type. + Disallows to disconnect nodes when dragging from the left port of the [GraphNode]'s slot if it has the specified type. Use this to disable disconnection previously allowed with [method add_valid_left_disconnect_type]. </description> </method> <method name="remove_valid_right_disconnect_type"> <return type="void" /> <param index="0" name="type" type="int" /> <description> - Removes the possibility to disconnect nodes when dragging from the slot at the right if it has the specified type. + Disallows to disconnect nodes when dragging from the right port of the [GraphNode]'s slot if it has the specified type. Use this to disable disconnection previously allowed with [method add_valid_right_disconnect_type]. </description> </method> <method name="set_connection_activity"> <return type="void" /> - <param index="0" name="from" type="StringName" /> + <param index="0" name="from_node" type="StringName" /> <param index="1" name="from_port" type="int" /> - <param index="2" name="to" type="StringName" /> + <param index="2" name="to_node" type="StringName" /> <param index="3" name="to_port" type="int" /> <param index="4" name="amount" type="float" /> <description> - Sets the coloration of the connection between [param from]'s [param from_port] and [param to]'s [param to_port] with the color provided in the [theme_item activity] theme property. + Sets the coloration of the connection between [param from_node]'s [param from_port] and [param to_node]'s [param to_port] with the color provided in the [theme_item activity] theme property. </description> </method> <method name="set_selected"> @@ -287,36 +291,36 @@ </description> </signal> <signal name="connection_drag_started"> - <param index="0" name="from" type="String" /> - <param index="1" name="slot" type="int" /> + <param index="0" name="from_node" type="String" /> + <param index="1" name="from_port" type="int" /> <param index="2" name="is_output" type="bool" /> <description> Emitted at the beginning of a connection drag. </description> </signal> <signal name="connection_from_empty"> - <param index="0" name="to" type="StringName" /> - <param index="1" name="to_slot" type="int" /> + <param index="0" name="to_node" type="StringName" /> + <param index="1" name="to_port" type="int" /> <param index="2" name="release_position" type="Vector2" /> <description> - Emitted when user dragging connection from input port into empty space of the graph. + Emitted when user drags a connection from an input port into the empty space of the graph. </description> </signal> <signal name="connection_request"> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> - <param index="2" name="to" type="StringName" /> - <param index="3" name="to_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> + <param index="2" name="to_node" type="StringName" /> + <param index="3" name="to_port" type="int" /> <description> - Emitted to the GraphEdit when the connection between the [param from_slot] slot of the [param from] GraphNode and the [param to_slot] slot of the [param to] GraphNode is attempted to be created. + Emitted to the GraphEdit when the connection between the [param from_port] of the [param from_node] [GraphNode] and the [param to_port] of the [param to_node] [GraphNode] is attempted to be created. </description> </signal> <signal name="connection_to_empty"> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> <param index="2" name="release_position" type="Vector2" /> <description> - Emitted when user dragging connection from output port into empty space of the graph. + Emitted when user drags a connection from an output port into the empty space of the graph. </description> </signal> <signal name="copy_nodes_request"> @@ -331,12 +335,12 @@ </description> </signal> <signal name="disconnection_request"> - <param index="0" name="from" type="StringName" /> - <param index="1" name="from_slot" type="int" /> - <param index="2" name="to" type="StringName" /> - <param index="3" name="to_slot" type="int" /> + <param index="0" name="from_node" type="StringName" /> + <param index="1" name="from_port" type="int" /> + <param index="2" name="to_node" type="StringName" /> + <param index="3" name="to_port" type="int" /> <description> - Emitted to the GraphEdit when the connection between [param from_slot] slot of [param from] GraphNode and [param to_slot] slot of [param to] GraphNode is attempted to be removed. + Emitted to the GraphEdit when the connection between [param from_port] of [param from_node] [GraphNode] and [param to_port] of [param to_node] [GraphNode] is attempted to be removed. </description> </signal> <signal name="duplicate_nodes_request"> diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml index ebd4525b19..16386ff81b 100644 --- a/doc/classes/GraphNode.xml +++ b/doc/classes/GraphNode.xml @@ -1,12 +1,13 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="GraphNode" inherits="Container" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A GraphNode is a container with potentially several input and output slots allowing connections between GraphNodes. Slots can have different, incompatible types. + GraphNode is a [Container] control that represents a single data unit in a [GraphEdit] graph. You can customize the number, type, and color of left- and right-side connection ports. </brief_description> <description> - A GraphNode is a container. Each GraphNode can have several input and output slots, sometimes referred to as ports, allowing connections between GraphNodes. To add a slot to GraphNode, add any [Control]-derived child node to it. - After adding at least one child to GraphNode new sections will be automatically created in the Inspector called 'Slot'. When 'Slot' is expanded you will see list with index number for each slot. You can click on each of them to expand further. - In the Inspector you can enable (show) or disable (hide) slots. By default, all slots are disabled so you may not see any slots on your GraphNode initially. You can assign a type to each slot. Only slots of the same type will be able to connect to each other. You can also assign colors to slots. A tuple of input and output slots is defined for each GUI element included in the GraphNode. Input connections are on the left and output connections are on the right side of GraphNode. Only enabled slots are counted as connections. + GraphNode allows to create nodes for a [GraphEdit] graph with customizable content based on its child [Control]s. GraphNode is a [Container] and is responsible for placing its children on screen. This works similar to [VBoxContainer]. Children, in turn, provide GraphNode with so-called slots, each of which can have a connection port on either side. This is similar to how [TabContainer] uses children to create the tabs. + Each GraphNode slot is defined by its index and can provide the node with up to two ports: one on the left, and one on the right. By convention the left port is also referred to as the input port and the right port is referred to as the output port. Each port can be enabled and configured individually, using different type and color. The type is an arbitrary value that you can define using your own considerations. The parent [GraphEdit] will receive this information on each connect and disconnect request. + Slots can be configured in the Inspector dock once you add at least one child [Control]. The properties are grouped by each slot's index in the "Slot" section. + [b]Note:[/b] While GraphNode is set up using slots and slot indices, connections are made between the ports which are enabled. Because of that [GraphEdit] uses port's index and not slot's index. You can use [method get_connection_input_slot] and [method get_connection_output_slot] to get the slot index from the port index. </description> <tutorials> </tutorials> @@ -19,16 +20,16 @@ </method> <method name="clear_slot"> <return type="void" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Disables input and output slot whose index is [param idx]. + Disables input and output slot whose index is [param slot_index]. </description> </method> <method name="get_connection_input_color"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the [Color] of the input connection [param idx]. + Returns the [Color] of the input connection [param port]. </description> </method> <method name="get_connection_input_count"> @@ -39,30 +40,37 @@ </method> <method name="get_connection_input_height"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the height of the input connection [param idx]. + Returns the height of the input connection [param port]. </description> </method> <method name="get_connection_input_position"> <return type="Vector2" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> + <description> + Returns the position of the input connection [param port]. + </description> + </method> + <method name="get_connection_input_slot"> + <return type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the position of the input connection [param idx]. + Returns the corresponding slot index of the input connection [param port]. </description> </method> <method name="get_connection_input_type"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the type of the input connection [param idx]. + Returns the type of the input connection [param port]. </description> </method> <method name="get_connection_output_color"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the [Color] of the output connection [param idx]. + Returns the [Color] of the output connection [param port]. </description> </method> <method name="get_connection_output_count"> @@ -73,150 +81,157 @@ </method> <method name="get_connection_output_height"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the height of the output connection [param idx]. + Returns the height of the output connection [param port]. </description> </method> <method name="get_connection_output_position"> <return type="Vector2" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the position of the output connection [param idx]. + Returns the position of the output connection [param port]. + </description> + </method> + <method name="get_connection_output_slot"> + <return type="int" /> + <param index="0" name="port" type="int" /> + <description> + Returns the corresponding slot index of the output connection [param port]. </description> </method> <method name="get_connection_output_type"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="port" type="int" /> <description> - Returns the type of the output connection [param idx]. + Returns the type of the output connection [param port]. </description> </method> <method name="get_slot_color_left" qualifiers="const"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the left (input) [Color] of the slot [param idx]. + Returns the left (input) [Color] of the slot [param slot_index]. </description> </method> <method name="get_slot_color_right" qualifiers="const"> <return type="Color" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the right (output) [Color] of the slot [param idx]. + Returns the right (output) [Color] of the slot [param slot_index]. </description> </method> <method name="get_slot_type_left" qualifiers="const"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the left (input) type of the slot [param idx]. + Returns the left (input) type of the slot [param slot_index]. </description> </method> <method name="get_slot_type_right" qualifiers="const"> <return type="int" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns the right (output) type of the slot [param idx]. + Returns the right (output) type of the slot [param slot_index]. </description> </method> <method name="is_slot_draw_stylebox" qualifiers="const"> <return type="bool" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns true if the background [StyleBox] of the slot [param idx] is drawn. + Returns true if the background [StyleBox] of the slot [param slot_index] is drawn. </description> </method> <method name="is_slot_enabled_left" qualifiers="const"> <return type="bool" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns [code]true[/code] if left (input) side of the slot [param idx] is enabled. + Returns [code]true[/code] if left (input) side of the slot [param slot_index] is enabled. </description> </method> <method name="is_slot_enabled_right" qualifiers="const"> <return type="bool" /> - <param index="0" name="idx" type="int" /> + <param index="0" name="slot_index" type="int" /> <description> - Returns [code]true[/code] if right (output) side of the slot [param idx] is enabled. + Returns [code]true[/code] if right (output) side of the slot [param slot_index] is enabled. </description> </method> <method name="set_slot"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="enable_left" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable_left_port" type="bool" /> <param index="2" name="type_left" type="int" /> <param index="3" name="color_left" type="Color" /> - <param index="4" name="enable_right" type="bool" /> + <param index="4" name="enable_right_port" type="bool" /> <param index="5" name="type_right" type="int" /> <param index="6" name="color_right" type="Color" /> - <param index="7" name="custom_left" type="Texture2D" default="null" /> - <param index="8" name="custom_right" type="Texture2D" default="null" /> - <param index="9" name="enable" type="bool" default="true" /> - <description> - Sets properties of the slot with ID [param idx]. - If [param enable_left]/[param enable_right], a port will appear and the slot will be able to be connected from this side. - [param type_left]/[param type_right] is an arbitrary type of the port. Only ports with the same type values can be connected and negative values will disallow all connections to be made via user inputs. - [param color_left]/[param color_right] is the tint of the port's icon on this side. - [param custom_left]/[param custom_right] is a custom texture for this side's port. - [b]Note:[/b] This method only sets properties of the slot. To create the slot, add a [Control]-derived child to the GraphNode. - Individual properties can be set using one of the [code]set_slot_*[/code] methods. You must enable at least one side of the slot to do so. + <param index="7" name="custom_icon_left" type="Texture2D" default="null" /> + <param index="8" name="custom_icon_right" type="Texture2D" default="null" /> + <param index="9" name="draw_stylebox" type="bool" default="true" /> + <description> + Sets properties of the slot with the [param slot_index] index. + If [param enable_left_port]/[param enable_right_port] is [code]true[/code], a port will appear and the slot will be able to be connected from this side. + With [param type_left]/[param type_right] an arbitrary type can be assigned to each port. Two ports can be connected if they share the same type, or if the connection between their types is allowed in the parent [GraphEdit] (see [method GraphEdit.add_valid_connection_type]). Keep in mind that the [GraphEdit] has the final say in accepting the connection. Type compatibility simply allows the [signal GraphEdit.connection_request] signal to be emitted. + Ports can be further customized using [param color_left]/[param color_right] and [param custom_icon_left]/[param custom_icon_right]. The color parameter adds a tint to the icon. The custom icon can be used to override the default port dot. + Additionally, [param draw_stylebox] can be used to enable or disable drawing of the background stylebox for each slot. See [theme_item slot]. + Individual properties can also be set using one of the [code]set_slot_*[/code] methods. + [b]Note:[/b] This method only sets properties of the slot. To create the slot itself, add a [Control]-derived child to the GraphNode. </description> </method> <method name="set_slot_color_left"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="color_left" type="Color" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="color" type="Color" /> <description> - Sets the [Color] of the left (input) side of the slot [param idx] to [param color_left]. + Sets the [Color] of the left (input) side of the slot [param slot_index] to [param color]. </description> </method> <method name="set_slot_color_right"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="color_right" type="Color" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="color" type="Color" /> <description> - Sets the [Color] of the right (output) side of the slot [param idx] to [param color_right]. + Sets the [Color] of the right (output) side of the slot [param slot_index] to [param color]. </description> </method> <method name="set_slot_draw_stylebox"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="draw_stylebox" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable" type="bool" /> <description> - Toggles the background [StyleBox] of the slot [param idx]. + Toggles the background [StyleBox] of the slot [param slot_index]. </description> </method> <method name="set_slot_enabled_left"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="enable_left" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable" type="bool" /> <description> - Toggles the left (input) side of the slot [param idx]. If [param enable_left] is [code]true[/code], a port will appear on the left side and the slot will be able to be connected from this side. + Toggles the left (input) side of the slot [param slot_index]. If [param enable] is [code]true[/code], a port will appear on the left side and the slot will be able to be connected from this side. </description> </method> <method name="set_slot_enabled_right"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="enable_right" type="bool" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="enable" type="bool" /> <description> - Toggles the right (output) side of the slot [param idx]. If [param enable_right] is [code]true[/code], a port will appear on the right side and the slot will be able to be connected from this side. + Toggles the right (output) side of the slot [param slot_index]. If [param enable] is [code]true[/code], a port will appear on the right side and the slot will be able to be connected from this side. </description> </method> <method name="set_slot_type_left"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="type_left" type="int" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="type" type="int" /> <description> - Sets the left (input) type of the slot [param idx] to [param type_left]. If the value is negative, all connections will be disallowed to be created via user inputs. + Sets the left (input) type of the slot [param slot_index] to [param type]. If the value is negative, all connections will be disallowed to be created via user inputs. </description> </method> <method name="set_slot_type_right"> <return type="void" /> - <param index="0" name="idx" type="int" /> - <param index="1" name="type_right" type="int" /> + <param index="0" name="slot_index" type="int" /> + <param index="1" name="type" type="int" /> <description> - Sets the right (output) type of the slot [param idx] to [param type_right]. If the value is negative, all connections will be disallowed to be created via user inputs. + Sets the right (output) type of the slot [param slot_index] to [param type]. If the value is negative, all connections will be disallowed to be created via user inputs. </description> </method> </methods> @@ -265,6 +280,11 @@ Emitted when the GraphNode is requested to be closed. Happens on clicking the close button (see [member show_close]). </description> </signal> + <signal name="deselected"> + <description> + Emitted when the GraphNode is deselected. + </description> + </signal> <signal name="dragged"> <param index="0" name="from" type="Vector2" /> <param index="1" name="to" type="Vector2" /> @@ -288,6 +308,11 @@ Emitted when the GraphNode is requested to be resized. Happens on dragging the resizer handle (see [member resizable]). </description> </signal> + <signal name="selected"> + <description> + Emitted when the GraphNode is selected. + </description> + </signal> <signal name="slot_updated"> <param index="0" name="idx" type="int" /> <description> diff --git a/doc/classes/HMACContext.xml b/doc/classes/HMACContext.xml index 52d4fce28f..706ee30963 100644 --- a/doc/classes/HMACContext.xml +++ b/doc/classes/HMACContext.xml @@ -32,22 +32,22 @@ public class CryptoNode : Node { private HMACContext ctx = new HMACContext(); + public override void _Ready() { - PackedByteArray key = String("supersecret").to_utf8(); - Error err = ctx.Start(HashingContext.HASH_SHA256, key); - GD.Assert(err == OK); - PackedByteArray msg1 = String("this is ").to_utf8(); - PackedByteArray msg2 = String("super duper secret").to_utf8(); + byte[] key = "supersecret".ToUTF8(); + Error err = ctx.Start(HashingContext.HashType.Sha256, key); + Debug.Assert(err == Error.Ok); + byte[] msg1 = "this is ".ToUTF8(); + byte[] msg2 = "super duper secret".ToUTF8(); err = ctx.Update(msg1); - GD.Assert(err == OK); + Debug.Assert(err == Error.Ok); err = ctx.Update(msg2); - GD.Assert(err == OK); - PackedByteArray hmac = ctx.Finish(); + Debug.Assert(err == Error.Ok); + byte[] hmac = ctx.Finish(); GD.Print(hmac.HexEncode()); } } - [/csharp] [/codeblocks] </description> diff --git a/doc/classes/HSplitContainer.xml b/doc/classes/HSplitContainer.xml index 8137e26b8c..13915bd762 100644 --- a/doc/classes/HSplitContainer.xml +++ b/doc/classes/HSplitContainer.xml @@ -13,6 +13,9 @@ <theme_item name="autohide" data_type="constant" type="int" default="1"> Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically when it isn't under the cursor. If 0 ([code]false[/code]), it's always visible. </theme_item> + <theme_item name="minimum_grab_thickness" data_type="constant" type="int" default="6"> + The minimum thickness of the area users can click on to grab the splitting line. If [theme_item separation] or [theme_item grabber]'s thickness are too small, this ensure that the splitting line can still be dragged. + </theme_item> <theme_item name="separation" data_type="constant" type="int" default="12"> The space between sides of the container. </theme_item> diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml index 332ce9d8f4..b3ed38d250 100644 --- a/doc/classes/HTTPClient.xml +++ b/doc/classes/HTTPClient.xml @@ -7,17 +7,17 @@ Hyper-text transfer protocol client (sometimes called "User Agent"). Used to make HTTP requests to download web content, upload files and other data or to communicate with various services, among other use cases. See the [HTTPRequest] node for a higher-level alternative. [b]Note:[/b] This client only needs to connect to a host once (see [method connect_to_host]) to send multiple requests. Because of this, methods that take URLs usually take just the part after the host instead of the full URL, as the client is already connected to a host. See [method request] for a full example and to get started. - A [HTTPClient] should be reused between multiple requests or to connect to different hosts instead of creating one client per request. Supports SSL and SSL server certificate verification. HTTP status codes in the 2xx range indicate success, 3xx redirection (i.e. "try again, but over here"), 4xx something was wrong with the request, and 5xx something went wrong on the server's side. + A [HTTPClient] should be reused between multiple requests or to connect to different hosts instead of creating one client per request. Supports Transport Layer Security (TLS), including server certificate verification. HTTP status codes in the 2xx range indicate success, 3xx redirection (i.e. "try again, but over here"), 4xx something was wrong with the request, and 5xx something went wrong on the server's side. For more information on HTTP, see https://developer.mozilla.org/en-US/docs/Web/HTTP (or read RFC 2616 to get it straight from the source: https://tools.ietf.org/html/rfc2616). [b]Note:[/b] When exporting to Android, make sure to enable the [code]INTERNET[/code] permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android. - [b]Note:[/b] It's recommended to use transport encryption (SSL/TLS) and to avoid sending sensitive information (such as login credentials) in HTTP GET URL parameters. Consider using HTTP POST requests or HTTP headers for such information instead. + [b]Note:[/b] It's recommended to use transport encryption (TLS) and to avoid sending sensitive information (such as login credentials) in HTTP GET URL parameters. Consider using HTTP POST requests or HTTP headers for such information instead. [b]Note:[/b] When performing HTTP requests from a project exported to Web, keep in mind the remote server may not allow requests from foreign origins due to [url=https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS]CORS[/url]. If you host the server in question, you should modify its backend to allow requests from foreign origins by adding the [code]Access-Control-Allow-Origin: *[/code] HTTP header. - [b]Note:[/b] SSL/TLS support is currently limited to TLS 1.0, TLS 1.1, and TLS 1.2. Attempting to connect to a TLS 1.3-only server will return an error. - [b]Warning:[/b] SSL/TLS certificate revocation and certificate pinning are currently not supported. Revoked certificates are accepted as long as they are otherwise valid. If this is a concern, you may want to use automatically managed certificates with a short validity period. + [b]Note:[/b] TLS support is currently limited to TLS 1.0, TLS 1.1, and TLS 1.2. Attempting to connect to a TLS 1.3-only server will return an error. + [b]Warning:[/b] TLS certificate revocation and certificate pinning are currently not supported. Revoked certificates are accepted as long as they are otherwise valid. If this is a concern, you may want to use automatically managed certificates with a short validity period. </description> <tutorials> <link title="HTTP client class">$DOCS_URL/tutorials/networking/http_client_class.html</link> - <link title="SSL certificates">$DOCS_URL/tutorials/networking/ssl_certificates.html</link> + <link title="TLS certificates">$DOCS_URL/tutorials/networking/ssl_certificates.html</link> </tutorials> <methods> <method name="close"> @@ -30,13 +30,13 @@ <return type="int" enum="Error" /> <param index="0" name="host" type="String" /> <param index="1" name="port" type="int" default="-1" /> - <param index="2" name="use_ssl" type="bool" default="false" /> + <param index="2" name="use_tls" type="bool" default="false" /> <param index="3" name="verify_host" type="bool" default="true" /> <description> Connects to a host. This needs to be done before any requests are sent. The host should not have http:// prepended but will strip the protocol identifier if provided. - If no [param port] is specified (or [code]-1[/code] is used), it is automatically set to 80 for HTTP and 443 for HTTPS (if [param use_ssl] is enabled). - [param verify_host] will check the SSL identity of the host if set to [code]true[/code]. + If no [param port] is specified (or [code]-1[/code] is used), it is automatically set to 80 for HTTP and 443 for HTTPS (if [param use_tls] is enabled). + [param verify_host] will check the TLS identity of the host if set to [code]true[/code]. </description> </method> <method name="get_response_body_length" qualifiers="const"> @@ -262,8 +262,8 @@ <constant name="STATUS_CONNECTION_ERROR" value="8" enum="Status"> Status: Error in HTTP connection. </constant> - <constant name="STATUS_SSL_HANDSHAKE_ERROR" value="9" enum="Status"> - Status: Error in SSL handshake. + <constant name="STATUS_TLS_HANDSHAKE_ERROR" value="9" enum="Status"> + Status: Error in TLS handshake. </constant> <constant name="RESPONSE_CONTINUE" value="100" enum="ResponseCode"> HTTP status code [code]100 Continue[/code]. Interim response that indicates everything so far is OK and that the client should continue with the request (or ignore this status if already finished). diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml index 4b098bf585..64a3315308 100644 --- a/doc/classes/HTTPRequest.xml +++ b/doc/classes/HTTPRequest.xml @@ -6,7 +6,7 @@ <description> A node with the ability to send HTTP requests. Uses [HTTPClient] internally. Can be used to make HTTP requests, i.e. download or upload files or web content via HTTP. - [b]Warning:[/b] See the notes and warnings on [HTTPClient] for limitations, especially regarding SSL security. + [b]Warning:[/b] See the notes and warnings on [HTTPClient] for limitations, especially regarding TLS security. [b]Note:[/b] When exporting to Android, make sure to enable the [code]INTERNET[/code] permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android. [b]Example of contacting a REST API and printing one of its returned fields:[/b] [codeblocks] @@ -157,7 +157,7 @@ </description> <tutorials> <link title="Making HTTP requests">$DOCS_URL/tutorials/networking/http_request_class.html</link> - <link title="SSL certificates">$DOCS_URL/tutorials/networking/ssl_certificates.html</link> + <link title="TLS certificates">$DOCS_URL/tutorials/networking/ssl_certificates.html</link> </tutorials> <methods> <method name="cancel_request"> @@ -189,21 +189,21 @@ <return type="int" enum="Error" /> <param index="0" name="url" type="String" /> <param index="1" name="custom_headers" type="PackedStringArray" default="PackedStringArray()" /> - <param index="2" name="ssl_validate_domain" type="bool" default="true" /> + <param index="2" name="tls_validate_domain" type="bool" default="true" /> <param index="3" name="method" type="int" enum="HTTPClient.Method" default="0" /> <param index="4" name="request_data" type="String" default="""" /> <description> Creates request on the underlying [HTTPClient]. If there is no configuration errors, it tries to connect using [method HTTPClient.connect_to_host] and passes parameters onto [method HTTPClient.request]. Returns [constant OK] if request is successfully created. (Does not imply that the server has responded), [constant ERR_UNCONFIGURED] if not in the tree, [constant ERR_BUSY] if still processing previous request, [constant ERR_INVALID_PARAMETER] if given string is not a valid URL format, or [constant ERR_CANT_CONNECT] if not using thread and the [HTTPClient] cannot connect to host. [b]Note:[/b] When [param method] is [constant HTTPClient.METHOD_GET], the payload sent via [param request_data] might be ignored by the server or even cause the server to reject the request (check [url=https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.1]RFC 7231 section 4.3.1[/url] for more details). As a workaround, you can send data as a query string in the URL (see [method String.uri_encode] for an example). - [b]Note:[/b] It's recommended to use transport encryption (SSL/TLS) and to avoid sending sensitive information (such as login credentials) in HTTP GET URL parameters. Consider using HTTP POST requests or HTTP headers for such information instead. + [b]Note:[/b] It's recommended to use transport encryption (TLS) and to avoid sending sensitive information (such as login credentials) in HTTP GET URL parameters. Consider using HTTP POST requests or HTTP headers for such information instead. </description> </method> <method name="request_raw"> <return type="int" enum="Error" /> <param index="0" name="url" type="String" /> <param index="1" name="custom_headers" type="PackedStringArray" default="PackedStringArray()" /> - <param index="2" name="ssl_validate_domain" type="bool" default="true" /> + <param index="2" name="tls_validate_domain" type="bool" default="true" /> <param index="3" name="method" type="int" enum="HTTPClient.Method" default="0" /> <param index="4" name="request_data_raw" type="PackedByteArray" default="PackedByteArray()" /> <description> @@ -283,8 +283,8 @@ <constant name="RESULT_CONNECTION_ERROR" value="4" enum="Result"> Request failed due to connection (read/write) error. </constant> - <constant name="RESULT_SSL_HANDSHAKE_ERROR" value="5" enum="Result"> - Request failed on SSL handshake. + <constant name="RESULT_TLS_HANDSHAKE_ERROR" value="5" enum="Result"> + Request failed on TLS handshake. </constant> <constant name="RESULT_NO_RESPONSE" value="6" enum="Result"> Request does not have a response (yet). diff --git a/doc/classes/ImageFormatLoader.xml b/doc/classes/ImageFormatLoader.xml new file mode 100644 index 0000000000..c6b1ec922a --- /dev/null +++ b/doc/classes/ImageFormatLoader.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="ImageFormatLoader" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Base class to add support for specific image formats. + </brief_description> + <description> + The engine supports multiple image formats out of the box (PNG, SVG, JPEG, WebP to name a few), but you can choose to implement support for additional image formats by extending [ImageFormatLoaderExtension]. + </description> + <tutorials> + </tutorials> + <constants> + <constant name="FLAG_NONE" value="0" enum="LoaderFlags" is_bitfield="true"> + </constant> + <constant name="FLAG_FORCE_LINEAR" value="1" enum="LoaderFlags" is_bitfield="true"> + </constant> + <constant name="FLAG_CONVERT_COLORS" value="2" enum="LoaderFlags" is_bitfield="true"> + </constant> + </constants> +</class> diff --git a/doc/classes/ImageFormatLoaderExtension.xml b/doc/classes/ImageFormatLoaderExtension.xml new file mode 100644 index 0000000000..b2a7ebc60f --- /dev/null +++ b/doc/classes/ImageFormatLoaderExtension.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="ImageFormatLoaderExtension" inherits="ImageFormatLoader" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Base class for creating [ImageFormatLoader] extensions (adding support for extra image formats). + </brief_description> + <description> + The engine supports multiple image formats out of the box (PNG, SVG, JPEG, WebP to name a few), but you can choose to implement support for additional image formats by extending this class. + Be sure to respect the documented return types and values. You should create an instance of it, and call [method add_format_loader] to register that loader during the initializaiton phase. + </description> + <tutorials> + </tutorials> + <methods> + <method name="_get_recognized_extensions" qualifiers="virtual const"> + <return type="PackedStringArray" /> + <description> + Returns the list of file extensions for this image format. Files with the given extentions will be treated as image file and loaded using this class. + </description> + </method> + <method name="_load_image" qualifiers="virtual"> + <return type="int" enum="Error" /> + <param index="0" name="image" type="Image" /> + <param index="1" name="fileaccess" type="FileAccess" /> + <param index="2" name="flags" type="int" enum="ImageFormatLoader.LoaderFlags" /> + <param index="3" name="scale" type="float" /> + <description> + Loads the content of [param fileaccess] into the provided [param image]. + </description> + </method> + <method name="add_format_loader"> + <return type="void" /> + <description> + Add this format loader to the engine, allowing it to recognize the file extensions returned by [method _get_recognized_extensions]. + </description> + </method> + <method name="remove_format_loader"> + <return type="void" /> + <description> + Remove this format loader from the engine. + </description> + </method> + </methods> +</class> diff --git a/doc/classes/ImageTextureLayered.xml b/doc/classes/ImageTextureLayered.xml index c0ad19ddd7..f5786f070a 100644 --- a/doc/classes/ImageTextureLayered.xml +++ b/doc/classes/ImageTextureLayered.xml @@ -9,8 +9,10 @@ <methods> <method name="create_from_images"> <return type="int" enum="Error" /> - <param index="0" name="images" type="Array" /> + <param index="0" name="images" type="Image[]" /> <description> + Creates an [ImageTextureLayered] from an array of [Image]s. The first image decides the width, height, image format and mipmapping setting. The other images must have the same width, height, image format and mipmapping setting. + Each [Image] represents one [code]layer[/code]. </description> </method> <method name="update_layer"> @@ -18,6 +20,10 @@ <param index="0" name="image" type="Image" /> <param index="1" name="layer" type="int" /> <description> + Replaces the existing [Image] data at the given [code]layer[/code] with this new image. + The given [Image] must have the same width, height, image format and mipmapping setting (a [code]bool[/code] value) as the rest of the referenced images. + If the image format is unsupported, it will be decompressed and converted to a similar and supported [enum Image.Format]. + The update is immediate: synced with the draw. </description> </method> </methods> diff --git a/doc/classes/ImporterMesh.xml b/doc/classes/ImporterMesh.xml index e15cfcd2c0..1c9655c266 100644 --- a/doc/classes/ImporterMesh.xml +++ b/doc/classes/ImporterMesh.xml @@ -22,7 +22,7 @@ <return type="void" /> <param index="0" name="primitive" type="int" enum="Mesh.PrimitiveType" /> <param index="1" name="arrays" type="Array" /> - <param index="2" name="blend_shapes" type="Array" default="[]" /> + <param index="2" name="blend_shapes" type="Array[]" default="[]" /> <param index="3" name="lods" type="Dictionary" default="{}" /> <param index="4" name="material" type="Material" default="null" /> <param index="5" name="name" type="String" default="""" /> @@ -43,10 +43,12 @@ <return type="void" /> <param index="0" name="normal_merge_angle" type="float" /> <param index="1" name="normal_split_angle" type="float" /> + <param index="2" name="bone_transform_array" type="Array" /> <description> Generates all lods for this ImporterMesh. [param normal_merge_angle] and [param normal_split_angle] are in degrees and used in the same way as the importer settings in [code]lods[/code]. As a good default, use 25 and 60 respectively. The number of generated lods can be accessed using [method get_surface_lod_count], and each LOD is available in [method get_surface_lod_size] and [method get_surface_lod_indices]. + [param bone_transform_array] is an [Array] which can be either empty or contain [Transform3D]s which, for each of the mesh's bone IDs, will apply mesh skinning when generating the LOD mesh variations. This is usually used to account for discrepancies in scale between the mesh itself and its skinning data. </description> </method> <method name="get_blend_shape_count" qualifiers="const"> diff --git a/doc/classes/InputEventWithModifiers.xml b/doc/classes/InputEventWithModifiers.xml index b4a276f6ac..d0453156d5 100644 --- a/doc/classes/InputEventWithModifiers.xml +++ b/doc/classes/InputEventWithModifiers.xml @@ -9,27 +9,30 @@ <tutorials> <link title="InputEvent">$DOCS_URL/tutorials/inputs/inputevent.html</link> </tutorials> + <methods> + <method name="is_command_or_control_pressed" qualifiers="const"> + <return type="bool" /> + <description> + On macOS, returns [code]true[/code] if [kbd]Meta[/kbd] ([kbd]Command[/kbd]) is pressed. + On other platforms, returns [code]true[/code] if [kbd]Ctrl[/kbd] is pressed. + </description> + </method> + </methods> <members> <member name="alt_pressed" type="bool" setter="set_alt_pressed" getter="is_alt_pressed" default="false"> State of the [kbd]Alt[/kbd] modifier. </member> - <member name="command_pressed" type="bool" setter="set_command_pressed" getter="is_command_pressed" default="false"> - State of the [kbd]Cmd[/kbd] modifier. On macOS, this is equivalent to [member meta_pressed]. On other platforms, this is equivalent to [member ctrl_pressed]. - This modifier should be preferred to [member ctrl_pressed] or [member meta_pressed] for system shortcuts, as it maintains better cross-platform compatibility. + <member name="command_or_control_autoremap" type="bool" setter="set_command_or_control_autoremap" getter="is_command_or_control_autoremap" default="false"> + Automaticaly use [kbd]Meta[/kbd] ([kbd]Command[/kbd]) on macOS and [kbd]Ctrl[/kbd] on other platforms. If [code]true[/code], [member ctrl_pressed] and [member meta_pressed] cannot be set. </member> <member name="ctrl_pressed" type="bool" setter="set_ctrl_pressed" getter="is_ctrl_pressed" default="false"> State of the [kbd]Ctrl[/kbd] modifier. </member> <member name="meta_pressed" type="bool" setter="set_meta_pressed" getter="is_meta_pressed" default="false"> - State of the [kbd]Meta[/kbd] modifier. On Windows and Linux, this represents the Windows key (sometimes called "meta" or "super" on Linux). On macOS, this represents the Command key, and is equivalent to [member command_pressed]. - For better cross-system compatibility, use [member command_pressed] instead. + State of the [kbd]Meta[/kbd] modifier. On Windows and Linux, this represents the Windows key (sometimes called "meta" or "super" on Linux). On macOS, this represents the Command key. </member> <member name="shift_pressed" type="bool" setter="set_shift_pressed" getter="is_shift_pressed" default="false"> State of the [kbd]Shift[/kbd] modifier. </member> - <member name="store_command" type="bool" setter="set_store_command" getter="is_storing_command" default="true"> - If [code]true[/code], pressing [kbd]Cmd[/kbd] on macOS or [kbd]Ctrl[/kbd] on all other platforms will both be serialized as [member command_pressed]. If [code]false[/code], those same keys will be serialized as [member meta_pressed] on macOS and [member ctrl_pressed] on all other platforms. - This aids with cross-platform compatibility when developing e.g. on Windows for macOS, or vice-versa. - </member> </members> </class> diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml index 75a0e1cef7..844f260971 100644 --- a/doc/classes/ItemList.xml +++ b/doc/classes/ItemList.xml @@ -349,7 +349,7 @@ The width all columns will be adjusted to. A value of zero disables the adjustment, each item will have a width equal to the width of its content and the columns will have an uneven width. </member> - <member name="fixed_icon_size" type="Vector2" setter="set_fixed_icon_size" getter="get_fixed_icon_size" default="Vector2(0, 0)"> + <member name="fixed_icon_size" type="Vector2i" setter="set_fixed_icon_size" getter="get_fixed_icon_size" default="Vector2i(0, 0)"> The size all icons will be adjusted to. If either X or Y component is not greater than zero, icon size won't be affected. </member> @@ -469,18 +469,18 @@ <theme_item name="font_size" data_type="font_size" type="int"> Font size of the item's text. </theme_item> - <theme_item name="bg" data_type="style" type="StyleBox"> - Default [StyleBox] for the [ItemList], i.e. used when the control is not being focused. - </theme_item> - <theme_item name="bg_focus" data_type="style" type="StyleBox"> - [StyleBox] used when the [ItemList] is being focused. - </theme_item> <theme_item name="cursor" data_type="style" type="StyleBox"> [StyleBox] used for the cursor, when the [ItemList] is being focused. </theme_item> <theme_item name="cursor_unfocused" data_type="style" type="StyleBox"> [StyleBox] used for the cursor, when the [ItemList] is not being focused. </theme_item> + <theme_item name="focus" data_type="style" type="StyleBox"> + The focused style for the [ItemList], drawn on top of the background, but below everything else. + </theme_item> + <theme_item name="panel" data_type="style" type="StyleBox"> + The background style for the [ItemList]. + </theme_item> <theme_item name="selected" data_type="style" type="StyleBox"> [StyleBox] for the selected items, used when the [ItemList] is not being focused. </theme_item> diff --git a/doc/classes/JSON.xml b/doc/classes/JSON.xml index 46e46cc164..125d016632 100644 --- a/doc/classes/JSON.xml +++ b/doc/classes/JSON.xml @@ -6,7 +6,7 @@ <description> The [JSON] enables all data types to be converted to and from a JSON string. This useful for serializing data to save to a file or send over the network. [method stringify] is used to convert any data type into a JSON string. - [method parse] is used to convert any existing JSON data into a [Variant] that can be used within Godot. If successfully parsed, use [method get_data] to retrieve the [Variant], and use [code]typeof[/code] to check if the Variant's type is what you expect. JSON Objects are converted into a [Dictionary], but JSON data can be used to store [Array]s, numbers, [String]s and even just a boolean. + [method parse] is used to convert any existing JSON data into a [Variant] that can be used within Godot. If successfully parsed, use [member data] to retrieve the [Variant], and use [code]typeof[/code] to check if the Variant's type is what you expect. JSON Objects are converted into a [Dictionary], but JSON data can be used to store [Array]s, numbers, [String]s and even just a boolean. [b]Example[/b] [codeblock] var data_to_send = ["a", "b", "c"] @@ -16,7 +16,7 @@ # Retrieve data var error = json.parse(json_string) if error == OK: - var data_received = json.get_data() + var data_received = json.data if typeof(data_received) == TYPE_ARRAY: print(data_received) # Prints array else: @@ -28,17 +28,15 @@ [codeblock] var data = JSON.parse_string(json_string) # Returns null if parsing failed. [/codeblock] + [b]Note:[/b] Both parse methods do not fully comply with the JSON specification: + - Trailing commas in arrays or objects are ignored, instead of causing a parser error. + - New line and tab characters are accepted in string literals, and are treated like their corresponding escape sequences [code]\n[/code] and [code]\t[/code]. + - Numbers are parsed using [method String.to_float] which is generally more lax than the JSON specification. + - Certain errors, such as invalid Unicode sequences, do not cause a parser error. Instead, the string is cleansed and an error is logged to the console. </description> <tutorials> </tutorials> <methods> - <method name="get_data" qualifiers="const"> - <return type="Variant" /> - <description> - Returns the [Variant] containing the data of a successful [method parse]. - [b]Note:[/b] It will return [code]Null[/code] if the last call to parse was unsuccessful or [method parse] has not yet been called. - </description> - </method> <method name="get_error_line" qualifiers="const"> <return type="int" /> <description> @@ -56,7 +54,7 @@ <param index="0" name="json_string" type="String" /> <description> Attempts to parse the [param json_string] provided. - Returns an [enum Error]. If the parse was successful, it returns [code]OK[/code] and the result can be retrieved using [method get_data]. If unsuccessful, use [method get_error_line] and [method get_error_message] for identifying the source of the failure. + Returns an [enum Error]. If the parse was successful, it returns [code]OK[/code] and the result can be retrieved using [member data]. If unsuccessful, use [method get_error_line] and [method get_error_message] for identifying the source of the failure. Non-static variant of [method parse_string], if you want custom error handling. </description> </method> @@ -118,4 +116,9 @@ </description> </method> </methods> + <members> + <member name="data" type="Variant" setter="set_data" getter="get_data" default="null"> + Contains the parsed JSON data in [Variant] form. + </member> + </members> </class> diff --git a/doc/classes/JavaScript.xml b/doc/classes/JavaScriptBridge.xml index c838422e85..5e36b5cc80 100644 --- a/doc/classes/JavaScript.xml +++ b/doc/classes/JavaScriptBridge.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="JavaScript" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="JavaScriptBridge" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Singleton that connects the engine with the browser's JavaScript context in Web export. </brief_description> <description> - The JavaScript singleton is implemented only in the Web export. It's used to access the browser's JavaScript context. This allows interaction with embedding pages or calling third-party JavaScript APIs. - [b]Note:[/b] This singleton can be disabled at build-time to improve security. By default, the JavaScript singleton is enabled. Official export templates also have the JavaScript singleton enabled. See [url=$DOCS_URL/development/compiling/compiling_for_web.html]Compiling for the Web[/url] in the documentation for more information. + The JavaScriptBridge singleton is implemented only in the Web export. It's used to access the browser's JavaScript context. This allows interaction with embedding pages or calling third-party JavaScript APIs. + [b]Note:[/b] This singleton can be disabled at build-time to improve security. By default, the JavaScriptBridge singleton is enabled. Official export templates also have the JavaScriptBridge singleton enabled. See [url=$DOCS_URL/development/compiling/compiling_for_web.html]Compiling for the Web[/url] in the documentation for more information. </description> <tutorials> <link title="Exporting for the Web: Calling JavaScript from script">$DOCS_URL/tutorials/export/exporting_for_web.html#calling-javascript-from-script</link> diff --git a/doc/classes/JavaScriptObject.xml b/doc/classes/JavaScriptObject.xml index e279acf5a4..26792bd19e 100644 --- a/doc/classes/JavaScriptObject.xml +++ b/doc/classes/JavaScriptObject.xml @@ -1,27 +1,27 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="JavaScriptObject" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A wrapper class for native JavaScript objects. + A wrapper class for web native JavaScript objects. </brief_description> <description> - JavaScriptObject is used to interact with JavaScript objects retrieved or created via [method JavaScript.get_interface], [method JavaScript.create_object], or [method JavaScript.create_callback]. + JavaScriptObject is used to interact with JavaScript objects retrieved or created via [method JavaScriptBridge.get_interface], [method JavaScriptBridge.create_object], or [method JavaScriptBridge.create_callback]. Example: [codeblock] extends Node - var _my_js_callback = JavaScript.create_callback(self, "myCallback") # This reference must be kept - var console = JavaScript.get_interface("console") + var _my_js_callback = JavaScriptBridge.create_callback(self, "myCallback") # This reference must be kept + var console = JavaScriptBridge.get_interface("console") func _init(): - var buf = JavaScript.create_object("ArrayBuffer", 10) # new ArrayBuffer(10) + var buf = JavaScriptBridge.create_object("ArrayBuffer", 10) # new ArrayBuffer(10) print(buf) # prints [JavaScriptObject:OBJECT_ID] - var uint8arr = JavaScript.create_object("Uint8Array", buf) # new Uint8Array(buf) + var uint8arr = JavaScriptBridge.create_object("Uint8Array", buf) # new Uint8Array(buf) uint8arr[1] = 255 prints(uint8arr[1], uint8arr.byteLength) # prints 255 10 console.log(uint8arr) # prints in browser console "Uint8Array(10) [ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0 ]" - # Equivalent of JavaScript: Array.from(uint8arr).forEach(myCallback) - JavaScript.get_interface("Array").from(uint8arr).forEach(_my_js_callback) + # Equivalent of JavaScriptBridge: Array.from(uint8arr).forEach(myCallback) + JavaScriptBridge.get_interface("Array").from(uint8arr).forEach(_my_js_callback) func myCallback(args): # Will be called with the parameters passed to the "forEach" callback diff --git a/doc/classes/Light3D.xml b/doc/classes/Light3D.xml index 80ff83ec46..e9ebbc0a41 100644 --- a/doc/classes/Light3D.xml +++ b/doc/classes/Light3D.xml @@ -11,6 +11,12 @@ <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link> </tutorials> <methods> + <method name="get_correlated_color" qualifiers="const"> + <return type="Color" /> + <description> + Returns the [Color] of an idealized blackbody at the given [member light_temperature]. This value is calculated internally based on the [member light_temperature]. This [Color] is multiplied by [member light_color] before being sent to the [RenderingServer]. + </description> + </method> <method name="get_param" qualifiers="const"> <return type="float" /> <param index="0" name="param" type="int" enum="Light3D.Param" /> @@ -67,6 +73,15 @@ Secondary multiplier used with indirect light (light bounces). Used with [VoxelGI] and SDFGI (see [member Environment.sdfgi_enabled]). [b]Note:[/b] This property is ignored if [member light_energy] is equal to [code]0.0[/code], as the light won't be present at all in the GI shader. </member> + <member name="light_intensity_lumens" type="float" setter="set_param" getter="get_param"> + Used by positional lights ([OmniLight3D] and [SpotLight3D]) when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is [code]true[/code]. Sets the intensity of the light source measured in Lumens. Lumens are a measure of luminous flux, which is the total amount of visible light emitted by a light source per unit of time. + For [SpotLight3D]s, we assume that the area outside the visible cone is surrounded by a perfect light absorbing material. Accordingly, the apparent brightness of the cone area does not change as the cone increases and decreases in size. + A typical household lightbulb can range from around 600 lumens to 1,200 lumens, a candle is about 13 lumens, while a streetlight can be approximately 60,000 lumens. + </member> + <member name="light_intensity_lux" type="float" setter="set_param" getter="get_param"> + Used by [DirectionalLight3D]s when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is [code]true[/code]. Sets the intensity of the light source measured in Lux. Lux is a measure pf luminous flux per unit area, it is equal to one lumen per square metre. Lux is the measure of how much light hits a surface at a given time. + On a clear sunny day a surface in direct sunlight may be approximately 100,000 lux, a typical room in a home may be approximately 50 lux, while the moonlit ground may be approximately 0.1 lux. + </member> <member name="light_negative" type="bool" setter="set_negative" getter="is_negative" default="false"> If [code]true[/code], the light's effect is reversed, darkening areas and casting bright shadows. </member> @@ -80,6 +95,14 @@ <member name="light_specular" type="float" setter="set_param" getter="get_param" default="0.5"> The intensity of the specular blob in objects affected by the light. At [code]0[/code], the light becomes a pure diffuse light. When not baking emission, this can be used to avoid unrealistic reflections when placing lights above an emissive surface. </member> + <member name="light_temperature" type="float" setter="set_temperature" getter="get_temperature"> + Sets the color temperature of the light source, measured in Kelvin. This is used to calculate a correlated color temperature which tints the [member light_color]. + The sun on a cloudy day is approximately 6500 Kelvin, on a clear day it is between 5500 to 6000 Kelvin, and on a clear day at sunrise or sunset it ranges to around 1850 Kelvin. + </member> + <member name="light_volumetric_fog_energy" type="float" setter="set_param" getter="get_param" default="1.0"> + Secondary multiplier multiplied with [member light_energy] then used with the [Environment]'s volumetric fog (if enabled). If set to [code]0.0[/code], computing volumetric fog will be skipped for this light, which can improve performance for large amounts of lights when volumetric fog is enabled. + [b]Note:[/b] To prevent short-lived dynamic light effects from poorly interacting with volumetric fog, lights used in those effects should have [member light_volumetric_fog_energy] set to [code]0.0[/code] unless [member Environment.volumetric_fog_temporal_reprojection_enabled] is disabled (or unless the reprojection amount is significantly lowered). + </member> <member name="shadow_bias" type="float" setter="set_param" getter="get_param" default="0.1"> Used to adjust shadow appearance. Too small a value results in self-shadowing ("shadow acne"), while too large a value causes shadows to separate from casters ("peter-panning"). Adjust as needed. </member> @@ -89,8 +112,6 @@ <member name="shadow_enabled" type="bool" setter="set_shadow" getter="has_shadow" default="false"> If [code]true[/code], the light will cast real-time shadows. This has a significant performance cost. Only enable shadow rendering when it makes a noticeable difference in the scene's appearance, and consider using [member distance_fade_enabled] to hide the light when far away from the [Camera3D]. </member> - <member name="shadow_fog_fade" type="float" setter="set_param" getter="get_param" default="0.1"> - </member> <member name="shadow_normal_bias" type="float" setter="set_param" getter="get_param" default="1.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> @@ -110,61 +131,64 @@ <constant name="PARAM_INDIRECT_ENERGY" value="1" enum="Param"> Constant for accessing [member light_indirect_energy]. </constant> - <constant name="PARAM_SPECULAR" value="2" enum="Param"> + <constant name="PARAM_VOLUMETRIC_FOG_ENERGY" value="2" enum="Param"> + Constant for accessing [member light_volumetric_fog_energy]. + </constant> + <constant name="PARAM_SPECULAR" value="3" enum="Param"> Constant for accessing [member light_specular]. </constant> - <constant name="PARAM_RANGE" value="3" enum="Param"> + <constant name="PARAM_RANGE" value="4" enum="Param"> Constant for accessing [member OmniLight3D.omni_range] or [member SpotLight3D.spot_range]. </constant> - <constant name="PARAM_SIZE" value="4" enum="Param"> + <constant name="PARAM_SIZE" value="5" enum="Param"> Constant for accessing [member light_size]. </constant> - <constant name="PARAM_ATTENUATION" value="5" enum="Param"> + <constant name="PARAM_ATTENUATION" value="6" enum="Param"> Constant for accessing [member OmniLight3D.omni_attenuation] or [member SpotLight3D.spot_attenuation]. </constant> - <constant name="PARAM_SPOT_ANGLE" value="6" enum="Param"> + <constant name="PARAM_SPOT_ANGLE" value="7" enum="Param"> Constant for accessing [member SpotLight3D.spot_angle]. </constant> - <constant name="PARAM_SPOT_ATTENUATION" value="7" enum="Param"> + <constant name="PARAM_SPOT_ATTENUATION" value="8" enum="Param"> Constant for accessing [member SpotLight3D.spot_angle_attenuation]. </constant> - <constant name="PARAM_SHADOW_MAX_DISTANCE" value="8" enum="Param"> + <constant name="PARAM_SHADOW_MAX_DISTANCE" value="9" enum="Param"> Constant for accessing [member DirectionalLight3D.directional_shadow_max_distance]. </constant> - <constant name="PARAM_SHADOW_SPLIT_1_OFFSET" value="9" enum="Param"> + <constant name="PARAM_SHADOW_SPLIT_1_OFFSET" value="10" enum="Param"> Constant for accessing [member DirectionalLight3D.directional_shadow_split_1]. </constant> - <constant name="PARAM_SHADOW_SPLIT_2_OFFSET" value="10" enum="Param"> + <constant name="PARAM_SHADOW_SPLIT_2_OFFSET" value="11" enum="Param"> Constant for accessing [member DirectionalLight3D.directional_shadow_split_2]. </constant> - <constant name="PARAM_SHADOW_SPLIT_3_OFFSET" value="11" enum="Param"> + <constant name="PARAM_SHADOW_SPLIT_3_OFFSET" value="12" enum="Param"> Constant for accessing [member DirectionalLight3D.directional_shadow_split_3]. </constant> - <constant name="PARAM_SHADOW_FADE_START" value="12" enum="Param"> + <constant name="PARAM_SHADOW_FADE_START" value="13" enum="Param"> Constant for accessing [member DirectionalLight3D.directional_shadow_fade_start]. </constant> - <constant name="PARAM_SHADOW_NORMAL_BIAS" value="13" enum="Param"> + <constant name="PARAM_SHADOW_NORMAL_BIAS" value="14" enum="Param"> Constant for accessing [member shadow_normal_bias]. </constant> - <constant name="PARAM_SHADOW_BIAS" value="14" enum="Param"> + <constant name="PARAM_SHADOW_BIAS" value="15" enum="Param"> Constant for accessing [member shadow_bias]. </constant> - <constant name="PARAM_SHADOW_PANCAKE_SIZE" value="15" enum="Param"> + <constant name="PARAM_SHADOW_PANCAKE_SIZE" value="16" enum="Param"> Constant for accessing [member DirectionalLight3D.directional_shadow_pancake_size]. </constant> - <constant name="PARAM_SHADOW_OPACITY" value="16" enum="Param"> + <constant name="PARAM_SHADOW_OPACITY" value="17" enum="Param"> Constant for accessing [member shadow_opacity]. </constant> - <constant name="PARAM_SHADOW_BLUR" value="17" enum="Param"> + <constant name="PARAM_SHADOW_BLUR" value="18" enum="Param"> Constant for accessing [member shadow_blur]. </constant> - <constant name="PARAM_SHADOW_VOLUMETRIC_FOG_FADE" value="18" enum="Param"> - Constant for accessing [member shadow_fog_fade]. - </constant> <constant name="PARAM_TRANSMITTANCE_BIAS" value="19" enum="Param"> Constant for accessing [member shadow_transmittance_bias]. </constant> - <constant name="PARAM_MAX" value="20" enum="Param"> + <constant name="PARAM_INTENSITY" value="20" enum="Param"> + Constant for accessing [member light_intensity_lumens] and [member light_intensity_lux]. Only used when [member ProjectSettings.rendering/lights_and_shadows/use_physical_light_units] is [code]true[/code]. + </constant> + <constant name="PARAM_MAX" value="21" enum="Param"> Represents the size of the [enum Param] enum. </constant> <constant name="BAKE_DISABLED" value="0" enum="BakeMode"> diff --git a/doc/classes/LightmapGI.xml b/doc/classes/LightmapGI.xml index c0766cd1ec..53dae1a8e6 100644 --- a/doc/classes/LightmapGI.xml +++ b/doc/classes/LightmapGI.xml @@ -17,9 +17,12 @@ <member name="bias" type="float" setter="set_bias" getter="get_bias" default="0.0005"> The bias to use when computing shadows. Increasing [member bias] can fix shadow acne on the resulting baked lightmap, but can introduce peter-panning (shadows not connecting to their casters). Real-time [Light3D] shadows are not affected by this [member bias] property. </member> - <member name="bounces" type="int" setter="set_bounces" getter="get_bounces" default="1"> + <member name="bounces" type="int" setter="set_bounces" getter="get_bounces" default="3"> Number of light bounces that are taken into account during baking. Higher values result in brighter, more realistic lighting, at the cost of longer bake times. If set to [code]0[/code], only environment lighting, direct light and emissive lighting is baked. </member> + <member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes"> + The [CameraAttributes] resource that specifies exposure levels to bake at. Auto-exposure and non exposure properties will be ignored. Exposure settings should be used to reduce the dynamic range present when baking. If exposure is too high, the [LightmapGI] will have banding artifacts or may have over-exposure artifacts. + </member> <member name="directional" type="bool" setter="set_directional" getter="is_directional" default="false"> If [code]true[/code], bakes lightmaps to contain directional information as spherical harmonics. This results in more realistic lighting appearance, especially with normal mapped materials and for lights that have their direct light baked ([member Light3D.light_bake_mode] set to [constant Light3D.BAKE_STATIC]). The directional information is also used to provide rough reflections for static and dynamic objects. This has a small run-time performance cost as the shader has to perform more work to interpret the direction information from the lightmap. Directional lightmaps also take longer to bake and result in larger file sizes. [b]Note:[/b] The property's name has no relationship with [DirectionalLight3D]. [member directional] works with all light types. @@ -33,10 +36,10 @@ <member name="environment_custom_sky" type="Sky" setter="set_environment_custom_sky" getter="get_environment_custom_sky"> The sky to use as a source of environment lighting. Only effective if [member environment_mode] is [constant ENVIRONMENT_MODE_CUSTOM_SKY]. </member> - <member name="environment_mode" type="int" setter="set_environment_mode" getter="get_environment_mode" enum="LightmapGI.EnvironmentMode" default="0"> + <member name="environment_mode" type="int" setter="set_environment_mode" getter="get_environment_mode" enum="LightmapGI.EnvironmentMode" default="1"> The environment mode to use when baking lightmaps. </member> - <member name="generate_probes_subdiv" type="int" setter="set_generate_probes" getter="get_generate_probes" enum="LightmapGI.GenerateProbes" default="0"> + <member name="generate_probes_subdiv" type="int" setter="set_generate_probes" getter="get_generate_probes" enum="LightmapGI.GenerateProbes" default="2"> The level of subdivision to use when automatically generating [LightmapProbe]s for dynamic object lighting. Higher values result in more accurate indirect lighting on dynamic objects, at the cost of longer bake times and larger file sizes. [b]Note:[/b] Automatically generated [LightmapProbe]s are not visible as nodes in the Scene tree dock, and cannot be modified this way after they are generated. [b]Note:[/b] Regardless of [member generate_probes_subdiv], direct lighting on dynamic objects is always applied using [Light3D] nodes in real-time. diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml index f8f2375a71..14fb864ca8 100644 --- a/doc/classes/LineEdit.xml +++ b/doc/classes/LineEdit.xml @@ -144,7 +144,7 @@ <member name="caret_blink" type="bool" setter="set_caret_blink_enabled" getter="is_caret_blink_enabled" default="false"> If [code]true[/code], the caret (text cursor) blinks. </member> - <member name="caret_blink_speed" type="float" setter="set_caret_blink_speed" getter="get_caret_blink_speed" default="0.65"> + <member name="caret_blink_interval" type="float" setter="set_caret_blink_interval" getter="get_caret_blink_interval" default="0.65"> Duration (in seconds) of a caret's blinking cycle. </member> <member name="caret_column" type="int" setter="set_caret_column" getter="get_caret_column" default="0"> diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml index bae2335cfb..ce2b5f2584 100644 --- a/doc/classes/MultiMesh.xml +++ b/doc/classes/MultiMesh.xml @@ -1,13 +1,15 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="MultiMesh" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - Provides high-performance mesh instancing. + Provides high-performance drawing of a mesh multiple times using GPU instancing. </brief_description> <description> MultiMesh provides low-level mesh instancing. Drawing thousands of [MeshInstance3D] nodes can be slow, since each object is submitted to the GPU then drawn individually. MultiMesh is much faster as it can draw thousands of instances with a single draw call, resulting in less API overhead. As a drawback, if the instances are too far away from each other, performance may be reduced as every single instance will always render (they are spatially indexed as one, for the whole object). Since instances may have any behavior, the AABB used for visibility must be provided by the user. + [b]Note:[/b] A MultiMesh is a single object, therefore the same maximum lights per object restriction applies. This means, that once the maximum lights are consumed by one or more instances, the rest of the MultiMesh instances will [b]not[/b] receive any lighting. + [b]Note:[/b] Blend Shapes will be ignored if used in a MultiMesh. </description> <tutorials> <link title="Animating thousands of fish with MultiMeshInstance">$DOCS_URL/tutorials/performance/vertex_animation/animating_thousands_of_fish.html</link> @@ -24,7 +26,7 @@ <return type="Color" /> <param index="0" name="instance" type="int" /> <description> - Gets a specific instance's color. + Gets a specific instance's color multiplier. </description> </method> <method name="get_instance_custom_data" qualifiers="const"> @@ -53,8 +55,8 @@ <param index="0" name="instance" type="int" /> <param index="1" name="color" type="Color" /> <description> - Sets the color of a specific instance by [i]multiplying[/i] the mesh's existing vertex colors. - For the color to take effect, ensure that [member use_colors] is [code]true[/code] on the [MultiMesh] and [member BaseMaterial3D.vertex_color_use_as_albedo] is [code]true[/code] on the material. If the color doesn't look as expected, make sure the material's albedo color is set to pure white ([code]Color(1, 1, 1)[/code]). + Sets the color of a specific instance by [i]multiplying[/i] the mesh's existing vertex colors. This allows for different color tinting per instance. + For the color to take effect, ensure that [member use_colors] is [code]true[/code] on the [MultiMesh] and [member BaseMaterial3D.vertex_color_use_as_albedo] is [code]true[/code] on the material. If you intend to set an absolute color instead of tinting, make sure the material's albedo color is set to pure white ([code]Color(1, 1, 1)[/code]). </description> </method> <method name="set_instance_custom_data"> @@ -64,6 +66,7 @@ <description> Sets custom data for a specific instance. Although [Color] is used, it is just a container for 4 floating point numbers. For the custom data to be used, ensure that [member use_custom_data] is [code]true[/code]. + This custom instance data has to be manually accessed in your custom shader using [code]INSTANCE_CUSTOM[/code]. </description> </method> <method name="set_instance_transform"> @@ -87,28 +90,33 @@ <member name="buffer" type="PackedFloat32Array" setter="set_buffer" getter="get_buffer" default="PackedFloat32Array()"> </member> <member name="color_array" type="PackedColorArray" setter="_set_color_array" getter="_get_color_array"> + See [method set_instance_color]. </member> <member name="custom_data_array" type="PackedColorArray" setter="_set_custom_data_array" getter="_get_custom_data_array"> + See [method set_instance_custom_data]. </member> <member name="instance_count" type="int" setter="set_instance_count" getter="get_instance_count" default="0"> Number of instances that will get drawn. This clears and (re)sizes the buffers. Setting data format or flags afterwards will have no effect. By default, all instances are drawn but you can limit this with [member visible_instance_count]. </member> <member name="mesh" type="Mesh" setter="set_mesh" getter="get_mesh"> - Mesh to be drawn. + [Mesh] resource to be instanced. + The looks of the individual instances can be modified using [method set_instance_color] and [method set_instance_custom_data]. </member> <member name="transform_2d_array" type="PackedVector2Array" setter="_set_transform_2d_array" getter="_get_transform_2d_array"> + See [method set_instance_transform_2d]. </member> <member name="transform_array" type="PackedVector3Array" setter="_set_transform_array" getter="_get_transform_array"> + See [method set_instance_transform]. </member> <member name="transform_format" type="int" setter="set_transform_format" getter="get_transform_format" enum="MultiMesh.TransformFormat" default="0"> Format of transform used to transform mesh, either 2D or 3D. </member> <member name="use_colors" type="bool" setter="set_use_colors" getter="is_using_colors" default="false"> - If [code]true[/code], the [MultiMesh] will use color data (see [member color_array]). + If [code]true[/code], the [MultiMesh] will use color data (see [method set_instance_color]). Can only be set when [member instance_count] is [code]0[/code] or less. This means that you need to call this method before setting the instance count, or temporarily reset it to [code]0[/code]. </member> <member name="use_custom_data" type="bool" setter="set_use_custom_data" getter="is_using_custom_data" default="false"> - If [code]true[/code], the [MultiMesh] will use custom data (see [member custom_data_array]). + If [code]true[/code], the [MultiMesh] will use custom data (see [method set_instance_custom_data]). Can only be set when [member instance_count] is [code]0[/code] or less. This means that you need to call this method before setting the instance count, or temporarily reset it to [code]0[/code]. </member> <member name="visible_instance_count" type="int" setter="set_visible_instance_count" getter="get_visible_instance_count" default="-1"> Limits the number of instances drawn, -1 draws all instances. Changing this does not change the sizes of the buffers. diff --git a/doc/classes/MultiplayerPeerExtension.xml b/doc/classes/MultiplayerPeerExtension.xml index 3a193abd7d..18bc18e6e7 100644 --- a/doc/classes/MultiplayerPeerExtension.xml +++ b/doc/classes/MultiplayerPeerExtension.xml @@ -16,7 +16,7 @@ </description> </method> <method name="_get_connection_status" qualifiers="virtual const"> - <return type="int" /> + <return type="int" enum="MultiplayerPeer.ConnectionStatus" /> <description> Called when the connection status is requested on the [MultiplayerPeer] (see [method MultiplayerPeer.get_connection_status]). </description> @@ -28,7 +28,7 @@ </description> </method> <method name="_get_packet" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="r_buffer" type="const uint8_t **" /> <param index="1" name="r_buffer_size" type="int32_t*" /> <description> @@ -54,7 +54,7 @@ </description> </method> <method name="_get_transfer_mode" qualifiers="virtual const"> - <return type="int" /> + <return type="int" enum="MultiplayerPeer.TransferMode" /> <description> Called when the transfer mode to use is read on this [MultiplayerPeer] (see [member MultiplayerPeer.transfer_mode]). </description> @@ -78,13 +78,13 @@ </description> </method> <method name="_poll" qualifiers="virtual"> - <return type="int" /> + <return type="void" /> <description> Called when the [MultiplayerAPI] is polled. See [method MultiplayerAPI.poll]. </description> </method> <method name="_put_packet" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="p_buffer" type="const uint8_t*" /> <param index="1" name="p_buffer_size" type="int" /> <description> @@ -92,7 +92,7 @@ </description> </method> <method name="_put_packet_script" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="p_buffer" type="PackedByteArray" /> <description> Called when a packet needs to be sent by the [MultiplayerAPI], if [method _put_packet] isn't implemented. Use this when extending this class via GDScript. @@ -121,7 +121,7 @@ </method> <method name="_set_transfer_mode" qualifiers="virtual"> <return type="void" /> - <param index="0" name="p_mode" type="int" /> + <param index="0" name="p_mode" type="int" enum="MultiplayerPeer.TransferMode" /> <description> Called when the transfer mode is set on this [MultiplayerPeer] (see [member MultiplayerPeer.transfer_mode]). </description> diff --git a/doc/classes/NavigationAgent2D.xml b/doc/classes/NavigationAgent2D.xml index bf3aff2c58..3437e0eca4 100644 --- a/doc/classes/NavigationAgent2D.xml +++ b/doc/classes/NavigationAgent2D.xml @@ -165,7 +165,7 @@ <signal name="velocity_computed"> <param index="0" name="safe_velocity" type="Vector3" /> <description> - Notifies when the collision avoidance velocity is calculated. Emitted by [method set_velocity]. + Notifies when the collision avoidance velocity is calculated. Emitted by [method set_velocity]. Only emitted when [member avoidance_enabled] is true. </description> </signal> </signals> diff --git a/doc/classes/NavigationAgent3D.xml b/doc/classes/NavigationAgent3D.xml index 7c48f0b52b..3bb5b361ca 100644 --- a/doc/classes/NavigationAgent3D.xml +++ b/doc/classes/NavigationAgent3D.xml @@ -171,7 +171,7 @@ <signal name="velocity_computed"> <param index="0" name="safe_velocity" type="Vector3" /> <description> - Notifies when the collision avoidance velocity is calculated. Emitted by [method set_velocity]. + Notifies when the collision avoidance velocity is calculated. Emitted by [method set_velocity]. Only emitted when [member avoidance_enabled] is true. </description> </signal> </signals> diff --git a/doc/classes/NavigationLink2D.xml b/doc/classes/NavigationLink2D.xml new file mode 100644 index 0000000000..1e086fb730 --- /dev/null +++ b/doc/classes/NavigationLink2D.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationLink2D" inherits="Node2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Creates a link between two locations that [NavigationServer2D] can route agents through. + </brief_description> + <description> + Creates a link between two locations that [NavigationServer2D] can route agents through. Links can be used to express navigation methods that aren't just traveling along the surface of the navigation mesh, like zip-lines, teleporters, or jumping across gaps. + </description> + <tutorials> + </tutorials> + <methods> + <method name="get_navigation_layer_value" qualifiers="const"> + <return type="bool" /> + <param index="0" name="layer_number" type="int" /> + <description> + Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [code]layer_number[/code] between 1 and 32. + </description> + </method> + <method name="set_navigation_layer_value"> + <return type="void" /> + <param index="0" name="layer_number" type="int" /> + <param index="1" name="value" type="bool" /> + <description> + Based on [code]value[/code], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [code]layer_number[/code] between 1 and 32. + </description> + </method> + </methods> + <members> + <member name="bidirectional" type="bool" setter="set_bidirectional" getter="is_bidirectional" default="true"> + Whether this link can be traveled in both directions or only from [member start_location] to [member end_location]. + </member> + <member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true"> + Whether this link is currently active. If [code]false[/code], [method NavigationServer2D.map_get_path] will ignore this link. + </member> + <member name="end_location" type="Vector2" setter="set_end_location" getter="get_end_location" default="Vector2(0, 0)"> + Ending position of the link. + This position will search out the nearest polygon in the navigation mesh to attach to. + The distance the link will search is controlled by [method NavigationServer2D.map_set_link_connection_radius]. + </member> + <member name="enter_cost" type="float" setter="set_enter_cost" getter="get_enter_cost" default="0.0"> + When pathfinding enters this link from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path. + </member> + <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1"> + A bitfield determining all navigation layers the link belongs to. These navigation layers will be checked when requesting a path with [method NavigationServer2D.map_get_path]. + </member> + <member name="start_location" type="Vector2" setter="set_start_location" getter="get_start_location" default="Vector2(0, 0)"> + Starting position of the link. + This position will search out the nearest polygon in the navigation mesh to attach to. + The distance the link will search is controlled by [method NavigationServer2D.map_set_link_connection_radius]. + </member> + <member name="travel_cost" type="float" setter="set_travel_cost" getter="get_travel_cost" default="1.0"> + When pathfinding moves along the link the traveled distance is multiplied with [code]travel_cost[/code] for determining the shortest path. + </member> + </members> +</class> diff --git a/doc/classes/NavigationLink3D.xml b/doc/classes/NavigationLink3D.xml new file mode 100644 index 0000000000..4d5d81bec5 --- /dev/null +++ b/doc/classes/NavigationLink3D.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationLink3D" inherits="Node3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Creates a link between two locations that [NavigationServer3D] can route agents through. + </brief_description> + <description> + Creates a link between two locations that [NavigationServer3D] can route agents through. Links can be used to express navigation methods that aren't just traveling along the surface of the navigation mesh, like zip-lines, teleporters, or jumping across gaps. + </description> + <tutorials> + </tutorials> + <methods> + <method name="get_navigation_layer_value" qualifiers="const"> + <return type="bool" /> + <param index="0" name="layer_number" type="int" /> + <description> + Returns whether or not the specified layer of the [member navigation_layers] bitmask is enabled, given a [code]layer_number[/code] between 1 and 32. + </description> + </method> + <method name="set_navigation_layer_value"> + <return type="void" /> + <param index="0" name="layer_number" type="int" /> + <param index="1" name="value" type="bool" /> + <description> + Based on [code]value[/code], enables or disables the specified layer in the [member navigation_layers] bitmask, given a [code]layer_number[/code] between 1 and 32. + </description> + </method> + </methods> + <members> + <member name="bidirectional" type="bool" setter="set_bidirectional" getter="is_bidirectional" default="true"> + Whether this link can be traveled in both directions or only from [member start_location] to [member end_location]. + </member> + <member name="enabled" type="bool" setter="set_enabled" getter="is_enabled" default="true"> + Whether this link is currently active. If [code]false[/code], [method NavigationServer3D.map_get_path] will ignore this link. + </member> + <member name="end_location" type="Vector3" setter="set_end_location" getter="get_end_location" default="Vector3(0, 0, 0)"> + Ending position of the link. + This position will search out the nearest polygon in the navigation mesh to attach to. + The distance the link will search is controlled by [method NavigationServer3D.map_set_link_connection_radius]. + </member> + <member name="enter_cost" type="float" setter="set_enter_cost" getter="get_enter_cost" default="0.0"> + When pathfinding enters this link from another regions navmesh the [code]enter_cost[/code] value is added to the path distance for determining the shortest path. + </member> + <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1"> + A bitfield determining all navigation layers the link belongs to. These navigation layers will be checked when requesting a path with [method NavigationServer3D.map_get_path]. + </member> + <member name="start_location" type="Vector3" setter="set_start_location" getter="get_start_location" default="Vector3(0, 0, 0)"> + Starting position of the link. + This position will search out the nearest polygon in the navigation mesh to attach to. + The distance the link will search is controlled by [method NavigationServer3D.map_set_link_connection_radius]. + </member> + <member name="travel_cost" type="float" setter="set_travel_cost" getter="get_travel_cost" default="1.0"> + When pathfinding moves along the link the traveled distance is multiplied with [code]travel_cost[/code] for determining the shortest path. + </member> + </members> +</class> diff --git a/doc/classes/NavigationObstacle2D.xml b/doc/classes/NavigationObstacle2D.xml index 4ecdc06645..6d05e220e3 100644 --- a/doc/classes/NavigationObstacle2D.xml +++ b/doc/classes/NavigationObstacle2D.xml @@ -10,12 +10,25 @@ <tutorials> </tutorials> <methods> + <method name="get_navigation_map" qualifiers="const"> + <return type="RID" /> + <description> + Returns the [RID] of the navigation map for this NavigationObstacle node. This function returns always the map set on the NavigationObstacle node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationObstacle node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationObstacle and also update the agent on the NavigationServer. + </description> + </method> <method name="get_rid" qualifiers="const"> <return type="RID" /> <description> Returns the [RID] of this obstacle on the [NavigationServer2D]. </description> </method> + <method name="set_navigation_map"> + <return type="void" /> + <param index="0" name="navigation_map" type="RID" /> + <description> + Sets the [RID] of the navigation map this NavigationObstacle node should use and also updates the [code]agent[/code] on the NavigationServer. + </description> + </method> </methods> <members> <member name="estimate_radius" type="bool" setter="set_estimate_radius" getter="is_radius_estimated" default="true"> diff --git a/doc/classes/NavigationObstacle3D.xml b/doc/classes/NavigationObstacle3D.xml index ed8af3883c..f5a0bde089 100644 --- a/doc/classes/NavigationObstacle3D.xml +++ b/doc/classes/NavigationObstacle3D.xml @@ -10,12 +10,25 @@ <tutorials> </tutorials> <methods> + <method name="get_navigation_map" qualifiers="const"> + <return type="RID" /> + <description> + Returns the [RID] of the navigation map for this NavigationObstacle node. This function returns always the map set on the NavigationObstacle node and not the map of the abstract agent on the NavigationServer. If the agent map is changed directly with the NavigationServer API the NavigationObstacle node will not be aware of the map change. Use [method set_navigation_map] to change the navigation map for the NavigationObstacle and also update the agent on the NavigationServer. + </description> + </method> <method name="get_rid" qualifiers="const"> <return type="RID" /> <description> Returns the [RID] of this obstacle on the [NavigationServer3D]. </description> </method> + <method name="set_navigation_map"> + <return type="void" /> + <param index="0" name="navigation_map" type="RID" /> + <description> + Sets the [RID] of the navigation map this NavigationObstacle node should use and also updates the [code]agent[/code] on the NavigationServer. + </description> + </method> </methods> <members> <member name="estimate_radius" type="bool" setter="set_estimate_radius" getter="is_radius_estimated" default="true"> diff --git a/doc/classes/NavigationPathQueryParameters2D.xml b/doc/classes/NavigationPathQueryParameters2D.xml new file mode 100644 index 0000000000..364f495a72 --- /dev/null +++ b/doc/classes/NavigationPathQueryParameters2D.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryParameters2D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Parameters to be sent to a 2D navigation path query. + </brief_description> + <description> + This class contains the start and target position and other parameters to be used with [method NavigationServer2D.query_path]. + </description> + <tutorials> + </tutorials> + <members> + <member name="map" type="RID" setter="set_map" getter="get_map"> + The navigation [code]map[/code] [RID] used in the path query. + </member> + <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1"> + The navigation layers the query will use (as a bitmask). + </member> + <member name="path_postprocessing" type="int" setter="set_path_postprocessing" getter="get_path_postprocessing" enum="NavigationPathQueryParameters2D.PathPostProcessing" default="0"> + The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]. + </member> + <member name="pathfinding_algorithm" type="int" setter="set_pathfinding_algorithm" getter="get_pathfinding_algorithm" enum="NavigationPathQueryParameters2D.PathfindingAlgorithm" default="0"> + The pathfinding algorithm used in the path query. + </member> + <member name="start_position" type="Vector2" setter="set_start_position" getter="get_start_position" default="Vector2(0, 0)"> + The pathfinding start position in global coordinates. + </member> + <member name="target_position" type="Vector2" setter="set_target_position" getter="get_target_position" default="Vector2(0, 0)"> + The pathfinding target position in global coordinates. + </member> + </members> + <constants> + <constant name="PATHFINDING_ALGORITHM_ASTAR" value="0" enum="PathfindingAlgorithm"> + The path query uses the default A* pathfinding algorithm. + </constant> + <constant name="PATH_POSTPROCESSING_CORRIDORFUNNEL" value="0" enum="PathPostProcessing"> + Applies a funnel algorithm to the raw path corridor found by the pathfinding algorithm. This will result in the shortest path possible inside the path corridor. This postprocessing very much depends on the navmesh polygon layout and the created corridor. Especially tile- or gridbased layouts can face artifical corners with diagonal movement due to a jagged path corridor imposed by the cell shapes. + </constant> + <constant name="PATH_POSTPROCESSING_EDGECENTERED" value="1" enum="PathPostProcessing"> + Centers every path position in the middle of the traveled navmesh polygon edge. This creates better paths for tile- or gridbased layouts that restrict the movement to the cells center. + </constant> + </constants> +</class> diff --git a/doc/classes/NavigationPathQueryParameters3D.xml b/doc/classes/NavigationPathQueryParameters3D.xml new file mode 100644 index 0000000000..59c907c5b5 --- /dev/null +++ b/doc/classes/NavigationPathQueryParameters3D.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryParameters3D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Parameters to be sent to a 3D navigation path query. + </brief_description> + <description> + This class contains the start and target position and other parameters to be used with [method NavigationServer3D.query_path]. + </description> + <tutorials> + </tutorials> + <members> + <member name="map" type="RID" setter="set_map" getter="get_map"> + The navigation [code]map[/code] [RID] used in the path query. + </member> + <member name="navigation_layers" type="int" setter="set_navigation_layers" getter="get_navigation_layers" default="1"> + The navigation layers the query will use (as a bitmask). + </member> + <member name="path_postprocessing" type="int" setter="set_path_postprocessing" getter="get_path_postprocessing" enum="NavigationPathQueryParameters3D.PathPostProcessing" default="0"> + The path postprocessing applied to the raw path corridor found by the [member pathfinding_algorithm]. + </member> + <member name="pathfinding_algorithm" type="int" setter="set_pathfinding_algorithm" getter="get_pathfinding_algorithm" enum="NavigationPathQueryParameters3D.PathfindingAlgorithm" default="0"> + The pathfinding algorithm used in the path query. + </member> + <member name="start_position" type="Vector3" setter="set_start_position" getter="get_start_position" default="Vector3(0, 0, 0)"> + The pathfinding start position in global coordinates. + </member> + <member name="target_position" type="Vector3" setter="set_target_position" getter="get_target_position" default="Vector3(0, 0, 0)"> + The pathfinding target position in global coordinates. + </member> + </members> + <constants> + <constant name="PATHFINDING_ALGORITHM_ASTAR" value="0" enum="PathfindingAlgorithm"> + The path query uses the default A* pathfinding algorithm. + </constant> + <constant name="PATH_POSTPROCESSING_CORRIDORFUNNEL" value="0" enum="PathPostProcessing"> + Applies a funnel algorithm to the raw path corridor found by the pathfinding algorithm. This will result in the shortest path possible inside the path corridor. This postprocessing very much depends on the navmesh polygon layout and the created corridor. Especially tile- or gridbased layouts can face artifical corners with diagonal movement due to a jagged path corridor imposed by the cell shapes. + </constant> + <constant name="PATH_POSTPROCESSING_EDGECENTERED" value="1" enum="PathPostProcessing"> + Centers every path position in the middle of the traveled navmesh polygon edge. This creates better paths for tile- or gridbased layouts that restrict the movement to the cells center. + </constant> + </constants> +</class> diff --git a/doc/classes/NavigationPathQueryResult2D.xml b/doc/classes/NavigationPathQueryResult2D.xml new file mode 100644 index 0000000000..a9b12d3b94 --- /dev/null +++ b/doc/classes/NavigationPathQueryResult2D.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryResult2D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Result from a [NavigationPathQueryParameters2D] navigation path query. + </brief_description> + <description> + This class contains the result of a navigation path query from [method NavigationServer2D.query_path]. + </description> + <tutorials> + </tutorials> + <members> + <member name="path" type="PackedVector2Array" setter="set_path" getter="get_path" default="PackedVector2Array()"> + The resulting path array from the navigation query. All path array positions are in global coordinates. Without customized query parameters this is the same path as returned by [method NavigationServer2D.map_get_path]. + </member> + </members> +</class> diff --git a/doc/classes/NavigationPathQueryResult3D.xml b/doc/classes/NavigationPathQueryResult3D.xml new file mode 100644 index 0000000000..d8336111fc --- /dev/null +++ b/doc/classes/NavigationPathQueryResult3D.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="NavigationPathQueryResult3D" inherits="RefCounted" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Result from a [NavigationPathQueryParameters3D] navigation path query. + </brief_description> + <description> + This class contains the result of a navigation path query from [method NavigationServer3D.query_path]. + </description> + <tutorials> + </tutorials> + <members> + <member name="path" type="PackedVector3Array" setter="set_path" getter="get_path" default="PackedVector3Array()"> + The resulting path array from the navigation query. All path array positions are in global coordinates. Without customized query parameters this is the same path as returned by [method NavigationServer3D.map_get_path]. + </member> + </members> +</class> diff --git a/doc/classes/NavigationRegion2D.xml b/doc/classes/NavigationRegion2D.xml index 89f7dcb4af..0f28081201 100644 --- a/doc/classes/NavigationRegion2D.xml +++ b/doc/classes/NavigationRegion2D.xml @@ -10,6 +10,7 @@ The pathfinding cost of entering this region from another region can be controlled with the [member enter_cost] value. [b]Note:[/b] This value is not added to the path cost when the start position is already inside this region. The pathfinding cost of traveling distances inside this region can be controlled with the [member travel_cost] multiplier. + [b]Note:[/b] This node caches changes to its properties, so if you make changes to the underlying region [RID] in [NavigationServer2D], they will not be reflected in this node's properties. </description> <tutorials> </tutorials> diff --git a/doc/classes/NavigationRegion3D.xml b/doc/classes/NavigationRegion3D.xml index 87e82e7b2e..85f163b3c2 100644 --- a/doc/classes/NavigationRegion3D.xml +++ b/doc/classes/NavigationRegion3D.xml @@ -10,6 +10,7 @@ The cost of entering this region from another region can be controlled with the [member enter_cost] value. [b]Note:[/b] This value is not added to the path cost when the start position is already inside this region. The cost of traveling distances inside this region can be controlled with the [member travel_cost] multiplier. + [b]Note:[/b] This node caches changes to its properties, so if you make changes to the underlying region [RID] in [NavigationServer3D], they will not be reflected in this node's properties. </description> <tutorials> </tutorials> diff --git a/doc/classes/NavigationServer2D.xml b/doc/classes/NavigationServer2D.xml index b85c1c6649..981ab8a5e1 100644 --- a/doc/classes/NavigationServer2D.xml +++ b/doc/classes/NavigationServer2D.xml @@ -133,6 +133,117 @@ Returns all created navigation map [RID]s on the NavigationServer. This returns both 2D and 3D created navigation maps as there is technically no distinction between them. </description> </method> + <method name="link_create" qualifiers="const"> + <return type="RID" /> + <description> + Create a new link between two locations on a map. + </description> + </method> + <method name="link_get_end_location" qualifiers="const"> + <return type="Vector2" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the ending location of this [code]link[/code]. + </description> + </method> + <method name="link_get_enter_cost" qualifiers="const"> + <return type="float" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the [code]enter_cost[/code] of this [code]link[/code]. + </description> + </method> + <method name="link_get_map" qualifiers="const"> + <return type="RID" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the navigation map [RID] the requested [code]link[/code] is currently assigned to. + </description> + </method> + <method name="link_get_navigation_layers" qualifiers="const"> + <return type="int" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the navigation layers for this [code]link[/code]. + </description> + </method> + <method name="link_get_start_location" qualifiers="const"> + <return type="Vector2" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the starting location of this [code]link[/code]. + </description> + </method> + <method name="link_get_travel_cost" qualifiers="const"> + <return type="float" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the [code]travel_cost[/code] of this [code]link[/code]. + </description> + </method> + <method name="link_is_bidirectional" qualifiers="const"> + <return type="bool" /> + <param index="0" name="link" type="RID" /> + <description> + Returns whether this [code]link[/code] can be travelled in both directions. + </description> + </method> + <method name="link_set_bidirectional" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="bidirectional" type="bool" /> + <description> + Sets whether this [code]link[/code] can be travelled in both directions. + </description> + </method> + <method name="link_set_end_location" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="location" type="Vector2" /> + <description> + Sets the exit location for the [code]link[/code]. + </description> + </method> + <method name="link_set_enter_cost" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="enter_cost" type="float" /> + <description> + Sets the [code]enter_cost[/code] for this [code]link[/code]. + </description> + </method> + <method name="link_set_map" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="map" type="RID" /> + <description> + Sets the navigation map [RID] for the link. + </description> + </method> + <method name="link_set_navigation_layers" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="navigation_layers" type="int" /> + <description> + Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer2D.map_get_path]). + </description> + </method> + <method name="link_set_start_location" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="location" type="Vector2" /> + <description> + Sets the entry location for this [code]link[/code]. + </description> + </method> + <method name="link_set_travel_cost" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="travel_cost" type="float" /> + <description> + Sets the [code]travel_cost[/code] for this [code]link[/code]. + </description> + </method> <method name="map_create" qualifiers="const"> <return type="RID" /> <description> @@ -186,6 +297,20 @@ Returns the edge connection margin of the map. The edge connection margin is a distance used to connect two regions. </description> </method> + <method name="map_get_link_connection_radius" qualifiers="const"> + <return type="float" /> + <param index="0" name="map" type="RID" /> + <description> + Returns the link connection radius of the map. This distance is the maximum range any link will search for navigation mesh polygons to connect to. + </description> + </method> + <method name="map_get_links" qualifiers="const"> + <return type="RID[]" /> + <param index="0" name="map" type="RID" /> + <description> + Returns all navigation link [RID]s that are currently assigned to the requested navigation [code]map[/code]. + </description> + </method> <method name="map_get_path" qualifiers="const"> <return type="PackedVector2Array" /> <param index="0" name="map" type="RID" /> @@ -235,6 +360,22 @@ Set the map edge connection margin used to weld the compatible region edges. </description> </method> + <method name="map_set_link_connection_radius" qualifiers="const"> + <return type="void" /> + <param index="0" name="map" type="RID" /> + <param index="1" name="radius" type="float" /> + <description> + Set the map's link connection radius used to connect links to navigation polygons. + </description> + </method> + <method name="query_path" qualifiers="const"> + <return type="void" /> + <param index="0" name="parameters" type="NavigationPathQueryParameters2D" /> + <param index="1" name="result" type="NavigationPathQueryResult2D" /> + <description> + Queries a path in a given navigation map. Start and target position and other parameters are defined through [NavigationPathQueryParameters2D]. Updates the provided [NavigationPathQueryResult2D] result object with the path among other results requested by the query. + </description> + </method> <method name="region_create" qualifiers="const"> <return type="RID" /> <description> diff --git a/doc/classes/NavigationServer3D.xml b/doc/classes/NavigationServer3D.xml index 5b2a8fc08b..943aa03ef7 100644 --- a/doc/classes/NavigationServer3D.xml +++ b/doc/classes/NavigationServer3D.xml @@ -133,6 +133,117 @@ Returns all created navigation map [RID]s on the NavigationServer. This returns both 2D and 3D created navigation maps as there is technically no distinction between them. </description> </method> + <method name="link_create" qualifiers="const"> + <return type="RID" /> + <description> + Create a new link between two locations on a map. + </description> + </method> + <method name="link_get_end_location" qualifiers="const"> + <return type="Vector3" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the ending location of this [code]link[/code]. + </description> + </method> + <method name="link_get_enter_cost" qualifiers="const"> + <return type="float" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the [code]enter_cost[/code] of this [code]link[/code]. + </description> + </method> + <method name="link_get_map" qualifiers="const"> + <return type="RID" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the navigation map [RID] the requested [code]link[/code] is currently assigned to. + </description> + </method> + <method name="link_get_navigation_layers" qualifiers="const"> + <return type="int" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the navigation layers for this [code]link[/code]. + </description> + </method> + <method name="link_get_start_location" qualifiers="const"> + <return type="Vector3" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the starting location of this [code]link[/code]. + </description> + </method> + <method name="link_get_travel_cost" qualifiers="const"> + <return type="float" /> + <param index="0" name="link" type="RID" /> + <description> + Returns the [code]travel_cost[/code] of this [code]link[/code]. + </description> + </method> + <method name="link_is_bidirectional" qualifiers="const"> + <return type="bool" /> + <param index="0" name="link" type="RID" /> + <description> + Returns whether this [code]link[/code] can be travelled in both directions. + </description> + </method> + <method name="link_set_bidirectional" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="bidirectional" type="bool" /> + <description> + Sets whether this [code]link[/code] can be travelled in both directions. + </description> + </method> + <method name="link_set_end_location" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="location" type="Vector3" /> + <description> + Sets the exit location for the [code]link[/code]. + </description> + </method> + <method name="link_set_enter_cost" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="enter_cost" type="float" /> + <description> + Sets the [code]enter_cost[/code] for this [code]link[/code]. + </description> + </method> + <method name="link_set_map" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="map" type="RID" /> + <description> + Sets the navigation map [RID] for the link. + </description> + </method> + <method name="link_set_navigation_layers" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="navigation_layers" type="int" /> + <description> + Set the links's navigation layers. This allows selecting links from a path request (when using [method NavigationServer3D.map_get_path]). + </description> + </method> + <method name="link_set_start_location" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="location" type="Vector3" /> + <description> + Sets the entry location for this [code]link[/code]. + </description> + </method> + <method name="link_set_travel_cost" qualifiers="const"> + <return type="void" /> + <param index="0" name="link" type="RID" /> + <param index="1" name="travel_cost" type="float" /> + <description> + Sets the [code]travel_cost[/code] for this [code]link[/code]. + </description> + </method> <method name="map_create" qualifiers="const"> <return type="RID" /> <description> @@ -204,6 +315,20 @@ Returns the edge connection margin of the map. This distance is the minimum vertex distance needed to connect two edges from different regions. </description> </method> + <method name="map_get_link_connection_radius" qualifiers="const"> + <return type="float" /> + <param index="0" name="map" type="RID" /> + <description> + Returns the link connection radius of the map. This distance is the maximum range any link will search for navigation mesh polygons to connect to. + </description> + </method> + <method name="map_get_links" qualifiers="const"> + <return type="RID[]" /> + <param index="0" name="map" type="RID" /> + <description> + Returns all navigation link [RID]s that are currently assigned to the requested navigation [code]map[/code]. + </description> + </method> <method name="map_get_path" qualifiers="const"> <return type="PackedVector3Array" /> <param index="0" name="map" type="RID" /> @@ -260,6 +385,14 @@ Set the map edge connection margin used to weld the compatible region edges. </description> </method> + <method name="map_set_link_connection_radius" qualifiers="const"> + <return type="void" /> + <param index="0" name="map" type="RID" /> + <param index="1" name="radius" type="float" /> + <description> + Set the map's link connection radius used to connect links to navigation polygons. + </description> + </method> <method name="map_set_up" qualifiers="const"> <return type="void" /> <param index="0" name="map" type="RID" /> @@ -277,6 +410,14 @@ [b]Note:[/b] This function is not thread safe. </description> </method> + <method name="query_path" qualifiers="const"> + <return type="void" /> + <param index="0" name="parameters" type="NavigationPathQueryParameters3D" /> + <param index="1" name="result" type="NavigationPathQueryResult3D" /> + <description> + Queries a path in a given navigation map. Start and target position and other parameters are defined through [NavigationPathQueryParameters3D]. Updates the provided [NavigationPathQueryResult3D] result object with the path among other results requested by the query. + </description> + </method> <method name="region_bake_navmesh" qualifiers="const"> <return type="void" /> <param index="0" name="mesh" type="NavigationMesh" /> diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml index b882425960..d9732da3a3 100644 --- a/doc/classes/Node.xml +++ b/doc/classes/Node.xml @@ -121,11 +121,11 @@ <method name="add_child"> <return type="void" /> <param index="0" name="node" type="Node" /> - <param index="1" name="legible_unique_name" type="bool" default="false" /> + <param index="1" name="force_readable_name" type="bool" default="false" /> <param index="2" name="internal" type="int" enum="Node.InternalMode" default="0" /> <description> - Adds a child node. Nodes can have any number of children, but every child must have a unique name. Child nodes are automatically deleted when the parent node is deleted, so an entire scene can be removed by deleting its topmost node. - If [param legible_unique_name] is [code]true[/code], the child node will have a human-readable name based on the name of the node being instantiated instead of its type. + Adds a child [param node]. Nodes can have any number of children, but every child must have a unique name. Child nodes are automatically deleted when the parent node is deleted, so an entire scene can be removed by deleting its topmost node. + If [param force_readable_name] is [code]true[/code], improves the readability of the added [param node]. If not named, the [param node] is renamed to its type, and if it shares [member name] with a sibling, a number is suffixed more appropriately. This operation is very slow. As such, it is recommended leaving this to [code]false[/code], which assigns a dummy name featuring [code]@[/code] in both situations. If [param internal] is different than [constant INTERNAL_MODE_DISABLED], the child will be added as internal node. Such nodes are ignored by methods like [method get_children], unless their parameter [code]include_internal[/code] is [code]true[/code].The intended usage is to hide the internal nodes from the user, so the user won't accidentally delete or modify them. Used by some GUI nodes, e.g. [ColorPicker]. See [enum InternalMode] for available modes. [b]Note:[/b] If the child node already has a parent, the function will fail. Use [method remove_child] first to remove the node from its current parent. For example: [codeblocks] @@ -151,10 +151,10 @@ <method name="add_sibling"> <return type="void" /> <param index="0" name="sibling" type="Node" /> - <param index="1" name="legible_unique_name" type="bool" default="false" /> + <param index="1" name="force_readable_name" type="bool" default="false" /> <description> Adds a [param sibling] node to current's node parent, at the same level as that node, right below it. - If [param legible_unique_name] is [code]true[/code], the child node will have a human-readable name based on the name of the node being instantiated instead of its type. + If [param force_readable_name] is [code]true[/code], improves the readability of the added [param sibling]. If not named, the [param sibling] is renamed to its type, and if it shares [member name] with a sibling, a number is suffixed more appropriately. This operation is very slow. As such, it is recommended leaving this to [code]false[/code], which assigns a dummy name featuring [code]@[/code] in both situations. Use [method add_child] instead of this method if you don't need the child node to be added below a specific node in the list of children. [b]Note:[/b] If this node is internal, the new sibling will be internal too (see [code]internal[/code] parameter in [method add_child]). </description> @@ -179,9 +179,14 @@ <return type="Tween" /> <description> Creates a new [Tween] and binds it to this node. This is equivalent of doing: - [codeblock] + [codeblocks] + [gdscript] get_tree().create_tween().bind_node(self) - [/codeblock] + [/gdscript] + [csharp] + GetTree().CreateTween().BindNode(this); + [/csharp] + [/codeblocks] </description> </method> <method name="duplicate" qualifiers="const"> @@ -267,13 +272,24 @@ Returns an array listing the groups that the node is a member of. [b]Note:[/b] For performance reasons, the order of node groups is [i]not[/i] guaranteed. The order of node groups should not be relied upon as it can vary across project runs. [b]Note:[/b] The engine uses some group names internally (all starting with an underscore). To avoid conflicts with internal groups, do not add custom groups whose name starts with an underscore. To exclude internal groups while looping over [method get_groups], use the following snippet: - [codeblock] + [codeblocks] + [gdscript] # Stores the node's non-internal groups only (as an array of Strings). var non_internal_groups = [] for group in get_groups(): if not group.begins_with("_"): non_internal_groups.push_back(group) - [/codeblock] + [/gdscript] + [csharp] + // Stores the node's non-internal groups only (as a List of strings). + List<string> nonInternalGroups = new List<string>(); + foreach (string group in GetGroups()) + { + if (!group.BeginsWith("_")) + nonInternalGroups.Add(group); + } + [/csharp] + [/codeblocks] </description> </method> <method name="get_index" qualifiers="const"> @@ -514,7 +530,7 @@ <param index="0" name="child_node" type="Node" /> <param index="1" name="to_position" type="int" /> <description> - Moves a child node to a different position (order) among the other children. Since calls, signals, etc are performed by tree order, changing the order of children nodes may be useful. + Moves a child node to a different position (order) among the other children. Since calls, signals, etc are performed by tree order, changing the order of children nodes may be useful. If [param to_position] is negative, the index will be counted from the end. [b]Note:[/b] Internal children can only be moved within their expected "internal range" (see [code]internal[/code] parameter in [method add_child]). </description> </method> @@ -577,18 +593,6 @@ Queues a node for deletion at the end of the current frame. When deleted, all of its child nodes will be deleted as well. This method ensures it's safe to delete the node, contrary to [method Object.free]. Use [method Object.is_queued_for_deletion] to check whether a node will be deleted at the end of the frame. </description> </method> - <method name="raise"> - <return type="void" /> - <description> - Moves this node to the bottom of parent node's children hierarchy. This is often useful in GUIs ([Control] nodes), because their order of drawing depends on their order in the tree. The top Node is drawn first, then any siblings below the top Node in the hierarchy are successively drawn on top of it. After using [code]raise[/code], a Control will be drawn on top of its siblings. - </description> - </method> - <method name="remove_and_skip"> - <return type="void" /> - <description> - Removes a node and sets all its children as children of the parent node (if it exists). All event subscriptions that pass by the removed node will be unsubscribed. - </description> - </method> <method name="remove_child"> <return type="void" /> <param index="0" name="node" type="Node" /> @@ -856,8 +860,8 @@ <constant name="NOTIFICATION_UNPARENTED" value="19"> Notification received when a node is unparented (parent removed it from the list of children). </constant> - <constant name="NOTIFICATION_INSTANCED" value="20"> - Notification received when the node is instantiated. + <constant name="NOTIFICATION_SCENE_INSTANTIATED" value="20"> + Notification received by scene owner when its scene is instantiated. </constant> <constant name="NOTIFICATION_DRAG_BEGIN" value="21"> Notification received when a drag operation begins. All nodes receive this notification, not only the dragged one. diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml index c8e2f1ac68..96ce10745d 100644 --- a/doc/classes/Node3D.xml +++ b/doc/classes/Node3D.xml @@ -331,6 +331,10 @@ <constant name="NOTIFICATION_VISIBILITY_CHANGED" value="43"> Node3D nodes receives this notification when their visibility changes. </constant> + <constant name="NOTIFICATION_LOCAL_TRANSFORM_CHANGED" value="44"> + Node3D nodes receives this notification when their local transform changes. This is not received when the transform of a parent node is changed. + In order for [constant NOTIFICATION_LOCAL_TRANSFORM_CHANGED] to work, users first need to ask for it, with [method set_notify_local_transform]. + </constant> <constant name="ROTATION_EDIT_MODE_EULER" value="0" enum="RotationEditMode"> </constant> <constant name="ROTATION_EDIT_MODE_QUATERNION" value="1" enum="RotationEditMode"> diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index 059766656f..be7bacd994 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -216,6 +216,15 @@ Not to be confused with [method get_user_data_dir], which returns the [i]project-specific[/i] user data path. </description> </method> + <method name="get_distribution_name" qualifiers="const"> + <return type="String" /> + <description> + Returns the name of the distribution for Linux and BSD platforms (e.g. Ubuntu, Manjaro, OpenBSD, etc.). + Returns the same value as [method get_name] for stock Android ROMs, but attempts to return the custom ROM name for popular Android derivatives such as LineageOS. + Returns the same value as [method get_name] for other platforms. + [b]Note:[/b] This method is not supported on the web platform. It returns an empty string. + </description> + </method> <method name="get_environment" qualifiers="const"> <return type="String" /> <param index="0" name="variable" type="String" /> @@ -430,6 +439,18 @@ Not to be confused with [method get_data_dir], which returns the [i]global[/i] (non-project-specific) user home directory. </description> </method> + <method name="get_version" qualifiers="const"> + <return type="String" /> + <description> + Returns the exact production and build version of the operating system. This is different from the branded version used in marketing. This helps to distinguish between different releases of operating systems, including minor versions, and insider and custom builds. + For Windows, the major and minor version are returned, as well as the build number. For example, the returned string can look like [code]10.0.9926[/code] for a build of Windows 10, and it can look like [code]6.1.7601[/code] for a build of Windows 7 SP1. + For rolling distributions, such as Arch Linux, an empty string is returned. + For macOS and iOS, the major and minor version are returned, as well as the patch number. + For UWP, the device family version is returned. + For Android, the SDK version and the incremental build number are returned. If it's a custom ROM, it attempts to return its version instead. + [b]Note:[/b] This method is not supported on the web platform. It returns an empty string. + </description> + </method> <method name="has_environment" qualifiers="const"> <return type="bool" /> <param index="0" name="variable" type="String" /> @@ -501,13 +522,19 @@ <return type="int" enum="Error" /> <param index="0" name="path" type="String" /> <description> - Moves the file or directory to the system's recycle bin. See also [method Directory.remove]. + Moves the file or directory to the system's recycle bin. See also [method DirAccess.remove]. The method takes only global paths, so you may need to use [method ProjectSettings.globalize_path]. Do not use it for files in [code]res://[/code] as it will not work in exported project. [b]Note:[/b] If the user has disabled the recycle bin on their system, the file will be permanently deleted instead. - [codeblock] + [codeblocks] + [gdscript] var file_to_remove = "user://slot1.sav" OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove)) - [/codeblock] + [/gdscript] + [csharp] + var fileToRemove = "user://slot1.sav"; + OS.MoveToTrash(ProjectSettings.GlobalizePath(fileToRemove)); + [/csharp] + [/codeblocks] </description> </method> <method name="open_midi_inputs"> diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml index 3c71a02a21..7ad1908bb5 100644 --- a/doc/classes/Object.xml +++ b/doc/classes/Object.xml @@ -633,7 +633,7 @@ <constant name="CONNECT_PERSIST" value="2" enum="ConnectFlags"> Persisting connections are saved when the object is serialized to file. </constant> - <constant name="CONNECT_ONESHOT" value="4" enum="ConnectFlags"> + <constant name="CONNECT_ONE_SHOT" value="4" enum="ConnectFlags"> One-shot connections disconnect themselves after emission. </constant> <constant name="CONNECT_REFERENCE_COUNTED" value="8" enum="ConnectFlags"> diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml index efb559522a..ccf012f82c 100644 --- a/doc/classes/PackedByteArray.xml +++ b/doc/classes/PackedByteArray.xml @@ -65,7 +65,7 @@ <return type="PackedByteArray" /> <param index="0" name="compression_mode" type="int" default="0" /> <description> - Returns a new [PackedByteArray] with the data compressed. Set the compression mode using one of [enum File.CompressionMode]'s constants. + Returns a new [PackedByteArray] with the data compressed. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants. </description> </method> <method name="count" qualifiers="const"> @@ -173,7 +173,7 @@ <param index="0" name="buffer_size" type="int" /> <param index="1" name="compression_mode" type="int" default="0" /> <description> - Returns a new [PackedByteArray] with the data decompressed. Set [param buffer_size] to the size of the uncompressed data. Set the compression mode using one of [enum File.CompressionMode]'s constants. + Returns a new [PackedByteArray] with the data decompressed. Set [param buffer_size] to the size of the uncompressed data. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants. </description> </method> <method name="decompress_dynamic" qualifiers="const"> @@ -181,7 +181,7 @@ <param index="0" name="max_output_size" type="int" /> <param index="1" name="compression_mode" type="int" default="0" /> <description> - Returns a new [PackedByteArray] with the data decompressed. Set the compression mode using one of [enum File.CompressionMode]'s constants. [b]This method only accepts gzip and deflate compression modes.[/b] + Returns a new [PackedByteArray] with the data decompressed. Set the compression mode using one of [enum FileAccess.CompressionMode]'s constants. [b]This method only accepts gzip and deflate compression modes.[/b] This method is potentially slower than [code]decompress[/code], as it may have to re-allocate its output buffer multiple times while decompressing, whereas [code]decompress[/code] knows it's output buffer size from the beginning. GZIP has a maximal compression ratio of 1032:1, meaning it's very possible for a small compressed payload to decompress to a potentially very large output. To guard against this, you may provide a maximum size this function is allowed to allocate in bytes via [param max_output_size]. Passing -1 will allow for unbounded output. If any positive value is passed, and the decompression exceeds that amount in bytes, then an error will be returned. </description> diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml index 754d3ac73d..7ca1d5d60d 100644 --- a/doc/classes/PackedScene.xml +++ b/doc/classes/PackedScene.xml @@ -41,7 +41,7 @@ # Only `node` and `body` are now packed. var result = scene.pack(node) if result == OK: - var error = ResourceSaver.save("res://path/name.tscn", scene) # Or "user://..." + var error = ResourceSaver.save(scene, "res://path/name.tscn") # Or "user://..." if error != OK: push_error("An error occurred while saving the scene to disk.") [/gdscript] @@ -63,7 +63,7 @@ Error result = scene.Pack(node); if (result == Error.Ok) { - Error error = ResourceSaver.Save("res://path/name.tscn", scene); // Or "user://..." + Error error = ResourceSaver.Save(scene, "res://path/name.tscn"); // Or "user://..." if (error != Error.Ok) { GD.PushError("An error occurred while saving the scene to disk."); @@ -92,7 +92,7 @@ <return type="Node" /> <param index="0" name="edit_state" type="int" enum="PackedScene.GenEditState" default="0" /> <description> - Instantiates the scene's node hierarchy. Triggers child scene instantiation(s). Triggers a [constant Node.NOTIFICATION_INSTANCED] notification on the root node. + Instantiates the scene's node hierarchy. Triggers child scene instantiation(s). Triggers a [constant Node.NOTIFICATION_SCENE_INSTANTIATED] notification on the root node. </description> </method> <method name="pack"> diff --git a/doc/classes/PacketPeerDTLS.xml b/doc/classes/PacketPeerDTLS.xml index e9918bdd3a..db8403a56b 100644 --- a/doc/classes/PacketPeerDTLS.xml +++ b/doc/classes/PacketPeerDTLS.xml @@ -6,7 +6,7 @@ <description> This class represents a DTLS peer connection. It can be used to connect to a DTLS server, and is returned by [method DTLSServer.take_connection]. [b]Note:[/b] When exporting to Android, make sure to enable the [code]INTERNET[/code] permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android. - [b]Warning:[/b] SSL/TLS certificate revocation and certificate pinning are currently not supported. Revoked certificates are accepted as long as they are otherwise valid. If this is a concern, you may want to use automatically managed certificates with a short validity period. + [b]Warning:[/b] TLS certificate revocation and certificate pinning are currently not supported. Revoked certificates are accepted as long as they are otherwise valid. If this is a concern, you may want to use automatically managed certificates with a short validity period. </description> <tutorials> </tutorials> diff --git a/doc/classes/PacketPeerExtension.xml b/doc/classes/PacketPeerExtension.xml index 28263b3f59..afb1aa4016 100644 --- a/doc/classes/PacketPeerExtension.xml +++ b/doc/classes/PacketPeerExtension.xml @@ -18,14 +18,14 @@ </description> </method> <method name="_get_packet" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="r_buffer" type="const uint8_t **" /> <param index="1" name="r_buffer_size" type="int32_t*" /> <description> </description> </method> <method name="_put_packet" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="p_buffer" type="const uint8_t*" /> <param index="1" name="p_buffer_size" type="int" /> <description> diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml index b635757b2b..9107937183 100644 --- a/doc/classes/PacketPeerUDP.xml +++ b/doc/classes/PacketPeerUDP.xml @@ -34,7 +34,7 @@ <param index="1" name="port" type="int" /> <description> Calling this method connects this UDP peer to the given [param host]/[param port] pair. UDP is in reality connectionless, so this option only means that incoming packets from different addresses are automatically discarded, and that outgoing packets are always sent to the connected address (future calls to [method set_dest_address] are not allowed). This method does not send any data to the remote peer, to do that, use [method PacketPeer.put_var] or [method PacketPeer.put_packet] as usual. See also [UDPServer]. - [b]Note:[/b] Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like SSL or DTLS if you feel like your application is transferring sensitive information. + [b]Note:[/b] Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like TLS or DTLS if you feel like your application is transferring sensitive information. </description> </method> <method name="get_local_port" qualifiers="const"> diff --git a/doc/classes/Panel.xml b/doc/classes/Panel.xml index da69431276..69c896e806 100644 --- a/doc/classes/Panel.xml +++ b/doc/classes/Panel.xml @@ -15,7 +15,5 @@ <theme_item name="panel" data_type="style" type="StyleBox"> The style of this [Panel]. </theme_item> - <theme_item name="panel_fg" data_type="style" type="StyleBox"> - </theme_item> </theme_items> </class> diff --git a/doc/classes/PanoramaSkyMaterial.xml b/doc/classes/PanoramaSkyMaterial.xml index 21c7f29585..0c27037f28 100644 --- a/doc/classes/PanoramaSkyMaterial.xml +++ b/doc/classes/PanoramaSkyMaterial.xml @@ -4,9 +4,9 @@ A [Material] used with [Sky] to draw a background texture. </brief_description> <description> - A resource referenced in a [Sky] that is used to draw a background. The Panorama sky material functions similar to skyboxes in other engines, except it uses an equirectangular sky map instead of a cube map. + A resource referenced in a [Sky] that is used to draw a background. The Panorama sky material functions similar to skyboxes in other engines, except it uses an equirectangular sky map instead of a cubemap. Using an HDR panorama is strongly recommended for accurate, high-quality reflections. Godot supports the Radiance HDR ([code].hdr[/code]) and OpenEXR ([code].exr[/code]) image formats for this purpose. - You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cube map to an equirectangular sky map. + You can use [url=https://danilw.github.io/GLSL-howto/cubemap_to_panorama_js/cubemap_to_panorama.html]this tool[/url] to convert a cubemap to an equirectangular sky map. </description> <tutorials> </tutorials> diff --git a/doc/classes/ParallaxLayer.xml b/doc/classes/ParallaxLayer.xml index 7e7c2d11ec..51a10f732d 100644 --- a/doc/classes/ParallaxLayer.xml +++ b/doc/classes/ParallaxLayer.xml @@ -13,6 +13,7 @@ <members> <member name="motion_mirroring" type="Vector2" setter="set_mirroring" getter="get_mirroring" default="Vector2(0, 0)"> The ParallaxLayer's [Texture2D] mirroring. Useful for creating an infinite scrolling background. If an axis is set to [code]0[/code], the [Texture2D] will not be mirrored. + If the length of the viewport axis is bigger than twice the mirrored axis size, it will not repeat infinitely, as the parallax layer only draws 2 instances of the texture at any one time. </member> <member name="motion_offset" type="Vector2" setter="set_motion_offset" getter="get_motion_offset" default="Vector2(0, 0)"> The ParallaxLayer's offset relative to the parent ParallaxBackground's [member ParallaxBackground.scroll_offset]. diff --git a/doc/classes/PhysicalSkyMaterial.xml b/doc/classes/PhysicalSkyMaterial.xml index 7c2ea088c8..9d303d80e5 100644 --- a/doc/classes/PhysicalSkyMaterial.xml +++ b/doc/classes/PhysicalSkyMaterial.xml @@ -11,8 +11,7 @@ <tutorials> </tutorials> <members> - <member name="exposure" type="float" setter="set_exposure" getter="get_exposure" default="0.1"> - Sets the exposure of the sky. Higher exposure values make the entire sky brighter. + <member name="energy_multiplier" type="float" setter="set_energy_multiplier" getter="get_energy_multiplier" default="1.0"> </member> <member name="ground_color" type="Color" setter="set_ground_color" getter="get_ground_color" default="Color(0.1, 0.07, 0.034, 1)"> Modulates the [Color] on the bottom half of the sky to represent the ground. diff --git a/doc/classes/PhysicsBody2D.xml b/doc/classes/PhysicsBody2D.xml index e8d7ac9920..59660b4de5 100644 --- a/doc/classes/PhysicsBody2D.xml +++ b/doc/classes/PhysicsBody2D.xml @@ -28,11 +28,13 @@ <param index="0" name="distance" type="Vector2" /> <param index="1" name="test_only" type="bool" default="false" /> <param index="2" name="safe_margin" type="float" default="0.08" /> + <param index="3" name="recovery_as_collision" type="bool" default="false" /> <description> Moves the body along the vector [param distance]. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. Returns a [KinematicCollision2D], which contains information about the collision when stopped, or when touching another body along the motion. If [param test_only] is [code]true[/code], the body does not move but the would-be collision information is given. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody2D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is used e.g. by [CharacterBody2D] for improving floor detection during floor snapping. </description> </method> <method name="remove_collision_exception_with"> @@ -48,11 +50,13 @@ <param index="1" name="distance" type="Vector2" /> <param index="2" name="collision" type="KinematicCollision2D" default="null" /> <param index="3" name="safe_margin" type="float" default="0.08" /> + <param index="4" name="recovery_as_collision" type="bool" default="false" /> <description> Checks for collisions without moving the body. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. Virtually sets the node's position, scale and rotation to that of the given [Transform2D], then tries to move the body along the vector [param distance]. Returns [code]true[/code] if a collision would stop the body from moving along the whole path. [param collision] is an optional object of type [KinematicCollision2D], which contains additional information about the collision when stopped, or when touching another body along the motion. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody2D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is useful for checking whether the body would [i]touch[/i] any other bodies. </description> </method> </methods> diff --git a/doc/classes/PhysicsBody3D.xml b/doc/classes/PhysicsBody3D.xml index 310671274f..bf7882a1ea 100644 --- a/doc/classes/PhysicsBody3D.xml +++ b/doc/classes/PhysicsBody3D.xml @@ -35,12 +35,14 @@ <param index="0" name="distance" type="Vector3" /> <param index="1" name="test_only" type="bool" default="false" /> <param index="2" name="safe_margin" type="float" default="0.001" /> - <param index="3" name="max_collisions" type="int" default="1" /> + <param index="3" name="recovery_as_collision" type="bool" default="false" /> + <param index="4" name="max_collisions" type="int" default="1" /> <description> Moves the body along the vector [param distance]. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. The body will stop if it collides. Returns a [KinematicCollision3D], which contains information about the collision when stopped, or when touching another body along the motion. If [param test_only] is [code]true[/code], the body does not move but the would-be collision information is given. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody3D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is used e.g. by [CharacterBody3D] for improving floor detection during floor snapping. [param max_collisions] allows to retrieve more than one collision result. </description> </method> @@ -65,12 +67,14 @@ <param index="1" name="distance" type="Vector3" /> <param index="2" name="collision" type="KinematicCollision3D" default="null" /> <param index="3" name="safe_margin" type="float" default="0.001" /> - <param index="4" name="max_collisions" type="int" default="1" /> + <param index="4" name="recovery_as_collision" type="bool" default="false" /> + <param index="5" name="max_collisions" type="int" default="1" /> <description> Checks for collisions without moving the body. In order to be frame rate independent in [method Node._physics_process] or [method Node._process], [param distance] should be computed using [code]delta[/code]. Virtually sets the node's position, scale and rotation to that of the given [Transform3D], then tries to move the body along the vector [param distance]. Returns [code]true[/code] if a collision would stop the body from moving along the whole path. [param collision] is an optional object of type [KinematicCollision3D], which contains additional information about the collision when stopped, or when touching another body along the motion. [param safe_margin] is the extra margin used for collision recovery (see [member CharacterBody3D.safe_margin] for more details). + If [param recovery_as_collision] is [code]true[/code], any depenetration from the recovery phase is also reported as a collision; this is useful for checking whether the body would [i]touch[/i] any other bodies. [param max_collisions] allows to retrieve more than one collision result. </description> </method> diff --git a/doc/classes/PhysicsDirectBodyState2DExtension.xml b/doc/classes/PhysicsDirectBodyState2DExtension.xml new file mode 100644 index 0000000000..8fd34c1243 --- /dev/null +++ b/doc/classes/PhysicsDirectBodyState2DExtension.xml @@ -0,0 +1,249 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsDirectBodyState2DExtension" inherits="PhysicsDirectBodyState2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> + <methods> + <method name="_add_constant_central_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="force" type="Vector2" /> + <description> + </description> + </method> + <method name="_add_constant_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="force" type="Vector2" /> + <param index="1" name="position" type="Vector2" /> + <description> + </description> + </method> + <method name="_add_constant_torque" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="torque" type="float" /> + <description> + </description> + </method> + <method name="_apply_central_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="force" type="Vector2" /> + <description> + </description> + </method> + <method name="_apply_central_impulse" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="impulse" type="Vector2" /> + <description> + </description> + </method> + <method name="_apply_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="force" type="Vector2" /> + <param index="1" name="position" type="Vector2" /> + <description> + </description> + </method> + <method name="_apply_impulse" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="impulse" type="Vector2" /> + <param index="1" name="position" type="Vector2" /> + <description> + </description> + </method> + <method name="_apply_torque" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="torque" type="float" /> + <description> + </description> + </method> + <method name="_apply_torque_impulse" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="impulse" type="float" /> + <description> + </description> + </method> + <method name="_get_angular_velocity" qualifiers="virtual const"> + <return type="float" /> + <description> + </description> + </method> + <method name="_get_center_of_mass" qualifiers="virtual const"> + <return type="Vector2" /> + <description> + </description> + </method> + <method name="_get_center_of_mass_local" qualifiers="virtual const"> + <return type="Vector2" /> + <description> + </description> + </method> + <method name="_get_constant_force" qualifiers="virtual const"> + <return type="Vector2" /> + <description> + </description> + </method> + <method name="_get_constant_torque" qualifiers="virtual const"> + <return type="float" /> + <description> + </description> + </method> + <method name="_get_contact_collider" qualifiers="virtual const"> + <return type="RID" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_collider_id" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_collider_object" qualifiers="virtual const"> + <return type="Object" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_collider_position" qualifiers="virtual const"> + <return type="Vector2" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_collider_shape" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_collider_velocity_at_position" qualifiers="virtual const"> + <return type="Vector2" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_count" qualifiers="virtual const"> + <return type="int" /> + <description> + </description> + </method> + <method name="_get_contact_local_normal" qualifiers="virtual const"> + <return type="Vector2" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_local_position" qualifiers="virtual const"> + <return type="Vector2" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_contact_local_shape" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="contact_idx" type="int" /> + <description> + </description> + </method> + <method name="_get_inverse_inertia" qualifiers="virtual const"> + <return type="float" /> + <description> + </description> + </method> + <method name="_get_inverse_mass" qualifiers="virtual const"> + <return type="float" /> + <description> + </description> + </method> + <method name="_get_linear_velocity" qualifiers="virtual const"> + <return type="Vector2" /> + <description> + </description> + </method> + <method name="_get_space_state" qualifiers="virtual"> + <return type="PhysicsDirectSpaceState2D" /> + <description> + </description> + </method> + <method name="_get_step" qualifiers="virtual const"> + <return type="float" /> + <description> + </description> + </method> + <method name="_get_total_angular_damp" qualifiers="virtual const"> + <return type="float" /> + <description> + </description> + </method> + <method name="_get_total_gravity" qualifiers="virtual const"> + <return type="Vector2" /> + <description> + </description> + </method> + <method name="_get_total_linear_damp" qualifiers="virtual const"> + <return type="float" /> + <description> + </description> + </method> + <method name="_get_transform" qualifiers="virtual const"> + <return type="Transform2D" /> + <description> + </description> + </method> + <method name="_get_velocity_at_local_position" qualifiers="virtual const"> + <return type="Vector2" /> + <param index="0" name="local_position" type="Vector2" /> + <description> + </description> + </method> + <method name="_integrate_forces" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_is_sleeping" qualifiers="virtual const"> + <return type="bool" /> + <description> + </description> + </method> + <method name="_set_angular_velocity" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="velocity" type="float" /> + <description> + </description> + </method> + <method name="_set_constant_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="force" type="Vector2" /> + <description> + </description> + </method> + <method name="_set_constant_torque" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="torque" type="float" /> + <description> + </description> + </method> + <method name="_set_linear_velocity" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="velocity" type="Vector2" /> + <description> + </description> + </method> + <method name="_set_sleep_state" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="enabled" type="bool" /> + <description> + </description> + </method> + <method name="_set_transform" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="transform" type="Transform2D" /> + <description> + </description> + </method> + </methods> +</class> diff --git a/doc/classes/PhysicsDirectSpaceState2DExtension.xml b/doc/classes/PhysicsDirectSpaceState2DExtension.xml new file mode 100644 index 0000000000..3235793853 --- /dev/null +++ b/doc/classes/PhysicsDirectSpaceState2DExtension.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsDirectSpaceState2DExtension" inherits="PhysicsDirectSpaceState2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> + <methods> + <method name="_cast_motion" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="shape_rid" type="RID" /> + <param index="1" name="transform" type="Transform2D" /> + <param index="2" name="motion" type="Vector2" /> + <param index="3" name="margin" type="float" /> + <param index="4" name="collision_mask" type="int" /> + <param index="5" name="collide_with_bodies" type="bool" /> + <param index="6" name="collide_with_areas" type="bool" /> + <param index="7" name="closest_safe" type="float*" /> + <param index="8" name="closest_unsafe" type="float*" /> + <description> + </description> + </method> + <method name="_collide_shape" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="shape_rid" type="RID" /> + <param index="1" name="transform" type="Transform2D" /> + <param index="2" name="motion" type="Vector2" /> + <param index="3" name="margin" type="float" /> + <param index="4" name="collision_mask" type="int" /> + <param index="5" name="collide_with_bodies" type="bool" /> + <param index="6" name="collide_with_areas" type="bool" /> + <param index="7" name="results" type="void*" /> + <param index="8" name="max_results" type="int" /> + <param index="9" name="result_count" type="int32_t*" /> + <description> + </description> + </method> + <method name="_intersect_point" qualifiers="virtual"> + <return type="int" /> + <param index="0" name="position" type="Vector2" /> + <param index="1" name="canvas_instance_id" type="int" /> + <param index="2" name="collision_mask" type="int" /> + <param index="3" name="collide_with_bodies" type="bool" /> + <param index="4" name="collide_with_areas" type="bool" /> + <param index="5" name="results" type="PhysicsServer2DExtensionShapeResult*" /> + <param index="6" name="max_results" type="int" /> + <description> + </description> + </method> + <method name="_intersect_ray" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="from" type="Vector2" /> + <param index="1" name="to" type="Vector2" /> + <param index="2" name="collision_mask" type="int" /> + <param index="3" name="collide_with_bodies" type="bool" /> + <param index="4" name="collide_with_areas" type="bool" /> + <param index="5" name="hit_from_inside" type="bool" /> + <param index="6" name="result" type="PhysicsServer2DExtensionRayResult*" /> + <description> + </description> + </method> + <method name="_intersect_shape" qualifiers="virtual"> + <return type="int" /> + <param index="0" name="shape_rid" type="RID" /> + <param index="1" name="transform" type="Transform2D" /> + <param index="2" name="motion" type="Vector2" /> + <param index="3" name="margin" type="float" /> + <param index="4" name="collision_mask" type="int" /> + <param index="5" name="collide_with_bodies" type="bool" /> + <param index="6" name="collide_with_areas" type="bool" /> + <param index="7" name="result" type="PhysicsServer2DExtensionShapeResult*" /> + <param index="8" name="max_results" type="int" /> + <description> + </description> + </method> + <method name="_rest_info" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="shape_rid" type="RID" /> + <param index="1" name="transform" type="Transform2D" /> + <param index="2" name="motion" type="Vector2" /> + <param index="3" name="margin" type="float" /> + <param index="4" name="collision_mask" type="int" /> + <param index="5" name="collide_with_bodies" type="bool" /> + <param index="6" name="collide_with_areas" type="bool" /> + <param index="7" name="rest_info" type="PhysicsServer2DExtensionShapeRestInfo*" /> + <description> + </description> + </method> + </methods> +</class> diff --git a/doc/classes/PhysicsPointQueryParameters2D.xml b/doc/classes/PhysicsPointQueryParameters2D.xml index c1005f02a3..a6cbe2d574 100644 --- a/doc/classes/PhysicsPointQueryParameters2D.xml +++ b/doc/classes/PhysicsPointQueryParameters2D.xml @@ -21,7 +21,7 @@ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="4294967295"> The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information. </member> - <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[]"> + <member name="exclude" type="RID[]" setter="set_exclude" getter="get_exclude" default="[]"> The list of objects or object [RID]s that will be excluded from collisions. </member> <member name="position" type="Vector2" setter="set_position" getter="get_position" default="Vector2(0, 0)"> diff --git a/doc/classes/PhysicsRayQueryParameters2D.xml b/doc/classes/PhysicsRayQueryParameters2D.xml index 5afd3973a0..d6a2662adc 100644 --- a/doc/classes/PhysicsRayQueryParameters2D.xml +++ b/doc/classes/PhysicsRayQueryParameters2D.xml @@ -14,7 +14,7 @@ <param index="0" name="from" type="Vector2" /> <param index="1" name="to" type="Vector2" /> <param index="2" name="collision_mask" type="int" default="4294967295" /> - <param index="3" name="exclude" type="Array" default="[]" /> + <param index="3" name="exclude" type="RID[]" default="[]" /> <description> Returns a new, pre-configured [PhysicsRayQueryParameters2D] object. Use it to quickly create query parameters using the most common options. [codeblock] @@ -34,7 +34,7 @@ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="4294967295"> The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information. </member> - <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[]"> + <member name="exclude" type="RID[]" setter="set_exclude" getter="get_exclude" default="[]"> The list of objects or object [RID]s that will be excluded from collisions. </member> <member name="from" type="Vector2" setter="set_from" getter="get_from" default="Vector2(0, 0)"> diff --git a/doc/classes/PhysicsServer2D.xml b/doc/classes/PhysicsServer2D.xml index 5ae7423a71..18ac8a11df 100644 --- a/doc/classes/PhysicsServer2D.xml +++ b/doc/classes/PhysicsServer2D.xml @@ -53,6 +53,20 @@ <description> </description> </method> + <method name="area_get_collision_layer" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area belongs to. + </description> + </method> + <method name="area_get_collision_mask" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area can contact with. + </description> + </method> <method name="area_get_object_instance_id" qualifiers="const"> <return type="int" /> <param index="0" name="area" type="RID" /> @@ -1058,6 +1072,8 @@ </constant> <constant name="JOINT_PARAM_MAX_FORCE" value="2" enum="JointParam"> </constant> + <constant name="PIN_JOINT_SOFTNESS" value="0" enum="PinJointParam"> + </constant> <constant name="DAMPED_SPRING_REST_LENGTH" value="0" enum="DampedSpringParam"> Sets the resting length of the spring joint. The joint will always try to go to back this length when pulled apart. </constant> diff --git a/doc/classes/PhysicsServer2DExtension.xml b/doc/classes/PhysicsServer2DExtension.xml new file mode 100644 index 0000000000..9bb11e0d89 --- /dev/null +++ b/doc/classes/PhysicsServer2DExtension.xml @@ -0,0 +1,937 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsServer2DExtension" inherits="PhysicsServer2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> + <methods> + <method name="_area_add_shape" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="shape" type="RID" /> + <param index="2" name="transform" type="Transform2D" /> + <param index="3" name="disabled" type="bool" /> + <description> + </description> + </method> + <method name="_area_attach_canvas_instance_id" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="id" type="int" /> + <description> + </description> + </method> + <method name="_area_attach_object_instance_id" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="id" type="int" /> + <description> + </description> + </method> + <method name="_area_clear_shapes" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_area_get_canvas_instance_id" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_collision_layer" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_collision_mask" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_object_instance_id" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_param" qualifiers="virtual const"> + <return type="Variant" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" /> + <description> + </description> + </method> + <method name="_area_get_shape" qualifiers="virtual const"> + <return type="RID" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <description> + </description> + </method> + <method name="_area_get_shape_count" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_shape_transform" qualifiers="virtual const"> + <return type="Transform2D" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <description> + </description> + </method> + <method name="_area_get_space" qualifiers="virtual const"> + <return type="RID" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_transform" qualifiers="virtual const"> + <return type="Transform2D" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_remove_shape" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <description> + </description> + </method> + <method name="_area_set_area_monitor_callback" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="callback" type="Callable" /> + <description> + </description> + </method> + <method name="_area_set_collision_layer" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="layer" type="int" /> + <description> + </description> + </method> + <method name="_area_set_collision_mask" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="mask" type="int" /> + <description> + </description> + </method> + <method name="_area_set_monitor_callback" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="callback" type="Callable" /> + <description> + </description> + </method> + <method name="_area_set_monitorable" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="monitorable" type="bool" /> + <description> + </description> + </method> + <method name="_area_set_param" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" /> + <param index="2" name="value" type="Variant" /> + <description> + </description> + </method> + <method name="_area_set_pickable" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="pickable" type="bool" /> + <description> + </description> + </method> + <method name="_area_set_shape" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <param index="2" name="shape" type="RID" /> + <description> + </description> + </method> + <method name="_area_set_shape_disabled" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <param index="2" name="disabled" type="bool" /> + <description> + </description> + </method> + <method name="_area_set_shape_transform" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <param index="2" name="transform" type="Transform2D" /> + <description> + </description> + </method> + <method name="_area_set_space" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_area_set_transform" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="area" type="RID" /> + <param index="1" name="transform" type="Transform2D" /> + <description> + </description> + </method> + <method name="_body_add_collision_exception" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="excepted_body" type="RID" /> + <description> + </description> + </method> + <method name="_body_add_constant_central_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="force" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_add_constant_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="force" type="Vector2" /> + <param index="2" name="position" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_add_constant_torque" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="torque" type="float" /> + <description> + </description> + </method> + <method name="_body_add_shape" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape" type="RID" /> + <param index="2" name="transform" type="Transform2D" /> + <param index="3" name="disabled" type="bool" /> + <description> + </description> + </method> + <method name="_body_apply_central_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="force" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_apply_central_impulse" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="impulse" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_apply_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="force" type="Vector2" /> + <param index="2" name="position" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_apply_impulse" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="impulse" type="Vector2" /> + <param index="2" name="position" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_apply_torque" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="torque" type="float" /> + <description> + </description> + </method> + <method name="_body_apply_torque_impulse" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="impulse" type="float" /> + <description> + </description> + </method> + <method name="_body_attach_canvas_instance_id" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="id" type="int" /> + <description> + </description> + </method> + <method name="_body_attach_object_instance_id" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="id" type="int" /> + <description> + </description> + </method> + <method name="_body_clear_shapes" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_collide_shape" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="body_shape" type="int" /> + <param index="2" name="shape" type="RID" /> + <param index="3" name="shape_xform" type="Transform2D" /> + <param index="4" name="motion" type="Vector2" /> + <param index="5" name="results" type="void*" /> + <param index="6" name="result_max" type="int" /> + <param index="7" name="result_count" type="int32_t*" /> + <description> + </description> + </method> + <method name="_body_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_body_get_canvas_instance_id" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_collision_exceptions" qualifiers="virtual const"> + <return type="RID[]" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_collision_layer" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_collision_mask" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_collision_priority" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_constant_force" qualifiers="virtual const"> + <return type="Vector2" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_constant_torque" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_contacts_reported_depth_threshold" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_continuous_collision_detection_mode" qualifiers="virtual const"> + <return type="int" enum="PhysicsServer2D.CCDMode" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_direct_state" qualifiers="virtual"> + <return type="PhysicsDirectBodyState2D" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_max_contacts_reported" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_mode" qualifiers="virtual const"> + <return type="int" enum="PhysicsServer2D.BodyMode" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_object_instance_id" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_param" qualifiers="virtual const"> + <return type="Variant" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" /> + <description> + </description> + </method> + <method name="_body_get_shape" qualifiers="virtual const"> + <return type="RID" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <description> + </description> + </method> + <method name="_body_get_shape_count" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_shape_transform" qualifiers="virtual const"> + <return type="Transform2D" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <description> + </description> + </method> + <method name="_body_get_space" qualifiers="virtual const"> + <return type="RID" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_get_state" qualifiers="virtual const"> + <return type="Variant" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" /> + <description> + </description> + </method> + <method name="_body_is_omitting_force_integration" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_remove_collision_exception" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="excepted_body" type="RID" /> + <description> + </description> + </method> + <method name="_body_remove_shape" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <description> + </description> + </method> + <method name="_body_reset_mass_properties" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_body_set_axis_velocity" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="axis_velocity" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_set_collision_layer" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="layer" type="int" /> + <description> + </description> + </method> + <method name="_body_set_collision_mask" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="mask" type="int" /> + <description> + </description> + </method> + <method name="_body_set_collision_priority" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="priority" type="float" /> + <description> + </description> + </method> + <method name="_body_set_constant_force" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="force" type="Vector2" /> + <description> + </description> + </method> + <method name="_body_set_constant_torque" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="torque" type="float" /> + <description> + </description> + </method> + <method name="_body_set_contacts_reported_depth_threshold" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="threshold" type="float" /> + <description> + </description> + </method> + <method name="_body_set_continuous_collision_detection_mode" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="mode" type="int" enum="PhysicsServer2D.CCDMode" /> + <description> + </description> + </method> + <method name="_body_set_force_integration_callback" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="callable" type="Callable" /> + <param index="2" name="userdata" type="Variant" /> + <description> + </description> + </method> + <method name="_body_set_max_contacts_reported" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="amount" type="int" /> + <description> + </description> + </method> + <method name="_body_set_mode" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="mode" type="int" enum="PhysicsServer2D.BodyMode" /> + <description> + </description> + </method> + <method name="_body_set_omit_force_integration" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="enable" type="bool" /> + <description> + </description> + </method> + <method name="_body_set_param" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" /> + <param index="2" name="value" type="Variant" /> + <description> + </description> + </method> + <method name="_body_set_pickable" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="pickable" type="bool" /> + <description> + </description> + </method> + <method name="_body_set_shape" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <param index="2" name="shape" type="RID" /> + <description> + </description> + </method> + <method name="_body_set_shape_as_one_way_collision" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <param index="2" name="enable" type="bool" /> + <param index="3" name="margin" type="float" /> + <description> + </description> + </method> + <method name="_body_set_shape_disabled" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <param index="2" name="disabled" type="bool" /> + <description> + </description> + </method> + <method name="_body_set_shape_transform" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="shape_idx" type="int" /> + <param index="2" name="transform" type="Transform2D" /> + <description> + </description> + </method> + <method name="_body_set_space" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_body_set_state" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" /> + <param index="2" name="value" type="Variant" /> + <description> + </description> + </method> + <method name="_body_set_state_sync_callback" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="callable" type="Callable" /> + <description> + </description> + </method> + <method name="_body_test_motion" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="from" type="Transform2D" /> + <param index="2" name="motion" type="Vector2" /> + <param index="3" name="margin" type="float" /> + <param index="4" name="collide_separation_ray" type="bool" /> + <param index="5" name="recovery_as_collision" type="bool" /> + <param index="6" name="result" type="PhysicsServer2DExtensionMotionResult*" /> + <description> + </description> + </method> + <method name="_capsule_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_circle_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_concave_polygon_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_convex_polygon_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_damped_spring_joint_get_param" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" /> + <description> + </description> + </method> + <method name="_damped_spring_joint_set_param" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" /> + <param index="2" name="value" type="float" /> + <description> + </description> + </method> + <method name="_end_sync" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_finish" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_flush_queries" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_free_rid" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="rid" type="RID" /> + <description> + </description> + </method> + <method name="_get_process_info" qualifiers="virtual"> + <return type="int" /> + <param index="0" name="process_info" type="int" enum="PhysicsServer2D.ProcessInfo" /> + <description> + </description> + </method> + <method name="_init" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_is_flushing_queries" qualifiers="virtual const"> + <return type="bool" /> + <description> + </description> + </method> + <method name="_joint_clear" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <description> + </description> + </method> + <method name="_joint_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_joint_disable_collisions_between_bodies" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="disable" type="bool" /> + <description> + </description> + </method> + <method name="_joint_get_param" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" /> + <description> + </description> + </method> + <method name="_joint_get_type" qualifiers="virtual const"> + <return type="int" enum="PhysicsServer2D.JointType" /> + <param index="0" name="joint" type="RID" /> + <description> + </description> + </method> + <method name="_joint_is_disabled_collisions_between_bodies" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="joint" type="RID" /> + <description> + </description> + </method> + <method name="_joint_make_damped_spring" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="anchor_a" type="Vector2" /> + <param index="2" name="anchor_b" type="Vector2" /> + <param index="3" name="body_a" type="RID" /> + <param index="4" name="body_b" type="RID" /> + <description> + </description> + </method> + <method name="_joint_make_groove" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="a_groove1" type="Vector2" /> + <param index="2" name="a_groove2" type="Vector2" /> + <param index="3" name="b_anchor" type="Vector2" /> + <param index="4" name="body_a" type="RID" /> + <param index="5" name="body_b" type="RID" /> + <description> + </description> + </method> + <method name="_joint_make_pin" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="anchor" type="Vector2" /> + <param index="2" name="body_a" type="RID" /> + <param index="3" name="body_b" type="RID" /> + <description> + </description> + </method> + <method name="_joint_set_param" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" /> + <param index="2" name="value" type="float" /> + <description> + </description> + </method> + <method name="_pin_joint_get_param" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.PinJointParam" /> + <description> + </description> + </method> + <method name="_pin_joint_set_param" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.PinJointParam" /> + <param index="2" name="value" type="float" /> + <description> + </description> + </method> + <method name="_rectangle_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_segment_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_separation_ray_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_set_active" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="active" type="bool" /> + <description> + </description> + </method> + <method name="_shape_collide" qualifiers="virtual"> + <return type="bool" /> + <param index="0" name="shape_A" type="RID" /> + <param index="1" name="xform_A" type="Transform2D" /> + <param index="2" name="motion_A" type="Vector2" /> + <param index="3" name="shape_B" type="RID" /> + <param index="4" name="xform_B" type="Transform2D" /> + <param index="5" name="motion_B" type="Vector2" /> + <param index="6" name="results" type="void*" /> + <param index="7" name="result_max" type="int" /> + <param index="8" name="result_count" type="int32_t*" /> + <description> + </description> + </method> + <method name="_shape_get_custom_solver_bias" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> + <method name="_shape_get_data" qualifiers="virtual const"> + <return type="Variant" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> + <method name="_shape_get_type" qualifiers="virtual const"> + <return type="int" enum="PhysicsServer2D.ShapeType" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> + <method name="_shape_set_custom_solver_bias" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="shape" type="RID" /> + <param index="1" name="bias" type="float" /> + <description> + </description> + </method> + <method name="_shape_set_data" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="shape" type="RID" /> + <param index="1" name="data" type="Variant" /> + <description> + </description> + </method> + <method name="_space_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + <method name="_space_get_contact_count" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_space_get_contacts" qualifiers="virtual const"> + <return type="PackedVector2Array" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_space_get_direct_state" qualifiers="virtual"> + <return type="PhysicsDirectSpaceState2D" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_space_get_param" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="space" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" /> + <description> + </description> + </method> + <method name="_space_is_active" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_space_set_active" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="space" type="RID" /> + <param index="1" name="active" type="bool" /> + <description> + </description> + </method> + <method name="_space_set_debug_contacts" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="space" type="RID" /> + <param index="1" name="max_contacts" type="int" /> + <description> + </description> + </method> + <method name="_space_set_param" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="space" type="RID" /> + <param index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" /> + <param index="2" name="value" type="float" /> + <description> + </description> + </method> + <method name="_step" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="step" type="float" /> + <description> + </description> + </method> + <method name="_sync" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_world_boundary_shape_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> + </methods> +</class> diff --git a/doc/classes/PhysicsServer2DManager.xml b/doc/classes/PhysicsServer2DManager.xml new file mode 100644 index 0000000000..328ac93ce3 --- /dev/null +++ b/doc/classes/PhysicsServer2DManager.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsServer2DManager" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Manager for 2D physics server implementations. + </brief_description> + <description> + [PhysicsServer2DManager] is the API for registering [PhysicsServer2D] implementations, and for setting the default implementation. + [b]Note:[/b] It is not possible to switch physics servers at runtime. This class is only used on startup at the server initialization level, by Godot itself and possibly by GDExtensions. + </description> + <tutorials> + </tutorials> + <methods> + <method name="register_server"> + <return type="void" /> + <param index="0" name="name" type="String" /> + <param index="1" name="create_callback" type="Callable" /> + <description> + Register a [PhysicsServer2D] implementation by passing a [param name] and a [Callable] that returns a [PhysicsServer2D] object. + </description> + </method> + <method name="set_default_server"> + <return type="void" /> + <param index="0" name="name" type="String" /> + <param index="1" name="priority" type="int" /> + <description> + Set the default [PhysicsServer2D] implementation to the one identified by [param name], if [param priority] is greater than the priority of the current default implementation. + </description> + </method> + </methods> +</class> diff --git a/doc/classes/PhysicsServer3D.xml b/doc/classes/PhysicsServer3D.xml index da9e10c420..95f7fb69a2 100644 --- a/doc/classes/PhysicsServer3D.xml +++ b/doc/classes/PhysicsServer3D.xml @@ -40,6 +40,20 @@ Creates an [Area3D]. </description> </method> + <method name="area_get_collision_layer" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area belongs to. + </description> + </method> + <method name="area_get_collision_mask" qualifiers="const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + Returns the physics layer or layers an area can contact with. + </description> + </method> <method name="area_get_object_instance_id" qualifiers="const"> <return type="int" /> <param index="0" name="area" type="RID" /> diff --git a/doc/classes/PhysicsServer3DExtension.xml b/doc/classes/PhysicsServer3DExtension.xml index 200065de54..1e9df54de5 100644 --- a/doc/classes/PhysicsServer3DExtension.xml +++ b/doc/classes/PhysicsServer3DExtension.xml @@ -34,6 +34,18 @@ <description> </description> </method> + <method name="_area_get_collision_layer" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> + <method name="_area_get_collision_mask" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="area" type="RID" /> + <description> + </description> + </method> <method name="_area_get_object_instance_id" qualifiers="virtual const"> <return type="int" /> <param index="0" name="area" type="RID" /> @@ -274,6 +286,12 @@ <description> </description> </method> + <method name="_body_get_collision_exceptions" qualifiers="virtual const"> + <return type="RID[]" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_get_collision_layer" qualifiers="virtual const"> <return type="int" /> <param index="0" name="body" type="RID" /> @@ -304,6 +322,12 @@ <description> </description> </method> + <method name="_body_get_contacts_reported_depth_threshold" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_get_direct_state" qualifiers="virtual"> <return type="PhysicsDirectBodyState3D" /> <param index="0" name="body" type="RID" /> @@ -368,6 +392,12 @@ <description> </description> </method> + <method name="_body_get_user_flags" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> <method name="_body_is_axis_locked" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="body" type="RID" /> @@ -457,6 +487,13 @@ <description> </description> </method> + <method name="_body_set_contacts_reported_depth_threshold" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="threshold" type="float" /> + <description> + </description> + </method> <method name="_body_set_enable_continuous_collision_detection" qualifiers="virtual"> <return type="void" /> <param index="0" name="body" type="RID" /> @@ -547,6 +584,20 @@ <description> </description> </method> + <method name="_body_set_state_sync_callback" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="callable" type="Callable" /> + <description> + </description> + </method> + <method name="_body_set_user_flags" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="flags" type="int" /> + <description> + </description> + </method> <method name="_body_test_motion" qualifiers="virtual const"> <return type="bool" /> <param index="0" name="body" type="RID" /> @@ -604,6 +655,21 @@ <description> </description> </method> + <method name="_end_sync" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_finish" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_flush_queries" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> <method name="_free_rid" qualifiers="virtual"> <return type="void" /> <param index="0" name="rid" type="RID" /> @@ -685,6 +751,16 @@ <description> </description> </method> + <method name="_init" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> + <method name="_is_flushing_queries" qualifiers="virtual const"> + <return type="bool" /> + <description> + </description> + </method> <method name="_joint_clear" qualifiers="virtual"> <return type="void" /> <param index="0" name="joint" type="RID" /> @@ -738,6 +814,18 @@ <description> </description> </method> + <method name="_joint_make_hinge_simple" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="joint" type="RID" /> + <param index="1" name="body_A" type="RID" /> + <param index="2" name="pivot_A" type="Vector3" /> + <param index="3" name="axis_A" type="Vector3" /> + <param index="4" name="body_B" type="RID" /> + <param index="5" name="pivot_B" type="Vector3" /> + <param index="6" name="axis_B" type="Vector3" /> + <description> + </description> + </method> <method name="_joint_make_pin" qualifiers="virtual"> <return type="void" /> <param index="0" name="joint" type="RID" /> @@ -817,18 +905,37 @@ <description> </description> </method> + <method name="_shape_get_custom_solver_bias" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> <method name="_shape_get_data" qualifiers="virtual const"> <return type="Variant" /> <param index="0" name="shape" type="RID" /> <description> </description> </method> + <method name="_shape_get_margin" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="shape" type="RID" /> + <description> + </description> + </method> <method name="_shape_get_type" qualifiers="virtual const"> <return type="int" enum="PhysicsServer3D.ShapeType" /> <param index="0" name="shape" type="RID" /> <description> </description> </method> + <method name="_shape_set_custom_solver_bias" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="shape" type="RID" /> + <param index="1" name="bias" type="float" /> + <description> + </description> + </method> <method name="_shape_set_data" qualifiers="virtual"> <return type="void" /> <param index="0" name="shape" type="RID" /> @@ -836,6 +943,13 @@ <description> </description> </method> + <method name="_shape_set_margin" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="shape" type="RID" /> + <param index="1" name="margin" type="float" /> + <description> + </description> + </method> <method name="_slider_joint_get_param" qualifiers="virtual const"> <return type="float" /> <param index="0" name="joint" type="RID" /> @@ -851,17 +965,250 @@ <description> </description> </method> + <method name="_soft_body_add_collision_exception" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="body_b" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_create" qualifiers="virtual"> + <return type="RID" /> + <description> + </description> + </method> <method name="_soft_body_get_bounds" qualifiers="virtual const"> <return type="AABB" /> <param index="0" name="body" type="RID" /> <description> </description> </method> + <method name="_soft_body_get_collision_exceptions" qualifiers="virtual const"> + <return type="RID[]" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_collision_layer" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_collision_mask" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_damping_coefficient" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_drag_coefficient" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_linear_stiffness" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_point_global_position" qualifiers="virtual const"> + <return type="Vector3" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_get_pressure_coefficient" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_simulation_precision" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_space" qualifiers="virtual const"> + <return type="RID" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_get_state" qualifiers="virtual const"> + <return type="Variant" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="state" type="int" enum="PhysicsServer3D.BodyState" /> + <description> + </description> + </method> + <method name="_soft_body_get_total_mass" qualifiers="virtual const"> + <return type="float" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_is_point_pinned" qualifiers="virtual const"> + <return type="bool" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_move_point" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <param index="2" name="global_position" type="Vector3" /> + <description> + </description> + </method> + <method name="_soft_body_pin_point" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="point_index" type="int" /> + <param index="2" name="pin" type="bool" /> + <description> + </description> + </method> + <method name="_soft_body_remove_all_pinned_points" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_remove_collision_exception" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="body_b" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_set_collision_layer" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="layer" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_set_collision_mask" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="mask" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_set_damping_coefficient" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="damping_coefficient" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_drag_coefficient" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="drag_coefficient" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_linear_stiffness" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="linear_stiffness" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_mesh" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="mesh" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_set_pressure_coefficient" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="pressure_coefficient" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_ray_pickable" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="enable" type="bool" /> + <description> + </description> + </method> + <method name="_soft_body_set_simulation_precision" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="simulation_precision" type="int" /> + <description> + </description> + </method> + <method name="_soft_body_set_space" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_soft_body_set_state" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="state" type="int" enum="PhysicsServer3D.BodyState" /> + <param index="2" name="variant" type="Variant" /> + <description> + </description> + </method> + <method name="_soft_body_set_total_mass" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="total_mass" type="float" /> + <description> + </description> + </method> + <method name="_soft_body_set_transform" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="transform" type="Transform3D" /> + <description> + </description> + </method> + <method name="_soft_body_update_rendering_server" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="body" type="RID" /> + <param index="1" name="rendering_server_handler" type="PhysicsServer3DRenderingServerHandler" /> + <description> + </description> + </method> <method name="_space_create" qualifiers="virtual"> <return type="RID" /> <description> </description> </method> + <method name="_space_get_contact_count" qualifiers="virtual const"> + <return type="int" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> + <method name="_space_get_contacts" qualifiers="virtual const"> + <return type="PackedVector3Array" /> + <param index="0" name="space" type="RID" /> + <description> + </description> + </method> <method name="_space_get_direct_state" qualifiers="virtual"> <return type="PhysicsDirectSpaceState3D" /> <param index="0" name="space" type="RID" /> @@ -888,6 +1235,13 @@ <description> </description> </method> + <method name="_space_set_debug_contacts" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="space" type="RID" /> + <param index="1" name="max_contacts" type="int" /> + <description> + </description> + </method> <method name="_space_set_param" qualifiers="virtual"> <return type="void" /> <param index="0" name="space" type="RID" /> @@ -901,6 +1255,17 @@ <description> </description> </method> + <method name="_step" qualifiers="virtual"> + <return type="void" /> + <param index="0" name="step" type="float" /> + <description> + </description> + </method> + <method name="_sync" qualifiers="virtual"> + <return type="void" /> + <description> + </description> + </method> <method name="_world_boundary_shape_create" qualifiers="virtual"> <return type="RID" /> <description> diff --git a/doc/classes/PhysicsServer3DManager.xml b/doc/classes/PhysicsServer3DManager.xml new file mode 100644 index 0000000000..3ec03fede4 --- /dev/null +++ b/doc/classes/PhysicsServer3DManager.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="PhysicsServer3DManager" inherits="Object" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Manager for 3D physics server implementations. + </brief_description> + <description> + [PhysicsServer3DManager] is the API for registering [PhysicsServer3D] implementations, and for setting the default implementation. + [b]Note:[/b] It is not possible to switch physics servers at runtime. This class is only used on startup at the server initialization level, by Godot itself and possibly by GDExtensions. + </description> + <tutorials> + </tutorials> + <methods> + <method name="register_server"> + <return type="void" /> + <param index="0" name="name" type="String" /> + <param index="1" name="create_callback" type="Callable" /> + <description> + Register a [PhysicsServer3D] implementation by passing a [param name] and a [Callable] that returns a [PhysicsServer2D] object. + </description> + </method> + <method name="set_default_server"> + <return type="void" /> + <param index="0" name="name" type="String" /> + <param index="1" name="priority" type="int" /> + <description> + Set the default [PhysicsServer3D] implementation to the one identified by [param name], if [param priority] is greater than the priority of the current default implementation. + </description> + </method> + </methods> +</class> diff --git a/doc/classes/PhysicsShapeQueryParameters2D.xml b/doc/classes/PhysicsShapeQueryParameters2D.xml index 3fbb0c0ed0..8dcb329e7e 100644 --- a/doc/classes/PhysicsShapeQueryParameters2D.xml +++ b/doc/classes/PhysicsShapeQueryParameters2D.xml @@ -18,7 +18,7 @@ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="4294967295"> The physics layers the query will detect (as a bitmask). By default, all collision layers are detected. See [url=$DOCS_URL/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information. </member> - <member name="exclude" type="Array" setter="set_exclude" getter="get_exclude" default="[]"> + <member name="exclude" type="RID[]" setter="set_exclude" getter="get_exclude" default="[]"> The list of objects or object [RID]s that will be excluded from collisions. </member> <member name="margin" type="float" setter="set_margin" getter="get_margin" default="0.0"> diff --git a/doc/classes/PhysicsTestMotionParameters2D.xml b/doc/classes/PhysicsTestMotionParameters2D.xml index 00f21a2058..d8f96511dd 100644 --- a/doc/classes/PhysicsTestMotionParameters2D.xml +++ b/doc/classes/PhysicsTestMotionParameters2D.xml @@ -13,7 +13,7 @@ If set to [code]true[/code], shapes of type [constant PhysicsServer2D.SHAPE_SEPARATION_RAY] are used to detect collisions and can stop the motion. Can be useful when snapping to the ground. If set to [code]false[/code], shapes of type [constant PhysicsServer2D.SHAPE_SEPARATION_RAY] are only used for separation when overlapping with other bodies. That's the main use for separation ray shapes. </member> - <member name="exclude_bodies" type="Array" setter="set_exclude_bodies" getter="get_exclude_bodies" default="[]"> + <member name="exclude_bodies" type="RID[]" setter="set_exclude_bodies" getter="get_exclude_bodies" default="[]"> Optional array of body [RID] to exclude from collision. </member> <member name="exclude_objects" type="Array" setter="set_exclude_objects" getter="get_exclude_objects" default="[]"> @@ -29,8 +29,8 @@ Motion vector to define the length and direction of the motion to test. </member> <member name="recovery_as_collision" type="bool" setter="set_recovery_as_collision_enabled" getter="is_recovery_as_collision_enabled" default="false"> - If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [method CharacterBody2D.move_and_slide] for improving floor detection when floor snapping is disabled. - If set to [code]false[/code], only collisions resulting from the motion are reported; this is used e.g. by [method PhysicsBody2D.move_and_collide]. + If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [CharacterBody2D] for improving floor detection during floor snapping. + If set to [code]false[/code], only collisions resulting from the motion are reported, which is generally the desired behaviour. </member> </members> </class> diff --git a/doc/classes/PhysicsTestMotionParameters3D.xml b/doc/classes/PhysicsTestMotionParameters3D.xml index 5b07796a10..e8f80ae131 100644 --- a/doc/classes/PhysicsTestMotionParameters3D.xml +++ b/doc/classes/PhysicsTestMotionParameters3D.xml @@ -32,8 +32,8 @@ Motion vector to define the length and direction of the motion to test. </member> <member name="recovery_as_collision" type="bool" setter="set_recovery_as_collision_enabled" getter="is_recovery_as_collision_enabled" default="false"> - If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [method CharacterBody3D.move_and_slide] for improving floor detection when floor snapping is disabled. - If set to [code]false[/code], only collisions resulting from the motion are detected; this is used e.g. by [method PhysicsBody3D.move_and_collide]. + If set to [code]true[/code], any depenetration from the recovery phase is reported as a collision; this is used e.g. by [CharacterBody3D] for improving floor detection during floor snapping. + If set to [code]false[/code], only collisions resulting from the motion are reported, which is generally the desired behaviour. </member> </members> </class> diff --git a/doc/classes/PlaneMesh.xml b/doc/classes/PlaneMesh.xml index 564b6fe743..1dceac70b0 100644 --- a/doc/classes/PlaneMesh.xml +++ b/doc/classes/PlaneMesh.xml @@ -31,10 +31,10 @@ [PlaneMesh] will face the positive X-axis. </constant> <constant name="FACE_Y" value="1" enum="Orientation"> - [PlaneMesh] will face the positive Y-axis. This matches the behaviour of the [PlaneMesh] in Godot 3.x. + [PlaneMesh] will face the positive Y-axis. This matches the behavior of the [PlaneMesh] in Godot 3.x. </constant> <constant name="FACE_Z" value="2" enum="Orientation"> - [PlaneMesh] will face the positive Z-axis. This matches the behvaiour of the QuadMesh in Godot 3.x. + [PlaneMesh] will face the positive Z-axis. This matches the behavior of the QuadMesh in Godot 3.x. </constant> </constants> </class> diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml index 00b725d5d7..23287f4de1 100644 --- a/doc/classes/PopupMenu.xml +++ b/doc/classes/PopupMenu.xml @@ -182,7 +182,7 @@ Removes all items from the [PopupMenu]. </description> </method> - <method name="get_current_index" qualifiers="const"> + <method name="get_focused_item" qualifiers="const"> <return type="int" /> <description> Returns the index of the currently focused item. Returns [code]-1[/code] if no item is focused. @@ -332,7 +332,7 @@ Moves the scroll view to make the item at the given [param index] visible. </description> </method> - <method name="set_current_index"> + <method name="set_focused_item"> <return type="void" /> <param index="0" name="index" type="int" /> <description> diff --git a/doc/classes/ProceduralSkyMaterial.xml b/doc/classes/ProceduralSkyMaterial.xml index 3cc4bd71f7..6ba8e57380 100644 --- a/doc/classes/ProceduralSkyMaterial.xml +++ b/doc/classes/ProceduralSkyMaterial.xml @@ -17,14 +17,14 @@ <member name="ground_curve" type="float" setter="set_ground_curve" getter="get_ground_curve" default="0.02"> How quickly the [member ground_horizon_color] fades into the [member ground_bottom_color]. </member> - <member name="ground_energy" type="float" setter="set_ground_energy" getter="get_ground_energy" default="1.0"> - Amount of energy contribution from the ground. + <member name="ground_energy_multiplier" type="float" setter="set_ground_energy_multiplier" getter="get_ground_energy_multiplier" default="1.0"> + Multiplier for ground color. A higher value will make the ground brighter. </member> <member name="ground_horizon_color" type="Color" setter="set_ground_horizon_color" getter="get_ground_horizon_color" default="Color(0.6463, 0.6558, 0.6708, 1)"> Color of the ground at the horizon. Blends with [member ground_bottom_color]. </member> <member name="sky_cover" type="Texture2D" setter="set_sky_cover" getter="get_sky_cover"> - The sky cover texture to use. This texture must use an equirectangular projection (similar to [PanoramaSkyMaterial]). The texture's colors will be [i]added[/i] to the existing sky color, and will be multiplied by [member sky_energy] and [member sky_cover_modulate]. This is mainly suited to displaying stars at night, but it can also be used to display clouds at day or night (with a non-physically-accurate look). + The sky cover texture to use. This texture must use an equirectangular projection (similar to [PanoramaSkyMaterial]). The texture's colors will be [i]added[/i] to the existing sky color, and will be multiplied by [member sky_energy_multiplier] and [member sky_cover_modulate]. This is mainly suited to displaying stars at night, but it can also be used to display clouds at day or night (with a non-physically-accurate look). </member> <member name="sky_cover_modulate" type="Color" setter="set_sky_cover_modulate" getter="get_sky_cover_modulate" default="Color(1, 1, 1, 1)"> The tint to apply to the [member sky_cover] texture. This can be used to change the sky cover's colors or opacity independently of the sky energy, which is useful for day/night or weather transitions. Only effective if a texture is defined in [member sky_cover]. @@ -32,8 +32,8 @@ <member name="sky_curve" type="float" setter="set_sky_curve" getter="get_sky_curve" default="0.15"> How quickly the [member sky_horizon_color] fades into the [member sky_top_color]. </member> - <member name="sky_energy" type="float" setter="set_sky_energy" getter="get_sky_energy" default="1.0"> - Amount of energy contribution from the sky. + <member name="sky_energy_multiplier" type="float" setter="set_sky_energy_multiplier" getter="get_sky_energy_multiplier" default="1.0"> + Multiplier for sky color. A higher value will make the sky brighter. </member> <member name="sky_horizon_color" type="Color" setter="set_sky_horizon_color" getter="get_sky_horizon_color" default="Color(0.6463, 0.6558, 0.6708, 1)"> Color of the sky at the horizon. Blends with [member sky_top_color]. diff --git a/doc/classes/ProgressBar.xml b/doc/classes/ProgressBar.xml index 8a781c51fb..510b8d5bd1 100644 --- a/doc/classes/ProgressBar.xml +++ b/doc/classes/ProgressBar.xml @@ -12,7 +12,7 @@ <member name="fill_mode" type="int" setter="set_fill_mode" getter="get_fill_mode" default="0"> The fill direction. See [enum FillMode] for possible values. </member> - <member name="percent_visible" type="bool" setter="set_percent_visible" getter="is_percent_visible" default="true"> + <member name="show_percentage" type="bool" setter="set_show_percentage" getter="is_percentage_shown" default="true"> If [code]true[/code], the fill percentage is displayed on the bar. </member> </members> @@ -44,15 +44,15 @@ The size of the text outline. </theme_item> <theme_item name="font" data_type="font" type="Font"> - Font used to draw the fill percentage if [member percent_visible] is [code]true[/code]. + Font used to draw the fill percentage if [member show_percentage] is [code]true[/code]. </theme_item> <theme_item name="font_size" data_type="font_size" type="int"> - Font size used to draw the fill percentage if [member percent_visible] is [code]true[/code]. + Font size used to draw the fill percentage if [member show_percentage] is [code]true[/code]. </theme_item> - <theme_item name="bg" data_type="style" type="StyleBox"> + <theme_item name="background" data_type="style" type="StyleBox"> The style of the background. </theme_item> - <theme_item name="fg" data_type="style" type="StyleBox"> + <theme_item name="fill" data_type="style" type="StyleBox"> The style of the progress (i.e. the part that fills the bar). </theme_item> </theme_items> diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index fa7fad9e40..498283b2f3 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -159,6 +159,15 @@ Sets the order of a configuration value (influences when saved to the config file). </description> </method> + <method name="set_restart_if_changed"> + <return type="void" /> + <param index="0" name="name" type="String" /> + <param index="1" name="restart" type="bool" /> + <description> + Sets whether a setting requires restarting the editor to properly take effect. + [b]Note:[/b] This is just a hint to display to the user that the editor must be restarted for changes to take effect. Enabling [method set_restart_if_changed] does [i]not[/i] delay the setting being set when changed. + </description> + </method> <method name="set_setting"> <return type="void" /> <param index="0" name="name" type="String" /> @@ -283,6 +292,7 @@ </member> <member name="audio/driver/enable_input" type="bool" setter="" getter="" default="false"> If [code]true[/code], microphone input will be allowed. This requires appropriate permissions to be set when exporting to Android or iOS. + [b]Note:[/b] If the operating system blocks access to audio input devices (due to the user's privacy settings), audio capture will only return silence. On Windows 10 and later, make sure that apps are allowed to access the microphone in the OS' privacy settings. </member> <member name="audio/driver/mix_rate" type="int" setter="" getter="" default="44100"> The mixing rate used for audio (in Hz). In general, it's better to not touch this and leave it to the host operating system. @@ -476,9 +486,6 @@ <member name="debug/shapes/collision/shape_color" type="Color" setter="" getter="" default="Color(0, 0.6, 0.7, 0.42)"> Color of the collision shapes, visible when "Visible Collision Shapes" is enabled in the Debug menu. </member> - <member name="debug/shapes/navigation/disabled_geometry_color" type="Color" setter="" getter="" default="Color(1, 0.7, 0.1, 0.4)"> - Color of the disabled navigation geometry, visible when "Visible Navigation" is enabled in the Debug menu. - </member> <member name="debug/shapes/navigation/edge_connection_color" type="Color" setter="" getter="" default="Color(1, 0, 1, 1)"> Color to display edge connections between navigation regions, visible when "Visible Navigation" is enabled in the Debug menu. </member> @@ -497,8 +504,11 @@ <member name="debug/shapes/navigation/enable_geometry_face_random_color" type="bool" setter="" getter="" default="true"> If enabled, colorizes each navigation mesh polygon face with a random color when "Visible Navigation" is enabled in the Debug menu. </member> - <member name="debug/shapes/navigation/geometry_color" type="Color" setter="" getter="" default="Color(0.1, 1, 0.7, 0.4)"> - Color of the navigation geometry, visible when "Visible Navigation" is enabled in the Debug menu. + <member name="debug/shapes/navigation/enable_link_connections" type="bool" setter="" getter="" default="true"> + If enabled, displays navigation link connections when "Visible Navigation" is enabled in the Debug menu. + </member> + <member name="debug/shapes/navigation/enable_link_connections_xray" type="bool" setter="" getter="" default="true"> + If enabled, displays navigation link connections through geometry when "Visible Navigation" is enabled in the Debug menu. </member> <member name="debug/shapes/navigation/geometry_edge_color" type="Color" setter="" getter="" default="Color(0.5, 1, 1, 1)"> Color to display enabled navigation mesh polygon edges, visible when "Visible Navigation" is enabled in the Debug menu. @@ -512,6 +522,12 @@ <member name="debug/shapes/navigation/geometry_face_disabled_color" type="Color" setter="" getter="" default="Color(0.5, 0.5, 0.5, 0.4)"> Color to display disabled navigation mesh polygon faces, visible when "Visible Navigation" is enabled in the Debug menu. </member> + <member name="debug/shapes/navigation/link_connection_color" type="Color" setter="" getter="" default="Color(1, 0.5, 1, 1)"> + Color to use to display navigation link connections, visible when "Visible Navigation" is enabled in the Debug menu. + </member> + <member name="debug/shapes/navigation/link_connection_disabled_color" type="Color" setter="" getter="" default="Color(0.5, 0.5, 0.5, 1)"> + Color to use to display disabled navigation link connections, visible when "Visible Navigation" is enabled in the Debug menu. + </member> <member name="debug/shapes/paths/geometry_color" type="Color" setter="" getter="" default="Color(0.1, 1, 0.7, 0.4)"> Color of the curve path geometry, visible when "Visible Paths" is enabled in the Debug menu. </member> @@ -544,6 +560,9 @@ <member name="display/window/ios/hide_home_indicator" type="bool" setter="" getter="" default="true"> If [code]true[/code], the home indicator is hidden automatically. This only affects iOS devices without a physical home button. </member> + <member name="display/window/per_pixel_transparency/allowed" type="bool" setter="" getter="" default="false"> + If [code]true[/code], allows per-pixel transparency for the window background. This affects performance, so leave it on [code]false[/code] unless you need it. + </member> <member name="display/window/size/always_on_top" type="bool" setter="" getter="" default="false"> Forces the main window to be always on top. [b]Note:[/b] This setting is ignored on iOS, Android, and Web. @@ -552,15 +571,25 @@ Forces the main window to be borderless. [b]Note:[/b] This setting is ignored on iOS, Android, and Web. </member> - <member name="display/window/size/fullscreen" type="bool" setter="" getter="" default="false"> - Sets the main window to full screen when the project starts. Note that this is not [i]exclusive[/i] fullscreen. On Windows and Linux, a borderless window is used to emulate fullscreen. On macOS, a new desktop is used to display the running project. - Regardless of the platform, enabling fullscreen will change the window size to match the monitor's size. Therefore, make sure your project supports [url=$DOCS_URL/tutorials/rendering/multiple_resolutions.html]multiple resolutions[/url] when enabling fullscreen mode. - [b]Note:[/b] This setting is ignored on iOS, Android, and Web. + <member name="display/window/size/extend_to_title" type="bool" setter="" getter="" default="false"> + Main window content is expanded to the full size of the window. Unlike borderless window, the frame is left intact and can be used to resize the window, title bar is transparent, but have minimize/maximize/close buttons. + [b]Note:[/b] This setting is implemented on macOS. + </member> + <member name="display/window/size/mode" type="int" setter="" getter="" default="0"> + Main window mode. See [enum DisplayServer.WindowMode] for possible values and how each mode behaves. + </member> + <member name="display/window/size/no_focus" type="bool" setter="" getter="" default="false"> + Main window can't be focused. No-focus window will ignore all input, except mouse clicks. </member> <member name="display/window/size/resizable" type="bool" setter="" getter="" default="true"> Allows the window to be resizable by default. [b]Note:[/b] This setting is ignored on iOS. </member> + <member name="display/window/size/transparent" type="bool" setter="" getter="" default="false"> + Main window background can be transparent. + [b]Note:[/b] To use transparent splash screen, set [member application/boot_splash/bg_color] to [code]Color(0, 0, 0, 0)[/code]. + [b]Note:[/b] This setting has no effect if [member display/window/per_pixel_transparency/allowed] is set to [code]false[/code]. + </member> <member name="display/window/size/viewport_height" type="int" setter="" getter="" default="648"> Sets the game's main viewport height. On desktop platforms, this is also the initial window height, represented by an indigo-colored rectangle in the 2D editor. Stretch mode settings also use this as a reference when using the [code]canvas_items[/code] or [code]viewport[/code] stretch modes. See also [member display/window/size/viewport_width], [member display/window/size/window_width_override] and [member display/window/size/window_height_override]. </member> @@ -630,10 +659,22 @@ If [code]true[/code], Blender 3D scene files with the [code].blend[/code] extension will be imported by converting them to glTF 2.0. This requires configuring a path to a Blender executable in the editor settings at [code]filesystem/import/blender/blender3_path[/code]. Blender 3.0 or later is required. </member> + <member name="filesystem/import/blender/enabled.android" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/blender/enabled] on Android where Blender can't easily be accessed from Godot. + </member> + <member name="filesystem/import/blender/enabled.web" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/blender/enabled] on the Web where Blender can't easily be accessed from Godot. + </member> <member name="filesystem/import/fbx/enabled" type="bool" setter="" getter="" default="true"> If [code]true[/code], Autodesk FBX 3D scene files with the [code].fbx[/code] extension will be imported by converting them to glTF 2.0. This requires configuring a path to a FBX2glTF executable in the editor settings at [code]filesystem/import/fbx/fbx2gltf_path[/code]. </member> + <member name="filesystem/import/fbx/enabled.android" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/fbx/enabled] on Android where FBX2glTF can't easily be accessed from Godot. + </member> + <member name="filesystem/import/fbx/enabled.web" type="bool" setter="" getter="" default="false"> + Override for [member filesystem/import/fbx/enabled] on the Web where FBX2glTF can't easily be accessed from Godot. + </member> <member name="gui/common/default_scroll_deadzone" type="int" setter="" getter="" default="0"> Default value for [member ScrollContainer.scroll_deadzone], which will be used for all [ScrollContainer]s unless overridden. </member> @@ -1439,12 +1480,18 @@ <member name="navigation/2d/default_edge_connection_margin" type="int" setter="" getter="" default="1"> Default edge connection margin for 2D navigation maps. See [method NavigationServer2D.map_set_edge_connection_margin]. </member> + <member name="navigation/2d/default_link_connection_radius" type="int" setter="" getter="" default="4"> + Default link connection radius for 2D navigation maps. See [method NavigationServer2D.map_set_link_connection_radius]. + </member> <member name="navigation/3d/default_cell_size" type="float" setter="" getter="" default="0.25"> Default cell size for 3D navigation maps. See [method NavigationServer3D.map_set_cell_size]. </member> <member name="navigation/3d/default_edge_connection_margin" type="float" setter="" getter="" default="0.25"> Default edge connection margin for 3D navigation maps. See [method NavigationServer3D.map_set_edge_connection_margin]. </member> + <member name="navigation/3d/default_link_connection_radius" type="float" setter="" getter="" default="1.0"> + Default link connection radius for 3D navigation maps. See [method NavigationServer3D.map_set_link_connection_radius]. + </member> <member name="network/limits/debugger/max_chars_per_second" type="int" setter="" getter="" default="32768"> Maximum number of characters allowed to send as output from the debugger. Over this value, content is dropped. This helps not to stall the debugger connection. </member> @@ -1472,8 +1519,8 @@ <member name="network/remote_fs/page_size" type="int" setter="" getter="" default="65536"> Page size used by remote filesystem (in bytes). </member> - <member name="network/ssl/certificate_bundle_override" type="String" setter="" getter="" default=""""> - The CA certificates bundle to use for SSL connections. If this is set to a non-empty value, this will [i]override[/i] Godot's default [url=https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]Mozilla certificate bundle[/url]. If left empty, the default certificate bundle will be used. + <member name="network/tls/certificate_bundle_override" type="String" setter="" getter="" default=""""> + The CA certificates bundle to use for TLS connections. If this is set to a non-empty value, this will [i]override[/i] Godot's default [url=https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt]Mozilla certificate bundle[/url]. If left empty, the default certificate bundle will be used. If in doubt, leave this setting empty. </member> <member name="physics/2d/default_angular_damp" type="float" setter="" getter="" default="1.0"> @@ -1639,8 +1686,11 @@ </member> <member name="rendering/2d/snap/snap_2d_vertices_to_pixel" type="bool" setter="" getter="" default="false"> </member> - <member name="rendering/anti_aliasing/quality/msaa" type="int" setter="" getter="" default="0"> - Sets the number of MSAA samples to use (as a power of two). MSAA is used to reduce aliasing around the edges of polygons. A higher MSAA value results in smoother edges but can be significantly slower on some hardware. See also bilinear scaling 3d [member rendering/scaling_3d/mode] for supersampling, which provides higher quality but is much more expensive. + <member name="rendering/anti_aliasing/quality/msaa_2d" type="int" setter="" getter="" default="0"> + Sets the number of MSAA samples to use for 2D/Canvas rendering (as a power of two). MSAA is used to reduce aliasing around the edges of polygons. A higher MSAA value results in smoother edges but can be significantly slower on some hardware. This has no effect on shader-induced aliasing or texture aliasing. + </member> + <member name="rendering/anti_aliasing/quality/msaa_3d" type="int" setter="" getter="" default="0"> + Sets the number of MSAA samples to use for 3D rendering (as a power of two). MSAA is used to reduce aliasing around the edges of polygons. A higher MSAA value results in smoother edges but can be significantly slower on some hardware. See also bilinear scaling 3d [member rendering/scaling_3d/mode] for supersampling, which provides higher quality but is much more expensive. This has no effect on shader-induced aliasing or texture aliasing. </member> <member name="rendering/anti_aliasing/quality/screen_space_aa" type="int" setter="" getter="" default="0"> Sets the screen-space antialiasing mode for the default screen [Viewport]. Screen-space antialiasing works by selectively blurring edges in a post-process shader. It differs from MSAA which takes multiple coverage samples while rendering objects. Screen-space AA methods are typically faster than MSAA and will smooth out specular aliasing, but tend to make scenes appear blurry. The blurriness is partially counteracted by automatically using a negative mipmap LOD bias (see [member rendering/textures/default_filters/texture_mipmap_bias]). @@ -1674,13 +1724,6 @@ If [code]true[/code], performs a previous depth pass before rendering 3D materials. This increases performance significantly in scenes with high overdraw, when complex materials and lighting are used. However, in scenes with few occluded surfaces, the depth prepass may reduce performance. If your game is viewed from a fixed angle that makes it easy to avoid overdraw (such as top-down or side-scrolling perspective), consider disabling the depth prepass to improve performance. This setting can be changed at run-time to optimize performance depending on the scene currently being viewed. [b]Note:[/b] Only supported when using the Vulkan Clustered backend or the OpenGL backend. When using Vulkan Mobile there is no depth prepass performed. </member> - <member name="rendering/driver/driver_name" type="String" setter="" getter="" default=""vulkan""> - The video driver to use. - [b]Note:[/b] OpenGL support is currently incomplete. Only basic rendering is supported. - [b]Note:[/b] The backend in use can be overridden at runtime via the [code]--rendering-driver[/code] command line argument. - [b]FIXME:[/b] No longer valid after DisplayServer split: - In such cases, this property is not updated, so use [code]OS.get_current_video_driver[/code] to query it at run-time. - </member> <member name="rendering/driver/threads/thread_model" type="int" setter="" getter="" default="1"> Thread model for rendering. Rendering on a thread can vastly improve performance, but synchronizing to the main thread can cause a bit more jitter. </member> @@ -1751,11 +1794,32 @@ Enables filtering of the volumetric fog effect prior to integration. This substantially blurs the fog which reduces fine details but also smooths out harsh edges and aliasing artifacts. Disable when more detail is required. </member> <member name="rendering/environment/volumetric_fog/volume_depth" type="int" setter="" getter="" default="64"> - Number of slices to use along the depth of the froxel buffer for volumetric fog. A lower number will be more efficient but may result in artifacts appearing during camera movement. + Number of slices to use along the depth of the froxel buffer for volumetric fog. A lower number will be more efficient but may result in artifacts appearing during camera movement. See also [member Environment.volumetric_fog_length]. </member> <member name="rendering/environment/volumetric_fog/volume_size" type="int" setter="" getter="" default="64"> Base size used to determine size of froxel buffer in the camera X-axis and Y-axis. The final size is scaled by the aspect ratio of the screen, so actual values may differ from what is set. Set a larger size for more detailed fog, set a smaller size for better performance. </member> + <member name="rendering/gl_compatibility/driver" type="String" setter="" getter="" default=""opengl3""> + Sets the driver to be used by the renderer when using the Compatibility renderer. This property can not be edited directly, instead, set the driver using the platform-specific overrides. + </member> + <member name="rendering/gl_compatibility/driver.android" type="String" setter="" getter="" default=""opengl3""> + Android override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.ios" type="String" setter="" getter="" default=""opengl3""> + iOS override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.linuxbsd" type="String" setter="" getter="" default=""opengl3""> + LinuxBSD override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.macos" type="String" setter="" getter="" default=""opengl3""> + macOS override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.web" type="String" setter="" getter="" default=""opengl3""> + Web override for [member rendering/gl_compatibility/driver]. + </member> + <member name="rendering/gl_compatibility/driver.windows" type="String" setter="" getter="" default=""opengl3""> + Windows override for [member rendering/gl_compatibility/driver]. + </member> <member name="rendering/global_illumination/gi/use_half_resolution" type="bool" setter="" getter="" default="false"> If [code]true[/code], renders [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) buffers at halved resolution (e.g. 960×540 when the viewport size is 1920×1080). This improves performance significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts that may be visible on polygon edges. The loss in quality becomes less noticeable as the viewport resolution increases. [LightmapGI] rendering is not affected by this setting. [b]Note:[/b] This property is only read when the project starts. To set half-resolution GI at run-time, call [method RenderingServer.gi_set_use_half_resolution] instead. @@ -1804,6 +1868,55 @@ <member name="rendering/lightmapping/probe_capture/update_speed" type="float" setter="" getter="" default="15"> The framerate-independent update speed when representing dynamic object lighting from [LightmapProbe]s. Higher values make dynamic object lighting update faster. Higher values can prevent fast-moving objects from having "outdated" indirect lighting displayed on them, at the cost of possible flickering when an object moves from a bright area to a shaded area. </member> + <member name="rendering/lights_and_shadows/directional_shadow/16_bits" type="bool" setter="" getter="" default="true"> + Use 16 bits for shadow depth map. Enabling this results in shadows having less precision and may result in shadow acne, but can lead to performance improvements on some devices. + </member> + <member name="rendering/lights_and_shadows/directional_shadow/size" type="int" setter="" getter="" default="4096"> + The directional shadow's size in pixels. Higher values will result in sharper shadows, at the cost of performance. The value will be rounded up to the nearest power of 2. + </member> + <member name="rendering/lights_and_shadows/directional_shadow/size.mobile" type="int" setter="" getter="" default="2048"> + Lower-end override for [member rendering/lights_and_shadows/directional_shadow/size] on mobile devices, due to performance concerns or driver support. + </member> + <member name="rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality" type="int" setter="" getter="" default="2"> + Quality setting for shadows cast by [DirectionalLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy. + [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance]. + [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply [i]constant[/i] shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows. + </member> + <member name="rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality.mobile" type="int" setter="" getter="" default="0"> + Lower-end override for [member rendering/lights_and_shadows/directional_shadow/soft_shadow_filter_quality] on mobile devices, due to performance concerns or driver support. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/atlas_16_bits" type="bool" setter="" getter="" default="true"> + Use 16 bits for shadow depth map. Enabling this results in shadows having less precision and may result in shadow acne, but can lead to performance improvements on some devices. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/atlas_quadrant_0_subdiv" type="int" setter="" getter="" default="2"> + Subdivision quadrant size for shadow mapping. See shadow mapping documentation. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/atlas_quadrant_1_subdiv" type="int" setter="" getter="" default="2"> + Subdivision quadrant size for shadow mapping. See shadow mapping documentation. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/atlas_quadrant_2_subdiv" type="int" setter="" getter="" default="3"> + Subdivision quadrant size for shadow mapping. See shadow mapping documentation. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/atlas_quadrant_3_subdiv" type="int" setter="" getter="" default="4"> + Subdivision quadrant size for shadow mapping. See shadow mapping documentation. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/atlas_size" type="int" setter="" getter="" default="4096"> + Size for shadow atlas (used for OmniLights and SpotLights). See documentation. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/atlas_size.mobile" type="int" setter="" getter="" default="2048"> + Lower-end override for [member rendering/lights_and_shadows/positional_shadow/atlas_size] on mobile devices, due to performance concerns or driver support. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality" type="int" setter="" getter="" default="2"> + Quality setting for shadows cast by [OmniLight3D]s and [SpotLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy. + [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance]. + [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows. + </member> + <member name="rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality.mobile" type="int" setter="" getter="" default="0"> + Lower-end override for [member rendering/lights_and_shadows/positional_shadow/soft_shadow_filter_quality] on mobile devices, due to performance concerns or driver support. + </member> + <member name="rendering/lights_and_shadows/use_physical_light_units" type="bool" setter="" getter="" default="false"> + Enables the use of physically based units for light sources. Physically based units tend to be much larger than the arbitrary units used by Godot, but they can be used to match lighting within Godot to real-world lighting. Due to the large dynamic range of lighting conditions present in nature, Godot bakes exposure into the various lighting quantities before rendering. Most light sources bake exposure automatically at run time based on the active [CameraAttributes] resource, but [LightmapGI] and [VoxelGI] require a [CameraAttributes] resource to be set at bake time to reduce the dynamic range. At run time, Godot will automatically reconcile the baked exposure with the active exposure to ensure lighting remains consistent. + </member> <member name="rendering/limits/cluster_builder/max_clustered_elements" type="float" setter="" getter="" default="512"> </member> <member name="rendering/limits/forward_renderer/threaded_render_minimum_instances" type="int" setter="" getter="" default="500"> @@ -1867,6 +1980,44 @@ <member name="rendering/reflections/sky_reflections/texture_array_reflections.mobile" type="bool" setter="" getter="" default="false"> Lower-end override for [member rendering/reflections/sky_reflections/texture_array_reflections] on mobile devices, due to performance concerns or driver support. </member> + <member name="rendering/renderer/rendering_method" type="String" setter="" getter="" default=""forward_plus""> + Sets the renderer that will be used by the project. Options are: + [b]Clustered[/b]: High-end renderer designed for Desktop devices. Has a higher base overhead, but scales well with complex scenes. Not suitable for older devices or mobile. + [b]Mobile[/b]: Modern renderer designed for mobile devices. Has a lower base overhead than Clustered, but does not scale as well to large scenes with many elements. + [b]Compatibility[/b]: Low-end renderer designed for older devices. Based on the limitations of the OpenGL 3.3/ OpenGL ES 3.0 / WebGL 2 APIs. + </member> + <member name="rendering/renderer/rendering_method.mobile" type="String" setter="" getter="" default=""forward_plus""> + Override for [member rendering/renderer/rendering_method] on mobile devices. + </member> + <member name="rendering/renderer/rendering_method.web" type="String" setter="" getter="" default=""gl_compatibility""> + Override for [member rendering/renderer/rendering_method] on web. + </member> + <member name="rendering/rendering_device/descriptor_pools/max_descriptors_per_pool" type="int" setter="" getter="" default="64"> + </member> + <member name="rendering/rendering_device/driver" type="String" setter="" getter="" default=""vulkan""> + Sets the driver to be used by the renderer when using a RenderingDevice-based renderer like the clustered renderer or the mobile renderer. This property can not be edited directly, instead, set the driver using the platform-specific overrides. + </member> + <member name="rendering/rendering_device/driver.android" type="String" setter="" getter="" default=""vulkan""> + Android override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.ios" type="String" setter="" getter="" default=""vulkan""> + iOS override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.linuxbsd" type="String" setter="" getter="" default=""vulkan""> + LinuxBSD override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.macos" type="String" setter="" getter="" default=""vulkan""> + macOS override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/driver.windows" type="String" setter="" getter="" default=""vulkan""> + Windows override for [member rendering/rendering_device/driver]. + </member> + <member name="rendering/rendering_device/staging_buffer/block_size_kb" type="int" setter="" getter="" default="256"> + </member> + <member name="rendering/rendering_device/staging_buffer/max_size_mb" type="int" setter="" getter="" default="128"> + </member> + <member name="rendering/rendering_device/staging_buffer/texture_upload_region_size_px" type="int" setter="" getter="" default="64"> + </member> <member name="rendering/scaling_3d/fsr_sharpness" type="float" setter="" getter="" default="0.2"> Determines how sharp the upscaled image will be when using the FSR upscaling mode. Sharpness halves with every whole number. Values go from 0.0 (sharpest) to 2.0. Values above 2.0 won't make a visible difference. </member> @@ -1874,7 +2025,7 @@ Sets the scaling 3D mode. Bilinear scaling renders at different resolution to either undersample or supersample the viewport. FidelityFX Super Resolution 1.0, abbreviated to FSR, is an upscaling technology that produces high quality images at fast framerates by using a spatially aware upscaling algorithm. FSR is slightly more expensive than bilinear, but it produces significantly higher image quality. FSR should be used where possible. </member> <member name="rendering/scaling_3d/scale" type="float" setter="" getter="" default="1.0"> - Scales the 3D render buffer based on the viewport size uses an image filter specified in [member rendering/scaling_3d/mode] to scale the output image to the full viewport size. Values lower than [code]1.0[/code] can be used to speed up 3D rendering at the cost of quality (undersampling). Values greater than [code]1.0[/code] are only valid for bilinear mode and can be used to improve 3D rendering quality at a high performance cost (supersampling). See also [member rendering/anti_aliasing/quality/msaa] for multi-sample antialiasing, which is significantly cheaper but only smoothens the edges of polygons. + Scales the 3D render buffer based on the viewport size uses an image filter specified in [member rendering/scaling_3d/mode] to scale the output image to the full viewport size. Values lower than [code]1.0[/code] can be used to speed up 3D rendering at the cost of quality (undersampling). Values greater than [code]1.0[/code] are only valid for bilinear mode and can be used to improve 3D rendering quality at a high performance cost (supersampling). See also [member rendering/anti_aliasing/quality/msaa_3d] for multi-sample antialiasing, which is significantly cheaper but only smooths the edges of polygons. </member> <member name="rendering/shader_compiler/shader_cache/compress" type="bool" setter="" getter="" default="true"> </member> @@ -1898,50 +2049,6 @@ <member name="rendering/shading/overrides/force_vertex_shading.mobile" type="bool" setter="" getter="" default="true"> Lower-end override for [member rendering/shading/overrides/force_vertex_shading] on mobile devices, due to performance concerns or driver support. </member> - <member name="rendering/shadows/directional_shadow/16_bits" type="bool" setter="" getter="" default="true"> - </member> - <member name="rendering/shadows/directional_shadow/size" type="int" setter="" getter="" default="4096"> - The directional shadow's size in pixels. Higher values will result in sharper shadows, at the cost of performance. The value will be rounded up to the nearest power of 2. - </member> - <member name="rendering/shadows/directional_shadow/size.mobile" type="int" setter="" getter="" default="2048"> - Lower-end override for [member rendering/shadows/directional_shadow/size] on mobile devices, due to performance concerns or driver support. - </member> - <member name="rendering/shadows/directional_shadow/soft_shadow_filter_quality" type="int" setter="" getter="" default="2"> - Quality setting for shadows cast by [DirectionalLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy. - [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance]. - [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply [i]constant[/i] shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows. - </member> - <member name="rendering/shadows/directional_shadow/soft_shadow_filter_quality.mobile" type="int" setter="" getter="" default="0"> - Lower-end override for [member rendering/shadows/directional_shadow/soft_shadow_filter_quality] on mobile devices, due to performance concerns or driver support. - </member> - <member name="rendering/shadows/positional_shadow/atlas_16_bits" type="bool" setter="" getter="" default="true"> - </member> - <member name="rendering/shadows/positional_shadow/atlas_quadrant_0_subdiv" type="int" setter="" getter="" default="2"> - Subdivision quadrant size for shadow mapping. See shadow mapping documentation. - </member> - <member name="rendering/shadows/positional_shadow/atlas_quadrant_1_subdiv" type="int" setter="" getter="" default="2"> - Subdivision quadrant size for shadow mapping. See shadow mapping documentation. - </member> - <member name="rendering/shadows/positional_shadow/atlas_quadrant_2_subdiv" type="int" setter="" getter="" default="3"> - Subdivision quadrant size for shadow mapping. See shadow mapping documentation. - </member> - <member name="rendering/shadows/positional_shadow/atlas_quadrant_3_subdiv" type="int" setter="" getter="" default="4"> - Subdivision quadrant size for shadow mapping. See shadow mapping documentation. - </member> - <member name="rendering/shadows/positional_shadow/atlas_size" type="int" setter="" getter="" default="4096"> - Size for shadow atlas (used for OmniLights and SpotLights). See documentation. - </member> - <member name="rendering/shadows/positional_shadow/atlas_size.mobile" type="int" setter="" getter="" default="2048"> - Lower-end override for [member rendering/shadows/positional_shadow/atlas_size] on mobile devices, due to performance concerns or driver support. - </member> - <member name="rendering/shadows/positional_shadow/soft_shadow_filter_quality" type="int" setter="" getter="" default="2"> - Quality setting for shadows cast by [OmniLight3D]s and [SpotLight3D]s. Higher quality settings use more samples when reading from shadow maps and are thus slower. Low quality settings may result in shadows looking grainy. - [b]Note:[/b] The Soft Very Low setting will automatically multiply [i]constant[/i] shadow blur by 0.75x to reduce the amount of noise visible. This automatic blur change only affects the constant blur factor defined in [member Light3D.shadow_blur], not the variable blur performed by [DirectionalLight3D]s' [member Light3D.light_angular_distance]. - [b]Note:[/b] The Soft High and Soft Ultra settings will automatically multiply shadow blur by 1.5× and 2× respectively to make better use of the increased sample count. This increased blur also improves stability of dynamic object shadows. - </member> - <member name="rendering/shadows/positional_shadow/soft_shadow_filter_quality.mobile" type="int" setter="" getter="" default="0"> - Lower-end override for [member rendering/shadows/positional_shadow/soft_shadow_filter_quality] on mobile devices, due to performance concerns or driver support. - </member> <member name="rendering/textures/decals/filter" type="int" setter="" getter="" default="3"> The filtering quality to use for [Decal] nodes. When using one of the anisotropic filtering modes, the anisotropic filtering level is controlled by [member rendering/textures/default_filters/anisotropic_filtering_level]. </member> @@ -1992,18 +2099,6 @@ <member name="rendering/vrs/texture" type="String" setter="" getter="" default=""""> If [member rendering/vrs/mode] is set to texture, this is the path to default texture loaded as the VRS image. </member> - <member name="rendering/vulkan/descriptor_pools/max_descriptors_per_pool" type="int" setter="" getter="" default="64"> - </member> - <member name="rendering/vulkan/rendering/back_end" type="int" setter="" getter="" default="0"> - </member> - <member name="rendering/vulkan/rendering/back_end.mobile" type="int" setter="" getter="" default="1"> - </member> - <member name="rendering/vulkan/staging_buffer/block_size_kb" type="int" setter="" getter="" default="256"> - </member> - <member name="rendering/vulkan/staging_buffer/max_size_mb" type="int" setter="" getter="" default="128"> - </member> - <member name="rendering/vulkan/staging_buffer/texture_upload_region_size_px" type="int" setter="" getter="" default="64"> - </member> <member name="threading/worker_pool/low_priority_thread_ratio" type="float" setter="" getter="" default="0.3"> </member> <member name="threading/worker_pool/max_threads" type="int" setter="" getter="" default="-1"> diff --git a/doc/classes/QuadMesh.xml b/doc/classes/QuadMesh.xml new file mode 100644 index 0000000000..b869774601 --- /dev/null +++ b/doc/classes/QuadMesh.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="QuadMesh" inherits="PlaneMesh" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Class representing a square mesh facing the camera. + </brief_description> + <description> + Class representing a square [PrimitiveMesh]. This flat mesh does not have a thickness. By default, this mesh is aligned on the X and Y axes; this rotation is more suited for use with billboarded materials. A [QuadMesh] is equivalent to a [PlaneMesh] except its default [member PlaneMesh.orientation] is [constant PlaneMesh.FACE_Z]. + </description> + <tutorials> + <link title="GUI in 3D Demo">https://godotengine.org/asset-library/asset/127</link> + <link title="2D in 3D Demo">https://godotengine.org/asset-library/asset/129</link> + </tutorials> + <members> + <member name="orientation" type="int" setter="set_orientation" getter="get_orientation" overrides="PlaneMesh" enum="PlaneMesh.Orientation" default="2" /> + <member name="size" type="Vector2" setter="set_size" getter="get_size" overrides="PlaneMesh" default="Vector2(1, 1)" /> + </members> +</class> diff --git a/doc/classes/Quaternion.xml b/doc/classes/Quaternion.xml index a521af5709..f21ebf57e2 100644 --- a/doc/classes/Quaternion.xml +++ b/doc/classes/Quaternion.xml @@ -71,7 +71,7 @@ <param index="0" name="to" type="Quaternion" /> <description> Returns the angle between this quaternion and [param to]. This is the magnitude of the angle you would need to rotate by to get from one to the other. - [b]Note:[/b] This method has an abnormally high number of floating-point errors, so methods such as [code]is_zero_approx[/code] will not work reliably. + [b]Note:[/b] The magnitude of the floating-point error for this method is abnormally high, so methods such as [code]is_zero_approx[/code] will not work reliably. </description> </method> <method name="dot" qualifiers="const"> diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml index 7132f4f0b5..ac012e9604 100644 --- a/doc/classes/Rect2.xml +++ b/doc/classes/Rect2.xml @@ -93,7 +93,7 @@ <method name="get_area" qualifiers="const"> <return type="float" /> <description> - Returns the area of the [Rect2]. See also [method has_no_area]. + Returns the area of the [Rect2]. See also [method has_area]. </description> </method> <method name="get_center" qualifiers="const"> @@ -127,11 +127,10 @@ Returns a copy of the [Rect2] grown by the specified [param amount] on the specified [enum Side]. </description> </method> - <method name="has_no_area" qualifiers="const"> + <method name="has_area" qualifiers="const"> <return type="bool" /> <description> - Returns [code]true[/code] if the [Rect2] is flat or empty, [code]false[/code] otherwise. See also [method get_area]. - [b]Note:[/b] If the [Rect2] has a negative size and is not flat or empty, [method has_no_area] will return [code]true[/code]. + Returns [code]true[/code] if the [Rect2] has area, and [code]false[/code] if the [Rect2] is linear, empty, or has a negative [member size]. See also [method get_area]. </description> </method> <method name="has_point" qualifiers="const"> diff --git a/doc/classes/Rect2i.xml b/doc/classes/Rect2i.xml index d5d68bde31..6d4c113609 100644 --- a/doc/classes/Rect2i.xml +++ b/doc/classes/Rect2i.xml @@ -90,7 +90,7 @@ <method name="get_area" qualifiers="const"> <return type="int" /> <description> - Returns the area of the [Rect2i]. See also [method has_no_area]. + Returns the area of the [Rect2i]. See also [method has_area]. </description> </method> <method name="get_center" qualifiers="const"> @@ -125,11 +125,10 @@ Returns a copy of the [Rect2i] grown by the specified [param amount] on the specified [enum Side]. </description> </method> - <method name="has_no_area" qualifiers="const"> + <method name="has_area" qualifiers="const"> <return type="bool" /> <description> - Returns [code]true[/code] if the [Rect2i] is flat or empty, [code]false[/code] otherwise. See also [method get_area]. - [b]Note:[/b] If the [Rect2i] has a negative size and is not flat or empty, [method has_no_area] will return [code]true[/code]. + Returns [code]true[/code] if the [Rect2i] has area, and [code]false[/code] if the [Rect2i] is linear, empty, or has a negative [member size]. See also [method get_area]. </description> </method> <method name="has_point" qualifiers="const"> diff --git a/doc/classes/RefCounted.xml b/doc/classes/RefCounted.xml index 3daf3534b0..223e572254 100644 --- a/doc/classes/RefCounted.xml +++ b/doc/classes/RefCounted.xml @@ -13,6 +13,12 @@ <link title="When and how to avoid using nodes for everything">$DOCS_URL/tutorials/best_practices/node_alternatives.html</link> </tutorials> <methods> + <method name="get_reference_count" qualifiers="const"> + <return type="int" /> + <description> + Returns the current reference count. + </description> + </method> <method name="init_ref"> <return type="bool" /> <description> diff --git a/doc/classes/RenderingDevice.xml b/doc/classes/RenderingDevice.xml index 718a161323..eb85a4adb4 100644 --- a/doc/classes/RenderingDevice.xml +++ b/doc/classes/RenderingDevice.xml @@ -631,7 +631,7 @@ </method> <method name="uniform_set_create"> <return type="RID" /> - <param index="0" name="uniforms" type="Array" /> + <param index="0" name="uniforms" type="RDUniform[]" /> <param index="1" name="shader" type="RID" /> <param index="2" name="shader_set" type="int" /> <description> diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml index 639db6b3b5..6aa9237385 100644 --- a/doc/classes/RenderingServer.xml +++ b/doc/classes/RenderingServer.xml @@ -21,34 +21,32 @@ <method name="bake_render_uv2"> <return type="Image[]" /> <param index="0" name="base" type="RID" /> - <param index="1" name="material_overrides" type="Array" /> + <param index="1" name="material_overrides" type="RID[]" /> <param index="2" name="image_size" type="Vector2i" /> <description> </description> </method> - <method name="camera_create"> + <method name="camera_attributes_create"> <return type="RID" /> <description> - Creates a camera and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]camera_*[/code] RenderingServer functions. + Creates a camera attributes object and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]camera_attributes_[/code] RenderingServer functions. Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method. </description> </method> - <method name="camera_effects_create"> - <return type="RID" /> - <description> - </description> - </method> - <method name="camera_effects_set_custom_exposure"> + <method name="camera_attributes_set_auto_exposure"> <return type="void" /> - <param index="0" name="camera_effects" type="RID" /> + <param index="0" name="camera_attributes" type="RID" /> <param index="1" name="enable" type="bool" /> - <param index="2" name="exposure" type="float" /> + <param index="2" name="min_sensitivity" type="float" /> + <param index="3" name="max_sensitivity" type="float" /> + <param index="4" name="speed" type="float" /> + <param index="5" name="scale" type="float" /> <description> </description> </method> - <method name="camera_effects_set_dof_blur"> + <method name="camera_attributes_set_dof_blur"> <return type="void" /> - <param index="0" name="camera_effects" type="RID" /> + <param index="0" name="camera_attributes" type="RID" /> <param index="1" name="far_enable" type="bool" /> <param index="2" name="far_distance" type="float" /> <param index="3" name="far_transition" type="float" /> @@ -59,20 +57,46 @@ <description> </description> </method> - <method name="camera_effects_set_dof_blur_bokeh_shape"> + <method name="camera_attributes_set_dof_blur_bokeh_shape"> <return type="void" /> <param index="0" name="shape" type="int" enum="RenderingServer.DOFBokehShape" /> <description> </description> </method> - <method name="camera_effects_set_dof_blur_quality"> + <method name="camera_attributes_set_dof_blur_quality"> <return type="void" /> <param index="0" name="quality" type="int" enum="RenderingServer.DOFBlurQuality" /> <param index="1" name="use_jitter" type="bool" /> <description> </description> </method> - <method name="camera_set_camera_effects"> + <method name="camera_attributes_set_exposure"> + <return type="void" /> + <param index="0" name="camera_attributes" type="RID" /> + <param index="1" name="multiplier" type="float" /> + <param index="2" name="normalization" type="float" /> + <description> + Sets the exposure values that will be used by the renderers. The normalization amount is used to bake a given Exposure Value (EV) into rendering calculations to reduce the dynamic range of the scene. + The normalization factor can be calculated from exposure value (EV100) as follows: + [codeblock] + func get_exposure_normalization(float ev100): + return 1.0 / (pow(2.0, ev100) * 1.2) + [/codeblock] + The exposure value can be calculated from aperture (in f-stops), shutter speed (in seconds), and sensitivity (in ISO) as follows: + [codeblock] + func get_exposure(float aperture, float shutter_speed, float sensitivity): + return log2((aperture * aperture) / shutterSpeed * (100.0 / sensitivity)) + [/codeblock] + </description> + </method> + <method name="camera_create"> + <return type="RID" /> + <description> + Creates a camera and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]camera_*[/code] RenderingServer functions. + Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method. + </description> + </method> + <method name="camera_set_camera_attributes"> <return type="void" /> <param index="0" name="camera" type="RID" /> <param index="1" name="effects" type="RID" /> @@ -976,7 +1000,8 @@ <method name="environment_set_bg_energy"> <return type="void" /> <param index="0" name="env" type="RID" /> - <param index="1" name="energy" type="float" /> + <param index="1" name="multiplier" type="float" /> + <param index="2" name="exposure_value" type="float" /> <description> Sets the intensity of the background color. </description> @@ -1000,6 +1025,7 @@ <param index="6" name="height" type="float" /> <param index="7" name="height_density" type="float" /> <param index="8" name="aerial_perspective" type="float" /> + <param index="9" name="sky_affect" type="float" /> <description> </description> </method> @@ -1143,11 +1169,6 @@ <param index="1" name="tone_mapper" type="int" enum="RenderingServer.EnvironmentToneMapper" /> <param index="2" name="exposure" type="float" /> <param index="3" name="white" type="float" /> - <param index="4" name="auto_exposure" type="bool" /> - <param index="5" name="min_luminance" type="float" /> - <param index="6" name="max_luminance" type="float" /> - <param index="7" name="auto_exp_speed" type="float" /> - <param index="8" name="auto_exp_grey" type="float" /> <description> Sets the variables to be used with the "tonemap" post-process effect. See [Environment] for more details. </description> @@ -1167,6 +1188,7 @@ <param index="10" name="temporal_reprojection" type="bool" /> <param index="11" name="temporal_reprojection_amount" type="float" /> <param index="12" name="ambient_inject" type="float" /> + <param index="13" name="sky_affect" type="float" /> <description> </description> </method> @@ -1250,6 +1272,13 @@ <description> </description> </method> + <method name="get_shader_parameter_list" qualifiers="const"> + <return type="Dictionary[]" /> + <param index="0" name="shader" type="RID" /> + <description> + Returns the parameters of a shader. + </description> + </method> <method name="get_test_cube"> <return type="RID" /> <description> @@ -1303,45 +1332,45 @@ If [param half_resolution] is [code]true[/code], renders [VoxelGI] and SDFGI ([member Environment.sdfgi_enabled]) buffers at halved resolution (e.g. 960×540 when the viewport size is 1920×1080). This improves performance significantly when VoxelGI or SDFGI is enabled, at the cost of artifacts that may be visible on polygon edges. The loss in quality becomes less noticeable as the viewport resolution increases. [LightmapGI] rendering is not affected by this setting. See also [member ProjectSettings.rendering/global_illumination/gi/use_half_resolution]. </description> </method> - <method name="global_shader_uniform_add"> + <method name="global_shader_parameter_add"> <return type="void" /> <param index="0" name="name" type="StringName" /> - <param index="1" name="type" type="int" enum="RenderingServer.GlobalShaderUniformType" /> + <param index="1" name="type" type="int" enum="RenderingServer.GlobalShaderParameterType" /> <param index="2" name="default_value" type="Variant" /> <description> </description> </method> - <method name="global_shader_uniform_get" qualifiers="const"> + <method name="global_shader_parameter_get" qualifiers="const"> <return type="Variant" /> <param index="0" name="name" type="StringName" /> <description> </description> </method> - <method name="global_shader_uniform_get_list" qualifiers="const"> + <method name="global_shader_parameter_get_list" qualifiers="const"> <return type="PackedStringArray" /> <description> </description> </method> - <method name="global_shader_uniform_get_type" qualifiers="const"> - <return type="int" enum="RenderingServer.GlobalShaderUniformType" /> + <method name="global_shader_parameter_get_type" qualifiers="const"> + <return type="int" enum="RenderingServer.GlobalShaderParameterType" /> <param index="0" name="name" type="StringName" /> <description> </description> </method> - <method name="global_shader_uniform_remove"> + <method name="global_shader_parameter_remove"> <return type="void" /> <param index="0" name="name" type="StringName" /> <description> </description> </method> - <method name="global_shader_uniform_set"> + <method name="global_shader_parameter_set"> <return type="void" /> <param index="0" name="name" type="StringName" /> <param index="1" name="value" type="Variant" /> <description> </description> </method> - <method name="global_shader_uniform_set_override"> + <method name="global_shader_parameter_set_override"> <return type="void" /> <param index="0" name="name" type="StringName" /> <param index="1" name="value" type="Variant" /> @@ -1401,21 +1430,21 @@ Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method. </description> </method> - <method name="instance_geometry_get_shader_uniform" qualifiers="const"> + <method name="instance_geometry_get_shader_parameter" qualifiers="const"> <return type="Variant" /> <param index="0" name="instance" type="RID" /> <param index="1" name="parameter" type="StringName" /> <description> </description> </method> - <method name="instance_geometry_get_shader_uniform_default_value" qualifiers="const"> + <method name="instance_geometry_get_shader_parameter_default_value" qualifiers="const"> <return type="Variant" /> <param index="0" name="instance" type="RID" /> <param index="1" name="parameter" type="StringName" /> <description> </description> </method> - <method name="instance_geometry_get_shader_uniform_list" qualifiers="const"> + <method name="instance_geometry_get_shader_parameter_list" qualifiers="const"> <return type="Dictionary[]" /> <param index="0" name="instance" type="RID" /> <description> @@ -1470,7 +1499,7 @@ Sets a material that will override the material for all surfaces on the mesh associated with this instance. Equivalent to [member GeometryInstance3D.material_override]. </description> </method> - <method name="instance_geometry_set_shader_uniform"> + <method name="instance_geometry_set_shader_parameter"> <return type="void" /> <param index="0" name="instance" type="RID" /> <param index="1" name="parameter" type="StringName" /> @@ -1601,7 +1630,7 @@ </method> <method name="instances_cull_convex" qualifiers="const"> <return type="PackedInt64Array" /> - <param index="0" name="convex" type="Array" /> + <param index="0" name="convex" type="Plane[]" /> <param index="1" name="scenario" type="RID" /> <description> Returns an array of object IDs intersecting with the provided convex shape. Only visual 3D nodes are considered, such as [MeshInstance3D] or [DirectionalLight3D]. Use [method @GlobalScope.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World3D] you want to query. This forces an update for all resources queued to update. @@ -1767,6 +1796,14 @@ <description> </description> </method> + <method name="lightmap_set_baked_exposure_normalization"> + <return type="void" /> + <param index="0" name="lightmap" type="RID" /> + <param index="1" name="baked_exposure" type="float" /> + <description> + Used to inform the renderer what exposure normalization value was used while baking the lightmap. This value will be used and modulated at run time to ensure that the lightmap maintains a consistent level of exposure even if the scene-wide exposure normalization is changed at run time. For more information see [method camera_attributes_set_exposure]. + </description> + </method> <method name="lightmap_set_probe_bounds"> <return type="void" /> <param index="0" name="lightmap" type="RID" /> @@ -2665,7 +2702,7 @@ The scenario is the 3D world that all the visual instances exist in. </description> </method> - <method name="scenario_set_camera_effects"> + <method name="scenario_set_camera_attributes"> <return type="void" /> <param index="0" name="scenario" type="RID" /> <param index="1" name="effects" type="RID" /> @@ -2734,28 +2771,21 @@ Returns a shader's code. </description> </method> - <method name="shader_get_default_texture_param" qualifiers="const"> + <method name="shader_get_default_texture_parameter" qualifiers="const"> <return type="RID" /> <param index="0" name="shader" type="RID" /> - <param index="1" name="param" type="StringName" /> + <param index="1" name="name" type="StringName" /> <param index="2" name="index" type="int" default="0" /> <description> Returns a default texture from a shader searched by name. [b]Note:[/b] If the sampler array is used use [param index] to access the specified texture. </description> </method> - <method name="shader_get_param_default" qualifiers="const"> + <method name="shader_get_parameter_default" qualifiers="const"> <return type="Variant" /> <param index="0" name="shader" type="RID" /> - <param index="1" name="param" type="StringName" /> - <description> - </description> - </method> - <method name="shader_get_shader_uniform_list" qualifiers="const"> - <return type="Dictionary[]" /> - <param index="0" name="shader" type="RID" /> + <param index="1" name="name" type="StringName" /> <description> - Returns the parameters of a shader. </description> </method> <method name="shader_set_code"> @@ -2765,10 +2795,10 @@ <description> </description> </method> - <method name="shader_set_default_texture_param"> + <method name="shader_set_default_texture_parameter"> <return type="void" /> <param index="0" name="shader" type="RID" /> - <param index="1" name="param" type="StringName" /> + <param index="1" name="name" type="StringName" /> <param index="2" name="texture" type="RID" /> <param index="3" name="index" type="int" default="0" /> <description> @@ -3208,12 +3238,20 @@ <description> </description> </method> - <method name="viewport_set_msaa"> + <method name="viewport_set_msaa_2d"> + <return type="void" /> + <param index="0" name="viewport" type="RID" /> + <param index="1" name="msaa" type="int" enum="RenderingServer.ViewportMSAA" /> + <description> + Sets the multisample anti-aliasing mode for 2D/Canvas. See [enum ViewportMSAA] for options. + </description> + </method> + <method name="viewport_set_msaa_3d"> <return type="void" /> <param index="0" name="viewport" type="RID" /> <param index="1" name="msaa" type="int" enum="RenderingServer.ViewportMSAA" /> <description> - Sets the anti-aliasing mode. See [enum ViewportMSAA] for options. + Sets the multisample anti-aliasing mode for 3D. See [enum ViewportMSAA] for options. </description> </method> <method name="viewport_set_occlusion_culling_build_quality"> @@ -3472,6 +3510,14 @@ <description> </description> </method> + <method name="voxel_gi_set_baked_exposure_normalization"> + <return type="void" /> + <param index="0" name="voxel_gi" type="RID" /> + <param index="1" name="baked_exposure" type="float" /> + <description> + Used to inform the renderer what exposure normalization value was used while baking the voxel gi. This value will be used and modulated at run time to ensure that the voxel gi maintains a consistent level of exposure even if the scene-wide exposure normalization is changed at run time. For more information see [method camera_attributes_set_exposure]. + </description> + </method> <method name="voxel_gi_set_bias"> <return type="void" /> <param index="0" name="voxel_gi" type="RID" /> @@ -3784,64 +3830,65 @@ Is a spot light. </constant> <constant name="LIGHT_PARAM_ENERGY" value="0" enum="LightParam"> - The light's energy. + The light's energy multiplier. </constant> <constant name="LIGHT_PARAM_INDIRECT_ENERGY" value="1" enum="LightParam"> The light's indirect energy multiplier (final indirect energy is [constant LIGHT_PARAM_ENERGY] * [constant LIGHT_PARAM_INDIRECT_ENERGY]). </constant> - <constant name="LIGHT_PARAM_SPECULAR" value="2" enum="LightParam"> + <constant name="LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY" value="2" enum="LightParam"> + The light's volumetric fog energy multiplier (final volumetric fog energy is [constant LIGHT_PARAM_ENERGY] * [constant LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY]). + </constant> + <constant name="LIGHT_PARAM_SPECULAR" value="3" enum="LightParam"> The light's influence on specularity. </constant> - <constant name="LIGHT_PARAM_RANGE" value="3" enum="LightParam"> + <constant name="LIGHT_PARAM_RANGE" value="4" enum="LightParam"> The light's range. </constant> - <constant name="LIGHT_PARAM_SIZE" value="4" enum="LightParam"> + <constant name="LIGHT_PARAM_SIZE" value="5" enum="LightParam"> The size of the light when using spot light or omni light. The angular size of the light when using directional light. </constant> - <constant name="LIGHT_PARAM_ATTENUATION" value="5" enum="LightParam"> + <constant name="LIGHT_PARAM_ATTENUATION" value="6" enum="LightParam"> The light's attenuation. </constant> - <constant name="LIGHT_PARAM_SPOT_ANGLE" value="6" enum="LightParam"> + <constant name="LIGHT_PARAM_SPOT_ANGLE" value="7" enum="LightParam"> The spotlight's angle. </constant> - <constant name="LIGHT_PARAM_SPOT_ATTENUATION" value="7" enum="LightParam"> + <constant name="LIGHT_PARAM_SPOT_ATTENUATION" value="8" enum="LightParam"> The spotlight's attenuation. </constant> - <constant name="LIGHT_PARAM_SHADOW_MAX_DISTANCE" value="8" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_MAX_DISTANCE" value="9" enum="LightParam"> Max distance that shadows will be rendered. </constant> - <constant name="LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET" value="9" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET" value="10" enum="LightParam"> Proportion of shadow atlas occupied by the first split. </constant> - <constant name="LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET" value="10" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET" value="11" enum="LightParam"> Proportion of shadow atlas occupied by the second split. </constant> - <constant name="LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET" value="11" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET" value="12" enum="LightParam"> Proportion of shadow atlas occupied by the third split. The fourth split occupies the rest. </constant> - <constant name="LIGHT_PARAM_SHADOW_FADE_START" value="12" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_FADE_START" value="13" enum="LightParam"> Proportion of shadow max distance where the shadow will start to fade out. </constant> - <constant name="LIGHT_PARAM_SHADOW_NORMAL_BIAS" value="13" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_NORMAL_BIAS" value="14" enum="LightParam"> Normal bias used to offset shadow lookup by object normal. Can be used to fix self-shadowing artifacts. </constant> - <constant name="LIGHT_PARAM_SHADOW_BIAS" value="14" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_BIAS" value="15" enum="LightParam"> Bias the shadow lookup to fix self-shadowing artifacts. </constant> - <constant name="LIGHT_PARAM_SHADOW_PANCAKE_SIZE" value="15" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_PANCAKE_SIZE" value="16" enum="LightParam"> Sets the size of the directional shadow pancake. The pancake offsets the start of the shadow's camera frustum to provide a higher effective depth resolution for the shadow. However, a high pancake size can cause artifacts in the shadows of large objects that are close to the edge of the frustum. Reducing the pancake size can help. Setting the size to [code]0[/code] turns off the pancaking effect. </constant> - <constant name="LIGHT_PARAM_SHADOW_OPACITY" value="16" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_OPACITY" value="17" enum="LightParam"> The light's shadow opacity. Values lower than [code]1.0[/code] make the light appear through shadows. This can be used to fake global illumination at a low performance cost. </constant> - <constant name="LIGHT_PARAM_SHADOW_BLUR" value="17" enum="LightParam"> + <constant name="LIGHT_PARAM_SHADOW_BLUR" value="18" 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_SHADOW_VOLUMETRIC_FOG_FADE" value="18" enum="LightParam"> - </constant> <constant name="LIGHT_PARAM_TRANSMITTANCE_BIAS" value="19" enum="LightParam"> </constant> - <constant name="LIGHT_PARAM_MAX" value="20" enum="LightParam"> + <constant name="LIGHT_PARAM_MAX" value="21" enum="LightParam"> Represents the size of the [enum LightParam] enum. </constant> <constant name="LIGHT_BAKE_DISABLED" value="0" enum="LightBakeMode"> @@ -4567,63 +4614,63 @@ <constant name="CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE" value="2" enum="CanvasOccluderPolygonCullMode"> Culling of the canvas occluder is counterclockwise. </constant> - <constant name="GLOBAL_VAR_TYPE_BOOL" value="0" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_BOOL" value="0" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_BVEC2" value="1" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_BVEC2" value="1" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_BVEC3" value="2" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_BVEC3" value="2" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_BVEC4" value="3" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_BVEC4" value="3" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_INT" value="4" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_INT" value="4" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_IVEC2" value="5" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_IVEC2" value="5" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_IVEC3" value="6" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_IVEC3" value="6" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_IVEC4" value="7" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_IVEC4" value="7" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_RECT2I" value="8" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_RECT2I" value="8" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_UINT" value="9" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_UINT" value="9" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_UVEC2" value="10" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_UVEC2" value="10" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_UVEC3" value="11" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_UVEC3" value="11" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_UVEC4" value="12" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_UVEC4" value="12" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_FLOAT" value="13" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_FLOAT" value="13" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_VEC2" value="14" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_VEC2" value="14" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_VEC3" value="15" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_VEC3" value="15" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_VEC4" value="16" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_VEC4" value="16" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_COLOR" value="17" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_COLOR" value="17" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_RECT2" value="18" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_RECT2" value="18" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_MAT2" value="19" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_MAT2" value="19" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_MAT3" value="20" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_MAT3" value="20" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_MAT4" value="21" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_MAT4" value="21" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_TRANSFORM_2D" value="22" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_TRANSFORM_2D" value="22" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_TRANSFORM" value="23" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_TRANSFORM" value="23" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_SAMPLER2D" value="24" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_SAMPLER2D" value="24" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_SAMPLER2DARRAY" value="25" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_SAMPLER2DARRAY" value="25" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_SAMPLER3D" value="26" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_SAMPLER3D" value="26" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_SAMPLERCUBE" value="27" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_SAMPLERCUBE" value="27" enum="GlobalShaderParameterType"> </constant> - <constant name="GLOBAL_VAR_TYPE_MAX" value="28" enum="GlobalShaderUniformType"> + <constant name="GLOBAL_VAR_TYPE_MAX" value="28" enum="GlobalShaderParameterType"> </constant> <constant name="RENDERING_INFO_TOTAL_OBJECTS_IN_FRAME" value="0" enum="RenderingInfo"> </constant> diff --git a/doc/classes/ResourceSaver.xml b/doc/classes/ResourceSaver.xml index b0c9056cbc..8cd701e0d8 100644 --- a/doc/classes/ResourceSaver.xml +++ b/doc/classes/ResourceSaver.xml @@ -62,10 +62,10 @@ Do not save editor-specific metadata (identified by their [code]__editor[/code] prefix). </constant> <constant name="FLAG_SAVE_BIG_ENDIAN" value="16" enum="SaverFlags" is_bitfield="true"> - Save as big endian (see [member File.big_endian]). + Save as big endian (see [member FileAccess.big_endian]). </constant> <constant name="FLAG_COMPRESS" value="32" enum="SaverFlags" is_bitfield="true"> - Compress the resource on save using [constant File.COMPRESSION_ZSTD]. Only available for binary resource types. + Compress the resource on save using [constant FileAccess.COMPRESSION_ZSTD]. Only available for binary resource types. </constant> <constant name="FLAG_REPLACE_SUBRESOURCE_PATHS" value="64" enum="SaverFlags" is_bitfield="true"> Take over the paths of the saved subresources (see [method Resource.take_over_path]). diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml index 417703ff01..070b98f21d 100644 --- a/doc/classes/SceneTree.xml +++ b/doc/classes/SceneTree.xml @@ -36,30 +36,35 @@ [b]Note:[/b] Group call flags are used to control the method calling behavior. By default, methods will be called immediately in a way similar to [method call_group]. However, if the [constant GROUP_CALL_DEFERRED] flag is present in the [param flags] argument, methods will be called with a one-frame delay in a way similar to [method Object.set_deferred]. </description> </method> - <method name="change_scene"> + <method name="change_scene_to_file"> <return type="int" enum="Error" /> <param index="0" name="path" type="String" /> <description> Changes the running scene to the one at the given [param path], after loading it into a [PackedScene] and creating a new instance. Returns [constant OK] on success, [constant ERR_CANT_OPEN] if the [param path] cannot be loaded into a [PackedScene], or [constant ERR_CANT_CREATE] if that scene cannot be instantiated. - [b]Note:[/b] The scene change is deferred, which means that the new scene node is added on the next idle frame. You won't be able to access it immediately after the [method change_scene] call. + [b]Note:[/b] The scene change is deferred, which means that the new scene node is added on the next idle frame. You won't be able to access it immediately after the [method change_scene_to_file] call. </description> </method> - <method name="change_scene_to"> + <method name="change_scene_to_packed"> <return type="int" enum="Error" /> <param index="0" name="packed_scene" type="PackedScene" /> <description> Changes the running scene to a new instance of the given [PackedScene]. Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene cannot be instantiated. - [b]Note:[/b] The scene change is deferred, which means that the new scene node is added on the next idle frame. You won't be able to access it immediately after the [method change_scene_to] call. + [b]Note:[/b] The scene change is deferred, which means that the new scene node is added on the next idle frame. You won't be able to access it immediately after the [method change_scene_to_packed] call. </description> </method> <method name="create_timer"> <return type="SceneTreeTimer" /> <param index="0" name="time_sec" type="float" /> <param index="1" name="process_always" type="bool" default="true" /> + <param index="2" name="process_in_physics" type="bool" default="false" /> + <param index="3" name="ignore_time_scale" type="bool" default="false" /> <description> - Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after the given time in seconds elapsed in this [SceneTree]. If [param process_always] is set to [code]false[/code], pausing the [SceneTree] will also pause the timer. + Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after the given time in seconds elapsed in this [SceneTree]. + If [code]process_always[/code] is set to [code]false[/code], pausing the [SceneTree] will also pause the timer. + If [code]process_in_physics[/code] is set to [code]true[/code], will update the [SceneTreeTimer] during the physics frame instead of the process frame (fixed framerate processing). + If [code]ignore_time_scale[/code] is set to [code]true[/code], will ignore [member Engine.time_scale] and update the [SceneTreeTimer] with the actual frame delta. Commonly used to create a one-shot delay timer as in the following example: [codeblocks] [gdscript] diff --git a/doc/classes/ScriptEditorBase.xml b/doc/classes/ScriptEditorBase.xml index c365e0971b..a3fcf53228 100644 --- a/doc/classes/ScriptEditorBase.xml +++ b/doc/classes/ScriptEditorBase.xml @@ -19,14 +19,14 @@ <method name="get_base_editor" qualifiers="const"> <return type="Control" /> <description> - Returns the underlying [Control] used for editing scripts. This can be either [CodeEdit] (for text scripts) or [GraphEdit] (for visual scripts). + Returns the underlying [Control] used for editing scripts. For text scripts, this is a [CodeEdit]. </description> </method> </methods> <signals> <signal name="edited_script_changed"> <description> - Emitted after script validation. For visual scripts on modification. + Emitted after script validation. </description> </signal> <signal name="go_to_help"> @@ -35,15 +35,22 @@ Emitted when the user requests a specific documentation page. </description> </signal> + <signal name="go_to_method"> + <param index="0" name="script" type="Object" /> + <param index="1" name="method" type="String" /> + <description> + Emitted when the user requests to view a specific method of a script, similar to [signal request_open_script_at_line]. + </description> + </signal> <signal name="name_changed"> <description> - Emitted after script validation or when the edited resource has changed. Not used by visual scripts. + Emitted after script validation or when the edited resource has changed. </description> </signal> <signal name="replace_in_files_requested"> <param index="0" name="text" type="String" /> <description> - Emitted when the user request to find and replace text in the file system. Not used by visual scripts. + Emitted when the user request to find and replace text in the file system. </description> </signal> <signal name="request_help"> @@ -56,7 +63,7 @@ <param index="0" name="script" type="Object" /> <param index="1" name="line" type="int" /> <description> - Emitted when the user requests a script. + Emitted when the user requests to view a specific line of a script, similar to [signal go_to_method]. </description> </signal> <signal name="request_save_history"> @@ -67,7 +74,7 @@ <signal name="search_in_files_requested"> <param index="0" name="text" type="String" /> <description> - Emitted when the user request to search text in the file system. Not used by visual scripts. + Emitted when the user request to search text in the file system. </description> </signal> </signals> diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml index de586fc3d0..f5018c25ff 100644 --- a/doc/classes/ScrollContainer.xml +++ b/doc/classes/ScrollContainer.xml @@ -87,7 +87,7 @@ </constant> </constants> <theme_items> - <theme_item name="bg" data_type="style" type="StyleBox"> + <theme_item name="panel" data_type="style" type="StyleBox"> The background [StyleBox] of the [ScrollContainer]. </theme_item> </theme_items> diff --git a/doc/classes/Shader.xml b/doc/classes/Shader.xml index b7e6d80ccb..75f835260a 100644 --- a/doc/classes/Shader.xml +++ b/doc/classes/Shader.xml @@ -10,13 +10,13 @@ <link title="Shaders documentation index">$DOCS_URL/tutorials/shaders/index.html</link> </tutorials> <methods> - <method name="get_default_texture_param" qualifiers="const"> + <method name="get_default_texture_parameter" qualifiers="const"> <return type="Texture2D" /> - <param index="0" name="param" type="StringName" /> + <param index="0" name="name" type="StringName" /> <param index="1" name="index" type="int" default="0" /> <description> Returns the texture that is set as default for the specified parameter. - [b]Note:[/b] [param param] must match the name of the uniform in the code exactly. + [b]Note:[/b] [param name] must match the name of the uniform in the code exactly. [b]Note:[/b] If the sampler array is used use [param index] to access the specified texture. </description> </method> @@ -26,7 +26,7 @@ Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], [constant MODE_SPATIAL] or [constant MODE_PARTICLES]. </description> </method> - <method name="has_uniform" qualifiers="const"> + <method name="has_parameter" qualifiers="const"> <return type="bool" /> <param index="0" name="name" type="StringName" /> <description> @@ -34,14 +34,14 @@ [b]Note:[/b] [param name] must match the name of the uniform in the code exactly. </description> </method> - <method name="set_default_texture_param"> + <method name="set_default_texture_parameter"> <return type="void" /> - <param index="0" name="param" type="StringName" /> + <param index="0" name="name" type="StringName" /> <param index="1" name="texture" type="Texture2D" /> <param index="2" name="index" type="int" default="0" /> <description> Sets the default texture to be used with a texture uniform. The default is used if a texture is not set in the [ShaderMaterial]. - [b]Note:[/b] [param param] must match the name of the uniform in the code exactly. + [b]Note:[/b] [param name] must match the name of the uniform in the code exactly. [b]Note:[/b] If the sampler array is used use [param index] to access the specified texture. </description> </method> diff --git a/doc/classes/ShaderMaterial.xml b/doc/classes/ShaderMaterial.xml index 8d4df87b39..1af7ac4fc5 100644 --- a/doc/classes/ShaderMaterial.xml +++ b/doc/classes/ShaderMaterial.xml @@ -10,14 +10,14 @@ <link title="Shaders documentation index">$DOCS_URL/tutorials/shaders/index.html</link> </tutorials> <methods> - <method name="get_shader_uniform" qualifiers="const"> + <method name="get_shader_parameter" qualifiers="const"> <return type="Variant" /> <param index="0" name="param" type="StringName" /> <description> Returns the current value set for this material of a uniform in the shader. </description> </method> - <method name="set_shader_uniform"> + <method name="set_shader_parameter"> <return type="void" /> <param index="0" name="param" type="StringName" /> <param index="1" name="value" type="Variant" /> diff --git a/doc/classes/Skeleton3D.xml b/doc/classes/Skeleton3D.xml index 45ca330b87..3bd0e04b92 100644 --- a/doc/classes/Skeleton3D.xml +++ b/doc/classes/Skeleton3D.xml @@ -32,9 +32,10 @@ Removes the global pose override on all bones in the skeleton. </description> </method> - <method name="clear_bones_local_pose_override"> + <method name="clear_bones_local_pose_override" is_deprecated="true"> <return type="void" /> <description> + Deprecated. Local pose overrides will be removed. Removes the local pose override on all bones in the skeleton. </description> </method> @@ -43,7 +44,7 @@ <description> </description> </method> - <method name="execute_modifications"> + <method name="execute_modifications" is_deprecated="true"> <return type="void" /> <param index="0" name="delta" type="float" /> <param index="1" name="execution_mode" type="int" /> @@ -58,7 +59,7 @@ Returns the bone index that matches [param name] as its name. </description> </method> - <method name="force_update_all_bone_transforms"> + <method name="force_update_all_bone_transforms" is_deprecated="true"> <return type="void" /> <description> Force updates the bone transforms/poses for all bones in the skeleton. @@ -71,7 +72,7 @@ Force updates the bone transform for the bone at [param bone_idx] and all of its children. </description> </method> - <method name="get_bone_children"> + <method name="get_bone_children" qualifiers="const"> <return type="PackedInt32Array" /> <param index="0" name="bone_idx" type="int" /> <description> @@ -166,19 +167,19 @@ Returns the rest transform for a bone [param bone_idx]. </description> </method> - <method name="get_modification_stack"> + <method name="get_modification_stack" is_deprecated="true"> <return type="SkeletonModificationStack3D" /> <description> Returns the modification stack attached to this skeleton, if one exists. </description> </method> - <method name="get_parentless_bones"> + <method name="get_parentless_bones" qualifiers="const"> <return type="PackedInt32Array" /> <description> Returns an array with all of the bones that are parentless. Another way to look at this is that it returns the indexes of all the bones that are not dependent or modified by other bones in the Skeleton. </description> </method> - <method name="global_pose_to_local_pose"> + <method name="global_pose_to_local_pose" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="global_pose" type="Transform3D" /> @@ -187,15 +188,16 @@ This can be used to easily convert a global pose from [method get_bone_global_pose] to a global transform in [method set_bone_local_pose_override]. </description> </method> - <method name="global_pose_to_world_transform"> + <method name="global_pose_to_world_transform" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="global_pose" type="Transform3D" /> <description> + Deprecated. Use [Node3D] apis instead. Takes the passed-in global pose and converts it to a world transform. This can be used to easily convert a global pose from [method get_bone_global_pose] to a global transform usable with a node's transform, like [member Node3D.global_transform] for example. </description> </method> - <method name="global_pose_z_forward_to_bone_forward"> + <method name="global_pose_z_forward_to_bone_forward" is_deprecated="true"> <return type="Basis" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="basis" type="Basis" /> @@ -211,7 +213,7 @@ Returns whether the bone pose for the bone at [param bone_idx] is enabled. </description> </method> - <method name="local_pose_to_global_pose"> + <method name="local_pose_to_global_pose" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="local_pose" type="Transform3D" /> @@ -293,16 +295,17 @@ <description> Sets the global pose transform, [param pose], for the bone at [param bone_idx]. [param amount] is the interpolation strength that will be used when applying the pose, and [param persistent] determines if the applied pose will remain. - [b]Note:[/b] The pose transform needs to be a global pose! Use [method world_transform_to_global_pose] to convert a world transform, like one you can get from a [Node3D], to a global pose. + [b]Note:[/b] The pose transform needs to be a global pose! To convert a world transform from a [Node3D] to a global bone pose, multiply the [method Transform3D.affine_inverse] of the node's [member Node3D.global_transform] by the desired world transform </description> </method> - <method name="set_bone_local_pose_override"> + <method name="set_bone_local_pose_override" is_deprecated="true"> <return type="void" /> <param index="0" name="bone_idx" type="int" /> <param index="1" name="pose" type="Transform3D" /> <param index="2" name="amount" type="float" /> <param index="3" name="persistent" type="bool" default="false" /> <description> + Deprecated. Local pose overrides will be removed. Sets the local pose transform, [param pose], for the bone at [param bone_idx]. [param amount] is the interpolation strength that will be used when applying the pose, and [param persistent] determines if the applied pose will remain. [b]Note:[/b] The pose transform needs to be a local pose! Use [method global_pose_to_local_pose] to convert a global pose to a local pose. @@ -353,7 +356,7 @@ Sets the rest transform for bone [param bone_idx]. </description> </method> - <method name="set_modification_stack"> + <method name="set_modification_stack" is_deprecated="true"> <return type="void" /> <param index="0" name="modification_stack" type="SkeletonModificationStack3D" /> <description> @@ -367,10 +370,11 @@ Unparents the bone at [param bone_idx] and sets its rest position to that of its parent prior to being reset. </description> </method> - <method name="world_transform_to_global_pose"> + <method name="world_transform_to_global_pose" is_deprecated="true"> <return type="Transform3D" /> <param index="0" name="world_transform" type="Transform3D" /> <description> + Deprecated. Use [Node3D] apis instead. Takes the passed-in global transform and converts it to a global pose. This can be used to easily convert a global transform from [member Node3D.global_transform] to a global pose usable with [method set_bone_global_pose_override], for example. </description> diff --git a/doc/classes/SkeletonIK3D.xml b/doc/classes/SkeletonIK3D.xml index 788ba3e248..1d50a97954 100644 --- a/doc/classes/SkeletonIK3D.xml +++ b/doc/classes/SkeletonIK3D.xml @@ -1,8 +1,29 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonIK3D" inherits="Node" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonIK3D" inherits="Node" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + SkeletonIK3D is used to place the end bone of a [Skeleton3D] bone chain at a certain point in 3D by rotating all bones in the chain accordingly. </brief_description> <description> + SkeletonIK3D is used to place the end bone of a [Skeleton3D] bone chain at a certain point in 3D by rotating all bones in the chain accordingly. A typical scenario for IK in games is to place a characters feet on the ground or a characters hands on a currently hold object. SkeletonIK uses FabrikInverseKinematic internally to solve the bone chain and applies the results to the [Skeleton3D] [code]bones_global_pose_override[/code] property for all affected bones in the chain. If fully applied this overwrites any bone transform from [Animation]s or bone custom poses set by users. The applied amount can be controlled with the [code]interpolation[/code] property. + [codeblock] + # Apply IK effect automatically on every new frame (not the current) + skeleton_ik_node.start() + + # Apply IK effect only on the current frame + skeleton_ik_node.start(true) + + # Stop IK effect and reset bones_global_pose_override on Skeleton + skeleton_ik_node.stop() + + # Apply full IK effect + skeleton_ik_node.set_interpolation(1.0) + + # Apply half IK effect + skeleton_ik_node.set_interpolation(0.5) + + # Apply zero IK effect (a value at or below 0.01 also removes bones_global_pose_override on Skeleton) + skeleton_ik_node.set_interpolation(0.0) + [/codeblock] </description> <tutorials> <link title="3D Inverse Kinematics Demo">https://godotengine.org/asset-library/asset/523</link> @@ -11,45 +32,59 @@ <method name="get_parent_skeleton" qualifiers="const"> <return type="Skeleton3D" /> <description> + Returns the parent [Skeleton3D] Node that was present when SkeletonIK entered the [SceneTree]. Returns null if the parent node was not a [Skeleton3D] Node when SkeletonIK3D entered the [SceneTree]. </description> </method> <method name="is_running"> <return type="bool" /> <description> + Returns [code]true[/code] if SkeletonIK is applying IK effects on continues frames to the [Skeleton3D] bones. Returns [code]false[/code] if SkeletonIK is stopped or [method start] was used with the [code]one_time[/code] parameter set to [code]true[/code]. </description> </method> <method name="start"> <return type="void" /> <param index="0" name="one_time" type="bool" default="false" /> <description> + Starts applying IK effects on each frame to the [Skeleton3D] bones but will only take effect starting on the next frame. If [code]one_time[/code] is [code]true[/code], this will take effect immediately but also reset on the next frame. </description> </method> <method name="stop"> <return type="void" /> <description> + Stops applying IK effects on each frame to the [Skeleton3D] bones and also calls [method Skeleton3D.clear_bones_global_pose_override] to remove existing overrides on all bones. </description> </method> </methods> <members> <member name="interpolation" type="float" setter="set_interpolation" getter="get_interpolation" default="1.0"> + Interpolation value for how much the IK results are applied to the current skeleton bone chain. A value of [code]1.0[/code] will overwrite all skeleton bone transforms completely while a value of [code]0.0[/code] will visually disable the SkeletonIK. A value at or below [code]0.01[/code] also calls [method Skeleton3D.clear_bones_global_pose_override]. </member> <member name="magnet" type="Vector3" setter="set_magnet_position" getter="get_magnet_position" default="Vector3(0, 0, 0)"> + Secondary target position (first is [member target] property or [member target_node]) for the IK chain. Use magnet position (pole target) to control the bending of the IK chain. Only works if the bone chain has more than 2 bones. The middle chain bone position will be linearly interpolated with the magnet position. </member> <member name="max_iterations" type="int" setter="set_max_iterations" getter="get_max_iterations" default="10"> + Number of iteration loops used by the IK solver to produce more accurate (and elegant) bone chain results. </member> <member name="min_distance" type="float" setter="set_min_distance" getter="get_min_distance" default="0.01"> + The minimum distance between bone and goal target. If the distance is below this value, the IK solver stops further iterations. </member> <member name="override_tip_basis" type="bool" setter="set_override_tip_basis" getter="is_override_tip_basis" default="true"> + If [code]true[/code] overwrites the rotation of the tip bone with the rotation of the [member target] (or [member target_node] if defined). </member> <member name="root_bone" type="StringName" setter="set_root_bone" getter="get_root_bone" default="&"""> + The name of the current root bone, the first bone in the IK chain. </member> <member name="target" type="Transform3D" setter="set_target_transform" getter="get_target_transform" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)"> + First target of the IK chain where the tip bone is placed and, if [member override_tip_basis] is [code]true[/code], how the tip bone is rotated. If a [member target_node] path is available the nodes transform is used instead and this property is ignored. </member> <member name="target_node" type="NodePath" setter="set_target_node" getter="get_target_node" default="NodePath("")"> + Target node [NodePath] for the IK chain. If available, the node's current [Transform3D] is used instead of the [member target] property. </member> <member name="tip_bone" type="StringName" setter="set_tip_bone" getter="get_tip_bone" default="&"""> + The name of the current tip bone, the last bone in the IK chain placed at the [member target] transform (or [member target_node] if defined). </member> <member name="use_magnet" type="bool" setter="set_use_magnet" getter="is_using_magnet" default="false"> + If [code]true[/code], instructs the IK solver to consider the secondary magnet target (pole target) when calculating the bone chain. Use the magnet position (pole target) to control the bending of the IK chain. </member> </members> </class> diff --git a/doc/classes/SkeletonModification2D.xml b/doc/classes/SkeletonModification2D.xml index 46d32aef41..77aaf0213b 100644 --- a/doc/classes/SkeletonModification2D.xml +++ b/doc/classes/SkeletonModification2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2D" inherits="Resource" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that operates on [Bone2D] nodes in a [Skeleton2D]. </brief_description> diff --git a/doc/classes/SkeletonModification2DCCDIK.xml b/doc/classes/SkeletonModification2DCCDIK.xml index c8fee3f94d..0d80b1b914 100644 --- a/doc/classes/SkeletonModification2DCCDIK.xml +++ b/doc/classes/SkeletonModification2DCCDIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DCCDIK" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DCCDIK" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses CCDIK to manipulate a series of bones to reach a target in 2D. </brief_description> diff --git a/doc/classes/SkeletonModification2DFABRIK.xml b/doc/classes/SkeletonModification2DFABRIK.xml index ff3a65fe1a..8d1cd4b4d4 100644 --- a/doc/classes/SkeletonModification2DFABRIK.xml +++ b/doc/classes/SkeletonModification2DFABRIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DFABRIK" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DFABRIK" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses FABRIK to manipulate a series of [Bone2D] nodes to reach a target. </brief_description> diff --git a/doc/classes/SkeletonModification2DJiggle.xml b/doc/classes/SkeletonModification2DJiggle.xml index 7329b2d865..3321fffe1b 100644 --- a/doc/classes/SkeletonModification2DJiggle.xml +++ b/doc/classes/SkeletonModification2DJiggle.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DJiggle" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DJiggle" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that jiggles [Bone2D] nodes as they move towards a target. </brief_description> diff --git a/doc/classes/SkeletonModification2DLookAt.xml b/doc/classes/SkeletonModification2DLookAt.xml index 4747b06056..136fed37de 100644 --- a/doc/classes/SkeletonModification2DLookAt.xml +++ b/doc/classes/SkeletonModification2DLookAt.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DLookAt" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DLookAt" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that rotates a [Bone2D] node to look at a target. </brief_description> diff --git a/doc/classes/SkeletonModification2DPhysicalBones.xml b/doc/classes/SkeletonModification2DPhysicalBones.xml index d5f46b2ea0..209602e974 100644 --- a/doc/classes/SkeletonModification2DPhysicalBones.xml +++ b/doc/classes/SkeletonModification2DPhysicalBones.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DPhysicalBones" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DPhysicalBones" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that applies the transforms of [PhysicalBone2D] nodes to [Bone2D] nodes. </brief_description> <description> This modification takes the transforms of [PhysicalBone2D] nodes and applies them to [Bone2D] nodes. This allows the [Bone2D] nodes to react to physics thanks to the linked [PhysicalBone2D] nodes. + Experimental. Physical bones may be changed in the future to perform the position update of [Bone2D] on their own. </description> <tutorials> </tutorials> diff --git a/doc/classes/SkeletonModification2DStackHolder.xml b/doc/classes/SkeletonModification2DStackHolder.xml index 791dea2fb1..85df111c0d 100644 --- a/doc/classes/SkeletonModification2DStackHolder.xml +++ b/doc/classes/SkeletonModification2DStackHolder.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DStackHolder" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DStackHolder" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that holds and executes a [SkeletonModificationStack2D]. </brief_description> diff --git a/doc/classes/SkeletonModification2DTwoBoneIK.xml b/doc/classes/SkeletonModification2DTwoBoneIK.xml index edd5431a0c..c476d71d44 100644 --- a/doc/classes/SkeletonModification2DTwoBoneIK.xml +++ b/doc/classes/SkeletonModification2DTwoBoneIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification2DTwoBoneIK" inherits="SkeletonModification2D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification2DTwoBoneIK" inherits="SkeletonModification2D" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that rotates two bones using the law of cosigns to reach the target. </brief_description> diff --git a/doc/classes/SkeletonModification3D.xml b/doc/classes/SkeletonModification3D.xml index 8457179651..25431ea96f 100644 --- a/doc/classes/SkeletonModification3D.xml +++ b/doc/classes/SkeletonModification3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3D" inherits="Resource" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that operates on bones in a [Skeleton3D]. </brief_description> diff --git a/doc/classes/SkeletonModification3DCCDIK.xml b/doc/classes/SkeletonModification3DCCDIK.xml index dec0fbe99f..90b2e78449 100644 --- a/doc/classes/SkeletonModification3DCCDIK.xml +++ b/doc/classes/SkeletonModification3DCCDIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DCCDIK" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DCCDIK" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses CCDIK to manipulate a series of bones to reach a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DFABRIK.xml b/doc/classes/SkeletonModification3DFABRIK.xml index 325cc2a12e..a2bec2b559 100644 --- a/doc/classes/SkeletonModification3DFABRIK.xml +++ b/doc/classes/SkeletonModification3DFABRIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DFABRIK" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DFABRIK" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that uses FABRIK to manipulate a series of bones to reach a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DJiggle.xml b/doc/classes/SkeletonModification3DJiggle.xml index ef469d42ea..304f08bb20 100644 --- a/doc/classes/SkeletonModification3DJiggle.xml +++ b/doc/classes/SkeletonModification3DJiggle.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DJiggle" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DJiggle" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that jiggles bones as they move towards a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DLookAt.xml b/doc/classes/SkeletonModification3DLookAt.xml index 3602cfad95..aeed953ca9 100644 --- a/doc/classes/SkeletonModification3DLookAt.xml +++ b/doc/classes/SkeletonModification3DLookAt.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DLookAt" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DLookAt" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that rotates a bone to look at a target. </brief_description> diff --git a/doc/classes/SkeletonModification3DStackHolder.xml b/doc/classes/SkeletonModification3DStackHolder.xml index 24240236a4..9448e2c783 100644 --- a/doc/classes/SkeletonModification3DStackHolder.xml +++ b/doc/classes/SkeletonModification3DStackHolder.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DStackHolder" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DStackHolder" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that holds and executes a [SkeletonModificationStack3D]. </brief_description> diff --git a/doc/classes/SkeletonModification3DTwoBoneIK.xml b/doc/classes/SkeletonModification3DTwoBoneIK.xml index 6618ebbcfb..0e7ffd5c80 100644 --- a/doc/classes/SkeletonModification3DTwoBoneIK.xml +++ b/doc/classes/SkeletonModification3DTwoBoneIK.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModification3DTwoBoneIK" inherits="SkeletonModification3D" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModification3DTwoBoneIK" inherits="SkeletonModification3D" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A modification that moves two bones to reach the target. </brief_description> diff --git a/doc/classes/SkeletonModificationStack2D.xml b/doc/classes/SkeletonModificationStack2D.xml index 950e52e622..d96833e335 100644 --- a/doc/classes/SkeletonModificationStack2D.xml +++ b/doc/classes/SkeletonModificationStack2D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModificationStack2D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModificationStack2D" inherits="Resource" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that holds a stack of [SkeletonModification2D]s. </brief_description> diff --git a/doc/classes/SkeletonModificationStack3D.xml b/doc/classes/SkeletonModificationStack3D.xml index 34c7099bca..9eaeeefd8e 100644 --- a/doc/classes/SkeletonModificationStack3D.xml +++ b/doc/classes/SkeletonModificationStack3D.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="SkeletonModificationStack3D" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="SkeletonModificationStack3D" inherits="Resource" is_deprecated="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> A resource that holds a stack of [SkeletonModification3D]s. </brief_description> diff --git a/doc/classes/SplitContainer.xml b/doc/classes/SplitContainer.xml index fb4b9466b5..f0998deeae 100644 --- a/doc/classes/SplitContainer.xml +++ b/doc/classes/SplitContainer.xml @@ -27,6 +27,10 @@ <member name="split_offset" type="int" setter="set_split_offset" getter="get_split_offset" default="0"> The initial offset of the splitting between the two [Control]s, with [code]0[/code] being at the end of the first [Control]. </member> + <member name="vertical" type="bool" setter="set_vertical" getter="is_vertical" default="false"> + If [code]true[/code], the [SplitContainer] will arrange its children vertically, rather than horizontally. + Can't be changed when using [HSplitContainer] and [VSplitContainer]. + </member> </members> <signals> <signal name="dragged"> @@ -47,4 +51,21 @@ The split dragger is never visible and its space collapsed. </constant> </constants> + <theme_items> + <theme_item name="autohide" data_type="constant" type="int" default="1"> + Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically when it isn't under the cursor. If 0 ([code]false[/code]), it's always visible. + </theme_item> + <theme_item name="minimum_grab_thickness" data_type="constant" type="int" default="6"> + The minimum thickness of the area users can click on to grab the splitting line. If [theme_item separation] or [theme_item h_grabber] / [theme_item v_grabber]'s thickness are too small, this ensure that the splitting line can still be dragged. + </theme_item> + <theme_item name="separation" data_type="constant" type="int" default="12"> + The space between sides of the container. + </theme_item> + <theme_item name="h_grabber" data_type="icon" type="Texture2D"> + The icon used for the grabber drawn in the middle area when [member vertical] is [code]false[/code]. + </theme_item> + <theme_item name="v_grabber" data_type="icon" type="Texture2D"> + The icon used for the grabber drawn in the middle area when [member vertical] is [code]true[/code]. + </theme_item> + </theme_items> </class> diff --git a/doc/classes/StreamPeerBuffer.xml b/doc/classes/StreamPeerBuffer.xml index 4bef9f44b7..f33c38e595 100644 --- a/doc/classes/StreamPeerBuffer.xml +++ b/doc/classes/StreamPeerBuffer.xml @@ -4,7 +4,7 @@ Data buffer stream peer. </brief_description> <description> - Data buffer stream peer that uses a byte array as the stream. This object can be used to handle binary data from network sessions. To handle binary data stored in files, [File] can be used directly. + Data buffer stream peer that uses a byte array as the stream. This object can be used to handle binary data from network sessions. To handle binary data stored in files, [FileAccess] can be used directly. A [StreamPeerBuffer] object keeps an internal cursor which is the offset in bytes to the start of the buffer. Get and put operations are performed at the cursor position and will move the cursor accordingly. </description> <tutorials> diff --git a/doc/classes/StreamPeerExtension.xml b/doc/classes/StreamPeerExtension.xml index 46783de275..ab4bcfd17c 100644 --- a/doc/classes/StreamPeerExtension.xml +++ b/doc/classes/StreamPeerExtension.xml @@ -13,7 +13,7 @@ </description> </method> <method name="_get_data" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="r_buffer" type="uint8_t*" /> <param index="1" name="r_bytes" type="int" /> <param index="2" name="r_received" type="int32_t*" /> @@ -21,7 +21,7 @@ </description> </method> <method name="_get_partial_data" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="r_buffer" type="uint8_t*" /> <param index="1" name="r_bytes" type="int" /> <param index="2" name="r_received" type="int32_t*" /> @@ -29,7 +29,7 @@ </description> </method> <method name="_put_data" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="p_data" type="const uint8_t*" /> <param index="1" name="p_bytes" type="int" /> <param index="2" name="r_sent" type="int32_t*" /> @@ -37,7 +37,7 @@ </description> </method> <method name="_put_partial_data" qualifiers="virtual"> - <return type="int" /> + <return type="int" enum="Error" /> <param index="0" name="p_data" type="const uint8_t*" /> <param index="1" name="p_bytes" type="int" /> <param index="2" name="r_sent" type="int32_t*" /> diff --git a/doc/classes/StreamPeerGZIP.xml b/doc/classes/StreamPeerGZIP.xml new file mode 100644 index 0000000000..71dd36160d --- /dev/null +++ b/doc/classes/StreamPeerGZIP.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="StreamPeerGZIP" inherits="StreamPeer" is_experimental="true" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Stream peer handling GZIP and deflate compression/decompresison. + </brief_description> + <description> + This class allows to compress or decompress data using GZIP/deflate in a streaming fashion. This is particularly useful when compressing or decompressing files that has to be sent through the network without having to allocate them all in memory. + After starting the stream via [method start_compression] (or [method start_decompression]), calling [method StreamPeer.put_partial_data] on this stream will compress (or decompress) the data, writing it to the internal buffer. Calling [method StreamPeer.get_available_bytes] will return the pending bytes in the internal buffer, and [method StreamPeer.get_partial_data] will retrieve the compressed (or decompressed) bytes from it. When the stream is over, you must call [method finish] to ensure the internal buffer is properly flushed (make sure to call [method StreamPeer.get_available_bytes] on last time to check if more data needs to be read after that). + </description> + <tutorials> + </tutorials> + <methods> + <method name="clear"> + <return type="void" /> + <description> + Clears this stream, resetting the internal state. + </description> + </method> + <method name="finish"> + <return type="int" enum="Error" /> + <description> + Finalizes the stream, compressing or decompressing any buffered chunk left. + </description> + </method> + <method name="start_compression"> + <return type="int" enum="Error" /> + <param index="0" name="use_deflate" type="bool" default="false" /> + <param index="1" name="buffer_size" type="int" default="65535" /> + <description> + Start the stream in compression mode with the given [param buffer_size], if [param use_deflate] is [code]true[/code] uses deflate instead of GZIP. + </description> + </method> + <method name="start_decompression"> + <return type="int" enum="Error" /> + <param index="0" name="use_deflate" type="bool" default="false" /> + <param index="1" name="buffer_size" type="int" default="65535" /> + <description> + Start the stream in decompression mode with the given [param buffer_size], if [param use_deflate] is [code]true[/code] uses deflate instead of GZIP. + </description> + </method> + </methods> +</class> diff --git a/doc/classes/StreamPeerSSL.xml b/doc/classes/StreamPeerTLS.xml index 9d21b91416..d1ddb3d441 100644 --- a/doc/classes/StreamPeerSSL.xml +++ b/doc/classes/StreamPeerTLS.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="StreamPeerSSL" inherits="StreamPeer" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="StreamPeerTLS" inherits="StreamPeer" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - SSL stream peer. + TLS stream peer. </brief_description> <description> - SSL stream peer. This object can be used to connect to an SSL server or accept a single SSL client connection. + TLS stream peer. This object can be used to connect to an TLS server or accept a single TLS client connection. [b]Note:[/b] When exporting to Android, make sure to enable the [code]INTERNET[/code] permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android. </description> <tutorials> - <link title="SSL certificates">$DOCS_URL/tutorials/networking/ssl_certificates.html</link> + <link title="TLS certificates">$DOCS_URL/tutorials/networking/ssl_certificates.html</link> </tutorials> <methods> <method name="accept_stream"> @@ -28,7 +28,7 @@ <param index="2" name="for_hostname" type="String" default="""" /> <param index="3" name="valid_certificate" type="X509Certificate" default="null" /> <description> - Connects to a peer using an underlying [StreamPeer] [param stream]. If [param validate_certs] is [code]true[/code], [StreamPeerSSL] will validate that the certificate presented by the peer matches the [param for_hostname]. + Connects to a peer using an underlying [StreamPeer] [param stream]. If [param validate_certs] is [code]true[/code], [StreamPeerTLS] will validate that the certificate presented by the peer matches the [param for_hostname]. [b]Note:[/b] Specifying a custom [param valid_certificate] is not supported in Web exports due to browsers restrictions. </description> </method> @@ -39,7 +39,7 @@ </description> </method> <method name="get_status" qualifiers="const"> - <return type="int" enum="StreamPeerSSL.Status" /> + <return type="int" enum="StreamPeerTLS.Status" /> <description> Returns the status of the connection. See [enum Status] for values. </description> @@ -63,19 +63,19 @@ </members> <constants> <constant name="STATUS_DISCONNECTED" value="0" enum="Status"> - A status representing a [StreamPeerSSL] that is disconnected. + A status representing a [StreamPeerTLS] that is disconnected. </constant> <constant name="STATUS_HANDSHAKING" value="1" enum="Status"> - A status representing a [StreamPeerSSL] during handshaking. + A status representing a [StreamPeerTLS] during handshaking. </constant> <constant name="STATUS_CONNECTED" value="2" enum="Status"> - A status representing a [StreamPeerSSL] that is connected to a host. + A status representing a [StreamPeerTLS] that is connected to a host. </constant> <constant name="STATUS_ERROR" value="3" enum="Status"> - A status representing a [StreamPeerSSL] in error state. + A status representing a [StreamPeerTLS] in error state. </constant> <constant name="STATUS_ERROR_HOSTNAME_MISMATCH" value="4" enum="Status"> - An error status that shows a mismatch in the SSL certificate domain presented by the host and the domain requested for validation. + An error status that shows a mismatch in the TLS certificate domain presented by the host and the domain requested for validation. </constant> </constants> </class> diff --git a/doc/classes/String.xml b/doc/classes/String.xml index c111528c06..316bb923b7 100644 --- a/doc/classes/String.xml +++ b/doc/classes/String.xml @@ -775,6 +775,12 @@ Converts the String (which is a character array) to ASCII/Latin-1 encoded [PackedByteArray] (which is an array of bytes). The conversion is faster compared to [method to_utf8_buffer], as this method assumes that all the characters in the String are ASCII/Latin-1 characters, unsupported characters are replaced with spaces. </description> </method> + <method name="to_camel_case" qualifiers="const"> + <return type="String" /> + <description> + Returns the string converted to [code]camelCase[/code]. + </description> + </method> <method name="to_float" qualifiers="const"> <return type="float" /> <description> @@ -804,6 +810,18 @@ Returns the string converted to lowercase. </description> </method> + <method name="to_pascal_case" qualifiers="const"> + <return type="String" /> + <description> + Returns the string converted to [code]PascalCase[/code]. + </description> + </method> + <method name="to_snake_case" qualifiers="const"> + <return type="String" /> + <description> + Returns the string converted to [code]snake_case[/code]. + </description> + </method> <method name="to_upper" qualifiers="const"> <return type="String" /> <description> diff --git a/doc/classes/StyleBox.xml b/doc/classes/StyleBox.xml index d9c19a0c86..8656cde4a0 100644 --- a/doc/classes/StyleBox.xml +++ b/doc/classes/StyleBox.xml @@ -97,6 +97,13 @@ Sets the default value of the specified [enum Side] to [param offset] pixels. </description> </method> + <method name="set_default_margin_all"> + <return type="void" /> + <param index="0" name="offset" type="float" /> + <description> + Sets the default margin to [param offset] pixels for all sides. + </description> + </method> <method name="test_mask" qualifiers="const"> <return type="bool" /> <param index="0" name="point" type="Vector2" /> diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml index c4024fa4b5..7f6628f8ee 100644 --- a/doc/classes/StyleBoxFlat.xml +++ b/doc/classes/StyleBoxFlat.xml @@ -81,16 +81,6 @@ Sets the corner radius to [param radius] pixels for all corners. </description> </method> - <method name="set_corner_radius_individual"> - <return type="void" /> - <param index="0" name="radius_top_left" type="int" /> - <param index="1" name="radius_top_right" type="int" /> - <param index="2" name="radius_bottom_right" type="int" /> - <param index="3" name="radius_bottom_left" type="int" /> - <description> - Sets the corner radius for each corner to [param radius_top_left], [param radius_top_right], [param radius_bottom_right], and [param radius_bottom_left] pixels. - </description> - </method> <method name="set_expand_margin"> <return type="void" /> <param index="0" name="margin" type="int" enum="Side" /> @@ -106,16 +96,6 @@ Sets the expand margin to [param size] pixels for all margins. </description> </method> - <method name="set_expand_margin_individual"> - <return type="void" /> - <param index="0" name="size_left" type="float" /> - <param index="1" name="size_top" type="float" /> - <param index="2" name="size_right" type="float" /> - <param index="3" name="size_bottom" type="float" /> - <description> - Sets the expand margin for each margin to [param size_left], [param size_top], [param size_right], and [param size_bottom] pixels. - </description> - </method> </methods> <members> <member name="anti_aliasing" type="bool" setter="set_anti_aliased" getter="is_anti_aliased" default="true"> diff --git a/doc/classes/StyleBoxTexture.xml b/doc/classes/StyleBoxTexture.xml index 7db70e630d..aeba777b43 100644 --- a/doc/classes/StyleBoxTexture.xml +++ b/doc/classes/StyleBoxTexture.xml @@ -30,16 +30,6 @@ Sets the expand margin to [param size] pixels for all margins. </description> </method> - <method name="set_expand_margin_individual"> - <return type="void" /> - <param index="0" name="size_left" type="float" /> - <param index="1" name="size_top" type="float" /> - <param index="2" name="size_right" type="float" /> - <param index="3" name="size_bottom" type="float" /> - <description> - Sets the expand margin for each margin to [param size_left], [param size_top], [param size_right], and [param size_bottom] pixels. - </description> - </method> <method name="set_expand_margin_size"> <return type="void" /> <param index="0" name="margin" type="int" enum="Side" /> @@ -56,6 +46,13 @@ Sets the margin to [param size] pixels for the specified [enum Side]. </description> </method> + <method name="set_margin_size_all"> + <return type="void" /> + <param index="0" name="size" type="float" /> + <description> + Sets the margin to [param size] pixels for all sides. + </description> + </method> </methods> <members> <member name="axis_stretch_horizontal" type="int" setter="set_h_axis_stretch_mode" getter="get_h_axis_stretch_mode" enum="StyleBoxTexture.AxisStretchMode" default="0"> diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml index 74f258072c..302f9b329b 100644 --- a/doc/classes/TabContainer.xml +++ b/doc/classes/TabContainer.xml @@ -258,5 +258,8 @@ <theme_item name="tab_unselected" data_type="style" type="StyleBox"> The style of the other, unselected tabs. </theme_item> + <theme_item name="tabbar_background" data_type="style" type="StyleBox"> + The style for the background fill of the [TabBar] area. + </theme_item> </theme_items> </class> diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml index aa7ce85f3a..0905c0c20b 100644 --- a/doc/classes/TextEdit.xml +++ b/doc/classes/TextEdit.xml @@ -915,7 +915,7 @@ <member name="caret_blink" type="bool" setter="set_caret_blink_enabled" getter="is_caret_blink_enabled" default="false"> Sets if the caret should blink. </member> - <member name="caret_blink_speed" type="float" setter="set_caret_blink_speed" getter="get_caret_blink_speed" default="0.65"> + <member name="caret_blink_interval" type="float" setter="set_caret_blink_interval" getter="get_caret_blink_interval" default="0.65"> Duration (in seconds) of a caret's blinking cycle. </member> <member name="caret_mid_grapheme" type="bool" setter="set_caret_mid_grapheme_enabled" getter="is_caret_mid_grapheme_enabled" default="true"> diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml index aad83211f5..2e67c61e54 100644 --- a/doc/classes/TextServer.xml +++ b/doc/classes/TextServer.xml @@ -1035,7 +1035,7 @@ <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="index" type="int" /> - <param index="2" name="fonts" type="Array" /> + <param index="2" name="fonts" type="RID[]" /> <param index="3" name="size" type="int" /> <param index="4" name="opentype_features" type="Dictionary" default="{}" /> <description> @@ -1057,7 +1057,7 @@ <return type="bool" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="text" type="String" /> - <param index="2" name="fonts" type="Array" /> + <param index="2" name="fonts" type="RID[]" /> <param index="3" name="size" type="int" /> <param index="4" name="opentype_features" type="Dictionary" default="{}" /> <param index="5" name="language" type="String" default="""" /> @@ -1624,6 +1624,10 @@ Break the line between any unconnected graphemes. </constant> <constant name="BREAK_ADAPTIVE" value="8" enum="LineBreakFlag" is_bitfield="true"> + Should be used only in conjunction with [constant BREAK_WORD_BOUND], break the line between any unconnected graphemes, if it's impossible to break it between the words. + </constant> + <constant name="BREAK_TRIM_EDGE_SPACES" value="16" enum="LineBreakFlag" is_bitfield="true"> + Remove edge spaces from the broken line segments. </constant> <constant name="VC_CHARS_BEFORE_SHAPING" value="0" enum="VisibleCharactersBehavior"> Trims text before the shaping. e.g, increasing [member Label.visible_characters] or [member RichTextLabel.visible_characters] value is visually identical to typing the text. @@ -1716,6 +1720,7 @@ </constant> <constant name="HINTING_NORMAL" value="2" enum="Hinting"> Use the default font hinting mode (crisper but less smooth). + [b]Note:[/b] This hinting mode changes both horizontal and vertical glyph metrics. If applied to monospace font, some glyphs might have different width. </constant> <constant name="SUBPIXEL_POSITIONING_DISABLED" value="0" enum="SubpixelPositioning"> Glyph horizontal position is rounded to the whole pixel size, each glyph is rasterized once. diff --git a/doc/classes/TextServerExtension.xml b/doc/classes/TextServerExtension.xml index 23eb25dc10..4886bf0757 100644 --- a/doc/classes/TextServerExtension.xml +++ b/doc/classes/TextServerExtension.xml @@ -1020,7 +1020,7 @@ <return type="void" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="index" type="int" /> - <param index="2" name="fonts" type="Array" /> + <param index="2" name="fonts" type="RID[]" /> <param index="3" name="size" type="int" /> <param index="4" name="opentype_features" type="Dictionary" /> <description> @@ -1042,7 +1042,7 @@ <return type="bool" /> <param index="0" name="shaped" type="RID" /> <param index="1" name="text" type="String" /> - <param index="2" name="fonts" type="Array" /> + <param index="2" name="fonts" type="RID[]" /> <param index="3" name="size" type="int" /> <param index="4" name="opentype_features" type="Dictionary" /> <param index="5" name="language" type="String" /> diff --git a/doc/classes/Texture2DArray.xml b/doc/classes/Texture2DArray.xml index 6f059b5fbf..113f37f974 100644 --- a/doc/classes/Texture2DArray.xml +++ b/doc/classes/Texture2DArray.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Texture2DArray" inherits="ImageTextureLayered" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + A single texture resource which consists of multiple, separate images. Each image has the same dimensions and number of mipmap levels. </brief_description> <description> + A Texture2DArray is different from a Texture3D: The Texture2DArray does not support trilinear interpolation between the [Image]s, i.e. no blending. + A Texture2DArray is also different from an [AtlasTexture]: In a Texture2DArray, all images are treated separately. In an atlas, the regions (i.e. the single images) can be of different sizes. Furthermore, you usually need to add a padding around the regions, to prevent accidental UV mapping to more than one region. The same goes for mipmapping: Mipmap chains are handled separately for each layer. In an atlas, the slicing has to be done manually in the fragment shader. </description> <tutorials> </tutorials> diff --git a/doc/classes/TextureLayered.xml b/doc/classes/TextureLayered.xml index 7b528e2082..5e6afcbc5c 100644 --- a/doc/classes/TextureLayered.xml +++ b/doc/classes/TextureLayered.xml @@ -1,10 +1,15 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="TextureLayered" inherits="Texture" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - Base class for 3D texture types. + Base class for texture types which contain the data of multiple [Image]s. Each image is of the same size and format. </brief_description> <description> - Base class for [Texture2DArray], [Cubemap] and [CubemapArray]. Cannot be used directly, but contains all the functions necessary for accessing the derived resource types. Data is set on a per-layer basis. For [Texture2DArray]s, the layer specifies the array layer. + Base class for [Texture2DArray], [Cubemap] and [CubemapArray]. Cannot be used directly, but contains all the functions necessary for accessing the derived resource types. + Data is set on a per-layer basis. For [Texture2DArray]s, the layer specifies the array layer. + All images need to have the same width, height and number of mipmap levels. + A [TextureLayered] can be loaded with [code]method ResourceFormatLoader.load[/code]. + To create such a texture file yourself, re-import your image files using the Godot Editor import presets. + Internally, Godot maps these files to their respective counterparts in the target rendering driver (GLES3, Vulkan). </description> <tutorials> </tutorials> @@ -72,6 +77,7 @@ <method name="get_layers" qualifiers="const"> <return type="int" /> <description> + Returns the number of referenced [Image]s. </description> </method> <method name="get_width" qualifiers="const"> @@ -83,6 +89,7 @@ <method name="has_mipmaps" qualifiers="const"> <return type="bool" /> <description> + Returns [code]true[/code] if the layers have generated mipmaps. </description> </method> </methods> diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml index e76c696021..54eb83297d 100644 --- a/doc/classes/TileMap.xml +++ b/doc/classes/TileMap.xml @@ -207,6 +207,13 @@ Returns if a layer Y-sorts its tiles. </description> </method> + <method name="local_to_map" qualifiers="const"> + <return type="Vector2i" /> + <param index="0" name="local_position" type="Vector2" /> + <description> + Returns the map coordinates of the cell containing the given [param local_position]. If [param local_position] is in global coordinates, consider using [method Node2D.to_local] before passing it to this method. See also [method map_to_local]. + </description> + </method> <method name="map_pattern"> <return type="Vector2i" /> <param index="0" name="position_in_tilemap" type="Vector2i" /> @@ -216,12 +223,12 @@ Returns for the given coordinate [param coords_in_pattern] in a [TileMapPattern] the corresponding cell coordinates if the pattern was pasted at the [param position_in_tilemap] coordinates (see [method set_pattern]). This mapping is required as in half-offset tile shapes, the mapping might not work by calculating [code]position_in_tile_map + coords_in_pattern[/code] </description> </method> - <method name="map_to_world" qualifiers="const"> + <method name="map_to_local" qualifiers="const"> <return type="Vector2" /> <param index="0" name="map_position" type="Vector2i" /> <description> - Returns a local position of the center of the cell at the given tilemap (grid-based) coordinates. - [b]Note:[/b] This doesn't correspond to the visual position of the tile, i.e. it ignores the [member TileData.texture_offset] property of individual tiles. + Returns the centered position of a cell in the TileMap's local coordinate space. To convert the returned value into global coordinates, use [method Node2D.to_global]. See also [method local_to_map]. + [b]Note:[/b] This may not correspond to the visual position of the tile, i.e. it ignores the [member TileData.texture_offset] property of individual tiles. </description> </method> <method name="move_layer"> @@ -344,13 +351,6 @@ Paste the given [TileMapPattern] at the given [param position] and [param layer] in the tile map. </description> </method> - <method name="world_to_map" qualifiers="const"> - <return type="Vector2i" /> - <param index="0" name="world_position" type="Vector2" /> - <description> - Returns the tilemap (grid-based) coordinates corresponding to the given local position. - </description> - </method> </methods> <members> <member name="cell_quadrant_size" type="int" setter="set_quadrant_size" getter="get_quadrant_size" default="16"> diff --git a/doc/classes/Time.xml b/doc/classes/Time.xml index cdbe30c444..1abe017a4d 100644 --- a/doc/classes/Time.xml +++ b/doc/classes/Time.xml @@ -17,7 +17,7 @@ <return type="Dictionary" /> <param index="0" name="utc" type="bool" default="false" /> <description> - Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], and [code]dst[/code] (Daylight Savings Time). + Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], and [code]weekday[/code]. The returned values are in the system's local time when [param utc] is [code]false[/code], otherwise they are in UTC. </description> </method> @@ -57,7 +57,7 @@ <return type="Dictionary" /> <param index="0" name="utc" type="bool" default="false" /> <description> - Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/code], [code]minute[/code], and [code]second[/code]. + Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/code], [code]minute[/code], [code]second[/code], and [code]dst[/code] (Daylight Savings Time). </description> </method> <method name="get_datetime_dict_from_unix_time" qualifiers="const"> diff --git a/doc/classes/Transform3D.xml b/doc/classes/Transform3D.xml index 14aa72b80c..18b4f9e6f9 100644 --- a/doc/classes/Transform3D.xml +++ b/doc/classes/Transform3D.xml @@ -141,14 +141,6 @@ This can be seen as transforming with respect to the local frame. </description> </method> - <method name="spherical_interpolate_with" qualifiers="const"> - <return type="Transform3D" /> - <param index="0" name="xform" type="Transform3D" /> - <param index="1" name="weight" type="float" /> - <description> - Returns a transform spherically interpolated between this transform and another by a given [param weight] (on the range of 0.0 to 1.0). - </description> - </method> <method name="translated" qualifiers="const"> <return type="Transform3D" /> <param index="0" name="offset" type="Vector3" /> diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml index bf66d9f12a..539ca38190 100644 --- a/doc/classes/Tree.xml +++ b/doc/classes/Tree.xml @@ -312,6 +312,9 @@ The drop mode as an OR combination of flags. See [enum DropModeFlags] constants. Once dropping is done, reverts to [constant DROP_MODE_DISABLED]. Setting this during [method Control._can_drop_data] is recommended. This controls the drop sections, i.e. the decision and drawing of possible drop locations based on the mouse position. </member> + <member name="enable_recursive_folding" type="bool" setter="set_enable_recursive_folding" getter="is_recursive_folding_enabled" default="true"> + If [code]true[/code], recursive folding is enabled for this [Tree]. Holding down Shift while clicking the fold arrow collapses or uncollapses the [TreeItem] and all its descendants. + </member> <member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" overrides="Control" enum="Control.FocusMode" default="2" /> <member name="hide_folding" type="bool" setter="set_hide_folding" getter="is_folding_hidden" default="false"> If [code]true[/code], the folding arrow is hidden. @@ -558,12 +561,6 @@ <theme_item name="updown" data_type="icon" type="Texture2D"> The updown arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] mode cell. </theme_item> - <theme_item name="bg" data_type="style" type="StyleBox"> - Default [StyleBox] for the [Tree], i.e. used when the control is not being focused. - </theme_item> - <theme_item name="bg_focus" data_type="style" type="StyleBox"> - [StyleBox] used when the [Tree] is being focused. - </theme_item> <theme_item name="button_pressed" data_type="style" type="StyleBox"> [StyleBox] used when a button in the tree is pressed. </theme_item> @@ -582,6 +579,12 @@ <theme_item name="custom_button_pressed" data_type="style" type="StyleBox"> [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's pressed. </theme_item> + <theme_item name="focus" data_type="style" type="StyleBox"> + The focused style for the [Tree], drawn on top of everything. + </theme_item> + <theme_item name="panel" data_type="style" type="StyleBox"> + The background style for the [Tree]. + </theme_item> <theme_item name="selected" data_type="style" type="StyleBox"> [StyleBox] for the selected items, used when the [Tree] is not being focused. </theme_item> diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml index 6d4408cf61..c109dc57f7 100644 --- a/doc/classes/TreeItem.xml +++ b/doc/classes/TreeItem.xml @@ -16,9 +16,9 @@ <param index="1" name="button" type="Texture2D" /> <param index="2" name="id" type="int" default="-1" /> <param index="3" name="disabled" type="bool" default="false" /> - <param index="4" name="tooltip" type="String" default="""" /> + <param index="4" name="tooltip_text" type="String" default="""" /> <description> - Adds a button with [Texture2D] [param button] at column [param column]. The [param id] is used to identify the button. If not specified, the next available index is used, which may be retrieved by calling [method get_button_count] immediately before this method. Optionally, the button can be [param disabled] and have a [param tooltip]. + Adds a button with [Texture2D] [param button] at column [param column]. The [param id] is used to identify the button. If not specified, the next available index is used, which may be retrieved by calling [method get_button_count] immediately before this method. Optionally, the button can be [param disabled] and have a [param tooltip_text]. </description> </method> <method name="call_recursive" qualifiers="vararg"> @@ -96,12 +96,12 @@ Returns the id for the button at index [param button_idx] in column [param column]. </description> </method> - <method name="get_button_tooltip" qualifiers="const"> + <method name="get_button_tooltip_text" qualifiers="const"> <return type="String" /> <param index="0" name="column" type="int" /> <param index="1" name="button_idx" type="int" /> <description> - Returns the tooltip string for the button at index [param button_idx] in column [param column]. + Returns the tooltip text for the button at index [param button_idx] in column [param column]. </description> </method> <method name="get_cell_mode" qualifiers="const"> @@ -308,11 +308,11 @@ Returns item's text base writing direction. </description> </method> - <method name="get_tooltip" qualifiers="const"> + <method name="get_tooltip_text" qualifiers="const"> <return type="String" /> <param index="0" name="column" type="int" /> <description> - Returns the given column's tooltip. + Returns the given column's tooltip text. </description> </method> <method name="get_tree" qualifiers="const"> @@ -321,6 +321,14 @@ Returns the [Tree] that owns this TreeItem. </description> </method> + <method name="is_any_collapsed"> + <return type="bool" /> + <param index="0" name="only_visible" type="bool" default="false" /> + <description> + Returns [code]true[/code] if this [TreeItem], or any of its descendants, is collapsed. + If [param only_visible] is [code]true[/code] it ignores non-visible [TreeItem]s. + </description> + </method> <method name="is_button_disabled" qualifiers="const"> <return type="bool" /> <param index="0" name="column" type="int" /> @@ -442,6 +450,13 @@ If [code]true[/code], the given [param column] is checked. Clears column's indeterminate status. </description> </method> + <method name="set_collapsed_recursive"> + <return type="void" /> + <param index="0" name="enable" type="bool" /> + <description> + Collapses or uncollapses this [TreeItem] and all the descendants of this item. + </description> + </method> <method name="set_custom_as_button"> <return type="void" /> <param index="0" name="column" type="int" /> @@ -639,7 +654,7 @@ Sets item's text base writing direction. </description> </method> - <method name="set_tooltip"> + <method name="set_tooltip_text"> <return type="void" /> <param index="0" name="column" type="int" /> <param index="1" name="tooltip" type="String" /> diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml index c7fc78c1d3..acf900ae55 100644 --- a/doc/classes/Tween.xml +++ b/doc/classes/Tween.xml @@ -8,37 +8,89 @@ [Tween] is more suited than [AnimationPlayer] for animations where you don't know the final values in advance. For example, interpolating a dynamically-chosen camera zoom value is best done with a [Tween]; it would be difficult to do the same thing with an [AnimationPlayer] node. Tweens are also more light-weight than [AnimationPlayer], so they are very much suited for simple animations or general tasks that don't require visual tweaking provided by the editor. They can be used in a fire-and-forget manner for some logic that normally would be done by code. You can e.g. make something shoot periodically by using a looped [CallbackTweener] with a delay. A [Tween] can be created by using either [method SceneTree.create_tween] or [method Node.create_tween]. [Tween]s created manually (i.e. by using [code]Tween.new()[/code]) are invalid and can't be used for tweening values. A tween animation is created by adding [Tweener]s to the [Tween] object, using [method tween_property], [method tween_interval], [method tween_callback] or [method tween_method]: - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween() tween.tween_property($Sprite, "modulate", Color.red, 1) tween.tween_property($Sprite, "scale", Vector2(), 1) tween.tween_callback($Sprite.queue_free) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = GetTree().CreateTween(); + tween.TweenProperty(GetNode("Sprite"), "modulate", Colors.Red, 1.0f); + tween.TweenProperty(GetNode("Sprite"), "scale", Vector2.Zero, 1.0f); + tween.TweenCallback(new Callable(GetNode("Sprite").QueueFree)); + [/csharp] + [/codeblocks] This sequence will make the [code]$Sprite[/code] node turn red, then shrink, before finally calling [method Node.queue_free] to free the sprite. [Tweener]s are executed one after another by default. This behavior can be changed using [method parallel] and [method set_parallel]. When a [Tweener] is created with one of the [code]tween_*[/code] methods, a chained method call can be used to tweak the properties of this [Tweener]. For example, if you want to set a different transition type in the above example, you can use [method set_trans]: - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween() tween.tween_property($Sprite, "modulate", Color.red, 1).set_trans(Tween.TRANS_SINE) tween.tween_property($Sprite, "scale", Vector2(), 1).set_trans(Tween.TRANS_BOUNCE) tween.tween_callback($Sprite.queue_free) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = GetTree().CreateTween(); + tween.TweenProperty(GetNode("Sprite"), "modulate", Colors.Red, 1.0f).SetTrans(Tween.TransitionType.Sine); + tween.TweenProperty(GetNode("Sprite"), "scale", Vector2.Zero, 1.0f).SetTrans(Tween.TransitionType.Bounce); + tween.TweenCallback(new Callable(GetNode("Sprite").QueueFree)); + [/csharp] + [/codeblocks] Most of the [Tween] methods can be chained this way too. In the following example the [Tween] is bound to the running script's node and a default transition is set for its [Tweener]s: - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_ELASTIC) tween.tween_property($Sprite, "modulate", Color.red, 1) tween.tween_property($Sprite, "scale", Vector2(), 1) tween.tween_callback($Sprite.queue_free) - [/codeblock] + [/gdscript] + [csharp] + var tween = GetTree().CreateTween().BindNode(this).SetTrans(Tween.TransitionType.Elastic); + tween.TweenProperty(GetNode("Sprite"), "modulate", Colors.Red, 1.0f); + tween.TweenProperty(GetNode("Sprite"), "scale", Vector2.Zero, 1.0f); + tween.TweenCallback(new Callable(GetNode("Sprite").QueueFree)); + [/csharp] + [/codeblocks] Another interesting use for [Tween]s is animating arbitrary sets of objects: - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() for sprite in get_children(): tween.tween_property(sprite, "position", Vector2(0, 0), 1) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + foreach (Node sprite in GetChildren()) + tween.TweenProperty(sprite, "position", Vector2.Zero, 1.0f); + [/csharp] + [/codeblocks] In the example above, all children of a node are moved one after another to position (0, 0). + You should avoid using more than one [Tween] per object's property. If two or more tweens animate one property at the same time, the last one created will take priority and assign the final value. If you want to interrupt and restart an animation, consider assigning the [Tween] to a variable: + [codeblocks] + [gdscript] + var tween + func animate(): + if tween: + tween.kill() # Abort the previous animation. + tween = create_tween() + [/gdscript] + [csharp] + private Tween tween; + + public void Animate() + { + if (tween != null) + tween.Kill(); // Abort the previous animation + tween = CreateTween(); + } + [/csharp] + [/codeblocks] Some [Tweener]s use transitions and eases. The first accepts a [enum TransitionType] constant, and refers to the way the timing of the animation is handled (see [url=https://easings.net/]easings.net[/url] for some examples). The second accepts an [enum EaseType] constant, and controls where the [code]trans_type[/code] is applied to the interpolation (in the beginning, the end, or both). If you don't know which transition and easing to pick, you can try different [enum TransitionType] constants with [constant EASE_IN_OUT], and use the one that looks best. [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/tween_cheatsheet.png]Tween easing and transition types cheatsheet[/url] [b]Note:[/b] All [Tween]s will automatically start by default. To prevent a [Tween] from autostarting, you can call [method stop] immediately after it is created. + [b]Note:[/b] [Tween]s are processing after all of nodes in the current frame, i.e. after [method Node._process] or [method Node._physics_process] (depending on [enum TweenProcessMode]). </description> <tutorials> </tutorials> @@ -55,12 +107,20 @@ <return type="Tween" /> <description> Used to chain two [Tweener]s after [method set_parallel] is called with [code]true[/code]. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween().set_parallel(true) tween.tween_property(...) tween.tween_property(...) # Will run parallelly with above. tween.chain().tween_property(...) # Will run after two above are finished. - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween().SetParallel(true); + tween.TweenProperty(...); + tween.TweenProperty(...); // Will run parallelly with above. + tween.Chain().TweenProperty(...); // Will run after two above are finished. + [/csharp] + [/codeblocks] </description> </method> <method name="custom_step"> @@ -118,12 +178,20 @@ <return type="Tween" /> <description> Makes the next [Tweener] run parallelly to the previous one. Example: - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_property(...) tween.parallel().tween_property(...) tween.parallel().tween_property(...) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + tween.TweenProperty(...); + tween.Parallel().TweenProperty(...); + tween.Parallel().TweenProperty(...); + [/csharp] + [/codeblocks] All [Tweener]s in the example will run at the same time. You can make the [Tween] parallel by default by using [method set_parallel]. </description> @@ -205,16 +273,30 @@ <description> Creates and appends a [CallbackTweener]. This method can be used to call an arbitrary method in any object. Use [method Callable.bind] to bind additional arguments for the call. Example: object that keeps shooting every 1 second. - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween().set_loops() tween.tween_callback(shoot).set_delay(1) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = GetTree().CreateTween().SetLoops(); + tween.TweenCallback(new Callable(Shoot)).SetDelay(1.0f); + [/csharp] + [/codeblocks] Example: turning a sprite red and then blue, with 2 second delay. - [codeblock] + [codeblocks] + [gdscript] var tween = get_tree().create_tween() tween.tween_callback($Sprite.set_modulate.bind(Color.red)).set_delay(2) tween.tween_callback($Sprite.set_modulate.bind(Color.blue)).set_delay(2) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = GetTree().CreateTween(); + Sprite2D sprite = GetNode<Sprite2D>("Sprite"); + tween.TweenCallback(new Callable(() => sprite.Modulate = Colors.Red)).SetDelay(2.0f); + tween.TweenCallback(new Callable(() => sprite.Modulate = Colors.Blue)).SetDelay(2.0f); + [/csharp] + [/codeblocks] </description> </method> <method name="tween_interval"> @@ -223,13 +305,21 @@ <description> Creates and appends an [IntervalTweener]. This method can be used to create delays in the tween animation, as an alternative to using the delay in other [Tweener]s, or when there's no animation (in which case the [Tween] acts as a timer). [param time] is the length of the interval, in seconds. Example: creating an interval in code execution. - [codeblock] + [codeblocks] + [gdscript] # ... some code await create_tween().tween_interval(2).finished # ... more code - [/codeblock] + [/gdscript] + [csharp] + // ... some code + await ToSignal(CreateTween().TweenInterval(2.0f), Tween.SignalName.Finished); + // ... more code + [/csharp] + [/codeblocks] Example: creating an object that moves back and forth and jumps every few seconds. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween().set_loops() tween.tween_property($Sprite, "position:x", 200.0, 1).as_relative() tween.tween_callback(jump) @@ -237,7 +327,17 @@ tween.tween_property($Sprite, "position:x", -200.0, 1).as_relative() tween.tween_callback(jump) tween.tween_interval(2) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween().SetLoops(); + tween.TweenProperty(GetNode("Sprite"), "position:x", 200.0f, 1.0f).AsRelative(); + tween.TweenCallback(new Callable(Jump)); + tween.TweenInterval(2.0f); + tween.TweenProperty(GetNode("Sprite"), "position:x", -200.0f, 1.0f).AsRelative(); + tween.TweenCallback(new Callable(Jump)); + tween.TweenInterval(2.0f); + [/csharp] + [/codeblocks] </description> </method> <method name="tween_method"> @@ -249,19 +349,41 @@ <description> Creates and appends a [MethodTweener]. This method is similar to a combination of [method tween_callback] and [method tween_property]. It calls a method over time with a tweened value provided as an argument. The value is tweened between [param from] and [param to] over the time specified by [param duration], in seconds. Use [method Callable.bind] to bind additional arguments for the call. You can use [method MethodTweener.set_ease] and [method MethodTweener.set_trans] to tweak the easing and transition of the value or [method MethodTweener.set_delay] to delay the tweening. Example: making a 3D object look from one point to another point. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_method(look_at.bind(Vector3.UP), Vector3(-1, 0, -1), Vector3(1, 0, -1), 1) # The look_at() method takes up vector as second argument. - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + tween.TweenMethod(new Callable(() => LookAt(Vector3.Up)), new Vector3(-1.0f, 0.0f, -1.0f), new Vector3(1.0f, 0.0f, -1.0f), 1.0f); // The LookAt() method takes up vector as second argument. + [/csharp] + [/codeblocks] Example: setting a text of a [Label], using an intermediate method and after a delay. - [codeblock] + [codeblocks] + [gdscript] func _ready(): var tween = create_tween() tween.tween_method(set_label_text, 0, 10, 1).set_delay(1) func set_label_text(value: int): $Label.text = "Counting " + str(value) - [/codeblock] + [/gdscript] + [csharp] + public override void _Ready() + { + base._Ready(); + + Tween tween = CreateTween(); + tween.TweenMethod(new Callable(SetLabelText), 0.0f, 10.0f, 1.0f).SetDelay(1.0f); + } + + private void SetLabelText(int value) + { + GetNode<Label>("Label").Text = $"Counting {value}"; + } + [/csharp] + [/codeblocks] </description> </method> <method name="tween_property"> @@ -272,19 +394,33 @@ <param index="3" name="duration" type="float" /> <description> Creates and appends a [PropertyTweener]. This method tweens a [param property] of an [param object] between an initial value and [param final_val] in a span of time equal to [param duration], in seconds. The initial value by default is the property's value at the time the tweening of the [PropertyTweener] starts. For example: - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_property($Sprite, "position", Vector2(100, 200), 1) tween.tween_property($Sprite, "position", Vector2(200, 300), 1) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + tween.TweenProperty(GetNode("Sprite"), "position", new Vector2(100.0f, 200.0f), 1.0f); + tween.TweenProperty(GetNode("Sprite"), "position", new Vector2(200.0f, 300.0f), 1.0f); + [/csharp] + [/codeblocks] will move the sprite to position (100, 200) and then to (200, 300). If you use [method PropertyTweener.from] or [method PropertyTweener.from_current], the starting position will be overwritten by the given value instead. See other methods in [PropertyTweener] to see how the tweening can be tweaked further. [b]Note:[/b] You can find the correct property name by hovering over the property in the Inspector. You can also provide the components of a property directly by using [code]"property:component"[/code] (eg. [code]position:x[/code]), where it would only apply to that particular component. Example: moving object twice from the same position, with different transition types. - [codeblock] + [codeblocks] + [gdscript] var tween = create_tween() tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1).as_relative().set_trans(Tween.TRANS_SINE) tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1).as_relative().from_current().set_trans(Tween.TRANS_EXPO) - [/codeblock] + [/gdscript] + [csharp] + Tween tween = CreateTween(); + tween.TweenProperty(GetNode("Sprite"), "position", Vector2.Right * 300.0f, 1.0f).AsRelative().SetTrans(Tween.TransitionType.Sine); + tween.TweenProperty(GetNode("Sprite"), "position", Vector2.Right * 300.0f, 1.0f).AsRelative().FromCurrent().SetTrans(Tween.TransitionType.Expo); + [/csharp] + [/codeblocks] </description> </method> </methods> diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml index 3ef59b1c39..7258efbdda 100644 --- a/doc/classes/UndoRedo.xml +++ b/doc/classes/UndoRedo.xml @@ -62,12 +62,11 @@ <tutorials> </tutorials> <methods> - <method name="add_do_method" qualifiers="vararg"> + <method name="add_do_method"> <return type="void" /> - <param index="0" name="object" type="Object" /> - <param index="1" name="method" type="StringName" /> + <param index="0" name="callable" type="Callable" /> <description> - Register a [param method] that will be called when the action is committed. + Register a [Callable] that will be called when the action is committed. </description> </method> <method name="add_do_property"> @@ -86,12 +85,11 @@ Register a reference for "do" that will be erased if the "do" history is lost. This is useful mostly for new nodes created for the "do" call. Do not use for resources. </description> </method> - <method name="add_undo_method" qualifiers="vararg"> + <method name="add_undo_method"> <return type="void" /> - <param index="0" name="object" type="Object" /> - <param index="1" name="method" type="StringName" /> + <param index="0" name="callable" type="Callable" /> <description> - Register a [param method] that will be called when the action is undone. + Register a [Callable] that will be called when the action is undone. </description> </method> <method name="add_undo_property"> diff --git a/doc/classes/VSplitContainer.xml b/doc/classes/VSplitContainer.xml index b933fb2805..c60d15d9c9 100644 --- a/doc/classes/VSplitContainer.xml +++ b/doc/classes/VSplitContainer.xml @@ -13,6 +13,9 @@ <theme_item name="autohide" data_type="constant" type="int" default="1"> Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically when it isn't under the cursor. If 0 ([code]false[/code]), it's always visible. </theme_item> + <theme_item name="minimum_grab_thickness" data_type="constant" type="int" default="6"> + The minimum thickness of the area users can click on to grab the splitting line. If [theme_item separation] or [theme_item grabber]'s thickness are too small, this ensure that the splitting line can still be dragged. + </theme_item> <theme_item name="separation" data_type="constant" type="int" default="12"> The space between sides of the container. </theme_item> diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml index 2197947126..e1852340c0 100644 --- a/doc/classes/Vector2.xml +++ b/doc/classes/Vector2.xml @@ -212,6 +212,13 @@ Returns [code]true[/code] if the vector is normalized, [code]false[/code] otherwise. </description> </method> + <method name="is_zero_approx" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if this vector's values are approximately zero, by running [method @GlobalScope.is_zero_approx] on each component. + This method is faster than using [method is_equal_approx] with one value as a zero vector. + </description> + </method> <method name="length" qualifiers="const"> <return type="float" /> <description> diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml index 150d53845c..1ef84050cd 100644 --- a/doc/classes/Vector3.xml +++ b/doc/classes/Vector3.xml @@ -180,6 +180,13 @@ Returns [code]true[/code] if the vector is normalized, [code]false[/code] otherwise. </description> </method> + <method name="is_zero_approx" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if this vector's values are approximately zero, by running [method @GlobalScope.is_zero_approx] on each component. + This method is faster than using [method is_equal_approx] with one value as a zero vector. + </description> + </method> <method name="length" qualifiers="const"> <return type="float" /> <description> diff --git a/doc/classes/Vector4.xml b/doc/classes/Vector4.xml index b9f509cfe7..fdc93f82ec 100644 --- a/doc/classes/Vector4.xml +++ b/doc/classes/Vector4.xml @@ -28,7 +28,7 @@ <return type="Vector4" /> <param index="0" name="from" type="Vector4i" /> <description> - Constructs a new [Vector4] from [Vector4i]. + Constructs a new [Vector4] from the given [Vector4i]. </description> </constructor> <constructor name="Vector4"> @@ -141,6 +141,13 @@ Returns [code]true[/code] if the vector is normalized, i.e. its length is equal to 1. </description> </method> + <method name="is_zero_approx" qualifiers="const"> + <return type="bool" /> + <description> + Returns [code]true[/code] if this vector's values are approximately zero, by running [method @GlobalScope.is_zero_approx] on each component. + This method is faster than using [method is_equal_approx] with one value as a zero vector. + </description> + </method> <method name="length" qualifiers="const"> <return type="float" /> <description> diff --git a/doc/classes/Vector4i.xml b/doc/classes/Vector4i.xml index 9a36c3c4fa..3eea93ce1f 100644 --- a/doc/classes/Vector4i.xml +++ b/doc/classes/Vector4i.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="Vector4i" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> + Vector used for 4D math using integer coordinates. </brief_description> <description> + 4-element structure that can be used to represent 4D grid coordinates or sets of integers. + It uses integer coordinates. See [Vector4] for its floating-point counterpart. </description> <tutorials> </tutorials> @@ -10,18 +13,21 @@ <constructor name="Vector4i"> <return type="Vector4i" /> <description> + Constructs a default-initialized [Vector4i] with all components set to [code]0[/code]. </description> </constructor> <constructor name="Vector4i"> <return type="Vector4i" /> <param index="0" name="from" type="Vector4i" /> <description> + Constructs a [Vector4i] as a copy of the given [Vector4i]. </description> </constructor> <constructor name="Vector4i"> <return type="Vector4i" /> <param index="0" name="from" type="Vector4" /> <description> + Constructs a new [Vector4i] from the given [Vector4]. </description> </constructor> <constructor name="Vector4i"> @@ -31,6 +37,7 @@ <param index="2" name="z" type="int" /> <param index="3" name="w" type="int" /> <description> + Returns a [Vector4i] with the given components. </description> </constructor> </constructors> @@ -38,6 +45,7 @@ <method name="abs" qualifiers="const"> <return type="Vector4i" /> <description> + Returns a new vector with all components in absolute values (i.e. positive). </description> </method> <method name="clamp" qualifiers="const"> @@ -45,56 +53,72 @@ <param index="0" name="min" type="Vector4i" /> <param index="1" name="max" type="Vector4i" /> <description> + Returns a new vector with all components clamped between the components of [param min] and [param max], by running [method @GlobalScope.clamp] on each component. </description> </method> <method name="length" qualifiers="const"> <return type="float" /> <description> + Returns the length (magnitude) of this vector. </description> </method> <method name="length_squared" qualifiers="const"> <return type="int" /> <description> + Returns the squared length (squared magnitude) of this vector. This method runs faster than [method length]. </description> </method> <method name="max_axis_index" qualifiers="const"> <return type="int" /> <description> + Returns the axis of the vector's highest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X]. </description> </method> <method name="min_axis_index" qualifiers="const"> <return type="int" /> <description> + Returns the axis of the vector's lowest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_W]. </description> </method> <method name="sign" qualifiers="const"> <return type="Vector4i" /> <description> + Returns a new vector with each component set to one or negative one, depending on the signs of the components, or zero if the component is zero, by calling [method @GlobalScope.sign] on each component. </description> </method> </methods> <members> <member name="w" type="int" setter="" getter="" default="0"> + The vector's W component. Also accessible by using the index position [code][3][/code]. </member> <member name="x" type="int" setter="" getter="" default="0"> + The vector's X component. Also accessible by using the index position [code][0][/code]. </member> <member name="y" type="int" setter="" getter="" default="0"> + The vector's Y component. Also accessible by using the index position [code][1][/code]. </member> <member name="z" type="int" setter="" getter="" default="0"> + The vector's Z component. Also accessible by using the index position [code][2][/code]. </member> </members> <constants> <constant name="AXIS_X" value="0"> + Enumerated value for the X axis. Returned by [method max_axis_index] and [method min_axis_index]. </constant> <constant name="AXIS_Y" value="1"> + Enumerated value for the Y axis. Returned by [method max_axis_index] and [method min_axis_index]. </constant> <constant name="AXIS_Z" value="2"> + Enumerated value for the Z axis. Returned by [method max_axis_index] and [method min_axis_index]. </constant> <constant name="AXIS_W" value="3"> + Enumerated value for the W axis. Returned by [method max_axis_index] and [method min_axis_index]. </constant> <constant name="ZERO" value="Vector4i(0, 0, 0, 0)"> + Zero vector, a vector with all components set to [code]0[/code]. </constant> <constant name="ONE" value="Vector4i(1, 1, 1, 1)"> + One vector, a vector with all components set to [code]1[/code]. </constant> </constants> <operators> @@ -102,6 +126,7 @@ <return type="bool" /> <param index="0" name="right" type="Vector4i" /> <description> + Returns [code]true[/code] if the vectors are not equal. </description> </operator> <operator name="operator %"> @@ -120,94 +145,130 @@ <return type="Vector4i" /> <param index="0" name="right" type="Vector4i" /> <description> + Multiplies each component of the [Vector4i] by the components of the given [Vector4i]. + [codeblock] + print(Vector4i(10, 20, 30, 40) * Vector4i(3, 4, 5, 6)) # Prints "(30, 80, 150, 240)" + [/codeblock] </description> </operator> <operator name="operator *"> <return type="Vector4" /> <param index="0" name="right" type="float" /> <description> + Multiplies each component of the [Vector4i] by the given [float]. + Returns a Vector4 value due to floating-point operations. + [codeblock] + print(Vector4i(10, 20, 30, 40) * 2) # Prints "(20, 40, 60, 80)" + [/codeblock] </description> </operator> <operator name="operator *"> <return type="Vector4i" /> <param index="0" name="right" type="int" /> <description> + Multiplies each component of the [Vector4i] by the given [int]. </description> </operator> <operator name="operator +"> <return type="Vector4i" /> <param index="0" name="right" type="Vector4i" /> <description> + Adds each component of the [Vector4i] by the components of the given [Vector4i]. + [codeblock] + print(Vector4i(10, 20, 30, 40) + Vector4i(3, 4, 5, 6)) # Prints "(13, 24, 35, 46)" + [/codeblock] </description> </operator> <operator name="operator -"> <return type="Vector4i" /> <param index="0" name="right" type="Vector4i" /> <description> + Subtracts each component of the [Vector4i] by the components of the given [Vector4i]. + [codeblock] + print(Vector4i(10, 20, 30, 40) - Vector4i(3, 4, 5, 6)) # Prints "(7, 16, 25, 34)" + [/codeblock] </description> </operator> <operator name="operator /"> <return type="Vector4i" /> <param index="0" name="right" type="Vector4i" /> <description> + Divides each component of the [Vector4i] by the components of the given [Vector4i]. + [codeblock] + print(Vector4i(10, 20, 30, 40) / Vector4i(2, 5, 3, 4)) # Prints "(5, 4, 10, 10)" + [/codeblock] </description> </operator> <operator name="operator /"> <return type="Vector4" /> <param index="0" name="right" type="float" /> <description> + Divides each component of the [Vector4i] by the given [float]. + Returns a Vector4 value due to floating-point operations. + [codeblock] + print(Vector4i(10, 20, 30, 40) / 2 # Prints "(5, 10, 15, 20)" + [/codeblock] </description> </operator> <operator name="operator /"> <return type="Vector4i" /> <param index="0" name="right" type="int" /> <description> + Divides each component of the [Vector4i] by the given [int]. </description> </operator> <operator name="operator <"> <return type="bool" /> <param index="0" name="right" type="Vector4i" /> <description> + Compares two [Vector4i] vectors by first checking if the X value of the left vector is less than the X value of the [param right] vector. If the X values are exactly equal, then it repeats this check with the Y values of the two vectors, Z values of the two vectors, and then with the W values. This operator is useful for sorting vectors. </description> </operator> <operator name="operator <="> <return type="bool" /> <param index="0" name="right" type="Vector4i" /> <description> + Compares two [Vector4i] vectors by first checking if the X value of the left vector is less than or equal to the X value of the [param right] vector. If the X values are exactly equal, then it repeats this check with the Y values of the two vectors, Z values of the two vectors, and then with the W values. This operator is useful for sorting vectors. </description> </operator> <operator name="operator =="> <return type="bool" /> <param index="0" name="right" type="Vector4i" /> <description> + Returns [code]true[/code] if the vectors are exactly equal. </description> </operator> <operator name="operator >"> <return type="bool" /> <param index="0" name="right" type="Vector4i" /> <description> + Compares two [Vector4i] vectors by first checking if the X value of the left vector is greater than the X value of the [param right] vector. If the X values are exactly equal, then it repeats this check with the Y values of the two vectors, Z values of the two vectors, and then with the W values. This operator is useful for sorting vectors. </description> </operator> <operator name="operator >="> <return type="bool" /> <param index="0" name="right" type="Vector4i" /> <description> + Compares two [Vector4i] vectors by first checking if the X value of the left vector is greater than or equal to the X value of the [param right] vector. If the X values are exactly equal, then it repeats this check with the Y values of the two vectors, Z values of the two vectors, and then with the W values. This operator is useful for sorting vectors. </description> </operator> <operator name="operator []"> <return type="int" /> <param index="0" name="index" type="int" /> <description> + Access vector components using their [param index]. [code]v[0][/code] is equivalent to [code]v.x[/code], [code]v[1][/code] is equivalent to [code]v.y[/code], [code]v[2][/code] is equivalent to [code]v.z[/code], and [code]v[3][/code] is equivalent to [code]v.w[/code]. </description> </operator> <operator name="operator unary+"> <return type="Vector4i" /> <description> + Returns the same value as if the [code]+[/code] was not there. Unary [code]+[/code] does nothing, but sometimes it can make your code more readable. </description> </operator> <operator name="operator unary-"> <return type="Vector4i" /> <description> + Returns the negative value of the [Vector4i]. This is the same as writing [code]Vector4i(-v.x, -v.y, -v.z, -v.w)[/code]. This operation flips the direction of the vector while keeping the same magnitude. </description> </operator> </operators> diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml index 0071834ccd..87ee26fa32 100644 --- a/doc/classes/Viewport.xml +++ b/doc/classes/Viewport.xml @@ -218,8 +218,11 @@ To control this property on the root viewport, set the [member ProjectSettings.rendering/mesh_lod/lod_change/threshold_pixels] project setting. [b]Note:[/b] [member mesh_lod_threshold] does not affect [GeometryInstance3D] visibility ranges (also known as "manual" LOD or hierarchical LOD). </member> - <member name="msaa" type="int" setter="set_msaa" getter="get_msaa" enum="Viewport.MSAA" default="0"> - The multisample anti-aliasing mode. A higher number results in smoother edges at the cost of significantly worse performance. A value of 2 or 4 is best unless targeting very high-end systems. See also bilinear scaling 3d [member scaling_3d_mode] for supersampling, which provides higher quality but is much more expensive. + <member name="msaa_2d" type="int" setter="set_msaa_2d" getter="get_msaa_2d" enum="Viewport.MSAA" default="0"> + The multisample anti-aliasing mode for 2D/Canvas rendering. A higher number results in smoother edges at the cost of significantly worse performance. A value of 2 or 4 is best unless targeting very high-end systems. This has no effect on shader-induced aliasing or texture aliasing. + </member> + <member name="msaa_3d" type="int" setter="set_msaa_3d" getter="get_msaa_3d" enum="Viewport.MSAA" default="0"> + The multisample anti-aliasing mode for 3D rendering. A higher number results in smoother edges at the cost of significantly worse performance. A value of 2 or 4 is best unless targeting very high-end systems. See also bilinear scaling 3d [member scaling_3d_mode] for supersampling, which provides higher quality but is much more expensive. This has no effect on shader-induced aliasing or texture aliasing. </member> <member name="own_world_3d" type="bool" setter="set_use_own_world_3d" getter="is_using_own_world_3d" default="false"> If [code]true[/code], the viewport will use a unique copy of the [World3D] defined in [member world_3d]. @@ -250,7 +253,7 @@ To control this property on the root viewport, set the [member ProjectSettings.rendering/scaling_3d/mode] project setting. </member> <member name="scaling_3d_scale" type="float" setter="set_scaling_3d_scale" getter="get_scaling_3d_scale" default="1.0"> - Scales the 3D render buffer based on the viewport size uses an image filter specified in [member ProjectSettings.rendering/scaling_3d/mode] to scale the output image to the full viewport size. Values lower than [code]1.0[/code] can be used to speed up 3D rendering at the cost of quality (undersampling). Values greater than [code]1.0[/code] are only valid for bilinear mode and can be used to improve 3D rendering quality at a high performance cost (supersampling). See also [member ProjectSettings.rendering/anti_aliasing/quality/msaa] for multi-sample antialiasing, which is significantly cheaper but only smoothens the edges of polygons. + Scales the 3D render buffer based on the viewport size uses an image filter specified in [member ProjectSettings.rendering/scaling_3d/mode] to scale the output image to the full viewport size. Values lower than [code]1.0[/code] can be used to speed up 3D rendering at the cost of quality (undersampling). Values greater than [code]1.0[/code] are only valid for bilinear mode and can be used to improve 3D rendering quality at a high performance cost (supersampling). See also [member ProjectSettings.rendering/anti_aliasing/quality/msaa_3d] for multi-sample antialiasing, which is significantly cheaper but only smooths the edges of polygons. When using FSR upscaling, AMD recommends exposing the following values as preset options to users "Ultra Quality: 0.77", "Quality: 0.67", "Balanced: 0.59", "Performance: 0.5" instead of exposing the entire scale. To control this property on the root viewport, set the [member ProjectSettings.rendering/scaling_3d/scale] project setting. </member> diff --git a/doc/classes/VisualShaderNodeBooleanUniform.xml b/doc/classes/VisualShaderNodeBooleanParameter.xml index 59b331aed2..47dae17dba 100644 --- a/doc/classes/VisualShaderNodeBooleanUniform.xml +++ b/doc/classes/VisualShaderNodeBooleanParameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeBooleanUniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeBooleanParameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A boolean uniform to be used within the visual shader graph. + A boolean parameter to be used within the visual shader graph. </brief_description> <description> Translated to [code]uniform bool[/code] in the shader language. diff --git a/doc/classes/VisualShaderNodeColorUniform.xml b/doc/classes/VisualShaderNodeColorParameter.xml index 5ca96dc285..0cc2285ed4 100644 --- a/doc/classes/VisualShaderNodeColorUniform.xml +++ b/doc/classes/VisualShaderNodeColorParameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeColorUniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeColorParameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A [Color] uniform to be used within the visual shader graph. + A [Color] parameter to be used within the visual shader graph. </brief_description> <description> Translated to [code]uniform vec4[/code] in the shader language. diff --git a/doc/classes/VisualShaderNodeCubemapUniform.xml b/doc/classes/VisualShaderNodeCubemapParameter.xml index 3f6addd16a..d0d3c79d03 100644 --- a/doc/classes/VisualShaderNodeCubemapUniform.xml +++ b/doc/classes/VisualShaderNodeCubemapParameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeCubemapUniform" inherits="VisualShaderNodeTextureUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeCubemapParameter" inherits="VisualShaderNodeTextureParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A [Cubemap] uniform node to be used within the visual shader graph. + A [Cubemap] parameter node to be used within the visual shader graph. </brief_description> <description> Translated to [code]uniform samplerCube[/code] in the shader language. The output value can be used as port for [VisualShaderNodeCubemap]. diff --git a/doc/classes/VisualShaderNodeFloatUniform.xml b/doc/classes/VisualShaderNodeFloatParameter.xml index 1616964edb..c0fd88294a 100644 --- a/doc/classes/VisualShaderNodeFloatUniform.xml +++ b/doc/classes/VisualShaderNodeFloatParameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeFloatUniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeFloatParameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A scalar float uniform to be used within the visual shader graph. + A scalar float parameter to be used within the visual shader graph. </brief_description> <description> Translated to [code]uniform float[/code] in the shader language. @@ -15,7 +15,7 @@ <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false"> Enables usage of the [member default_value]. </member> - <member name="hint" type="int" setter="set_hint" getter="get_hint" enum="VisualShaderNodeFloatUniform.Hint" default="0"> + <member name="hint" type="int" setter="set_hint" getter="get_hint" enum="VisualShaderNodeFloatParameter.Hint" default="0"> A hint applied to the uniform, which controls the values it can take when set through the inspector. </member> <member name="max" type="float" setter="set_max" getter="get_max" default="1.0"> diff --git a/doc/classes/VisualShaderNodeIntParameter.xml b/doc/classes/VisualShaderNodeIntParameter.xml new file mode 100644 index 0000000000..70335b0c77 --- /dev/null +++ b/doc/classes/VisualShaderNodeIntParameter.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="VisualShaderNodeIntParameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> + <members> + <member name="default_value" type="int" setter="set_default_value" getter="get_default_value" default="0"> + </member> + <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false"> + </member> + <member name="hint" type="int" setter="set_hint" getter="get_hint" enum="VisualShaderNodeIntParameter.Hint" default="0"> + </member> + <member name="max" type="int" setter="set_max" getter="get_max" default="100"> + </member> + <member name="min" type="int" setter="set_min" getter="get_min" default="0"> + </member> + <member name="step" type="int" setter="set_step" getter="get_step" default="1"> + </member> + </members> + <constants> + <constant name="HINT_NONE" value="0" enum="Hint"> + </constant> + <constant name="HINT_RANGE" value="1" enum="Hint"> + </constant> + <constant name="HINT_RANGE_STEP" value="2" enum="Hint"> + </constant> + <constant name="HINT_MAX" value="3" enum="Hint"> + </constant> + </constants> +</class> diff --git a/doc/classes/VisualShaderNodeIntUniform.xml b/doc/classes/VisualShaderNodeIntUniform.xml deleted file mode 100644 index c83bdb5ad6..0000000000 --- a/doc/classes/VisualShaderNodeIntUniform.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeIntUniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> - <brief_description> - A scalar integer uniform to be used within the visual shader graph. - </brief_description> - <description> - Translated to [code]uniform int[/code] in the shader language. - </description> - <tutorials> - </tutorials> - <members> - <member name="default_value" type="int" setter="set_default_value" getter="get_default_value" default="0"> - A default value to be assigned within the shader. - </member> - <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false"> - Enables usage of the [member default_value]. - </member> - <member name="hint" type="int" setter="set_hint" getter="get_hint" enum="VisualShaderNodeIntUniform.Hint" default="0"> - A hint applied to the uniform, which controls the values it can take when set through the inspector. - </member> - <member name="max" type="int" setter="set_max" getter="get_max" default="100"> - Minimum value for range hints. Used if [member hint] is set to [constant HINT_RANGE] or [constant HINT_RANGE_STEP]. - </member> - <member name="min" type="int" setter="set_min" getter="get_min" default="0"> - Maximum value for range hints. Used if [member hint] is set to [constant HINT_RANGE] or [constant HINT_RANGE_STEP]. - </member> - <member name="step" type="int" setter="set_step" getter="get_step" default="1"> - Step (increment) value for the range hint with step. Used if [member hint] is set to [constant HINT_RANGE_STEP]. - </member> - </members> - <constants> - <constant name="HINT_NONE" value="0" enum="Hint"> - No hint used. - </constant> - <constant name="HINT_RANGE" value="1" enum="Hint"> - A range hint for scalar value, which limits possible input values between [member min] and [member max]. Translated to [code]hint_range(min, max)[/code] in shader code. - </constant> - <constant name="HINT_RANGE_STEP" value="2" enum="Hint"> - A range hint for scalar value with step, which limits possible input values between [member min] and [member max], with a step (increment) of [member step]). Translated to [code]hint_range(min, max, step)[/code] in shader code. - </constant> - <constant name="HINT_MAX" value="3" enum="Hint"> - Represents the size of the [enum Hint] enum. - </constant> - </constants> -</class> diff --git a/doc/classes/VisualShaderNodeParameter.xml b/doc/classes/VisualShaderNodeParameter.xml new file mode 100644 index 0000000000..c66022f77d --- /dev/null +++ b/doc/classes/VisualShaderNodeParameter.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="VisualShaderNodeParameter" inherits="VisualShaderNode" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + A base type for the parameters within the visual shader graph. + </brief_description> + <description> + A parameter represents a variable in the shader which is set externally, i.e. from the [ShaderMaterial]. Parameters are exposed as properties in the [ShaderMaterial] and can be assigned from the inspector or from a script. + </description> + <tutorials> + </tutorials> + <members> + <member name="parameter_name" type="String" setter="set_parameter_name" getter="get_parameter_name" default=""""> + Name of the parameter, by which it can be accessed through the [ShaderMaterial] properties. + </member> + <member name="qualifier" type="int" setter="set_qualifier" getter="get_qualifier" enum="VisualShaderNodeParameter.Qualifier" default="0"> + </member> + </members> + <constants> + <constant name="QUAL_NONE" value="0" enum="Qualifier"> + </constant> + <constant name="QUAL_GLOBAL" value="1" enum="Qualifier"> + </constant> + <constant name="QUAL_INSTANCE" value="2" enum="Qualifier"> + </constant> + <constant name="QUAL_MAX" value="3" enum="Qualifier"> + Represents the size of the [enum Qualifier] enum. + </constant> + </constants> +</class> diff --git a/doc/classes/VisualShaderNodeParameterRef.xml b/doc/classes/VisualShaderNodeParameterRef.xml new file mode 100644 index 0000000000..b2801183ed --- /dev/null +++ b/doc/classes/VisualShaderNodeParameterRef.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="VisualShaderNodeParameterRef" inherits="VisualShaderNode" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + A reference to an existing [VisualShaderNodeParameter]. + </brief_description> + <description> + Creating a reference to a [VisualShaderNodeParameter] allows you to reuse this parameter in different shaders or shader stages easily. + </description> + <tutorials> + </tutorials> + <members> + <member name="parameter_name" type="String" setter="set_parameter_name" getter="get_parameter_name" default=""[None]""> + The name of the parameter which this reference points to. + </member> + </members> +</class> diff --git a/doc/classes/VisualShaderNodeTexture2DArrayParameter.xml b/doc/classes/VisualShaderNodeTexture2DArrayParameter.xml new file mode 100644 index 0000000000..2afaa8e219 --- /dev/null +++ b/doc/classes/VisualShaderNodeTexture2DArrayParameter.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="VisualShaderNodeTexture2DArrayParameter" inherits="VisualShaderNodeTextureParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + </brief_description> + <description> + </description> + <tutorials> + </tutorials> +</class> diff --git a/doc/classes/VisualShaderNodeTexture2DArrayUniform.xml b/doc/classes/VisualShaderNodeTexture2DArrayUniform.xml deleted file mode 100644 index f8ba796c2e..0000000000 --- a/doc/classes/VisualShaderNodeTexture2DArrayUniform.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeTexture2DArrayUniform" inherits="VisualShaderNodeTextureUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> - <brief_description> - </brief_description> - <description> - </description> - <tutorials> - </tutorials> -</class> diff --git a/doc/classes/VisualShaderNodeTexture2DParameter.xml b/doc/classes/VisualShaderNodeTexture2DParameter.xml new file mode 100644 index 0000000000..5049a63a0e --- /dev/null +++ b/doc/classes/VisualShaderNodeTexture2DParameter.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="VisualShaderNodeTexture2DParameter" inherits="VisualShaderNodeTextureParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Provides a 2D texture parameter within the visual shader graph. + </brief_description> + <description> + Translated to [code]uniform sampler2D[/code] in the shader language. + </description> + <tutorials> + </tutorials> +</class> diff --git a/doc/classes/VisualShaderNodeTexture3DParameter.xml b/doc/classes/VisualShaderNodeTexture3DParameter.xml new file mode 100644 index 0000000000..8ad4de9a22 --- /dev/null +++ b/doc/classes/VisualShaderNodeTexture3DParameter.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<class name="VisualShaderNodeTexture3DParameter" inherits="VisualShaderNodeTextureParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> + <brief_description> + Provides a 3D texture parameter within the visual shader graph. + </brief_description> + <description> + Translated to [code]uniform sampler3D[/code] in the shader language. + </description> + <tutorials> + </tutorials> +</class> diff --git a/doc/classes/VisualShaderNodeTexture3DUniform.xml b/doc/classes/VisualShaderNodeTexture3DUniform.xml deleted file mode 100644 index 365c7db02e..0000000000 --- a/doc/classes/VisualShaderNodeTexture3DUniform.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeTexture3DUniform" inherits="VisualShaderNodeTextureUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> - <brief_description> - Provides a 3D texture uniform within the visual shader graph. - </brief_description> - <description> - Translated to [code]uniform sampler3D[/code] in the shader language. - </description> - <tutorials> - </tutorials> -</class> diff --git a/doc/classes/VisualShaderNodeTextureUniform.xml b/doc/classes/VisualShaderNodeTextureParameter.xml index 9014f79f54..ad21c4e990 100644 --- a/doc/classes/VisualShaderNodeTextureUniform.xml +++ b/doc/classes/VisualShaderNodeTextureParameter.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeTextureUniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeTextureParameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Performs a uniform texture lookup within the visual shader graph. </brief_description> @@ -9,16 +9,16 @@ <tutorials> </tutorials> <members> - <member name="color_default" type="int" setter="set_color_default" getter="get_color_default" enum="VisualShaderNodeTextureUniform.ColorDefault" default="0"> + <member name="color_default" type="int" setter="set_color_default" getter="get_color_default" enum="VisualShaderNodeTextureParameter.ColorDefault" default="0"> Sets the default color if no texture is assigned to the uniform. </member> - <member name="texture_filter" type="int" setter="set_texture_filter" getter="get_texture_filter" enum="VisualShaderNodeTextureUniform.TextureFilter" default="0"> + <member name="texture_filter" type="int" setter="set_texture_filter" getter="get_texture_filter" enum="VisualShaderNodeTextureParameter.TextureFilter" default="0"> Sets the texture filtering mode. See [enum TextureFilter] for options. </member> - <member name="texture_repeat" type="int" setter="set_texture_repeat" getter="get_texture_repeat" enum="VisualShaderNodeTextureUniform.TextureRepeat" default="0"> + <member name="texture_repeat" type="int" setter="set_texture_repeat" getter="get_texture_repeat" enum="VisualShaderNodeTextureParameter.TextureRepeat" default="0"> Sets the texture repeating mode. See [enum TextureRepeat] for options. </member> - <member name="texture_type" type="int" setter="set_texture_type" getter="get_texture_type" enum="VisualShaderNodeTextureUniform.TextureType" default="0"> + <member name="texture_type" type="int" setter="set_texture_type" getter="get_texture_type" enum="VisualShaderNodeTextureParameter.TextureType" default="0"> Defines the type of data provided by the source texture. See [enum TextureType] for options. </member> </members> diff --git a/doc/classes/VisualShaderNodeTextureUniformTriplanar.xml b/doc/classes/VisualShaderNodeTextureParameterTriplanar.xml index 72082ef04d..2b019e08d5 100644 --- a/doc/classes/VisualShaderNodeTextureUniformTriplanar.xml +++ b/doc/classes/VisualShaderNodeTextureParameterTriplanar.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeTextureUniformTriplanar" inherits="VisualShaderNodeTextureUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeTextureParameterTriplanar" inherits="VisualShaderNodeTextureParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> Performs a uniform texture lookup with triplanar within the visual shader graph. </brief_description> diff --git a/doc/classes/VisualShaderNodeTransformUniform.xml b/doc/classes/VisualShaderNodeTransformParameter.xml index 60678c09e5..92aadc4d7c 100644 --- a/doc/classes/VisualShaderNodeTransformUniform.xml +++ b/doc/classes/VisualShaderNodeTransformParameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeTransformUniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeTransformParameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A [Transform3D] uniform for use within the visual shader graph. + A [Transform3D] parameter for use within the visual shader graph. </brief_description> <description> Translated to [code]uniform mat4[/code] in the shader language. diff --git a/doc/classes/VisualShaderNodeUniform.xml b/doc/classes/VisualShaderNodeUniform.xml deleted file mode 100644 index 58d194e9d4..0000000000 --- a/doc/classes/VisualShaderNodeUniform.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeUniform" inherits="VisualShaderNode" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> - <brief_description> - A base type for the uniforms within the visual shader graph. - </brief_description> - <description> - A uniform represents a variable in the shader which is set externally, i.e. from the [ShaderMaterial]. Uniforms are exposed as properties in the [ShaderMaterial] and can be assigned from the inspector or from a script. - </description> - <tutorials> - </tutorials> - <members> - <member name="qualifier" type="int" setter="set_qualifier" getter="get_qualifier" enum="VisualShaderNodeUniform.Qualifier" default="0"> - </member> - <member name="uniform_name" type="String" setter="set_uniform_name" getter="get_uniform_name" default=""""> - Name of the uniform, by which it can be accessed through the [ShaderMaterial] properties. - </member> - </members> - <constants> - <constant name="QUAL_NONE" value="0" enum="Qualifier"> - </constant> - <constant name="QUAL_GLOBAL" value="1" enum="Qualifier"> - </constant> - <constant name="QUAL_INSTANCE" value="2" enum="Qualifier"> - </constant> - <constant name="QUAL_MAX" value="3" enum="Qualifier"> - Represents the size of the [enum Qualifier] enum. - </constant> - </constants> -</class> diff --git a/doc/classes/VisualShaderNodeUniformRef.xml b/doc/classes/VisualShaderNodeUniformRef.xml deleted file mode 100644 index 4b12c6e649..0000000000 --- a/doc/classes/VisualShaderNodeUniformRef.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeUniformRef" inherits="VisualShaderNode" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> - <brief_description> - A reference to an existing [VisualShaderNodeUniform]. - </brief_description> - <description> - Creating a reference to a [VisualShaderNodeUniform] allows you to reuse this uniform in different shaders or shader stages easily. - </description> - <tutorials> - </tutorials> - <members> - <member name="uniform_name" type="String" setter="set_uniform_name" getter="get_uniform_name" default=""[None]""> - The name of the uniform which this reference points to. - </member> - </members> -</class> diff --git a/doc/classes/VisualShaderNodeVec2Uniform.xml b/doc/classes/VisualShaderNodeVec2Parameter.xml index 4ad6279475..19cf1baa86 100644 --- a/doc/classes/VisualShaderNodeVec2Uniform.xml +++ b/doc/classes/VisualShaderNodeVec2Parameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeVec2Uniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeVec2Parameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A [Vector2] uniform to be used within the visual shader graph. + A [Vector2] parameter to be used within the visual shader graph. </brief_description> <description> Translated to [code]uniform vec2[/code] in the shader language. diff --git a/doc/classes/VisualShaderNodeVec3Uniform.xml b/doc/classes/VisualShaderNodeVec3Parameter.xml index f712c89463..17d4b31d1a 100644 --- a/doc/classes/VisualShaderNodeVec3Uniform.xml +++ b/doc/classes/VisualShaderNodeVec3Parameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeVec3Uniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeVec3Parameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A [Vector3] uniform to be used within the visual shader graph. + A [Vector3] parameter to be used within the visual shader graph. </brief_description> <description> Translated to [code]uniform vec3[/code] in the shader language. diff --git a/doc/classes/VisualShaderNodeVec4Constant.xml b/doc/classes/VisualShaderNodeVec4Constant.xml index ed3d8a673d..ddd2f38fb9 100644 --- a/doc/classes/VisualShaderNodeVec4Constant.xml +++ b/doc/classes/VisualShaderNodeVec4Constant.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="VisualShaderNodeVec4Constant" inherits="VisualShaderNodeConstant" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A 4D vector (represented as a [Quaternion]) constant to be used within the visual shader graph. + A 4D vector constant to be used within the visual shader graph. </brief_description> <description> - A constant 4D vector (represented as a [Quaternion]), which can be used as an input node. + A constant 4D vector, which can be used as an input node. </description> <tutorials> </tutorials> diff --git a/doc/classes/VisualShaderNodeVec4Uniform.xml b/doc/classes/VisualShaderNodeVec4Parameter.xml index 5bd13a440b..0e9e7c6b6f 100644 --- a/doc/classes/VisualShaderNodeVec4Uniform.xml +++ b/doc/classes/VisualShaderNodeVec4Parameter.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" ?> -<class name="VisualShaderNodeVec4Uniform" inherits="VisualShaderNodeUniform" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> +<class name="VisualShaderNodeVec4Parameter" inherits="VisualShaderNodeParameter" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - A 4D vector (represented as a [Quaternion]) uniform to be used within the visual shader graph. + A 4D vector parameter to be used within the visual shader graph. </brief_description> <description> Translated to [code]uniform vec4[/code] in the shader language. @@ -9,7 +9,7 @@ <tutorials> </tutorials> <members> - <member name="default_value" type="Quaternion" setter="set_default_value" getter="get_default_value" default="Quaternion(0, 0, 0, 1)"> + <member name="default_value" type="Vector4" setter="set_default_value" getter="get_default_value" default="Vector4(0, 0, 0, 0)"> A default value to be assigned within the shader. </member> <member name="default_value_enabled" type="bool" setter="set_default_value_enabled" getter="is_default_value_enabled" default="false"> diff --git a/doc/classes/VoxelGI.xml b/doc/classes/VoxelGI.xml index ba4995a5fb..394611b78f 100644 --- a/doc/classes/VoxelGI.xml +++ b/doc/classes/VoxelGI.xml @@ -32,6 +32,9 @@ </method> </methods> <members> + <member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes"> + The [CameraAttributes] resource that specifies exposure levels to bake at. Auto-exposure and non exposure properties will be ignored. Exposure settings should be used to reduce the dynamic range present when baking. If exposure is too high, the [VoxelGI] will have banding artifacts or may have over-exposure artifacts. + </member> <member name="data" type="VoxelGIData" setter="set_probe_data" getter="get_probe_data"> The [VoxelGIData] resource that holds the data for this [VoxelGI]. </member> diff --git a/doc/classes/Window.xml b/doc/classes/Window.xml index 2c0a694ef9..c585b54ee1 100644 --- a/doc/classes/Window.xml +++ b/doc/classes/Window.xml @@ -381,7 +381,8 @@ Note that behavior might be different depending on the platform. </member> <member name="transparent" type="bool" setter="set_flag" getter="get_flag" default="false"> - If [code]true[/code], the [Window]'s background can be transparent. This is best used with embedded windows. Currently non-embedded [Window] transparency is implemented only for MacOS. + If [code]true[/code], the [Window]'s background can be transparent. This is best used with embedded windows. + [b]Note:[/b] This flag has no effect if [member ProjectSettings.display/window/per_pixel_transparency/allowed] is set to [code]false[/code]. </member> <member name="unfocusable" type="bool" setter="set_flag" getter="get_flag" default="false"> If [code]true[/code], the [Window] can't be focused nor interacted with. It can still be visible. @@ -454,6 +455,11 @@ Emitted when the [constant NOTIFICATION_THEME_CHANGED] notification is sent. </description> </signal> + <signal name="titlebar_changed"> + <description> + Emitted when window title bar decorations are changed, e.g., macOS window enter/exit full screen mode, or extend-to-title flag is changed. + </description> + </signal> <signal name="visibility_changed"> <description> Emitted when [Window] is made visible or disappears. diff --git a/doc/classes/World3D.xml b/doc/classes/World3D.xml index 56a662d062..f3c7136075 100644 --- a/doc/classes/World3D.xml +++ b/doc/classes/World3D.xml @@ -10,7 +10,8 @@ <link title="Ray-casting">$DOCS_URL/tutorials/physics/ray-casting.html</link> </tutorials> <members> - <member name="camera_effects" type="CameraEffects" setter="set_camera_effects" getter="get_camera_effects"> + <member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes"> + The default [CameraAttributes] resource to use if none set on the [Camera3D]. </member> <member name="direct_space_state" type="PhysicsDirectSpaceState3D" setter="" getter="get_direct_space_state"> Direct access to the world's physics 3D space state. Used for querying current and potential collisions. diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml index ed8f0b9a04..5255179bb8 100644 --- a/doc/classes/WorldEnvironment.xml +++ b/doc/classes/WorldEnvironment.xml @@ -15,8 +15,8 @@ <link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link> </tutorials> <members> - <member name="camera_effects" type="CameraEffects" setter="set_camera_effects" getter="get_camera_effects"> - The [CameraEffects] resource used by this [WorldEnvironment], defining the default properties. This [CameraEffects] resource will be used by all [Camera3D]s that do not define their own [CameraEffects]. + <member name="camera_attributes" type="CameraAttributes" setter="set_camera_attributes" getter="get_camera_attributes"> + The default [CameraAttributes] resource to use if none set on the [Camera3D]. </member> <member name="environment" type="Environment" setter="set_environment" getter="get_environment"> The [Environment] resource used by this [WorldEnvironment], defining the default properties. diff --git a/doc/classes/X509Certificate.xml b/doc/classes/X509Certificate.xml index d8f54d0ec5..37b202a513 100644 --- a/doc/classes/X509Certificate.xml +++ b/doc/classes/X509Certificate.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="UTF-8" ?> <class name="X509Certificate" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd"> <brief_description> - An X509 certificate (e.g. for SSL). + An X509 certificate (e.g. for TLS). </brief_description> <description> The X509Certificate class represents an X509 certificate. Certificates can be loaded and saved like any other [Resource]. - They can be used as the server certificate in [method StreamPeerSSL.accept_stream] (along with the proper [CryptoKey]), and to specify the only certificate that should be accepted when connecting to an SSL server via [method StreamPeerSSL.connect_to_stream]. + They can be used as the server certificate in [method StreamPeerTLS.accept_stream] (along with the proper [CryptoKey]), and to specify the only certificate that should be accepted when connecting to an TLS server via [method StreamPeerTLS.connect_to_stream]. </description> <tutorials> </tutorials> |