diff options
50 files changed, 1297 insertions, 781 deletions
diff --git a/DONORS.md b/DONORS.md new file mode 100644 index 0000000000..09049ede48 --- /dev/null +++ b/DONORS.md @@ -0,0 +1,141 @@ +# Donors to the Godot Engine project + +Godot Engine is a non-profit project developed by a community of voluntary +contributors, as well as occasional paid contributors thanks to the financial +support of generous donors. + +The ways to donate to the project, as well as details on how the funds are +used, are described on [Godot's website](https://godotengine.org/donate). + +The following is a list of the current monthly donors, to be have their +generous deed immortalized in the next stable release of Godot Engine. + +## Platinum sponsors + +None so far, but your company could be the first! :) + +## Gold sponsors + + Gamblify <https://www.gamblify.com> + +## Mini sponsors + + Arron Washington + Chrisartguy + Christian Uldall Pedersen + Hein-Pieter van Braam + Matthieu Huvé + Neal Gompa (Conan Kudo) + Olimpiu Metiu + Ruslan Mustakov + +## Gold donors + + Alexander Otto + Jake Bo + Javier + Nathan Warden + Ranoller + Rémi Verschelde + Stephan Lanfermann + + Andreas Schüle + Bernhard Liebl + Jordan M Lucas + + BanjoNode2D + Chris Serino + Conrad Curry + Craig Smith + David Churchill + Dean Harmon + Guilherme Felipe de C. G. da Silva + Henrique Alves + Laurence Bannister + Leo + Przemysław Gołąb (n-pigeon) + Robert Willes + Robin Arys + summerblind + Testus Maximus + Thomas Bjarnelöf + + Amanda Haldy + Andreas Haas + Bryanna M + Cody Parker + D + Ezra Theunissen + flesk + François Cantin + Hendrik Mans + Jeppe Zapp + Johannes Wuensch + Justin Arnold + Justo Delgado Baudí + Leandro Voltolino + Myles + Robert Podgorski + Scott Beacon + x1212 + +## Silver donors + + Alex Barsukov + Avencherus + Bastian Böhm + Ben Vercammen + Bryan Stevenson + Collin Shooltz + Fabian Becker + fengjiongmax + Geequlim + Gerrit Großkopf + Guldoman + hatniX + HeartBeast + Heribert Hirth + Hunter Jones + imekon + Jacob McKenney + Jonathon + Josh 'Cheeseness' Bush + Julian Murgia + Juraj Móza + Kevin Boyer + Klavdij Voncina + Lisandro Lorea + magodev + Martin Novák + Matthew Fitzpatrick + Matthew Valancy + Matthias Hölzl + Max R.R. Collada + Michael Gringauz + Mikael Olsson + Moritz Laass + nee + nvgrod + Pablo Seibelt + Pan Ip + Paul Mason + Paweł Kowal + Pietro Vertechi + rayos + Richman Stewart + Roger Smith + Sam Van Campenhout + Sam Vila + Sasori Olkof + Sootstone + Tavo Tell + Tom Larrow + Trent McPheron + Troy Bonneau + UltyX + Xananax & karroffel + +## Bronze donors + +There are even more donors that support the project with a small monthly donation. +Every bit counts and we thank every one of them for their amazing support! diff --git a/core/math/matrix3.cpp b/core/math/matrix3.cpp index 9732a1ff37..4051de7afb 100644 --- a/core/math/matrix3.cpp +++ b/core/math/matrix3.cpp @@ -234,7 +234,22 @@ Basis Basis::scaled(const Vector3 &p_scale) const { return m; } +void Basis::set_scale(const Vector3 &p_scale) { + + set_axis(0, get_axis(0).normalized() * p_scale.x); + set_axis(1, get_axis(1).normalized() * p_scale.y); + set_axis(2, get_axis(2).normalized() * p_scale.z); +} + Vector3 Basis::get_scale() const { + + return Vector3( + Vector3(elements[0][0], elements[1][0], elements[2][0]).length(), + Vector3(elements[0][1], elements[1][1], elements[2][1]).length(), + Vector3(elements[0][2], elements[1][2], elements[2][2]).length()); +} + +Vector3 Basis::get_signed_scale() const { // FIXME: We are assuming M = R.S (R is rotation and S is scaling), and use polar decomposition to extract R and S. // A polar decomposition is M = O.P, where O is an orthogonal matrix (meaning rotation and reflection) and // P is a positive semi-definite matrix (meaning it contains absolute values of scaling along its diagonal). diff --git a/core/math/matrix3.h b/core/math/matrix3.h index 9c9080ac46..23429888e0 100644 --- a/core/math/matrix3.h +++ b/core/math/matrix3.h @@ -97,7 +97,9 @@ public: void scale(const Vector3 &p_scale); Basis scaled(const Vector3 &p_scale) const; + void set_scale(const Vector3 &p_scale); Vector3 get_scale() const; + Vector3 get_signed_scale() const; // transposed dot products _FORCE_INLINE_ real_t tdotx(const Vector3 &v) const { diff --git a/core/math/transform.cpp b/core/math/transform.cpp index 60df69a509..638a39ab73 100644 --- a/core/math/transform.cpp +++ b/core/math/transform.cpp @@ -118,17 +118,17 @@ Transform Transform::interpolate_with(const Transform &p_transform, real_t p_c) /* not sure if very "efficient" but good enough? */ - Vector3 src_scale = basis.get_scale(); - Quat src_rot = basis; + Vector3 src_scale = basis.get_signed_scale(); + Quat src_rot = basis.orthonormalized(); Vector3 src_loc = origin; - Vector3 dst_scale = p_transform.basis.get_scale(); + Vector3 dst_scale = p_transform.basis.get_signed_scale(); Quat dst_rot = p_transform.basis; Vector3 dst_loc = p_transform.origin; - Transform dst; - dst.basis = src_rot.slerp(dst_rot, p_c); - dst.basis.scale(src_scale.linear_interpolate(dst_scale, p_c)); + Transform dst; //this could be made faster by using a single function in Basis.. + dst.basis = src_rot.slerp(dst_rot, p_c).normalized(); + dst.basis.set_scale(src_scale.linear_interpolate(dst_scale, p_c)); dst.origin = src_loc.linear_interpolate(dst_loc, p_c); return dst; diff --git a/core/script_language.h b/core/script_language.h index 342d8c8072..2261737f9a 100644 --- a/core/script_language.h +++ b/core/script_language.h @@ -206,6 +206,7 @@ public: virtual int find_function(const String &p_function, const String &p_code) const = 0; virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const = 0; virtual Error open_in_external_editor(const Ref<Script> &p_script, int p_line, int p_col) { return ERR_UNAVAILABLE; } + virtual bool overrides_external_editor() { return false; } virtual Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_force, String &r_call_hint) { return ERR_UNAVAILABLE; } diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 96d515de5e..ad597c8fdc 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -2274,7 +2274,7 @@ </description> </method> <method name="get_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="ARVRServer.TrackerType"> </return> <description> </description> @@ -2553,7 +2553,7 @@ </argument> <argument index="1" name="pos" type="Vector3"> </argument> - <argument index="2" name="weight_scale" type="float" default="null"> + <argument index="2" name="weight_scale" type="float" default="1.0"> </argument> <description> Add a new point at the given position [code]pos[/code] with the given identifier [code]id[/code]. The [code]weight_scale[/code] has to be 1 or larger. @@ -2584,7 +2584,7 @@ </argument> <argument index="1" name="to_id" type="int"> </argument> - <argument index="2" name="bidirectional" type="bool" default="null"> + <argument index="2" name="bidirectional" type="bool" default="true"> </argument> <description> Create a segment between points [code]id[/code] and [code]to_id[/code]. @@ -2702,7 +2702,7 @@ </argument> <argument index="1" name="right" type="bool" default="false"> </argument> - <argument index="2" name="action" type="String" default="null"> + <argument index="2" name="action" type="String" default=""""> </argument> <description> Add custom button to the dialog and return the created button. @@ -3086,7 +3086,7 @@ </return> <argument index="0" name="type" type="int" enum="Animation.TrackType"> </argument> - <argument index="1" name="at_pos" type="int" default="null"> + <argument index="1" name="at_pos" type="int" default="-1"> </argument> <description> Add a track to the Animation. The track type must be specified as any of the values in the TYPE_* enumeration. @@ -3214,7 +3214,7 @@ </argument> <argument index="1" name="time" type="float"> </argument> - <argument index="2" name="exact" type="bool" default="null"> + <argument index="2" name="exact" type="bool" default="false"> </argument> <description> Find the key index by time in a given track. Optionally, only find it if the exact time is given. @@ -3229,7 +3229,7 @@ </description> </method> <method name="track_get_interpolation_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Animation.InterpolationType"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -3289,7 +3289,7 @@ </description> </method> <method name="track_get_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Animation.TrackType"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -3306,7 +3306,7 @@ </argument> <argument index="2" name="key" type="Variant"> </argument> - <argument index="3" name="transition" type="float" default="null"> + <argument index="3" name="transition" type="float" default="1"> </argument> <description> Insert a generic key in a given track. @@ -3472,7 +3472,7 @@ </description> </method> <method name="value_track_get_update_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Animation.UpdateMode"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -3526,7 +3526,7 @@ </description> <methods> <method name="add_animation"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="name" type="String"> </argument> @@ -3603,7 +3603,7 @@ </description> </method> <method name="get_animation_process_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="AnimationPlayer.AnimationProcessMode"> </return> <description> Return the mode in which the animation player processes. See [method set_animation_process_mode]. @@ -3702,13 +3702,13 @@ <method name="play"> <return type="void"> </return> - <argument index="0" name="name" type="String" default="false"> + <argument index="0" name="name" type="String" default=""""> </argument> - <argument index="1" name="custom_blend" type="float" default="1.0"> + <argument index="1" name="custom_blend" type="float" default="-1"> </argument> - <argument index="2" name="custom_speed" type="float" default="-1"> + <argument index="2" name="custom_speed" type="float" default="1.0"> </argument> - <argument index="3" name="from_end" type="bool" default=""""> + <argument index="3" name="from_end" type="bool" default="false"> </argument> <description> Play a given animation by the animation name. Custom speed and blend times can be set. If custom speed is negative (-1), 'from_end' being true can play the animation backwards. @@ -3717,9 +3717,9 @@ <method name="play_backwards"> <return type="void"> </return> - <argument index="0" name="name" type="String" default="-1"> + <argument index="0" name="name" type="String" default=""""> </argument> - <argument index="1" name="custom_blend" type="float" default=""""> + <argument index="1" name="custom_blend" type="float" default="-1"> </argument> <description> Play a given animation by the animation name in reverse. @@ -3759,7 +3759,7 @@ </return> <argument index="0" name="pos_sec" type="float"> </argument> - <argument index="1" name="update" type="bool" default="null"> + <argument index="1" name="update" type="bool" default="false"> </argument> <description> Seek the animation to a given position in time (in seconds). If 'update' is true, the animation will be updated too, otherwise it will be updated at process time. @@ -4055,7 +4055,7 @@ </description> </method> <method name="connect_nodes"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="id" type="String"> </argument> @@ -4077,7 +4077,7 @@ </description> </method> <method name="get_animation_process_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="AnimationTreePlayer.AnimationProcessMode"> </return> <description> </description> @@ -4162,7 +4162,7 @@ </description> </method> <method name="node_get_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="AnimationTreePlayer.NodeType"> </return> <argument index="0" name="id" type="String"> </argument> @@ -4171,7 +4171,7 @@ </description> </method> <method name="node_rename"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="node" type="String"> </argument> @@ -4632,7 +4632,7 @@ </description> </method> <method name="get_space_override_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Area.SpaceOverride"> </return> <description> Return the space override mode. @@ -5106,7 +5106,7 @@ </description> </method> <method name="get_space_override_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Area2D.SpaceOverride"> </return> <description> Return the space override mode. @@ -5670,7 +5670,7 @@ <argument index="1" name="func" type="String"> </argument> <description> - Sort the array using a custom method. The arguments are an object that holds the method and the name of such method. The custom method receives two arguments (a pair of elements from the array) and must return true if the first argument is less than the second, and return false otherwise. + Sort the array using a custom method. The arguments are an object that holds the method and the name of such method. The custom method receives two arguments (a pair of elements from the array) and must return true if the first argument is less than the second, and return false otherwise. Note: you cannot randomize the return value as the heapsort algorithm expects a deterministic result. Doing so will result in unexpected behavior. </description> </method> </methods> @@ -5698,9 +5698,9 @@ </argument> <argument index="1" name="arrays" type="Array"> </argument> - <argument index="2" name="blend_shapes" type="Array" default="null"> + <argument index="2" name="blend_shapes" type="Array" default="[ ]"> </argument> - <argument index="3" name="compress_flags" type="int" default="null"> + <argument index="3" name="compress_flags" type="int" default="97792"> </argument> <description> Create a new surface ([method get_surface_count] that will become surf_idx for this. @@ -5726,7 +5726,7 @@ </description> </method> <method name="get_blend_shape_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Mesh.BlendShapeMode"> </return> <description> </description> @@ -5819,7 +5819,7 @@ </description> </method> <method name="surface_get_primitive_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Mesh.PrimitiveType"> </return> <argument index="0" name="surf_idx" type="int"> </argument> @@ -6630,7 +6630,7 @@ </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioEffectDistortion.Mode"> </return> <description> </description> @@ -6780,7 +6780,7 @@ </description> </method> <method name="get_db" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioEffectFilter.FilterDB"> </return> <description> </description> @@ -7340,7 +7340,7 @@ </argument> <argument index="1" name="effect" type="AudioEffect"> </argument> - <argument index="2" name="at_pos" type="int" default="null"> + <argument index="2" name="at_pos" type="int" default="-1"> </argument> <description> </description> @@ -7434,7 +7434,7 @@ </description> </method> <method name="get_speaker_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioServer.SpeakerMode"> </return> <description> </description> @@ -7720,7 +7720,7 @@ </description> </method> <method name="get_mix_target" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioStreamPlayer.MixTarget"> </return> <description> </description> @@ -8032,7 +8032,7 @@ </description> </method> <method name="get_attenuation_model" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioStreamPlayer3D.AttenuationModel"> </return> <description> </description> @@ -8044,7 +8044,7 @@ </description> </method> <method name="get_doppler_tracking" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioStreamPlayer3D.DopplerTracking"> </return> <description> </description> @@ -8074,7 +8074,7 @@ </description> </method> <method name="get_out_of_range_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioStreamPlayer3D.OutOfRangeMode"> </return> <description> </description> @@ -8390,7 +8390,7 @@ </description> </method> <method name="get_format" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioStreamSample.Format"> </return> <description> </description> @@ -8408,7 +8408,7 @@ </description> </method> <method name="get_loop_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="AudioStreamSample.LoopMode"> </return> <description> </description> @@ -8510,7 +8510,7 @@ </description> <methods> <method name="get_copy_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="BackBufferCopy.CopyMode"> </return> <description> Return the copy mode currently applied to the BackBufferCopy (refer to constants section). @@ -8585,7 +8585,7 @@ </description> </method> <method name="get_action_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="BaseButton.ActionMode"> </return> <description> Return the current mode of action (see [method set_action_mode]) (one of the ACTION_MODE_* constants). @@ -8598,14 +8598,14 @@ </description> </method> <method name="get_draw_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="BaseButton.DrawMode"> </return> <description> Return the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the DRAW_* enum. </description> </method> <method name="get_enabled_focus_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Control.FocusMode"> </return> <description> Returns focus access mode used when switching between enabled/disabled (see [method Control.set_focus_mode] and [method set_disabled]). @@ -9030,9 +9030,9 @@ </argument> <argument index="2" name="rect" type="Rect2"> </argument> - <argument index="3" name="align" type="Vector2" default="null"> + <argument index="3" name="align" type="Vector2" default="Vector2( 0, 0 )"> </argument> - <argument index="4" name="advance" type="float" default="null"> + <argument index="4" name="advance" type="float" default="-1"> </argument> <description> Add a character to the font, where [i]character[/i] is the unicode value, [i]texture[/i] is the texture index, [i]rect[/i] is the region in the texture (in pixels!), [i]align[/i] is the (optional) alignment for the character and [i]advance[/i] is the (optional) advance. @@ -9068,7 +9068,7 @@ </description> </method> <method name="create_from_fnt"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -9080,7 +9080,7 @@ </return> <argument index="0" name="char" type="int"> </argument> - <argument index="1" name="next" type="int" default="null"> + <argument index="1" name="next" type="int" default="0"> </argument> <description> Return the size of a character, optionally taking kerning into account if the next character is provided. @@ -9216,7 +9216,7 @@ </description> </method> <method name="get_alignment" qualifiers="const"> - <return type="int"> + <return type="int" enum="BoxContainer.AlignMode"> </return> <description> Return the alignment of children in the container. @@ -9310,7 +9310,7 @@ </description> </method> <method name="get_text_align" qualifiers="const"> - <return type="int"> + <return type="int" enum="Button.TextAlign"> </return> <description> Return the text alignment policy. @@ -9468,7 +9468,7 @@ </description> </method> <method name="get_doppler_tracking" qualifiers="const"> - <return type="int"> + <return type="int" enum="Camera.DopplerTracking"> </return> <description> </description> @@ -9492,13 +9492,13 @@ </description> </method> <method name="get_keep_aspect_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Camera.KeepAspect"> </return> <description> </description> </method> <method name="get_projection" qualifiers="const"> - <return type="int"> + <return type="int" enum="Camera.Projection"> </return> <description> </description> @@ -9716,7 +9716,7 @@ </description> </method> <method name="get_anchor_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Camera2D.AnchorMode"> </return> <description> </description> @@ -10086,7 +10086,7 @@ </argument> <argument index="3" name="next" type="String"> </argument> - <argument index="4" name="modulate" type="Color" default="null"> + <argument index="4" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> <description> Draw a string character using a custom font. Returns the advance, depending on the char width and kerning with an optional next char. @@ -10112,13 +10112,13 @@ </argument> <argument index="1" name="color" type="Color"> </argument> - <argument index="2" name="uvs" type="PoolVector2Array" default="null"> + <argument index="2" name="uvs" type="PoolVector2Array" default="PoolVector2Array( )"> </argument> - <argument index="3" name="texture" type="Texture" default="PoolVector2Array( )"> + <argument index="3" name="texture" type="Texture" default="null"> </argument> <argument index="4" name="normal_map" type="Texture" default="null"> </argument> - <argument index="5" name="antialiased" type="bool" default="null"> + <argument index="5" name="antialiased" type="bool" default="false"> </argument> <description> Draw a colored polygon of any amount of points, convex or concave. @@ -10133,9 +10133,9 @@ </argument> <argument index="2" name="color" type="Color"> </argument> - <argument index="3" name="width" type="float" default="null"> + <argument index="3" name="width" type="float" default="1.0"> </argument> - <argument index="4" name="antialiased" type="bool" default="null"> + <argument index="4" name="antialiased" type="bool" default="false"> </argument> <description> Draw a line from a 2D point to another, with a given color and width. It can be optionally antialiased. @@ -10148,13 +10148,13 @@ </argument> <argument index="1" name="colors" type="PoolColorArray"> </argument> - <argument index="2" name="uvs" type="PoolVector2Array" default="null"> + <argument index="2" name="uvs" type="PoolVector2Array" default="PoolVector2Array( )"> </argument> - <argument index="3" name="texture" type="Texture" default="PoolVector2Array( )"> + <argument index="3" name="texture" type="Texture" default="null"> </argument> <argument index="4" name="normal_map" type="Texture" default="null"> </argument> - <argument index="5" name="antialiased" type="bool" default="null"> + <argument index="5" name="antialiased" type="bool" default="false"> </argument> <description> Draw a polygon of any amount of points, convex or concave. @@ -10167,9 +10167,9 @@ </argument> <argument index="1" name="color" type="Color"> </argument> - <argument index="2" name="width" type="float" default="null"> + <argument index="2" name="width" type="float" default="1.0"> </argument> - <argument index="3" name="antialiased" type="bool" default="null"> + <argument index="3" name="antialiased" type="bool" default="false"> </argument> <description> </description> @@ -10181,9 +10181,9 @@ </argument> <argument index="1" name="colors" type="PoolColorArray"> </argument> - <argument index="2" name="width" type="float" default="null"> + <argument index="2" name="width" type="float" default="1.0"> </argument> - <argument index="3" name="antialiased" type="bool" default="null"> + <argument index="3" name="antialiased" type="bool" default="false"> </argument> <description> </description> @@ -10199,7 +10199,7 @@ </argument> <argument index="3" name="texture" type="Texture" default="null"> </argument> - <argument index="4" name="width" type="float" default="null"> + <argument index="4" name="width" type="float" default="1.0"> </argument> <argument index="5" name="normal_map" type="Texture" default="null"> </argument> @@ -10214,7 +10214,7 @@ </argument> <argument index="1" name="color" type="Color"> </argument> - <argument index="2" name="filled" type="bool" default="null"> + <argument index="2" name="filled" type="bool" default="true"> </argument> <description> Draw a colored rectangle. @@ -10250,9 +10250,9 @@ </argument> <argument index="2" name="text" type="String"> </argument> - <argument index="3" name="modulate" type="Color" default="null"> + <argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> - <argument index="4" name="clip_w" type="int" default="null"> + <argument index="4" name="clip_w" type="int" default="-1"> </argument> <description> Draw a string using a custom font. @@ -10276,7 +10276,7 @@ </argument> <argument index="1" name="pos" type="Vector2"> </argument> - <argument index="2" name="modulate" type="Color" default="null"> + <argument index="2" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> <argument index="3" name="normal_map" type="Texture" default="null"> </argument> @@ -10293,9 +10293,9 @@ </argument> <argument index="2" name="tile" type="bool"> </argument> - <argument index="3" name="modulate" type="Color" default="null"> + <argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> - <argument index="4" name="transpose" type="bool" default="null"> + <argument index="4" name="transpose" type="bool" default="false"> </argument> <argument index="5" name="normal_map" type="Texture" default="null"> </argument> @@ -10314,11 +10314,11 @@ </argument> <argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> - <argument index="4" name="transpose" type="bool" default="null"> + <argument index="4" name="transpose" type="bool" default="false"> </argument> <argument index="5" name="normal_map" type="Texture" default="null"> </argument> - <argument index="6" name="clip_uv" type="bool" default="null"> + <argument index="6" name="clip_uv" type="bool" default="true"> </argument> <description> Draw a textured rectangle region at a given position, optionally modulated by a color. Transpose swaps the x and y coordinates when reading the texture. @@ -10729,13 +10729,13 @@ </description> <methods> <method name="get_blend_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="CanvasItemMaterial.BlendMode"> </return> <description> </description> </method> <method name="get_light_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="CanvasItemMaterial.LightMode"> </return> <description> </description> @@ -11326,7 +11326,7 @@ </return> <argument index="0" name="class" type="String"> </argument> - <argument index="1" name="no_inheritance" type="bool" default="null"> + <argument index="1" name="no_inheritance" type="bool" default="false"> </argument> <description> </description> @@ -11336,7 +11336,7 @@ </return> <argument index="0" name="class" type="String"> </argument> - <argument index="1" name="no_inheritance" type="bool" default="null"> + <argument index="1" name="no_inheritance" type="bool" default="false"> </argument> <description> </description> @@ -11356,7 +11356,7 @@ </return> <argument index="0" name="class" type="String"> </argument> - <argument index="1" name="no_inheritance" type="bool" default="null"> + <argument index="1" name="no_inheritance" type="bool" default="false"> </argument> <description> </description> @@ -11376,7 +11376,7 @@ </return> <argument index="0" name="class" type="String"> </argument> - <argument index="1" name="no_inheritance" type="bool" default="null"> + <argument index="1" name="no_inheritance" type="bool" default="false"> </argument> <description> </description> @@ -11398,7 +11398,7 @@ </argument> <argument index="1" name="method" type="String"> </argument> - <argument index="2" name="no_inheritance" type="bool" default="null"> + <argument index="2" name="no_inheritance" type="bool" default="false"> </argument> <description> </description> @@ -11414,7 +11414,7 @@ </description> </method> <method name="class_set_property" qualifiers="const"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="object" type="Object"> </argument> @@ -12001,7 +12001,7 @@ </description> <methods> <method name="get_build_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="CollisionPolygon2D.BuildMode"> </return> <description> Return whether the polygon is a [ConvexPolygonShape2D] ([code]build_mode==0[/code]), or a [ConcavePolygonShape2D] ([code]build_mode==1[/code]). @@ -12759,7 +12759,7 @@ </description> </method> <method name="load"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -12768,7 +12768,7 @@ </description> </method> <method name="save"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -13004,7 +13004,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13020,13 +13020,13 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> </method> <method name="get_cursor_shape" qualifiers="const"> - <return type="int"> + <return type="int" enum="Control.CursorShape"> </return> <argument index="0" name="pos" type="Vector2" default="Vector2( 0, 0 )"> </argument> @@ -13041,7 +13041,7 @@ </description> </method> <method name="get_default_cursor_shape" qualifiers="const"> - <return type="int"> + <return type="int" enum="Control.CursorShape"> </return> <description> Return the default cursor shape for this control. See enum CURSOR_* for the list of shapes. @@ -13063,7 +13063,7 @@ </description> </method> <method name="get_focus_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Control.FocusMode"> </return> <description> Returns the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL) (see [method set_focus_mode]). @@ -13090,7 +13090,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13110,7 +13110,7 @@ </description> </method> <method name="get_h_grow_direction" qualifiers="const"> - <return type="int"> + <return type="int" enum="Control.GrowDirection"> </return> <description> </description> @@ -13127,7 +13127,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13149,7 +13149,7 @@ </description> </method> <method name="get_mouse_filter" qualifiers="const"> - <return type="int"> + <return type="int" enum="Control.MouseFilter"> </return> <description> Return when the control is ignoring mouse events (even touchpad events send mouse events). @@ -13226,7 +13226,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13248,7 +13248,7 @@ </description> </method> <method name="get_v_grow_direction" qualifiers="const"> - <return type="int"> + <return type="int" enum="Control.GrowDirection"> </return> <description> </description> @@ -13278,7 +13278,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13296,7 +13296,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13321,7 +13321,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13339,7 +13339,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13365,7 +13365,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default="null"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> @@ -13404,9 +13404,9 @@ </argument> <argument index="1" name="anchor" type="float"> </argument> - <argument index="2" name="keep_margin" type="bool" default="null"> + <argument index="2" name="keep_margin" type="bool" default="false"> </argument> - <argument index="3" name="push_opposite_anchor" type="bool" default="null"> + <argument index="3" name="push_opposite_anchor" type="bool" default="true"> </argument> <description> </description> @@ -13420,7 +13420,7 @@ </argument> <argument index="2" name="offset" type="float"> </argument> - <argument index="3" name="push_opposite_anchor" type="bool" default="null"> + <argument index="3" name="push_opposite_anchor" type="bool" default="false"> </argument> <description> </description> @@ -13430,7 +13430,7 @@ </return> <argument index="0" name="preset" type="int" enum="Control.LayoutPreset"> </argument> - <argument index="1" name="keep_margin" type="bool" default="null"> + <argument index="1" name="keep_margin" type="bool" default="false"> </argument> <description> </description> @@ -14016,7 +14016,7 @@ </description> </method> <method name="get_storage" qualifiers="const"> - <return type="int"> + <return type="int" enum="CubeMap.Storage"> </return> <description> </description> @@ -14184,7 +14184,7 @@ </argument> <argument index="3" name="left_mode" type="int" enum="Curve.TangentMode" default="0"> </argument> - <argument index="4" name="right_mode" type="int" enum="Curve.TangentMode" default="null"> + <argument index="4" name="right_mode" type="int" enum="Curve.TangentMode" default="0"> </argument> <description> </description> @@ -14226,7 +14226,7 @@ </description> </method> <method name="get_point_left_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Curve.TangentMode"> </return> <argument index="0" name="index" type="int"> </argument> @@ -14250,7 +14250,7 @@ </description> </method> <method name="get_point_right_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Curve.TangentMode"> </return> <argument index="0" name="index" type="int"> </argument> @@ -14411,7 +14411,7 @@ </argument> <argument index="2" name="out" type="Vector2" default="Vector2( 0, 0 )"> </argument> - <argument index="3" name="atpos" type="int" default="null"> + <argument index="3" name="atpos" type="int" default="-1"> </argument> <description> Adds a point to a curve, at position "pos", with control points "in" and "out". @@ -14496,7 +14496,7 @@ </return> <argument index="0" name="offset" type="float"> </argument> - <argument index="1" name="cubic" type="bool" default="null"> + <argument index="1" name="cubic" type="bool" default="false"> </argument> <description> Returns a point within the curve at position "offset", where "offset" is measured as a pixel distance along the curve. @@ -14567,9 +14567,9 @@ <method name="tessellate" qualifiers="const"> <return type="PoolVector2Array"> </return> - <argument index="0" name="max_stages" type="int" default="4"> + <argument index="0" name="max_stages" type="int" default="5"> </argument> - <argument index="1" name="tolerance_degrees" type="float" default="5"> + <argument index="1" name="tolerance_degrees" type="float" default="4"> </argument> <description> Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts. @@ -14606,7 +14606,7 @@ </argument> <argument index="2" name="out" type="Vector3" default="Vector3( 0, 0, 0 )"> </argument> - <argument index="3" name="atpos" type="int" default="null"> + <argument index="3" name="atpos" type="int" default="-1"> </argument> <description> Adds a point to a curve, at position "pos", with control points "in" and "out". @@ -14707,7 +14707,7 @@ </return> <argument index="0" name="offset" type="float"> </argument> - <argument index="1" name="cubic" type="bool" default="null"> + <argument index="1" name="cubic" type="bool" default="false"> </argument> <description> Returns a point within the curve at position "offset", where "offset" is measured as a distance in 3D units along the curve. @@ -14790,9 +14790,9 @@ <method name="tessellate" qualifiers="const"> <return type="PoolVector3Array"> </return> - <argument index="0" name="max_stages" type="int" default="4"> + <argument index="0" name="max_stages" type="int" default="5"> </argument> - <argument index="1" name="tolerance_degrees" type="float" default="5"> + <argument index="1" name="tolerance_degrees" type="float" default="4"> </argument> <description> Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts. @@ -15113,7 +15113,7 @@ </description> <methods> <method name="get_shadow_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="DirectionalLight.ShadowMode"> </return> <description> </description> @@ -15191,7 +15191,7 @@ </description> <methods> <method name="change_dir"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="todir" type="String"> </argument> @@ -15201,7 +15201,7 @@ </description> </method> <method name="copy"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="from" type="String"> </argument> @@ -15282,7 +15282,7 @@ </description> </method> <method name="list_dir_begin"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="skip_navigational" type="bool" default="false"> </argument> @@ -15302,7 +15302,7 @@ </description> </method> <method name="make_dir"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -15312,7 +15312,7 @@ </description> </method> <method name="make_dir_recursive"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -15322,7 +15322,7 @@ </description> </method> <method name="open"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -15332,7 +15332,7 @@ </description> </method> <method name="remove"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -15342,7 +15342,7 @@ </description> </method> <method name="rename"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="from" type="String"> </argument> @@ -15556,7 +15556,7 @@ </description> </method> <method name="get_access" qualifiers="const"> - <return type="int"> + <return type="int" enum="EditorFileDialog.Access"> </return> <description> </description> @@ -15580,13 +15580,13 @@ </description> </method> <method name="get_display_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="EditorFileDialog.DisplayMode"> </return> <description> </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="EditorFileDialog.Mode"> </return> <description> </description> @@ -16070,7 +16070,7 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="for_property" type="String" default="null"> + <argument index="1" name="for_property" type="String" default=""""> </argument> <description> </description> @@ -16102,7 +16102,7 @@ </description> </method> <method name="save_scene"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> </description> @@ -16112,7 +16112,7 @@ </return> <argument index="0" name="path" type="String"> </argument> - <argument index="1" name="with_preview" type="bool" default="null"> + <argument index="1" name="with_preview" type="bool" default="true"> </argument> <description> </description> @@ -16842,7 +16842,7 @@ </argument> <argument index="1" name="billboard" type="bool" default="false"> </argument> - <argument index="2" name="secondary" type="bool" default="null"> + <argument index="2" name="secondary" type="bool" default="false"> </argument> <description> Add a list of handles (points) which can be used to deform the object being edited. @@ -16856,7 +16856,7 @@ </argument> <argument index="1" name="material" type="Material"> </argument> - <argument index="2" name="billboard" type="bool" default="null"> + <argument index="2" name="billboard" type="bool" default="false"> </argument> <description> Add lines to the gizmo (as sets of 2 points), with a given material. The lines are used for visualizing the gizmo. Call this function during [method redraw]. @@ -16869,7 +16869,7 @@ </argument> <argument index="1" name="billboard" type="bool" default="false"> </argument> - <argument index="2" name="skeleton" type="RID" default="null"> + <argument index="2" name="skeleton" type="RID"> </argument> <description> </description> @@ -16879,7 +16879,7 @@ </return> <argument index="0" name="material" type="Material"> </argument> - <argument index="1" name="default_scale" type="float" default="null"> + <argument index="1" name="default_scale" type="float" default="1"> </argument> <description> Add an unscaled billboard for visualization. Call this function during [method redraw]. @@ -17139,7 +17139,7 @@ </description> </method> <method name="get_background" qualifiers="const"> - <return type="int"> + <return type="int" enum="Environment.BGMode"> </return> <description> </description> @@ -17175,7 +17175,7 @@ </description> </method> <method name="get_dof_blur_far_quality" qualifiers="const"> - <return type="int"> + <return type="int" enum="Environment.DOFBlurQuality"> </return> <description> </description> @@ -17199,7 +17199,7 @@ </description> </method> <method name="get_dof_blur_near_quality" qualifiers="const"> - <return type="int"> + <return type="int" enum="Environment.DOFBlurQuality"> </return> <description> </description> @@ -17265,7 +17265,7 @@ </description> </method> <method name="get_glow_blend_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Environment.GlowBlendMode"> </return> <description> </description> @@ -17421,7 +17421,7 @@ </description> </method> <method name="get_tonemapper" qualifiers="const"> - <return type="int"> + <return type="int" enum="Environment.ToneMapper"> </return> <description> </description> @@ -18370,7 +18370,7 @@ </description> </method> <method name="get_error" qualifiers="const"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Get the last error that happened when trying to perform operations. Compare with the [code]ERR_FILE_*[/code] constants from [@Global Scope]. @@ -18459,7 +18459,7 @@ </description> </method> <method name="open"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -18470,20 +18470,20 @@ </description> </method> <method name="open_compressed"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> <argument index="1" name="mode_flags" type="int"> </argument> - <argument index="2" name="compression_mode" type="int" default="null"> + <argument index="2" name="compression_mode" type="int" default="0"> </argument> <description> Open a compressed file for reading or writing. The compression_mode can be set as one of the COMPRESSION_* constants. </description> </method> <method name="open_encrypted"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -18496,7 +18496,7 @@ </description> </method> <method name="open_encrypted_with_pass"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -18696,7 +18696,7 @@ </description> </method> <method name="get_access" qualifiers="const"> - <return type="int"> + <return type="int" enum="FileDialog.Access"> </return> <description> Return the file access permission of the dialog. @@ -18730,7 +18730,7 @@ </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="FileDialog.Mode"> </return> <description> Get the file dialog mode from the MODE_* enum. @@ -18905,9 +18905,9 @@ </argument> <argument index="2" name="string" type="String"> </argument> - <argument index="3" name="modulate" type="Color" default="null"> + <argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> - <argument index="4" name="clip_w" type="int" default="null"> + <argument index="4" name="clip_w" type="int" default="-1"> </argument> <description> Draw "string" into a canvas item using the font at a given "pos" position, with "modulate" color, and optionally clipping the width. "pos" specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis. @@ -18922,9 +18922,9 @@ </argument> <argument index="2" name="char" type="int"> </argument> - <argument index="3" name="next" type="int" default="null"> + <argument index="3" name="next" type="int" default="-1"> </argument> - <argument index="4" name="modulate" type="Color" default="null"> + <argument index="4" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> <description> Draw character "char" into a canvas item using the font at a given "pos" position, with "modulate" color, and optionally kerning if "next" is passed. clipping the width. "pos" specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis. The width used by the character is returned, making this function useful for drawing strings character by character. @@ -19182,9 +19182,9 @@ <method name="bake"> <return type="void"> </return> - <argument index="0" name="from_node" type="Node" default="false"> + <argument index="0" name="from_node" type="Node" default="null"> </argument> - <argument index="1" name="create_visual_debug" type="bool" default="null"> + <argument index="1" name="create_visual_debug" type="bool" default="false"> </argument> <description> </description> @@ -19238,7 +19238,7 @@ </description> </method> <method name="get_subdiv" qualifiers="const"> - <return type="int"> + <return type="int" enum="GIProbe.Subdiv"> </return> <description> </description> @@ -19842,7 +19842,7 @@ </argument> <argument index="3" name="lats" type="int"> </argument> - <argument index="4" name="axis" type="int" enum="Vector3.Axis" default="null"> + <argument index="4" name="axis" type="int" enum="Vector3.Axis" default="2"> </argument> <description> </description> @@ -19856,7 +19856,7 @@ </argument> <argument index="2" name="sides" type="int"> </argument> - <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="null"> + <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="2"> </argument> <description> </description> @@ -20088,7 +20088,7 @@ </description> <methods> <method name="get_cast_shadows_setting" qualifiers="const"> - <return type="int"> + <return type="int" enum="GeometryInstance.ShadowCastingSetting"> </return> <description> </description> @@ -20411,7 +20411,7 @@ </description> <methods> <method name="connect_node"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="from" type="String"> </argument> @@ -20746,7 +20746,7 @@ </description> </method> <method name="get_overlay" qualifiers="const"> - <return type="int"> + <return type="int" enum="GraphNode.Overlay"> </return> <description> </description> @@ -21141,7 +21141,7 @@ </argument> <argument index="3" name="item" type="int"> </argument> - <argument index="4" name="orientation" type="int" default="null"> + <argument index="4" name="orientation" type="int" default="0"> </argument> <description> </description> @@ -21183,11 +21183,11 @@ </return> <argument index="0" name="enabled" type="bool"> </argument> - <argument index="1" name="clipabove" type="bool" default="0"> + <argument index="1" name="clipabove" type="bool" default="true"> </argument> - <argument index="2" name="floor" type="int" default="true"> + <argument index="2" name="floor" type="int" default="0"> </argument> - <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="null"> + <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="0"> </argument> <description> </description> @@ -21399,15 +21399,15 @@ </description> </method> <method name="connect_to_host"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="host" type="String"> </argument> <argument index="1" name="port" type="int"> </argument> - <argument index="2" name="use_ssl" type="bool" default="null"> + <argument index="2" name="use_ssl" type="bool" default="false"> </argument> - <argument index="3" name="verify_host" type="bool" default="null"> + <argument index="3" name="verify_host" type="bool" default="true"> </argument> <description> Connect to a host. This needs to be done before any requests are sent. @@ -21453,7 +21453,7 @@ </description> </method> <method name="get_status" qualifiers="const"> - <return type="int"> + <return type="int" enum="HTTPClient.Status"> </return> <description> Returns a STATUS_* enum constant. Need to call [method poll] in order to get status updates. @@ -21481,7 +21481,7 @@ </description> </method> <method name="poll"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> This needs to be called in order to have any request processed. Check results with [method get_status] @@ -21509,7 +21509,7 @@ </description> </method> <method name="request"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="method" type="int" enum="HTTPClient.Method"> </argument> @@ -21517,7 +21517,7 @@ </argument> <argument index="2" name="headers" type="PoolStringArray"> </argument> - <argument index="3" name="body" type="String" default="null"> + <argument index="3" name="body" type="String" default=""""> </argument> <description> Sends a request to the connected host. The url is what is normally behind the hostname, i.e. in [code]http://somehost.com/index.php[/code], url would be "index.php". @@ -21532,7 +21532,7 @@ </description> </method> <method name="request_raw"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="method" type="int" enum="HTTPClient.Method"> </argument> @@ -21549,7 +21549,7 @@ </description> </method> <method name="send_body_data"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="body" type="PoolByteArray"> </argument> @@ -21558,7 +21558,7 @@ </description> </method> <method name="send_body_text"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="body" type="String"> </argument> @@ -21778,7 +21778,7 @@ </description> </method> <method name="get_http_client_status" qualifiers="const"> - <return type="int"> + <return type="int" enum="HTTPClient.Status"> </return> <description> Return the current status of the underlying [HTTPClient]. @@ -21799,17 +21799,17 @@ </description> </method> <method name="request"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="url" type="String"> </argument> - <argument index="1" name="custom_headers" type="PoolStringArray" default="0"> + <argument index="1" name="custom_headers" type="PoolStringArray" default="PoolStringArray( )"> </argument> <argument index="2" name="ssl_validate_domain" type="bool" default="true"> </argument> - <argument index="3" name="method" type="int" enum="HTTPClient.Method" default="PoolStringArray( )"> + <argument index="3" name="method" type="int" enum="HTTPClient.Method" default="0"> </argument> - <argument index="4" name="request_data" type="String" default="null"> + <argument index="4" name="request_data" type="String" default=""""> </argument> <description> </description> @@ -22045,7 +22045,7 @@ </description> </method> <method name="get_resolve_item_status" qualifiers="const"> - <return type="int"> + <return type="int" enum="IP.ResolverStatus"> </return> <argument index="0" name="id" type="int"> </argument> @@ -22058,7 +22058,7 @@ </return> <argument index="0" name="host" type="String"> </argument> - <argument index="1" name="ip_type" type="int" enum="IP.Type" default="null"> + <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3"> </argument> <description> Resolve a given hostname, blocking. Resolved hostname is returned as an IPv4 or IPv6 depending on "ip_type". @@ -22069,7 +22069,7 @@ </return> <argument index="0" name="host" type="String"> </argument> - <argument index="1" name="ip_type" type="int" enum="IP.Type" default="null"> + <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3"> </argument> <description> Create a queue item for resolving a given hostname to an IPv4 or IPv6 depending on "ip_type". The queue ID is returned, or RESOLVER_INVALID_ID on error. @@ -22180,7 +22180,7 @@ </description> </method> <method name="compress"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="mode" type="int" enum="Image.CompressMode"> </argument> @@ -22249,13 +22249,13 @@ </description> </method> <method name="decompress"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> </description> </method> <method name="detect_alpha" qualifiers="const"> - <return type="int"> + <return type="int" enum="Image.AlphaMode"> </return> <description> </description> @@ -22294,7 +22294,7 @@ </description> </method> <method name="generate_mipmaps"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> </description> @@ -22307,7 +22307,7 @@ </description> </method> <method name="get_format" qualifiers="const"> - <return type="int"> + <return type="int" enum="Image.Format"> </return> <description> Return the format of the [Image], one of [Image].FORMAT_*. @@ -22392,7 +22392,7 @@ </description> </method> <method name="load"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -22425,7 +22425,7 @@ </argument> <argument index="1" name="height" type="int"> </argument> - <argument index="2" name="interpolation" type="int" enum="Image.Interpolation" default="null"> + <argument index="2" name="interpolation" type="int" enum="Image.Interpolation" default="1"> </argument> <description> </description> @@ -22439,7 +22439,7 @@ </description> </method> <method name="save_png" qualifiers="const"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -22606,7 +22606,7 @@ </argument> <argument index="2" name="format" type="int" enum="Image.Format"> </argument> - <argument index="3" name="flags" type="int" default="null"> + <argument index="3" name="flags" type="int" default="7"> </argument> <description> Create a new [ImageTexture] with "width" and "height". @@ -22619,14 +22619,14 @@ </return> <argument index="0" name="image" type="Image"> </argument> - <argument index="1" name="flags" type="int" default="null"> + <argument index="1" name="flags" type="int" default="7"> </argument> <description> Create a new [ImageTexture] from an [Image] with "flags" from [Texture].FLAG_*. </description> </method> <method name="get_format" qualifiers="const"> - <return type="int"> + <return type="int" enum="Image.Format"> </return> <description> Return the format of the [ImageTexture], one of [Image].FORMAT_*. @@ -22640,7 +22640,7 @@ </description> </method> <method name="get_storage" qualifiers="const"> - <return type="int"> + <return type="int" enum="ImageTexture.Storage"> </return> <description> Return the storage type. One of [ImageTexture].STORAGE_*. @@ -22719,7 +22719,7 @@ </argument> <argument index="2" name="radius" type="float"> </argument> - <argument index="3" name="add_uv" type="bool" default="null"> + <argument index="3" name="add_uv" type="bool" default="true"> </argument> <description> Simple helper to draw a uvsphere, with given latitudes, longitude and radius. @@ -22840,7 +22840,7 @@ </return> <argument index="0" name="mapping" type="String"> </argument> - <argument index="1" name="update_existing" type="bool" default="null"> + <argument index="1" name="update_existing" type="bool" default="false"> </argument> <description> Add a new mapping entry (in SDL2 format) to the mapping database. Optionally update already connected devices. @@ -22974,7 +22974,7 @@ </description> </method> <method name="get_mouse_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Input.MouseMode"> </return> <description> Return the mouse mode. See the constants for more information. @@ -23065,7 +23065,7 @@ </return> <argument index="0" name="image" type="Resource"> </argument> - <argument index="1" name="hotspot" type="Vector2" default="null"> + <argument index="1" name="hotspot" type="Vector2" default="Vector2( 0, 0 )"> </argument> <description> </description> @@ -23088,7 +23088,7 @@ </argument> <argument index="2" name="strong_magnitude" type="float"> </argument> - <argument index="3" name="duration" type="float" default="null"> + <argument index="3" name="duration" type="float" default="0"> </argument> <description> Starts to vibrate the joypad. Joypads usually come with two rumble motors, a strong and a weak one. weak_magnitude is the strength of the weak motor (between 0 and 1) and strong_magnitude is the strength of the strong motor (between 0 and 1). duration is the duration of the effect in seconds (a duration of 0 will try to play the vibration indefinitely). @@ -23259,7 +23259,7 @@ </return> <argument index="0" name="xform" type="Transform2D"> </argument> - <argument index="1" name="local_ofs" type="Vector2" default="null"> + <argument index="1" name="local_ofs" type="Vector2" default="Vector2( 0, 0 )"> </argument> <description> </description> @@ -24139,7 +24139,7 @@ </return> <argument index="0" name="icon" type="Texture"> </argument> - <argument index="1" name="selectable" type="bool" default="null"> + <argument index="1" name="selectable" type="bool" default="true"> </argument> <description> Adds an item to the item list with no text, only an icon. @@ -24152,7 +24152,7 @@ </argument> <argument index="1" name="icon" type="Texture" default="null"> </argument> - <argument index="2" name="selectable" type="bool" default="null"> + <argument index="2" name="selectable" type="bool" default="true"> </argument> <description> Adds an item to the item list with specified text. Specify an icon of null for a list item with no icon. @@ -24194,7 +24194,7 @@ </description> </method> <method name="get_icon_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="ItemList.IconMode"> </return> <description> </description> @@ -24210,7 +24210,7 @@ </return> <argument index="0" name="pos" type="Vector2"> </argument> - <argument index="1" name="exact" type="bool" default="null"> + <argument index="1" name="exact" type="bool" default="false"> </argument> <description> Given a position within the control return the item (if any) at that point. @@ -24288,7 +24288,7 @@ </description> </method> <method name="get_select_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="ItemList.SelectMode"> </return> <description> </description> @@ -24370,7 +24370,7 @@ </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="single" type="bool" default="null"> + <argument index="1" name="single" type="bool" default="true"> </argument> <description> Select the item at the specified index. @@ -24991,13 +24991,13 @@ </return> <argument index="0" name="linear_velocity" type="Vector3"> </argument> - <argument index="1" name="floor_normal" type="Vector3" default="4"> + <argument index="1" name="floor_normal" type="Vector3" default="Vector3( 0, 0, 0 )"> </argument> <argument index="2" name="slope_stop_min_velocity" type="float" default="0.05"> </argument> - <argument index="3" name="max_bounces" type="int" default="Vector3( 0, 0, 0 )"> + <argument index="3" name="max_bounces" type="int" default="4"> </argument> - <argument index="4" name="floor_max_angle" type="float" default="null"> + <argument index="4" name="floor_max_angle" type="float" default="0.785398"> </argument> <description> </description> @@ -25186,13 +25186,13 @@ </return> <argument index="0" name="linear_velocity" type="Vector2"> </argument> - <argument index="1" name="floor_normal" type="Vector2" default="4"> + <argument index="1" name="floor_normal" type="Vector2" default="Vector2( 0, 0 )"> </argument> <argument index="2" name="slope_stop_min_velocity" type="float" default="5"> </argument> - <argument index="3" name="max_bounces" type="int" default="Vector2( 0, 0 )"> + <argument index="3" name="max_bounces" type="int" default="4"> </argument> - <argument index="4" name="floor_max_angle" type="float" default="null"> + <argument index="4" name="floor_max_angle" type="float" default="0.785398"> </argument> <description> </description> @@ -25233,7 +25233,7 @@ </description> <methods> <method name="get_align" qualifiers="const"> - <return type="int"> + <return type="int" enum="Label.Align"> </return> <description> Return the alignment mode (any of the ALIGN_* enumeration values). @@ -25289,7 +25289,7 @@ </description> </method> <method name="get_valign" qualifiers="const"> - <return type="int"> + <return type="int" enum="Label.VAlign"> </return> <description> Return the vertical alignment mode (any of the VALIGN_* enumeration values). @@ -25814,7 +25814,7 @@ </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Light2D.Mode"> </return> <description> Return the current mode set to the Light2D. @@ -25835,7 +25835,7 @@ </description> </method> <method name="get_shadow_filter" qualifiers="const"> - <return type="int"> + <return type="int" enum="Light2D.ShadowFilter"> </return> <description> </description> @@ -26217,7 +26217,7 @@ </description> </method> <method name="get_begin_cap_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="LineCapMode"> </return> <description> </description> @@ -26229,7 +26229,7 @@ </description> </method> <method name="get_end_cap_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="LineCapMode"> </return> <description> </description> @@ -26241,7 +26241,7 @@ </description> </method> <method name="get_joint_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="LineJointMode"> </return> <description> </description> @@ -26285,7 +26285,7 @@ </description> </method> <method name="get_texture_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="LineTextureMode"> </return> <description> </description> @@ -26503,7 +26503,7 @@ </description> </method> <method name="get_align" qualifiers="const"> - <return type="int"> + <return type="int" enum="LineEdit.Align"> </return> <description> </description> @@ -26578,9 +26578,9 @@ <method name="select"> <return type="void"> </return> - <argument index="0" name="from" type="int" default="-1"> + <argument index="0" name="from" type="int" default="0"> </argument> - <argument index="1" name="to" type="int" default="0"> + <argument index="1" name="to" type="int" default="-1"> </argument> <description> </description> @@ -26821,7 +26821,7 @@ </description> </method> <method name="get_underline_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="LinkButton.UnderlineMode"> </return> <description> Returns the underline mode for this button. @@ -27299,7 +27299,7 @@ </description> </method> <method name="commit_to_surface"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="mesh" type="ArrayMesh"> </argument> @@ -27307,7 +27307,7 @@ </description> </method> <method name="create_from_surface"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="mesh" type="ArrayMesh"> </argument> @@ -27867,7 +27867,7 @@ </description> </method> <method name="get_color_format" qualifiers="const"> - <return type="int"> + <return type="int" enum="MultiMesh.ColorFormat"> </return> <description> </description> @@ -27905,7 +27905,7 @@ </description> </method> <method name="get_transform_format" qualifiers="const"> - <return type="int"> + <return type="int" enum="MultiMesh.TransformFormat"> </return> <description> </description> @@ -28042,7 +28042,7 @@ </description> </method> <method name="try_lock"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Try locking this [Mutex], does not block. Returns [OK] on success else [ERR_BUSY]. @@ -28146,7 +28146,7 @@ </argument> <argument index="1" name="end" type="Vector3"> </argument> - <argument index="2" name="use_collision" type="bool" default="null"> + <argument index="2" name="use_collision" type="bool" default="false"> </argument> <description> </description> @@ -28158,7 +28158,7 @@ </argument> <argument index="1" name="end" type="Vector3"> </argument> - <argument index="2" name="optimize" type="bool" default="null"> + <argument index="2" name="optimize" type="bool" default="true"> </argument> <description> </description> @@ -28244,7 +28244,7 @@ </argument> <argument index="1" name="end" type="Vector2"> </argument> - <argument index="2" name="optimize" type="bool" default="null"> + <argument index="2" name="optimize" type="bool" default="true"> </argument> <description> </description> @@ -28574,35 +28574,35 @@ </description> </method> <method name="create_client"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="ip" type="String"> </argument> <argument index="1" name="port" type="int"> </argument> - <argument index="2" name="in_bandwidth" type="int" default="null"> + <argument index="2" name="in_bandwidth" type="int" default="0"> </argument> - <argument index="3" name="out_bandwidth" type="int" default="null"> + <argument index="3" name="out_bandwidth" type="int" default="0"> </argument> <description> </description> </method> <method name="create_server"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="port" type="int"> </argument> - <argument index="1" name="max_clients" type="int" default="0"> + <argument index="1" name="max_clients" type="int" default="32"> </argument> - <argument index="2" name="in_bandwidth" type="int" default="32"> + <argument index="2" name="in_bandwidth" type="int" default="0"> </argument> - <argument index="3" name="out_bandwidth" type="int" default="null"> + <argument index="3" name="out_bandwidth" type="int" default="0"> </argument> <description> </description> </method> <method name="get_compression_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="NetworkedMultiplayerENet.CompressionMode"> </return> <description> </description> @@ -28644,7 +28644,7 @@ </description> <methods> <method name="get_connection_status" qualifiers="const"> - <return type="int"> + <return type="int" enum="NetworkedMultiplayerPeer.ConnectionStatus"> </return> <description> </description> @@ -28916,7 +28916,7 @@ </description> <methods> <method name="get_h_axis_stretch_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="NinePatchRect.AxisStretchMode"> </return> <description> </description> @@ -28942,7 +28942,7 @@ </description> </method> <method name="get_v_axis_stretch_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="NinePatchRect.AxisStretchMode"> </return> <description> </description> @@ -29131,7 +29131,7 @@ </return> <argument index="0" name="node" type="Node"> </argument> - <argument index="1" name="legible_unique_name" type="bool" default="null"> + <argument index="1" name="legible_unique_name" type="bool" default="false"> </argument> <description> Add a child [Node]. Nodes can have as many children as they want, but every child must have a unique name. Children nodes are automatically deleted when the parent node is deleted, so deleting a whole scene is performed by deleting its topmost node. @@ -29143,7 +29143,7 @@ </return> <argument index="0" name="group" type="String"> </argument> - <argument index="1" name="persistent" type="bool" default="null"> + <argument index="1" name="persistent" type="bool" default="false"> </argument> <description> Add a node to a group. Groups are helpers to name and organize a subset of nodes, like for example "enemies" or "collectables". A [Node] can be in any number of groups. Nodes can be assigned a group at any time, but will not be added to it until they are inside the scene tree (see [method is_inside_tree]). @@ -29173,7 +29173,7 @@ </argument> <argument index="1" name="recursive" type="bool" default="true"> </argument> - <argument index="2" name="owned" type="bool" default="null"> + <argument index="2" name="owned" type="bool" default="true"> </argument> <description> Find a descendant of this node whose name matches [code]mask[/code] as in [method String.match] (i.e. case sensitive, but '*' matches zero or more characters and '?' matches any single character except '.'). Note that it does not match against the full path, just against individual node names. @@ -29310,7 +29310,7 @@ </description> </method> <method name="get_pause_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Node.PauseMode"> </return> <description> </description> @@ -29483,7 +29483,7 @@ </argument> <argument index="1" name="args" type="Array" default="[ ]"> </argument> - <argument index="2" name="parent_first" type="bool" default="null"> + <argument index="2" name="parent_first" type="bool" default="false"> </argument> <description> Calls the method (if present) with the arguments given in "args" on this Node and recursively on all children. If the parent_first argument is true then the method will be called on the current [Node] first, then on all children. If it is false then the children will get called first. @@ -29541,7 +29541,7 @@ </return> <argument index="0" name="node" type="Node"> </argument> - <argument index="1" name="keep_data" type="bool" default="null"> + <argument index="1" name="keep_data" type="bool" default="false"> </argument> <description> Replace a node in a scene by a given one. Subscriptions that pass through this node will be lost. @@ -29711,7 +29711,7 @@ </return> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="recursive" type="bool" default="null"> + <argument index="1" name="recursive" type="bool" default="true"> </argument> <description> </description> @@ -30009,7 +30009,7 @@ </return> <argument index="0" name="delta" type="float"> </argument> - <argument index="1" name="scaled" type="bool" default="null"> + <argument index="1" name="scaled" type="bool" default="false"> </argument> <description> Apply a local translation on X axis to the 2D node according to the 'delta' of the process. If 'scaled' is false, the movement is normalized. @@ -30020,7 +30020,7 @@ </return> <argument index="0" name="delta" type="float"> </argument> - <argument index="1" name="scaled" type="bool" default="null"> + <argument index="1" name="scaled" type="bool" default="false"> </argument> <description> Apply a local translation on Y axis to the 2D node according to the 'delta' of the process. If 'scaled' is false, the movement is normalized. @@ -30287,7 +30287,7 @@ </return> <argument index="0" name="text" type="String"> </argument> - <argument index="1" name="title" type="String" default="null"> + <argument index="1" name="title" type="String" default=""Alert!""> </argument> <description> Displays a modal dialog box utilizing the host OS. @@ -30355,7 +30355,7 @@ </argument> <argument index="2" name="blocking" type="bool"> </argument> - <argument index="3" name="output" type="Array" default="null"> + <argument index="3" name="output" type="Array" default="[ ]"> </argument> <description> Execute the binary file in given path, optionally blocking until it returns. A process ID is returned. @@ -30504,7 +30504,7 @@ </description> </method> <method name="get_power_state"> - <return type="int"> + <return type="int" enum="PowerState"> </return> <description> </description> @@ -30557,7 +30557,7 @@ </description> </method> <method name="get_screen_orientation" qualifiers="const"> - <return type="int"> + <return type="int" enum="_OS.ScreenOrientation"> </return> <description> Returns the current screen orientation, the return value will be one of the SCREEN_ORIENTATION constants in this class. @@ -30778,7 +30778,7 @@ </description> </method> <method name="kill"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="pid" type="int"> </argument> @@ -30799,7 +30799,7 @@ </description> </method> <method name="native_video_play"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -30938,7 +30938,7 @@ </description> </method> <method name="set_thread_name"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="name" type="String"> </argument> @@ -31025,7 +31025,7 @@ </description> </method> <method name="shell_open"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="uri" type="String"> </argument> @@ -31182,7 +31182,7 @@ </return> <argument index="0" name="signal" type="String"> </argument> - <argument index="1" name="arguments" type="Array" default="null"> + <argument index="1" name="arguments" type="Array" default="[ ]"> </argument> <description> Add a user signal (can be added anytime). Arguments are optional, but can be added as an array of dictionaries, each containing "name" and "type" (from [@Global Scope] TYPE_*). @@ -31222,7 +31222,7 @@ </description> </method> <method name="connect"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="signal" type="String"> </argument> @@ -31230,9 +31230,9 @@ </argument> <argument index="2" name="method" type="String"> </argument> - <argument index="3" name="binds" type="Array" default="null"> + <argument index="3" name="binds" type="Array" default="[ ]"> </argument> - <argument index="4" name="flags" type="int" default="null"> + <argument index="4" name="flags" type="int" default="0"> </argument> <description> Connect a signal to a method at a target (member function). Binds are optional and are passed as extra arguments to the call. Flags specify optional deferred or one shot connections, see enum CONNECT_*. A signal can only be connected once to a method, and it will throw an error if already connected. If you want to avoid this, use [method is_connected] to check. @@ -31415,7 +31415,7 @@ </return> <argument index="0" name="what" type="int"> </argument> - <argument index="1" name="reversed" type="bool" default="null"> + <argument index="1" name="reversed" type="bool" default="false"> </argument> <description> Notify the object of something. @@ -31517,7 +31517,7 @@ </description> <methods> <method name="get_cull_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="OccluderPolygon2D.CullMode"> </return> <description> </description> @@ -31585,13 +31585,13 @@ </description> <methods> <method name="get_shadow_detail" qualifiers="const"> - <return type="int"> + <return type="int" enum="OmniLight.ShadowDetail"> </return> <description> </description> </method> <method name="get_shadow_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="OmniLight.ShadowMode"> </return> <description> </description> @@ -31652,7 +31652,7 @@ </return> <argument index="0" name="label" type="String"> </argument> - <argument index="1" name="id" type="int" default="null"> + <argument index="1" name="id" type="int" default="-1"> </argument> <description> Add an item, with text "label" and (optionally) id. If no "id" is passed, "id" becomes the item index. New items are appended at the end. @@ -31865,7 +31865,7 @@ </description> <methods> <method name="add_file"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="pck_path" type="String"> </argument> @@ -31875,7 +31875,7 @@ </description> </method> <method name="flush"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="verbose" type="bool"> </argument> @@ -31883,7 +31883,7 @@ </description> </method> <method name="pck_start"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="pck_name" type="String"> </argument> @@ -31923,7 +31923,7 @@ </description> <methods> <method name="pack"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="value" type="Variant"> </argument> @@ -31988,7 +31988,7 @@ </description> </method> <method name="pack"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="Node"> </argument> @@ -32033,7 +32033,7 @@ </description> </method> <method name="get_packet_error" qualifiers="const"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Return the error state of the last packet received (via [method get_packet] and [method get_var]). @@ -32053,7 +32053,7 @@ </description> </method> <method name="put_packet"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="buffer" type="PoolByteArray"> </argument> @@ -32062,7 +32062,7 @@ </description> </method> <method name="put_var"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="var" type="Variant"> </argument> @@ -32168,13 +32168,13 @@ </description> </method> <method name="listen"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="port" type="int"> </argument> <argument index="1" name="bind_address" type="String" default=""*""> </argument> - <argument index="2" name="recv_buf_size" type="int" default="null"> + <argument index="2" name="recv_buf_size" type="int" default="65536"> </argument> <description> Make this [PacketPeerUDP] listen on the "port" binding to "bind_address" with a buffer size "recv_buf_size". @@ -32184,7 +32184,7 @@ </description> </method> <method name="set_dest_address"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="host" type="String"> </argument> @@ -32195,7 +32195,7 @@ </description> </method> <method name="wait"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Wait for a packet to arrive on the listening port, see [method listen]. @@ -32474,7 +32474,7 @@ </description> </method> <method name="get_draw_order" qualifiers="const"> - <return type="int"> + <return type="int" enum="Particles.DrawOrder"> </return> <description> </description> @@ -32775,7 +32775,7 @@ </description> </method> <method name="get_draw_order" qualifiers="const"> - <return type="int"> + <return type="int" enum="Particles2D.DrawOrder"> </return> <description> </description> @@ -33127,7 +33127,7 @@ </description> </method> <method name="get_emission_shape" qualifiers="const"> - <return type="int"> + <return type="int" enum="ParticlesMaterial.EmissionShape"> </return> <description> </description> @@ -33617,7 +33617,7 @@ </description> </method> <method name="get_rotation_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="PathFollow.RotationMode"> </return> <description> Returns the rotation mode. The constants below list which axes are allowed to rotate for each mode. @@ -34192,7 +34192,7 @@ </return> <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> </argument> - <argument index="1" name="max_results" type="int" default="null"> + <argument index="1" name="max_results" type="int" default="32"> </argument> <description> Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time. @@ -34221,13 +34221,13 @@ </return> <argument index="0" name="point" type="Vector2"> </argument> - <argument index="1" name="max_results" type="int" default="2147483647"> + <argument index="1" name="max_results" type="int" default="32"> </argument> <argument index="2" name="exclude" type="Array" default="[ ]"> </argument> - <argument index="3" name="collision_layer" type="int" default="32"> + <argument index="3" name="collision_layer" type="int" default="2147483647"> </argument> - <argument index="4" name="type_mask" type="int" default="null"> + <argument index="4" name="type_mask" type="int" default="15"> </argument> <description> Check whether a point is inside any shape. The shapes the point is inside of are returned in an array containing dictionaries with the following fields: @@ -34248,9 +34248,9 @@ </argument> <argument index="2" name="exclude" type="Array" default="[ ]"> </argument> - <argument index="3" name="collision_layer" type="int" default="null"> + <argument index="3" name="collision_layer" type="int" default="2147483647"> </argument> - <argument index="4" name="type_mask" type="int" default="null"> + <argument index="4" name="type_mask" type="int" default="15"> </argument> <description> Intersect a ray in a given space. The returned object is a dictionary with the following fields: @@ -34270,7 +34270,7 @@ </return> <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> </argument> - <argument index="1" name="max_results" type="int" default="null"> + <argument index="1" name="max_results" type="int" default="32"> </argument> <description> Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields: @@ -34319,7 +34319,7 @@ </argument> <argument index="1" name="shape" type="RID"> </argument> - <argument index="2" name="transform" type="Transform2D" default="null"> + <argument index="2" name="transform" type="Transform2D" default="Transform2D( 1, 0, 0, 1, 0, 0 )"> </argument> <description> Add a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index. @@ -34413,7 +34413,7 @@ </description> </method> <method name="area_get_space_override_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Physics2DServer.AreaSpaceOverrideMode"> </return> <argument index="0" name="area" type="RID"> </argument> @@ -34596,7 +34596,7 @@ </argument> <argument index="1" name="shape" type="RID"> </argument> - <argument index="2" name="transform" type="Transform2D" default="null"> + <argument index="2" name="transform" type="Transform2D" default="Transform2D( 1, 0, 0, 1, 0, 0 )"> </argument> <description> Add a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index. @@ -34638,9 +34638,9 @@ <method name="body_create"> <return type="RID"> </return> - <argument index="0" name="mode" type="int" enum="Physics2DServer.BodyMode" default="false"> + <argument index="0" name="mode" type="int" enum="Physics2DServer.BodyMode" default="2"> </argument> - <argument index="1" name="init_sleeping" type="bool" default="2"> + <argument index="1" name="init_sleeping" type="bool" default="false"> </argument> <description> Create a physics body. The first parameter can be any value from constants BODY_MODE*, for the type of body created. Additionally, the body can be created in sleeping state to save processing time. @@ -34665,7 +34665,7 @@ </description> </method> <method name="body_get_continuous_collision_detection_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Physics2DServer.CCDMode"> </return> <argument index="0" name="body" type="RID"> </argument> @@ -34683,7 +34683,7 @@ </description> </method> <method name="body_get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Physics2DServer.BodyMode"> </return> <argument index="0" name="body" type="RID"> </argument> @@ -35006,7 +35006,7 @@ </argument> <argument index="2" name="motion" type="Vector2"> </argument> - <argument index="3" name="margin" type="float" default="null"> + <argument index="3" name="margin" type="float" default="0.08"> </argument> <argument index="4" name="result" type="Physics2DTestMotionResult" default="null"> </argument> @@ -35023,7 +35023,7 @@ </argument> <argument index="2" name="body_a" type="RID"> </argument> - <argument index="3" name="body_b" type="RID" default="null"> + <argument index="3" name="body_b" type="RID"> </argument> <description> Create a damped spring joint between two bodies. If not specified, the second body is assumed to be the joint itself. @@ -35080,9 +35080,9 @@ </argument> <argument index="2" name="anchor_b" type="Vector2"> </argument> - <argument index="3" name="body_a" type="RID" default="null"> + <argument index="3" name="body_a" type="RID"> </argument> - <argument index="4" name="body_b" type="RID" default="null"> + <argument index="4" name="body_b" type="RID"> </argument> <description> Create a groove joint between two bodies. If not specified, the bodyies are assumed to be the joint itself. @@ -35100,7 +35100,7 @@ </description> </method> <method name="joint_get_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Physics2DServer.JointType"> </return> <argument index="0" name="joint" type="RID"> </argument> @@ -35128,7 +35128,7 @@ </argument> <argument index="1" name="body_a" type="RID"> </argument> - <argument index="2" name="body_b" type="RID" default="null"> + <argument index="2" name="body_b" type="RID"> </argument> <description> Create a pin joint between two bodies. If not specified, the second body is assumed to be the joint itself. @@ -35162,7 +35162,7 @@ </description> </method> <method name="shape_get_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Physics2DServer.ShapeType"> </return> <argument index="0" name="shape" type="RID"> </argument> @@ -36150,7 +36150,7 @@ </return> <argument index="0" name="shape" type="PhysicsShapeQueryParameters"> </argument> - <argument index="1" name="max_results" type="int" default="null"> + <argument index="1" name="max_results" type="int" default="32"> </argument> <description> </description> @@ -36172,9 +36172,9 @@ </argument> <argument index="2" name="exclude" type="Array" default="[ ]"> </argument> - <argument index="3" name="collision_layer" type="int" default="null"> + <argument index="3" name="collision_layer" type="int" default="2147483647"> </argument> - <argument index="4" name="type_mask" type="int" default="null"> + <argument index="4" name="type_mask" type="int" default="15"> </argument> <description> </description> @@ -36184,7 +36184,7 @@ </return> <argument index="0" name="shape" type="PhysicsShapeQueryParameters"> </argument> - <argument index="1" name="max_results" type="int" default="null"> + <argument index="1" name="max_results" type="int" default="32"> </argument> <description> </description> @@ -36218,7 +36218,7 @@ </argument> <argument index="1" name="shape" type="RID"> </argument> - <argument index="2" name="transform" type="Transform" default="null"> + <argument index="2" name="transform" type="Transform" default="Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )"> </argument> <description> </description> @@ -36302,7 +36302,7 @@ </description> </method> <method name="area_get_space_override_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="PhysicsServer.AreaSpaceOverrideMode"> </return> <argument index="0" name="area" type="RID"> </argument> @@ -36460,7 +36460,7 @@ </argument> <argument index="1" name="shape" type="RID"> </argument> - <argument index="2" name="transform" type="Transform" default="null"> + <argument index="2" name="transform" type="Transform" default="Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )"> </argument> <description> </description> @@ -36508,15 +36508,15 @@ <method name="body_create"> <return type="RID"> </return> - <argument index="0" name="mode" type="int" enum="PhysicsServer.BodyMode" default="false"> + <argument index="0" name="mode" type="int" enum="PhysicsServer.BodyMode" default="2"> </argument> - <argument index="1" name="init_sleeping" type="bool" default="2"> + <argument index="1" name="init_sleeping" type="bool" default="false"> </argument> <description> </description> </method> <method name="body_get_axis_lock" qualifiers="const"> - <return type="int"> + <return type="int" enum="PhysicsServer.BodyAxisLock"> </return> <argument index="0" name="body" type="RID"> </argument> @@ -36548,7 +36548,7 @@ </description> </method> <method name="body_get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="PhysicsServer.BodyMode"> </return> <argument index="0" name="body" type="RID"> </argument> @@ -37038,7 +37038,7 @@ </description> </method> <method name="joint_get_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="PhysicsServer.JointType"> </return> <argument index="0" name="joint" type="RID"> </argument> @@ -37138,7 +37138,7 @@ </description> </method> <method name="shape_get_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="PhysicsServer.ShapeType"> </return> <argument index="0" name="shape" type="RID"> </argument> @@ -39021,7 +39021,7 @@ </argument> <argument index="1" name="id" type="int" default="-1"> </argument> - <argument index="2" name="accel" type="int" default="null"> + <argument index="2" name="accel" type="int" default="0"> </argument> <description> Add a new checkable item with text "label". An id can optionally be provided, as well as an accelerator. If no id is provided, one will be created from the index. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. @@ -39034,7 +39034,7 @@ </argument> <argument index="1" name="id" type="int" default="-1"> </argument> - <argument index="2" name="global" type="bool" default="null"> + <argument index="2" name="global" type="bool" default="false"> </argument> <description> </description> @@ -39046,9 +39046,9 @@ </argument> <argument index="1" name="label" type="String"> </argument> - <argument index="2" name="id" type="int" default="null"> + <argument index="2" name="id" type="int" default="-1"> </argument> - <argument index="3" name="accel" type="int" default="null"> + <argument index="3" name="accel" type="int" default="0"> </argument> <description> Add a new checkable item with text "label" and icon "texture". An id can optionally be provided, as well as an accelerator. If no id is provided, one will be @@ -39062,9 +39062,9 @@ </argument> <argument index="1" name="shortcut" type="ShortCut"> </argument> - <argument index="2" name="id" type="int" default="null"> + <argument index="2" name="id" type="int" default="-1"> </argument> - <argument index="3" name="global" type="bool" default="null"> + <argument index="3" name="global" type="bool" default="false"> </argument> <description> </description> @@ -39076,9 +39076,9 @@ </argument> <argument index="1" name="label" type="String"> </argument> - <argument index="2" name="id" type="int" default="null"> + <argument index="2" name="id" type="int" default="-1"> </argument> - <argument index="3" name="accel" type="int" default="null"> + <argument index="3" name="accel" type="int" default="0"> </argument> <description> Add a new item with text "label" and icon "texture". An id can optionally be provided, as well as an accelerator keybinding. If no id is provided, one will be created from the index. @@ -39091,9 +39091,9 @@ </argument> <argument index="1" name="shortcut" type="ShortCut"> </argument> - <argument index="2" name="id" type="int" default="null"> + <argument index="2" name="id" type="int" default="-1"> </argument> - <argument index="3" name="global" type="bool" default="null"> + <argument index="3" name="global" type="bool" default="false"> </argument> <description> </description> @@ -39105,7 +39105,7 @@ </argument> <argument index="1" name="id" type="int" default="-1"> </argument> - <argument index="2" name="accel" type="int" default="null"> + <argument index="2" name="accel" type="int" default="0"> </argument> <description> Add a new item with text "label". An id can optionally be provided, as well as an accelerator keybinding. If no id is provided, one will be created from the index. @@ -39125,7 +39125,7 @@ </argument> <argument index="1" name="id" type="int" default="-1"> </argument> - <argument index="2" name="global" type="bool" default="null"> + <argument index="2" name="global" type="bool" default="false"> </argument> <description> </description> @@ -39137,7 +39137,7 @@ </argument> <argument index="1" name="submenu" type="String"> </argument> - <argument index="2" name="id" type="int" default="null"> + <argument index="2" name="id" type="int" default="-1"> </argument> <description> Adds an item with a submenu. The submenu is the name of a child PopupMenu node that would be shown when the item is clicked. An id can optionally be provided, but if is isn't provided, one will be created from the index. @@ -39407,7 +39407,7 @@ </argument> <argument index="1" name="shortcut" type="ShortCut"> </argument> - <argument index="2" name="global" type="bool" default="null"> + <argument index="2" name="global" type="bool" default="false"> </argument> <description> </description> @@ -39767,7 +39767,7 @@ </description> </method> <method name="get_texture_size" qualifiers="const"> - <return type="int"> + <return type="int" enum="ProceduralSky.TextureSize"> </return> <description> </description> @@ -40108,13 +40108,13 @@ </description> </method> <method name="save"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> </description> </method> <method name="save_custom"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="file" type="String"> </argument> @@ -41486,7 +41486,7 @@ </description> </method> <method name="get_update_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="ReflectionProbe.UpdateMode"> </return> <description> </description> @@ -41672,7 +41672,7 @@ </description> </method> <method name="compile"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="pattern" type="String"> </argument> @@ -41715,7 +41715,7 @@ </argument> <argument index="1" name="offset" type="int" default="0"> </argument> - <argument index="2" name="end" type="int" default="null"> + <argument index="2" name="end" type="int" default="-1"> </argument> <description> Searches the text for the compiled pattern. Returns a [RegExMatch] container of the first matching reult if found, otherwise null. The region to search within can be specified without modifying where the start and end anchor would be. @@ -41730,9 +41730,9 @@ </argument> <argument index="2" name="all" type="bool" default="false"> </argument> - <argument index="3" name="offset" type="int" default="null"> + <argument index="3" name="offset" type="int" default="0"> </argument> - <argument index="4" name="end" type="int" default="null"> + <argument index="4" name="end" type="int" default="-1"> </argument> <description> Searches the text for the compiled pattern and replaces it with the specified string. Escapes and backreferences such as [code]\1[/code] and [code]\g<name>[/code] expanded and resolved. By default only the first instance is replaced but it can be changed for all instances (global replacement). The region to search within can be specified without modifying where the start and end anchor would be. @@ -42153,14 +42153,14 @@ </description> </method> <method name="poll"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Poll the load. If OK is returned, this means poll will have to be called again. If ERR_FILE_EOF is returned, them the load has finished and the resource can be obtained by calling [method get_resource]. </description> </method> <method name="wait"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> </description> @@ -42209,7 +42209,7 @@ </argument> <argument index="1" name="type_hint" type="String" default=""""> </argument> - <argument index="2" name="p_no_cache" type="bool" default="null"> + <argument index="2" name="p_no_cache" type="bool" default="false"> </argument> <description> </description> @@ -42219,7 +42219,7 @@ </return> <argument index="0" name="path" type="String"> </argument> - <argument index="1" name="type_hint" type="String" default="null"> + <argument index="1" name="type_hint" type="String" default=""""> </argument> <description> Load a resource interactively, the returned object allows to load with high granularity. @@ -42327,13 +42327,13 @@ </description> </method> <method name="save"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> <argument index="1" name="resource" type="Resource"> </argument> - <argument index="2" name="flags" type="int" default="null"> + <argument index="2" name="flags" type="int" default="0"> </argument> <description> Save a resource to disk, to a given path. @@ -42380,7 +42380,7 @@ </description> </method> <method name="append_bbcode"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="bbcode" type="String"> </argument> @@ -42474,7 +42474,7 @@ </description> </method> <method name="parse_bbcode"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="bbcode" type="String"> </argument> @@ -42791,7 +42791,7 @@ </description> </method> <method name="get_axis_lock" qualifiers="const"> - <return type="int"> + <return type="int" enum="RigidBody.AxisLock"> </return> <description> Return the current axis lock of the body. One of AXIS_LOCK_* enum. @@ -42854,7 +42854,7 @@ </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="RigidBody.Mode"> </return> <description> Return the current body mode, see [method set_mode]. @@ -43251,7 +43251,7 @@ </description> </method> <method name="get_continuous_collision_detection_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="RigidBody2D.CCDMode"> </return> <description> Return whether this body is using continuous collision detection. @@ -43307,7 +43307,7 @@ </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="RigidBody2D.Mode"> </return> <description> Return the current body mode, see [method set_mode]. @@ -43762,7 +43762,7 @@ </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="for_parent" type="bool" default="null"> + <argument index="1" name="for_parent" type="bool" default="false"> </argument> <description> </description> @@ -43850,7 +43850,7 @@ </description> </method> <method name="change_scene"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -43858,7 +43858,7 @@ </description> </method> <method name="change_scene_to"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="packed_scene" type="PackedScene"> </argument> @@ -43870,7 +43870,7 @@ </return> <argument index="0" name="time_sec" type="float"> </argument> - <argument index="1" name="pause_mode_process" type="bool" default="null"> + <argument index="1" name="pause_mode_process" type="bool" default="true"> </argument> <description> </description> @@ -44020,7 +44020,7 @@ </description> </method> <method name="reload_current_scene"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> </description> @@ -44131,7 +44131,7 @@ </argument> <argument index="2" name="minsize" type="Vector2"> </argument> - <argument index="3" name="shrink" type="int" default="null"> + <argument index="3" name="shrink" type="int" default="1"> </argument> <description> </description> @@ -44313,7 +44313,7 @@ </description> </method> <method name="reload"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="keep_state" type="bool" default="false"> </argument> @@ -44550,14 +44550,14 @@ </description> <methods> <method name="post"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Lowers the [Semaphore], allowing one more thread in. </description> </method> <method name="wait"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Tries to wait for the [Semaphore], if its value is zero, blocks until non-zero. @@ -44602,7 +44602,7 @@ </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Shader.Mode"> </return> <description> </description> @@ -45067,7 +45067,7 @@ </description> <methods> <method name="get_radiance_size" qualifiers="const"> - <return type="int"> + <return type="int" enum="Sky.RadianceSize"> </return> <description> </description> @@ -45687,19 +45687,19 @@ </description> </method> <method name="get_ao_texture_channel" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.TextureChannel"> </return> <description> </description> </method> <method name="get_billboard_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.BillboardMode"> </return> <description> </description> </method> <method name="get_blend_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.BlendMode"> </return> <description> </description> @@ -45717,7 +45717,7 @@ </description> </method> <method name="get_cull_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.CullMode"> </return> <description> </description> @@ -45735,7 +45735,7 @@ </description> </method> <method name="get_depth_draw_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.DepthDrawMode"> </return> <description> </description> @@ -45747,19 +45747,19 @@ </description> </method> <method name="get_detail_blend_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.BlendMode"> </return> <description> </description> </method> <method name="get_detail_uv" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.DetailUV"> </return> <description> </description> </method> <method name="get_diffuse_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.DiffuseMode"> </return> <description> </description> @@ -45811,7 +45811,7 @@ </description> </method> <method name="get_metallic_texture_channel" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.TextureChannel"> </return> <description> </description> @@ -45853,7 +45853,7 @@ </description> </method> <method name="get_refraction_texture_channel" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.TextureChannel"> </return> <description> </description> @@ -45877,7 +45877,7 @@ </description> </method> <method name="get_roughness_texture_channel" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.TextureChannel"> </return> <description> </description> @@ -45889,7 +45889,7 @@ </description> </method> <method name="get_specular_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpatialMaterial.SpecularMode"> </return> <description> </description> @@ -46410,6 +46410,8 @@ </member> <member name="flags_vertex_lighting" type="bool" setter="set_flag" getter="get_flag" brief=""> </member> + <member name="flags_world_triplanar" type="bool" setter="set_flag" getter="get_flag" brief=""> + </member> <member name="metallic" type="float" setter="set_metallic" getter="get_metallic" brief=""> </member> <member name="metallic_specular" type="float" setter="set_specular" getter="get_specular" brief=""> @@ -46604,11 +46606,13 @@ </constant> <constant name="FLAG_UV2_USE_TRIPLANAR" value="8"> </constant> - <constant name="FLAG_AO_ON_UV2" value="9"> + <constant name="FLAG_AO_ON_UV2" value="10"> </constant> - <constant name="FLAG_USE_ALPHA_SCISSOR" value="10"> + <constant name="FLAG_USE_ALPHA_SCISSOR" value="11"> </constant> - <constant name="FLAG_MAX" value="11"> + <constant name="FLAG_TRIPLANAR_USE_WORLD" value="9"> + </constant> + <constant name="FLAG_MAX" value="12"> </constant> <constant name="DIFFUSE_LAMBERT" value="0"> </constant> @@ -46902,7 +46906,7 @@ </description> <methods> <method name="get_dragger_visibility" qualifiers="const"> - <return type="int"> + <return type="int" enum="SplitContainer.DraggerVisibility"> </return> <description> Return visibility of the split dragger (one of [DRAGGER_VISIBLE], [DRAGGER_HIDDEN] or [DRAGGER_HIDDEN_COLLAPSED]). @@ -47358,13 +47362,13 @@ </description> <methods> <method name="get_alpha_cut_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="SpriteBase3D.AlphaCutMode"> </return> <description> </description> </method> <method name="get_axis" qualifiers="const"> - <return type="int"> + <return type="int" enum="Vector3.Axis"> </return> <description> </description> @@ -47574,7 +47578,7 @@ </argument> <argument index="1" name="frame" type="Texture"> </argument> - <argument index="2" name="atpos" type="int" default="null"> + <argument index="2" name="atpos" type="int" default="-1"> </argument> <description> </description> @@ -48053,7 +48057,7 @@ </description> </method> <method name="put_data"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="data" type="PoolByteArray"> </argument> @@ -48228,7 +48232,7 @@ </description> <methods> <method name="accept_stream"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="stream" type="StreamPeer"> </argument> @@ -48236,13 +48240,13 @@ </description> </method> <method name="connect_to_stream"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="stream" type="StreamPeer"> </argument> <argument index="1" name="validate_certs" type="bool" default="false"> </argument> - <argument index="2" name="for_hostname" type="String" default="null"> + <argument index="2" name="for_hostname" type="String" default=""""> </argument> <description> Connect to a peer using an underlying [StreamPeer] "stream", when "validate_certs" is true, [StreamPeerSSL] will validate that the certificate presented by the peer matches the "for_hostname". @@ -48256,7 +48260,7 @@ </description> </method> <method name="get_status" qualifiers="const"> - <return type="int"> + <return type="int" enum="StreamPeerSSL.Status"> </return> <description> Return the status of the connection, one of STATUS_* enum. @@ -48287,7 +48291,7 @@ </description> <methods> <method name="connect_to_host"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="host" type="String"> </argument> @@ -48319,7 +48323,7 @@ </description> </method> <method name="get_status" qualifiers="const"> - <return type="int"> + <return type="int" enum="StreamPeerTCP.Status"> </return> <description> Return the status of the connection, one of STATUS_* enum. @@ -48360,7 +48364,7 @@ </description> </method> <method name="load"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="path" type="String"> </argument> @@ -49206,10 +49210,27 @@ </class> <class name="StyleBoxFlat" inherits="StyleBox" category="Core"> <brief_description> - Stylebox of a single color. - </brief_description> - <description> - Stylebox of a single color. Displays the stylebox of a single color, alternatively a border with light/dark colors can be assigned. + Customizable Stylebox with a given set of parameters. (no texture required) + </brief_description> + <description> + This stylebox can be used to achieve all kinds of looks without the need of a texture. Those properties are customizable: + - Color + - Border width (individual width for each border) + - Rounded corners (individual radius for each corner) + - Shadow + About corner radius: + Setting corner radius to high values is allowed. As soon as corners would overlap the stylebox will switch to a relative system. Example: + [codeblock] + height = 30 + corner_radius_top_left = 50 + corner_raidus_bottom_left = 100 + [/codeblock] + The relative system now would take the 1:2 ratio of the two left corners to calculate the actual corner width. Both corners added will [b]never[/b] be more than the height. Result: + [codeblock] + corner_radius_top_left: 10 + corner_raidus_bottom_left: 20 + [/codeblock] + </description> <methods> <method name="get_aa_size" qualifiers="const"> @@ -49453,46 +49474,69 @@ </methods> <members> <member name="anti_aliasing" type="bool" setter="set_anti_aliased" getter="is_anti_aliased" brief=""> + Anti Aliasing draws a small ring around edges. This ring fades to transparent. As a result edges look much smoother. This is only noticable when using rounded corners. </member> <member name="anti_aliasing_size" type="int" setter="set_aa_size" getter="get_aa_size" brief=""> + This changes the size of the faded ring. Higher values can be used to achieve a "blurry" effect. </member> <member name="bg_color" type="Color" setter="set_bg_color" getter="get_bg_color" brief=""> + The background color of the stylebox. </member> <member name="border_blend" type="bool" setter="set_border_blend" getter="get_border_blend" brief=""> + When set to true, the border will fade into the background color. </member> <member name="border_color" type="Color" setter="set_border_color" getter="get_border_color" brief=""> + Sets the color of the border. </member> <member name="border_width_bottom" type="int" setter="set_border_width" getter="get_border_width" brief=""> + Border width for the bottom border. </member> <member name="border_width_left" type="int" setter="set_border_width" getter="get_border_width" brief=""> + Border width for the left border. </member> <member name="border_width_right" type="int" setter="set_border_width" getter="get_border_width" brief=""> + Border width for the right border. </member> <member name="border_width_top" type="int" setter="set_border_width" getter="get_border_width" brief=""> + Border width for the top border. </member> <member name="corner_detail" type="int" setter="set_corner_detail" getter="get_corner_detail" brief=""> + This sets the amount of vertices used for each corner. Higher values result in rounder corners but take more processing power to compute. When choosing a value you should take the corner radius ([method set_corner_radius]) into account. + For corner radius smaller than 10: 4-5 should be enough + For corner radius smaller than 30: 8-12 should be enough ... </member> <member name="corner_radius_bottom_left" type="int" setter="set_corner_radius" getter="get_corner_radius" brief=""> + The corner radius of the bottom left corner. When set to 0 the corner is not rounded. </member> <member name="corner_radius_bottom_right" type="int" setter="set_corner_radius" getter="get_corner_radius" brief=""> + The corner radius of the bottom right corner. When set to 0 the corner is not rounded. </member> <member name="corner_radius_top_left" type="int" setter="set_corner_radius" getter="get_corner_radius" brief=""> + The corner radius of the top left corner. When set to 0 the corner is not rounded. </member> <member name="corner_radius_top_right" type="int" setter="set_corner_radius" getter="get_corner_radius" brief=""> + The corner radius of the top right corner. When set to 0 the corner is not rounded. </member> <member name="draw_center" type="bool" setter="set_draw_center" getter="is_draw_center_enabled" brief=""> + Toggels drawing of the inner part of the stylebox. </member> <member name="expand_margin_bottom" type="float" setter="set_expand_margin" getter="get_expand_margin" brief=""> + Expands the stylebox outside of the control rect on the bottom edge. Useful in combination with border_width_bottom. To draw a border outside the control rect. </member> <member name="expand_margin_left" type="float" setter="set_expand_margin" getter="get_expand_margin" brief=""> + Expands the stylebox outside of the control rect on the left edge. Useful in combination with border_width_left. To draw a border outside the control rect. </member> <member name="expand_margin_right" type="float" setter="set_expand_margin" getter="get_expand_margin" brief=""> + Expands the stylebox outside of the control rect on the right edge. Useful in combination with border_width_right. To draw a border outside the control rect. </member> <member name="expand_margin_top" type="float" setter="set_expand_margin" getter="get_expand_margin" brief=""> + Expands the stylebox outside of the control rect on the top edge. Useful in combination with border_width_top. To draw a border outside the control rect. </member> <member name="shadow_color" type="Color" setter="set_shadow_color" getter="get_shadow_color" brief=""> + The color of the shadow. (This has no effect when shadow_size < 1) </member> <member name="shadow_size" type="int" setter="set_shadow_size" getter="get_shadow_size" brief=""> + The shadow size in pixels. </member> </members> <constants> @@ -49515,7 +49559,7 @@ </description> </method> <method name="get_h_axis_stretch_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="StyleBoxTexture.AxisStretchMode"> </return> <description> </description> @@ -49553,7 +49597,7 @@ </description> </method> <method name="get_v_axis_stretch_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="StyleBoxTexture.AxisStretchMode"> </return> <description> </description> @@ -49794,15 +49838,15 @@ </return> <argument index="0" name="vertexes" type="PoolVector3Array"> </argument> - <argument index="1" name="uvs" type="PoolVector2Array" default="PoolVector3Array( )"> + <argument index="1" name="uvs" type="PoolVector2Array" default="PoolVector2Array( )"> </argument> - <argument index="2" name="colors" type="PoolColorArray" default="PoolVector2Array( )"> + <argument index="2" name="colors" type="PoolColorArray" default="PoolColorArray( )"> </argument> - <argument index="3" name="uv2s" type="PoolVector2Array" default="PoolColorArray( )"> + <argument index="3" name="uv2s" type="PoolVector2Array" default="PoolVector2Array( )"> </argument> - <argument index="4" name="normals" type="PoolVector3Array" default="PoolVector2Array( )"> + <argument index="4" name="normals" type="PoolVector3Array" default="PoolVector3Array( )"> </argument> - <argument index="5" name="tangents" type="Array" default="null"> + <argument index="5" name="tangents" type="Array" default="[ ]"> </argument> <description> Insert a triangle fan made of array data into [Mesh] being constructed. @@ -49947,11 +49991,11 @@ </description> </method> <method name="listen"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="port" type="int"> </argument> - <argument index="1" name="bind_address" type="String" default="null"> + <argument index="1" name="bind_address" type="String" default=""*""> </argument> <description> Listen on the "port" binding to "bind_address". @@ -50021,7 +50065,7 @@ </description> </method> <method name="get_tab_align" qualifiers="const"> - <return type="int"> + <return type="int" enum="TabContainer.TabAlign"> </return> <description> Return tab alignment, from the ALIGN_* enum. @@ -50216,9 +50260,9 @@ <method name="add_tab"> <return type="void"> </return> - <argument index="0" name="title" type="String" default="null"> + <argument index="0" name="title" type="String" default=""""> </argument> - <argument index="1" name="icon" type="Texture" default=""""> + <argument index="1" name="icon" type="Texture" default="null"> </argument> <description> </description> @@ -50238,13 +50282,13 @@ </description> </method> <method name="get_tab_align" qualifiers="const"> - <return type="int"> + <return type="int" enum="Tabs.TabAlign"> </return> <description> </description> </method> <method name="get_tab_close_display_policy" qualifiers="const"> - <return type="int"> + <return type="int" enum="Tabs.CloseButtonDisplayPolicy"> </return> <description> </description> @@ -50480,7 +50524,7 @@ </argument> <argument index="2" name="color" type="Color"> </argument> - <argument index="3" name="line_only" type="bool" default="null"> + <argument index="3" name="line_only" type="bool" default="false"> </argument> <description> Add color region (given the delimiters) and its colors. @@ -50585,7 +50629,7 @@ </return> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="adjust_viewport" type="bool" default="null"> + <argument index="1" name="adjust_viewport" type="bool" default="true"> </argument> <description> </description> @@ -50595,7 +50639,7 @@ </return> <argument index="0" name="line" type="int"> </argument> - <argument index="1" name="adjust_viewport" type="bool" default="null"> + <argument index="1" name="adjust_viewport" type="bool" default="true"> </argument> <description> </description> @@ -51028,7 +51072,7 @@ </argument> <argument index="2" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> - <argument index="3" name="transpose" type="bool" default="null"> + <argument index="3" name="transpose" type="bool" default="false"> </argument> <argument index="4" name="normal_map" type="Texture" default="null"> </argument> @@ -51044,9 +51088,9 @@ </argument> <argument index="2" name="tile" type="bool"> </argument> - <argument index="3" name="modulate" type="Color" default="null"> + <argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> - <argument index="4" name="transpose" type="bool" default="null"> + <argument index="4" name="transpose" type="bool" default="false"> </argument> <argument index="5" name="normal_map" type="Texture" default="null"> </argument> @@ -51064,11 +51108,11 @@ </argument> <argument index="3" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )"> </argument> - <argument index="4" name="transpose" type="bool" default="null"> + <argument index="4" name="transpose" type="bool" default="false"> </argument> <argument index="5" name="normal_map" type="Texture" default="null"> </argument> - <argument index="6" name="clip_uv" type="bool" default="null"> + <argument index="6" name="clip_uv" type="bool" default="true"> </argument> <description> </description> @@ -51199,7 +51243,7 @@ </description> </method> <method name="get_stretch_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="TextureButton.StretchMode"> </return> <description> </description> @@ -51497,7 +51541,7 @@ </description> <methods> <method name="get_stretch_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="TextureRect.StretchMode"> </return> <description> </description> @@ -51890,7 +51934,7 @@ </description> </method> <method name="start"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="instance" type="Object"> </argument> @@ -51898,7 +51942,7 @@ </argument> <argument index="2" name="userdata" type="Variant" default="null"> </argument> - <argument index="3" name="priority" type="int" default="null"> + <argument index="3" name="priority" type="int" default="1"> </argument> <description> Start a new [Thread], it will run "method" on object "instance" using "userdata" as an argument and running with "priority", one of PRIORITY_* enum. @@ -52038,14 +52082,14 @@ </description> </method> <method name="get_half_offset" qualifiers="const"> - <return type="int"> + <return type="int" enum="TileMap.HalfOffset"> </return> <description> Return the current half offset configuration. </description> </method> <method name="get_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="TileMap.Mode"> </return> <description> Return the orientation mode. @@ -52065,7 +52109,7 @@ </description> </method> <method name="get_tile_origin" qualifiers="const"> - <return type="int"> + <return type="int" enum="TileMap.TileOrigin"> </return> <description> Return the tile origin configuration. @@ -52144,7 +52188,7 @@ </return> <argument index="0" name="mappos" type="Vector2"> </argument> - <argument index="1" name="ignore_half_ofs" type="bool" default="null"> + <argument index="1" name="ignore_half_ofs" type="bool" default="false"> </argument> <description> Return the absolute world position corresponding to the tilemap (grid-based) coordinates given as an argument. @@ -52160,11 +52204,11 @@ </argument> <argument index="2" name="tile" type="int"> </argument> - <argument index="3" name="flip_x" type="bool" default="null"> + <argument index="3" name="flip_x" type="bool" default="false"> </argument> - <argument index="4" name="flip_y" type="bool" default="null"> + <argument index="4" name="flip_y" type="bool" default="false"> </argument> - <argument index="5" name="transpose" type="bool" default="null"> + <argument index="5" name="transpose" type="bool" default="false"> </argument> <description> Set the tile index for the cell referenced by its grid-based X and Y coordinates. @@ -52190,9 +52234,9 @@ </argument> <argument index="2" name="flip_x" type="bool" default="false"> </argument> - <argument index="3" name="flip_y" type="bool" default="null"> + <argument index="3" name="flip_y" type="bool" default="false"> </argument> - <argument index="4" name="transpose" type="bool" default="null"> + <argument index="4" name="transpose" type="bool" default="false"> </argument> <description> Set the tile index for the cell referenced by a Vector2 of grid-based coordinates. @@ -52506,7 +52550,7 @@ </argument> <argument index="2" name="shape_transform" type="Transform2D"> </argument> - <argument index="3" name="one_way" type="bool" default="null"> + <argument index="3" name="one_way" type="bool" default="false"> </argument> <description> </description> @@ -52823,7 +52867,7 @@ </description> </method> <method name="get_timer_process_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Timer.TimerProcessMode"> </return> <description> Return the timer's processing mode. @@ -53020,7 +53064,7 @@ </description> </method> <method name="get_visibility_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="TouchScreenButton.VisibilityMode"> </return> <description> </description> @@ -53731,7 +53775,7 @@ </return> <argument index="0" name="item" type="Object"> </argument> - <argument index="1" name="column" type="int" default="null"> + <argument index="1" name="column" type="int" default="-1"> </argument> <description> Get the rectangle area of the the specified item. If column is specified, only get the position and size of that column, otherwise get the rectangle containing all columns. @@ -54099,9 +54143,9 @@ </argument> <argument index="2" name="button_idx" type="int" default="-1"> </argument> - <argument index="3" name="disabled" type="bool" default="null"> + <argument index="3" name="disabled" type="bool" default="false"> </argument> - <argument index="4" name="tooltip" type="String" default="null"> + <argument index="4" name="tooltip" type="String" default=""""> </argument> <description> </description> @@ -54159,7 +54203,7 @@ </description> </method> <method name="get_cell_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="TreeItem.TreeCellMode"> </return> <argument index="0" name="column" type="int"> </argument> @@ -54275,7 +54319,7 @@ </description> </method> <method name="get_text_align" qualifiers="const"> - <return type="int"> + <return type="int" enum="TreeItem.TextAlign"> </return> <argument index="0" name="column" type="int"> </argument> @@ -54437,7 +54481,7 @@ </argument> <argument index="1" name="color" type="Color"> </argument> - <argument index="2" name="just_outline" type="bool" default="null"> + <argument index="2" name="just_outline" type="bool" default="false"> </argument> <description> </description> @@ -54553,7 +54597,7 @@ </argument> <argument index="3" name="step" type="float"> </argument> - <argument index="4" name="expr" type="bool" default="null"> + <argument index="4" name="expr" type="bool" default="false"> </argument> <description> </description> @@ -54659,7 +54703,7 @@ </argument> <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> </argument> - <argument index="8" name="delay" type="float" default="null"> + <argument index="8" name="delay" type="float" default="0"> </argument> <description> Follow [code]method[/code] of [code]object[/code] and apply the returned value on [code]target_method[/code] of [code]target[/code], beginning from [code]initial_val[/code] for [code]duration[/code] seconds, [code]delay[/code] later. Methods are animated by calling them with consequitive values. @@ -54685,7 +54729,7 @@ </argument> <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> </argument> - <argument index="8" name="delay" type="float" default="null"> + <argument index="8" name="delay" type="float" default="0"> </argument> <description> Follow [code]property[/code] of [code]object[/code] and apply it on [code]target_property[/code] of [code]target[/code], beginning from [code]initial_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. Note that [code]target:target_property[/code] would equal [code]object:property[/code] at the end of the tween. @@ -54707,7 +54751,7 @@ </description> </method> <method name="get_tween_process_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Tween.TweenProcessMode"> </return> <description> Returns the process mode that has been set from editor GUI or [method set_tween_process_mode] @@ -54776,7 +54820,7 @@ </argument> <argument index="6" name="ease_type" type="int" enum="Tween.EaseType"> </argument> - <argument index="7" name="delay" type="float" default="null"> + <argument index="7" name="delay" type="float" default="0"> </argument> <description> Animate [code]method[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values. @@ -54800,7 +54844,7 @@ </argument> <argument index="6" name="ease_type" type="int" enum="Tween.EaseType"> </argument> - <argument index="7" name="delay" type="float" default="null"> + <argument index="7" name="delay" type="float" default="0"> </argument> <description> Animate [code]property[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. @@ -54826,7 +54870,7 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String" default="null"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> Stop animating and completely remove a tween, given its object and property/method pair. Passing empty String as key will remove all tweens for given object. @@ -54844,7 +54888,7 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String" default="null"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> Resets a tween to the initial value (the one given, not the one before the tween), given its object and property/method pair. Passing empty String as key will reset all tweens for given object. @@ -54862,7 +54906,7 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String" default="null"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> Continue animating a stopped tween, given its object and property/method pair. Passing empty String as key will resume all tweens for given object. @@ -54932,7 +54976,7 @@ </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String" default="null"> + <argument index="1" name="key" type="String" default=""""> </argument> <description> Stop animating a tween, given its object and property/method pair. Passing empty String as key will stop all tweens for given object. @@ -54964,7 +55008,7 @@ </argument> <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> </argument> - <argument index="8" name="delay" type="float" default="null"> + <argument index="8" name="delay" type="float" default="0"> </argument> <description> Animate [code]method[/code] of [code]object[/code] from the value returned by [code]initial.initial_method[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values. @@ -54990,7 +55034,7 @@ </argument> <argument index="7" name="ease_type" type="int" enum="Tween.EaseType"> </argument> - <argument index="8" name="delay" type="float" default="null"> + <argument index="8" name="delay" type="float" default="0"> </argument> <description> Animate [code]property[/code] of [code]object[/code] from the current value of the [code]initial_val[/code] property of [code]initial[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. @@ -55188,7 +55232,7 @@ </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="merge_mode" type="int" enum="UndoRedo.MergeMode" default="null"> + <argument index="1" name="merge_mode" type="int" enum="UndoRedo.MergeMode" default="0"> </argument> <description> Create a new action. After this is called, do all your calls to [method add_do_method], [method add_undo_method], [method add_do_property] and [method add_undo_property]. @@ -56361,13 +56405,13 @@ </description> </method> <method name="get_clear_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Viewport.ClearMode"> </return> <description> </description> </method> <method name="get_debug_draw" qualifiers="const"> - <return type="int"> + <return type="int" enum="Viewport.DebugDraw"> </return> <description> </description> @@ -56401,7 +56445,7 @@ </description> </method> <method name="get_msaa" qualifiers="const"> - <return type="int"> + <return type="int" enum="Viewport.MSAA"> </return> <description> </description> @@ -56422,7 +56466,7 @@ </description> </method> <method name="get_shadow_atlas_quadrant_subdiv" qualifiers="const"> - <return type="int"> + <return type="int" enum="Viewport.ShadowAtlasQuadrantSubdiv"> </return> <argument index="0" name="quadrant" type="int"> </argument> @@ -56457,14 +56501,14 @@ </description> </method> <method name="get_update_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="Viewport.UpdateMode"> </return> <description> Get when the viewport would be updated, will be one of the [code]UPDATE_*[/code] constants. </description> </method> <method name="get_usage" qualifiers="const"> - <return type="int"> + <return type="int" enum="Viewport.Usage"> </return> <description> </description> @@ -56717,7 +56761,7 @@ </argument> <argument index="1" name="size" type="Vector2" default="Vector2( -1, -1 )"> </argument> - <argument index="2" name="margin" type="Vector2" default="null"> + <argument index="2" name="margin" type="Vector2" default="Vector2( 0, 0 )"> </argument> <description> Set the size override of the viewport. If the enable parameter is true, it would use the override, otherwise it would use the default size. If the size parameter is equal to [code](-1, -1)[/code], it won't update the size. @@ -57323,7 +57367,7 @@ </argument> <argument index="2" name="node" type="VisualScriptNode"> </argument> - <argument index="3" name="pos" type="Vector2" default="null"> + <argument index="3" name="pos" type="Vector2" default="Vector2( 0, 0 )"> </argument> <description> </description> @@ -57335,7 +57379,7 @@ </argument> <argument index="1" name="default_value" type="Variant" default="null"> </argument> - <argument index="2" name="export" type="bool" default="null"> + <argument index="2" name="export" type="bool" default="false"> </argument> <description> </description> @@ -57349,7 +57393,7 @@ </argument> <argument index="2" name="argname" type="String"> </argument> - <argument index="3" name="index" type="int" default="null"> + <argument index="3" name="index" type="int" default="-1"> </argument> <description> </description> @@ -57373,7 +57417,7 @@ </description> </method> <method name="custom_signal_get_argument_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <argument index="0" name="name" type="String"> </argument> @@ -57761,7 +57805,7 @@ </description> <methods> <method name="get_basic_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -57805,7 +57849,7 @@ </description> <methods> <method name="get_func"> - <return type="int"> + <return type="int" enum="VisualScriptBuiltinFunc.BuiltinFunc"> </return> <description> </description> @@ -57947,7 +57991,7 @@ </description> <methods> <method name="get_constant_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -57997,7 +58041,7 @@ </description> </method> <method name="get_constructor_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -58163,7 +58207,7 @@ </description> <methods> <method name="get_deconstruct_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -58287,13 +58331,13 @@ </description> </method> <method name="get_basic_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> </method> <method name="get_call_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="VisualScriptFunctionCall.CallMode"> </return> <description> </description> @@ -58305,7 +58349,7 @@ </description> </method> <method name="get_rpc_call_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="VisualScriptFunctionCall.RPCCallMode"> </return> <description> </description> @@ -58535,7 +58579,7 @@ </description> <methods> <method name="get_action_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="VisualScriptInputAction.Mode"> </return> <description> </description> @@ -58595,7 +58639,7 @@ </description> </method> <method name="get_var_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -58639,7 +58683,7 @@ </description> </method> <method name="get_var_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -58677,7 +58721,7 @@ </description> <methods> <method name="get_math_constant"> - <return type="int"> + <return type="int" enum="VisualScriptMathConstant.MathConstant"> </return> <description> </description> @@ -58749,13 +58793,13 @@ </description> <methods> <method name="get_operator" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Operator"> </return> <description> </description> </method> <method name="get_typed" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -58839,13 +58883,13 @@ </description> </method> <method name="get_basic_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> </method> <method name="get_call_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="VisualScriptPropertyGet.CallMode"> </return> <description> </description> @@ -58953,7 +58997,7 @@ </description> <methods> <method name="get_assign_op" qualifiers="const"> - <return type="int"> + <return type="int" enum="VisualScriptPropertySet.AssignOp"> </return> <description> </description> @@ -58977,13 +59021,13 @@ </description> </method> <method name="get_basic_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> </method> <method name="get_call_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="VisualScriptPropertySet.CallMode"> </return> <description> </description> @@ -59129,7 +59173,7 @@ </description> <methods> <method name="get_return_type" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -59211,7 +59255,7 @@ </description> <methods> <method name="get_typed" qualifiers="const"> - <return type="int"> + <return type="int" enum="Variant.Type"> </return> <description> </description> @@ -59421,7 +59465,7 @@ </description> </method> <method name="get_yield_mode"> - <return type="int"> + <return type="int" enum="VisualScriptYield.YieldMode"> </return> <description> </description> @@ -59477,7 +59521,7 @@ </description> </method> <method name="get_call_mode" qualifiers="const"> - <return type="int"> + <return type="int" enum="VisualScriptYieldSignal.CallMode"> </return> <description> </description> @@ -59566,7 +59610,7 @@ </return> <argument index="0" name="image" type="Image"> </argument> - <argument index="1" name="flags" type="int" default="null"> + <argument index="1" name="flags" type="int" default="7"> </argument> <description> </description> @@ -59920,7 +59964,7 @@ </description> </method> <method name="get_node_type"> - <return type="int"> + <return type="int" enum="XMLParser.NodeType"> </return> <description> Get the type of the current node. Compare with [code]NODE_*[/code] constants. @@ -59943,7 +59987,7 @@ </description> </method> <method name="open"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="file" type="String"> </argument> @@ -59952,7 +59996,7 @@ </description> </method> <method name="open_buffer"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="buffer" type="PoolByteArray"> </argument> @@ -59961,14 +60005,14 @@ </description> </method> <method name="read"> - <return type="int"> + <return type="int" enum="Error"> </return> <description> Read the next node of the file. This returns an error code. </description> </method> <method name="seek"> - <return type="int"> + <return type="int" enum="Error"> </return> <argument index="0" name="pos" type="int"> </argument> diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp index c308e9eddb..bdd54543d2 100644 --- a/drivers/gles3/shader_compiler_gles3.cpp +++ b/drivers/gles3/shader_compiler_gles3.cpp @@ -751,8 +751,9 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_SPATIAL].renames["CLEARCOAT_GLOSS"] = "clearcoat_gloss"; actions[VS::SHADER_SPATIAL].renames["ANISOTROPY"] = "anisotropy"; actions[VS::SHADER_SPATIAL].renames["ANISOTROPY_FLOW"] = "anisotropy_flow"; - actions[VS::SHADER_SPATIAL].renames["SSS_SPREAD"] = "sss_spread"; + //actions[VS::SHADER_SPATIAL].renames["SSS_SPREAD"] = "sss_spread"; actions[VS::SHADER_SPATIAL].renames["SSS_STRENGTH"] = "sss_strength"; + actions[VS::SHADER_SPATIAL].renames["TRANSMISSION"] = "transmission"; actions[VS::SHADER_SPATIAL].renames["AO"] = "ao"; actions[VS::SHADER_SPATIAL].renames["EMISSION"] = "emission"; //actions[VS::SHADER_SPATIAL].renames["SCREEN_UV"]=ShaderLanguage::TYPE_VEC2; @@ -782,6 +783,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_SPATIAL].usage_defines["ALPHA_SCISSOR"] = "#define ALPHA_SCISSOR_USED\n"; actions[VS::SHADER_SPATIAL].usage_defines["SSS_STRENGTH"] = "#define ENABLE_SSS\n"; + actions[VS::SHADER_SPATIAL].usage_defines["TRANSMISSION"] = "#define TRANSMISSION_USED\n"; actions[VS::SHADER_SPATIAL].usage_defines["SCREEN_TEXTURE"] = "#define SCREEN_TEXTURE_USED\n"; actions[VS::SHADER_SPATIAL].usage_defines["SCREEN_UV"] = "#define SCREEN_UV_USED\n"; @@ -792,7 +794,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() { actions[VS::SHADER_SPATIAL].render_mode_defines["diffuse_burley"] = "#define DIFFUSE_BURLEY\n"; actions[VS::SHADER_SPATIAL].render_mode_defines["diffuse_oren_nayar"] = "#define DIFFUSE_OREN_NAYAR\n"; - actions[VS::SHADER_SPATIAL].render_mode_defines["diffuse_half_lambert"] = "#define DIFFUSE_HALF_LAMBERT\n"; + actions[VS::SHADER_SPATIAL].render_mode_defines["diffuse_lambert_wrap"] = "#define DIFFUSE_LAMBERT_WRAP\n"; actions[VS::SHADER_SPATIAL].render_mode_defines["diffuse_toon"] = "#define DIFFUSE_TOON\n"; actions[VS::SHADER_SPATIAL].render_mode_defines["specular_blinn"] = "#define SPECULAR_BLINN\n"; diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index ef4925895c..7c60a8ee97 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -887,7 +887,7 @@ float GTR1(float NdotH, float a) -void light_compute(vec3 N, vec3 L,vec3 V,vec3 B, vec3 T,vec3 light_color,vec3 diffuse_color, float specular_blob_intensity, float roughness, float rim,float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,inout vec3 diffuse, inout vec3 specular) { +void light_compute(vec3 N, vec3 L,vec3 V,vec3 B, vec3 T,vec3 light_color,vec3 diffuse_color, vec3 transmission, float specular_blob_intensity, float roughness, float rim,float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,inout vec3 diffuse, inout vec3 specular) { #if defined(USE_LIGHT_SHADER_CODE) //light is written by the light shader @@ -900,10 +900,16 @@ LIGHT_SHADER_CODE float dotNL = max(dot(N,L), 0.0 ); -#if defined(DIFFUSE_HALF_LAMBERT) +#if defined(DIFFUSE_OREN_NAYAR) + vec3 light_amount; +#else + float light_amount; +#endif + - float hl = dot(N,L) * 0.5 + 0.5; - diffuse += hl * light_color * diffuse_color; +#if defined(DIFFUSE_LAMBERT_WRAP) + //energy conserving lambert wrap shader + light_amount = max(0.0,(dot(N,L) + roughness) / ((1.0 + roughness) * (1.0 + roughness))); #elif defined(DIFFUSE_OREN_NAYAR) @@ -919,12 +925,12 @@ LIGHT_SHADER_CODE vec3 A = 1.0 + sigma2 * (diffuse_color / (sigma2 + 0.13) + 0.5 / (sigma2 + 0.33)); float B = 0.45 * sigma2 / (sigma2 + 0.09); - diffuse += diffuse_color * max(0.0, NdotL) * (A + vec3(B) * s / t) / M_PI; + light_amount = max(0.0, NdotL) * (A + vec3(B) * s / t) / M_PI; } #elif defined(DIFFUSE_TOON) - diffuse += smoothstep(-roughness,max(roughness,0.01),dot(N,L)) * light_color * diffuse_color; + light_amount = smoothstep(-roughness,max(roughness,0.01),dot(N,L)); #elif defined(DIFFUSE_BURLEY) @@ -939,11 +945,17 @@ LIGHT_SHADER_CODE float lightScatter = f0 + (fd90 - f0) * pow(1.0 - NdotL, 5.0); float viewScatter = f0 + (fd90 - f0) * pow(1.0 - NdotV, 5.0); - diffuse+= light_color * diffuse_color * lightScatter * viewScatter * energyFactor; + light_amount = lightScatter * viewScatter * energyFactor; } #else //lambert - diffuse += dotNL * light_color * diffuse_color; + light_amount = dotNL; +#endif + +#if defined(TRANSMISSION_USED) + diffuse += light_color * diffuse_color * mix(vec3(light_amount),vec3(1.0),transmission); +#else + diffuse += light_color * diffuse_color * light_amount; #endif @@ -1116,7 +1128,7 @@ vec3 light_transmittance(float translucency,vec3 light_vec, vec3 normal, vec3 po } #endif -void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 binormal, vec3 tangent, vec3 albedo, float roughness, float rim, float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,float p_blob_intensity,inout vec3 diffuse_light, inout vec3 specular_light) { +void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 binormal, vec3 tangent, vec3 albedo, vec3 transmission, float roughness, float rim, float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,float p_blob_intensity,inout vec3 diffuse_light, inout vec3 specular_light) { vec3 light_rel_vec = omni_lights[idx].light_pos_inv_radius.xyz-vertex; float light_length = length( light_rel_vec ); @@ -1170,11 +1182,11 @@ void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 bino light_attenuation*=mix(omni_lights[idx].shadow_color_contact.rgb,vec3(1.0),shadow); } - light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,omni_lights[idx].light_color_energy.rgb*light_attenuation,albedo,omni_lights[idx].light_params.z*p_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light); + light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,omni_lights[idx].light_color_energy.rgb*light_attenuation,albedo,transmission,omni_lights[idx].light_params.z*p_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light); } -void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 binormal, vec3 tangent,vec3 albedo, float roughness, float rim,float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,float p_blob_intensity, inout vec3 diffuse_light, inout vec3 specular_light) { +void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 binormal, vec3 tangent,vec3 albedo, vec3 transmission,float roughness, float rim,float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,float p_blob_intensity, inout vec3 diffuse_light, inout vec3 specular_light) { vec3 light_rel_vec = spot_lights[idx].light_pos_inv_radius.xyz-vertex; float light_length = length( light_rel_vec ); @@ -1204,7 +1216,7 @@ void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi light_attenuation*=mix(spot_lights[idx].shadow_color_contact.rgb,vec3(1.0),shadow); } - light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,spot_lights[idx].light_color_energy.rgb*light_attenuation,albedo,spot_lights[idx].light_params.z*p_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light); + light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,spot_lights[idx].light_color_energy.rgb*light_attenuation,albedo,transmission,spot_lights[idx].light_params.z*p_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light); } @@ -1499,6 +1511,7 @@ void main() { //lay out everything, whathever is unused is optimized away anyway highp vec3 vertex = vertex_interp; vec3 albedo = vec3(0.8,0.8,0.8); + vec3 transmission = vec3(0.0); float metallic = 0.0; float specular = 0.5; vec3 emission = vec3(0.0,0.0,0.0); @@ -1822,7 +1835,7 @@ FRAGMENT_SHADER_CODE specular_light*=mix(vec3(1.0),light_attenuation,specular_light_interp.a); #else - light_compute(normal,-light_direction_attenuation.xyz,eye_vec,binormal,tangent,light_color_energy.rgb*light_attenuation,albedo,light_params.z*specular_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light); + light_compute(normal,-light_direction_attenuation.xyz,eye_vec,binormal,tangent,light_color_energy.rgb*light_attenuation,albedo,transmission,light_params.z*specular_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light); #endif @@ -1860,11 +1873,11 @@ FRAGMENT_SHADER_CODE #else for(int i=0;i<omni_light_count;i++) { - light_process_omni(omni_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light); + light_process_omni(omni_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,transmission,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light); } for(int i=0;i<spot_light_count;i++) { - light_process_spot(spot_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light); + light_process_spot(spot_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,transmission,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light); } #endif //USE_VERTEX_LIGHTING diff --git a/editor/SCsub b/editor/SCsub index 172447147c..0e690cf465 100644 --- a/editor/SCsub +++ b/editor/SCsub @@ -155,31 +155,71 @@ def make_authors_header(target, source, env): g.write("#define _EDITOR_AUTHORS_H\n") current_section = "" - name_count = -1 + reading = False def close_section(): g.write("\t0\n") g.write("};\n") - g.write("#define " + current_section.upper() + "_COUNT " + str(name_count) + "\n") for line in f: - if name_count >= 0: + if reading: if line.startswith(" "): g.write("\t\"" + line.strip() + "\",\n") - name_count += 1 continue if line.startswith("## "): - if name_count >= 0: + if reading: close_section() - name_count = -1 + reading = False for i in range(len(sections)): if line.strip().endswith(sections[i]): current_section = sections_id[i] - name_count = 0 + reading = True g.write("static const char *" + current_section + "[] = {\n") break - if name_count >= 0: + if reading: + close_section() + + g.write("#endif\n") + +def make_donors_header(target, source, env): + + sections = ["Platinum sponsors", "Gold sponsors", "Mini sponsors", "Gold donors", "Silver donors", "Bronze donors"] + sections_id = ["donor_s_plat", "donor_s_gold", "donor_s_mini", "donor_gold", "donor_silver", "donor_bronze"] + + src = source[0].srcnode().abspath + dst = target[0].srcnode().abspath + f = open_utf8(src, "r") + g = open_utf8(dst, "w") + + g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") + g.write("#ifndef _EDITOR_DONORS_H\n") + g.write("#define _EDITOR_DONORS_H\n") + + current_section = "" + reading = False + + def close_section(): + g.write("\t0\n") + g.write("};\n") + + for line in f: + if reading >= 0: + if line.startswith(" "): + g.write("\t\"" + line.strip() + "\",\n") + continue + if line.startswith("## "): + if reading: + close_section() + reading = False + for i in range(len(sections)): + if line.strip().endswith(sections[i]): + current_section = sections_id[i] + reading = True + g.write("static const char *" + current_section + "[] = {\n") + break + + if reading: close_section() g.write("#endif\n") @@ -393,6 +433,10 @@ if (env["tools"] == "yes"): env.Depends('#editor/authors.gen.h', "../AUTHORS.md") env.Command('#editor/authors.gen.h', "../AUTHORS.md", make_authors_header) + # Donors + env.Depends('#editor/donors.gen.h', "../DONORS.md") + env.Command('#editor/donors.gen.h', "../DONORS.md", make_donors_header) + # License env.Depends('#editor/license.gen.h', ["../COPYRIGHT.txt", "../LICENSE.txt"]) env.Command('#editor/license.gen.h', ["../COPYRIGHT.txt", "../LICENSE.txt"], make_license_header) diff --git a/editor/editor_about.cpp b/editor/editor_about.cpp index 8bd7bfb4bd..a48e6c9057 100644 --- a/editor/editor_about.cpp +++ b/editor/editor_about.cpp @@ -30,6 +30,7 @@ #include "editor_about.h" #include "authors.gen.h" +#include "donors.gen.h" #include "license.gen.h" #include "version.h" #include "version_hash.gen.h" @@ -51,6 +52,47 @@ TextureRect *EditorAbout::get_logo() const { return _logo; } +ScrollContainer *EditorAbout::_populate_list(const String &p_name, const List<String> &p_sections, const char **p_src[]) { + + ScrollContainer *sc = memnew(ScrollContainer); + sc->set_name(p_name); + sc->set_v_size_flags(Control::SIZE_EXPAND); + + VBoxContainer *vbc = memnew(VBoxContainer); + vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); + sc->add_child(vbc); + + for (int i = 0; i < p_sections.size(); i++) { + + const char **names_ptr = p_src[i]; + if (*names_ptr) { + + Label *lbl = memnew(Label); + lbl->set_text(p_sections[i]); + vbc->add_child(lbl); + + ItemList *il = memnew(ItemList); + il->set_max_columns(16); + il->set_h_size_flags(Control::SIZE_EXPAND_FILL); + il->set_same_column_width(true); + il->set_auto_height(true); + while (*names_ptr) { + il->add_item(String::utf8(*names_ptr++), NULL, false); + } + vbc->add_child(il); + if (il->get_item_count() == 2) { + il->set_fixed_column_width(200 * EDSCALE); + } + + HSeparator *hs = memnew(HSeparator); + hs->set_modulate(Color(0, 0, 0, 0)); + vbc->add_child(hs); + } + } + + return sc; +} + EditorAbout::EditorAbout() { set_title(TTR("Thanks from the Godot community!")); @@ -84,43 +126,29 @@ EditorAbout::EditorAbout() { tc->set_v_size_flags(Control::SIZE_EXPAND_FILL); vbc->add_child(tc); - ScrollContainer *dev_base = memnew(ScrollContainer); - dev_base->set_name(TTR("Authors")); - dev_base->set_v_size_flags(Control::SIZE_EXPAND); - tc->add_child(dev_base); - - VBoxContainer *dev_vbc = memnew(VBoxContainer); - dev_vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL); - dev_base->add_child(dev_vbc); + // Authors List<String> dev_sections; dev_sections.push_back(TTR("Project Founders")); dev_sections.push_back(TTR("Lead Developer")); dev_sections.push_back(TTR("Project Manager")); dev_sections.push_back(TTR("Developers")); - const char **dev_src[] = { dev_founders, dev_lead, dev_manager, dev_names }; + tc->add_child(_populate_list(TTR("Authors"), dev_sections, dev_src)); - for (int i = 0; i < dev_sections.size(); i++) { - - Label *lbl = memnew(Label); - lbl->set_text(dev_sections[i]); - dev_vbc->add_child(lbl); - - ItemList *il = memnew(ItemList); - il->set_max_columns(16); - il->set_h_size_flags(Control::SIZE_EXPAND_FILL); - il->set_fixed_column_width(230 * EDSCALE); - il->set_auto_height(true); - const char **dev_names_ptr = dev_src[i]; - while (*dev_names_ptr) - il->add_item(String::utf8(*dev_names_ptr++), NULL, false); - dev_vbc->add_child(il); - - HSeparator *hs = memnew(HSeparator); - hs->set_modulate(Color(0, 0, 0, 0)); - dev_vbc->add_child(hs); - } + // Donors + + List<String> donor_sections; + donor_sections.push_back(TTR("Platinum Sponsors")); + donor_sections.push_back(TTR("Gold Sponsors")); + donor_sections.push_back(TTR("Mini Sponsors")); + donor_sections.push_back(TTR("Gold Donors")); + donor_sections.push_back(TTR("Silver Donors")); + donor_sections.push_back(TTR("Bronze Donors")); + const char **donor_src[] = { donor_s_plat, donor_s_gold, donor_s_mini, donor_gold, donor_silver, donor_bronze }; + tc->add_child(_populate_list(TTR("Donors"), donor_sections, donor_src)); + + // License TextEdit *license = memnew(TextEdit); license->set_name(TTR("License")); @@ -131,6 +159,8 @@ EditorAbout::EditorAbout() { license->set_text(String::utf8(about_license)); tc->add_child(license); + // Thirdparty License + VBoxContainer *license_thirdparty = memnew(VBoxContainer); license_thirdparty->set_name(TTR("Thirdparty License")); license_thirdparty->set_h_size_flags(Control::SIZE_EXPAND_FILL); diff --git a/editor/editor_about.h b/editor/editor_about.h index d7047c03a3..d455b1f074 100644 --- a/editor/editor_about.h +++ b/editor/editor_about.h @@ -52,6 +52,7 @@ class EditorAbout : public AcceptDialog { private: void _license_tree_selected(); + ScrollContainer *_populate_list(const String &p_name, const List<String> &p_sections, const char **p_src[]); Tree *_tpl_tree; TextEdit *_tpl_text; diff --git a/editor/editor_fonts.cpp b/editor/editor_fonts.cpp index 22a9c84d21..3ab3f05906 100644 --- a/editor/editor_fonts.cpp +++ b/editor/editor_fonts.cpp @@ -72,11 +72,14 @@ static Ref<BitmapFont> make_font(int p_height, int p_ascent, int p_valign, int p m_name->add_fallback(FontJapanese); \ m_name->add_fallback(FontFallback); -#define MAKE_DEFAULT_FONT(m_name, m_size) \ - Ref<DynamicFont> m_name; \ - m_name.instance(); \ - m_name->set_size(m_size); \ - m_name->set_font_data(DefaultFont); \ +// the custom spacings might only work with Noto Sans +#define MAKE_DEFAULT_FONT(m_name, m_size) \ + Ref<DynamicFont> m_name; \ + m_name.instance(); \ + m_name->set_size(m_size); \ + m_name->set_font_data(DefaultFont); \ + m_name->set_spacing(DynamicFont::SPACING_TOP, -1); \ + m_name->set_spacing(DynamicFont::SPACING_BOTTOM, -1); \ MAKE_FALLBACKS(m_name); void editor_register_fonts(Ref<Theme> p_theme) { diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp index 0e22f0d386..c9d1548bfb 100644 --- a/editor/editor_help.cpp +++ b/editor/editor_help.cpp @@ -1711,12 +1711,6 @@ void EditorHelp::_notification(int p_what) { _update_doc(); } break; - case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - Ref<StyleBoxFlat> style(memnew(StyleBoxFlat)); - style->set_bg_color(EditorSettings::get_singleton()->get("text_editor/highlighting/background_color")); - background_panel->add_style_override("panel", style); - } break; - default: break; } } @@ -1786,14 +1780,11 @@ EditorHelp::EditorHelp() { { background_panel = memnew(Panel); - Ref<StyleBoxFlat> style(memnew(StyleBoxFlat)); - style->set_bg_color(EditorSettings::get_singleton()->get("text_editor/highlighting/background_color")); background_panel->set_v_size_flags(SIZE_EXPAND_FILL); - background_panel->add_style_override("panel", style); //get_stylebox("normal","TextEdit")); vbc->add_child(background_panel); class_desc = memnew(RichTextLabel); background_panel->add_child(class_desc); - class_desc->set_area_as_parent_rect(8); + class_desc->set_area_as_parent_rect(); class_desc->connect("meta_clicked", this, "_class_desc_select"); class_desc->connect("gui_input", this, "_class_desc_input"); } @@ -1881,10 +1872,6 @@ void EditorHelpBit::_bind_methods() { } void EditorHelpBit::_notification(int p_what) { - - if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) { - add_style_override("panel", get_stylebox("ScriptPanel", "EditorStyles")); - } } void EditorHelpBit::set_text(const String &p_text) { @@ -1897,8 +1884,7 @@ EditorHelpBit::EditorHelpBit() { rich_text = memnew(RichTextLabel); add_child(rich_text); - rich_text->set_area_as_parent_rect(8 * EDSCALE); + rich_text->set_area_as_parent_rect(); rich_text->connect("meta_clicked", this, "_meta_clicked"); set_custom_minimum_size(Size2(0, 70 * EDSCALE)); - add_style_override("panel", EditorNode::get_singleton()->get_gui_base()->get_stylebox("ScriptPanel", "EditorStyles")); } diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 6b5db7572a..d4e0aacb0f 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1368,6 +1368,16 @@ void EditorNode::_set_editing_top_editors(Object *p_current_object) { editor_plugins_over->edit(p_current_object); } +static bool overrides_external_editor(Object *p_object) { + + Script *script = Object::cast_to<Script>(p_object); + + if (!script) + return false; + + return script->get_language()->overrides_external_editor(); +} + void EditorNode::_edit_current() { uint32_t current = editor_history.get_current(); @@ -1434,7 +1444,7 @@ void EditorNode::_edit_current() { if (main_plugin) { // special case if use of external editor is true - if (main_plugin->get_name() == "Script" && bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) { + if (main_plugin->get_name() == "Script" && (bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor")) || overrides_external_editor(current_obj))) { main_plugin->edit(current_obj); } @@ -1442,6 +1452,7 @@ void EditorNode::_edit_current() { // update screen main_plugin if (!changing_scene) { + if (editor_plugin_screen) editor_plugin_screen->make_visible(false); editor_plugin_screen = main_plugin; diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 9c9eef848a..db76a27f5f 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -603,7 +603,6 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { hints["text_editor/theme/color_theme"] = PropertyInfo(Variant::STRING, "text_editor/theme/color_theme", PROPERTY_HINT_ENUM, "Default"); set("text_editor/theme/line_spacing", 4); - set("text_editor/theme/adapted_code_editor_background_color", true); _load_default_text_editor_theme(); diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index 8943d5f0dc..728801d90b 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -198,6 +198,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { bool highlight_tabs = EDITOR_DEF("interface/theme/highlight_tabs", false); int border_size = EDITOR_DEF("interface/theme/border_size", 1); + Color script_bg_color = EDITOR_DEF("text_editor/highlighting/background_color", Color(0, 0, 0, 0)); + switch (preset) { case 0: { // Default highlight_color = Color::html("#699ce8"); @@ -279,8 +281,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { editor_register_fonts(theme); // Editor background - Ref<StyleBoxFlat> style_panel = make_flat_stylebox(dark_color_2, 4, 4, 4, 4); - theme->set_stylebox("Background", "EditorStyles", style_panel); + theme->set_stylebox("Background", "EditorStyles", make_flat_stylebox(dark_color_2, 4, 4, 4, 4)); // Focus Ref<StyleBoxFlat> focus_sbt = make_flat_stylebox(contrast_color_1, 4, 4, 4, 4); @@ -333,10 +334,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_stylebox("MenuHover", "EditorStyles", style_menu_hover_border); // Content of each tab - Ref<StyleBoxFlat> style_content_panel = make_flat_stylebox(base_color, 4, 5, 4, 4); + Ref<StyleBoxFlat> style_content_panel = make_flat_stylebox(base_color, 4, 4, 4, 4); style_content_panel->set_border_color_all(base_color); style_content_panel->set_border_width_all(border_width); - Ref<StyleBoxFlat> style_content_panel_vp = make_flat_stylebox(base_color, border_width, 5, border_width, border_width); + Ref<StyleBoxFlat> style_content_panel_vp = make_flat_stylebox(base_color, border_width, 4, border_width, border_width); style_content_panel_vp->set_border_color_all(base_color); style_content_panel_vp->set_border_width_all(border_width); theme->set_stylebox("panel", "TabContainer", style_content_panel); @@ -424,12 +425,6 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { style_tree_bg->set_border_color_all(dark_color_3); theme->set_stylebox("bg", "Tree", style_tree_bg); - // Script background - Ref<StyleBoxFlat> style_script_bg = make_flat_stylebox(dark_color_1, 0, 0, 0, 0); - style_script_bg->set_border_width_all(border_width); - style_script_bg->set_border_color_all(dark_color_3); - theme->set_stylebox("ScriptPanel", "EditorStyles", style_script_bg); - // Tree theme->set_icon("checked", "Tree", theme->get_icon("GuiChecked", "EditorIcons")); theme->set_icon("unchecked", "Tree", theme->get_icon("GuiUnchecked", "EditorIcons")); @@ -614,11 +609,14 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) { theme->set_icon("grabber_highlight", "VSlider", theme->get_icon("GuiSliderGrabberHl", "EditorIcons")); //RichTextLabel - theme->set_color("font_color", "RichTextLabel", font_color); + Color rtl_combined_bg_color = dark_color_1.linear_interpolate(script_bg_color, script_bg_color.a); + Color rtl_font_color = (rtl_combined_bg_color.r + rtl_combined_bg_color.g + rtl_combined_bg_color.b > 0.5 * 3) ? Color(0, 0, 0) : Color(1, 1, 1); + theme->set_color("default_color", "RichTextLabel", rtl_font_color); theme->set_stylebox("focus", "RichTextLabel", make_empty_stylebox()); + theme->set_stylebox("normal", "RichTextLabel", make_flat_stylebox(script_bg_color, 6, 6, 6, 6)); // Panel - theme->set_stylebox("panel", "Panel", style_panel); + theme->set_stylebox("panel", "Panel", make_flat_stylebox(dark_color_1, 6, 4, 6, 4)); // Label theme->set_color("font_color", "Label", font_color); diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 04036f410a..a66d1724a1 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -1839,7 +1839,7 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) { path = "res://"; - add_constant_override("separation", 3); + add_constant_override("separation", 4); } FileSystemDock::~FileSystemDock() { diff --git a/editor/plugins/cube_grid_theme_editor_plugin.cpp b/editor/plugins/cube_grid_theme_editor_plugin.cpp index 08b38c2ca2..1c17daf425 100644 --- a/editor/plugins/cube_grid_theme_editor_plugin.cpp +++ b/editor/plugins/cube_grid_theme_editor_plugin.cpp @@ -88,7 +88,7 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library, if (mesh.is_null()) continue; - int id = p_library->find_item_name(mi->get_name()); + int id = p_library->find_item_by_name(mi->get_name()); if (id < 0) { id = p_library->get_last_unused_item_id(); @@ -111,7 +111,8 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library, sb->get_shape_owners(&shapes); for (List<uint32_t>::Element *E = shapes.front(); E; E = E->next()) { - if (sb->is_shape_owner_disabled(E->get())) continue; + if (sb->is_shape_owner_disabled(E->get())) + continue; //Transform shape_transform = sb->shape_owner_get_transform(E->get()); @@ -120,7 +121,7 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library, for (int k = 0; k < sb->shape_owner_get_shape_count(E->get()); k++) { Ref<Shape> collision = sb->shape_owner_get_shape(E->get(), k); - if (collision.is_valid()) + if (!collision.is_valid()) continue; MeshLibrary::ShapeData shape_data; shape_data.shape = collision; diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp index a529f152dc..b8a4ff9bf3 100644 --- a/editor/plugins/script_editor_plugin.cpp +++ b/editor/plugins/script_editor_plugin.cpp @@ -972,6 +972,14 @@ void ScriptEditor::_menu_option(int p_option) { EditorNode::get_singleton()->show_warning("Can't obtain the script for running"); break; } + + current->apply_code(); + Error err = scr->reload(false); //hard reload script before running always + + if (err != OK) { + EditorNode::get_singleton()->show_warning("Script failed reloading, check console for errors."); + return; + } if (!scr->is_tool()) { EditorNode::get_singleton()->show_warning("Script is not in tool mode, will not be able to run"); @@ -1149,8 +1157,6 @@ void ScriptEditor::_notification(int p_what) { case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: { - tab_container->add_style_override("panel", editor->get_gui_base()->get_stylebox("ScriptPanel", "EditorStyles")); - help_search->set_icon(get_icon("HelpSearch", "EditorIcons")); site_search->set_icon(get_icon("Instance", "EditorIcons")); class_search->set_icon(get_icon("ClassList", "EditorIcons")); @@ -1539,8 +1545,14 @@ bool ScriptEditor::edit(const Ref<Script> &p_script, int p_line, int p_col, bool bool open_dominant = EditorSettings::get_singleton()->get("text_editor/files/open_dominant_script_on_scene_change"); + if (p_script->get_language()->overrides_external_editor()) { + Error err = p_script->get_language()->open_in_external_editor(p_script, p_line >= 0 ? p_line : 0, p_col); + if (err != OK) + ERR_PRINT("Couldn't open script in the overridden external text editor"); + return false; + } + if ((debugger->get_dump_stack_script() != p_script || debugger->get_debug_with_external_editor()) && - p_script->get_language()->open_in_external_editor(p_script, p_line >= 0 ? p_line : 0, p_col) == OK && p_script->get_path().is_resource_file() && bool(EditorSettings::get_singleton()->get("text_editor/external/use_external_editor"))) { @@ -2210,7 +2222,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { members_overview->set_v_size_flags(SIZE_EXPAND_FILL); tab_container = memnew(TabContainer); - tab_container->add_style_override("panel", p_editor->get_gui_base()->get_stylebox("ScriptPanel", "EditorStyles")); tab_container->set_tabs_visible(false); script_split->add_child(tab_container); diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp index 33890d890d..fae57eb5d2 100644 --- a/editor/plugins/script_text_editor.cpp +++ b/editor/plugins/script_text_editor.cpp @@ -75,14 +75,9 @@ void ScriptTextEditor::_load_theme_settings() { text_edit->clear_colors(); - /* color from color_theme or from editor color */ - - Color background_color = EDITOR_DEF("text_editor/highlighting/background_color", Color(0, 0, 0, 0)); - if (EDITOR_DEF("text_editor/theme/adapted_code_editor_background_color", false)) - background_color = get_color("dark_color_1", "Editor"); - /* keyword color */ - text_edit->add_color_override("background_color", background_color); + + text_edit->add_color_override("background_color", EDITOR_DEF("text_editor/highlighting/background_color", Color(0, 0, 0, 0))); text_edit->add_color_override("completion_background_color", EDITOR_DEF("text_editor/highlighting/completion_background_color", Color(0, 0, 0, 0))); text_edit->add_color_override("completion_selected_color", EDITOR_DEF("text_editor/highlighting/completion_selected_color", Color::html("434244"))); text_edit->add_color_override("completion_existing_color", EDITOR_DEF("text_editor/highlighting/completion_existing_color", Color::html("21dfdfdf"))); diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp index 13b0391a87..b02016c273 100644 --- a/editor/plugins/shader_editor_plugin.cpp +++ b/editor/plugins/shader_editor_plugin.cpp @@ -289,6 +289,8 @@ void ShaderEditor::_editor_settings_changed() { shader_editor->get_text_edit()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink_speed")); shader_editor->get_text_edit()->add_constant_override("line_spacing", EditorSettings::get_singleton()->get("text_editor/theme/line_spacing")); shader_editor->get_text_edit()->cursor_set_block_mode(EditorSettings::get_singleton()->get("text_editor/cursor/block_caret")); + shader_editor->get_text_edit()->set_smooth_scroll_enabled(EditorSettings::get_singleton()->get("text_editor/open_scripts/smooth_scrolling")); + shader_editor->get_text_edit()->set_v_scroll_speed(EditorSettings::get_singleton()->get("text_editor/open_scripts/v_scroll_speed")); } void ShaderEditor::_bind_methods() { diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp index c2c26bfe6c..7b40f69082 100644 --- a/editor/plugins/sprite_frames_editor_plugin.cpp +++ b/editor/plugins/sprite_frames_editor_plugin.cpp @@ -244,8 +244,22 @@ void SpriteFramesEditor::_down_pressed() { void SpriteFramesEditor::_delete_pressed() { + ERR_FAIL_COND(!frames->has_animation(edited_anim)); + if (tree->get_current() < 0) return; + + int to_delete = tree->get_current(); + if (to_delete < 0 || to_delete >= frames->get_frame_count(edited_anim)) { + return; + } + + undo_redo->create_action(TTR("Delete Resource")); + undo_redo->add_do_method(frames, "remove_frame", edited_anim, to_delete); + undo_redo->add_undo_method(frames, "add_frame", edited_anim, frames->get_frame(edited_anim, to_delete), to_delete); + undo_redo->add_do_method(this, "_update_library"); + undo_redo->add_undo_method(this, "_update_library"); + undo_redo->commit_action(); } void SpriteFramesEditor::_animation_select() { diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp index 2cd0221ab6..9fd31f818e 100644 --- a/editor/project_settings_editor.cpp +++ b/editor/project_settings_editor.cpp @@ -1321,6 +1321,11 @@ void ProjectSettingsEditor::set_plugins_page() { tab_container->set_current_tab(plugin_settings->get_index()); } +TabContainer *ProjectSettingsEditor::get_tabs() { + + return tab_container; +} + void ProjectSettingsEditor::_bind_methods() { ClassDB::bind_method(D_METHOD("_item_selected"), &ProjectSettingsEditor::_item_selected); @@ -1361,6 +1366,8 @@ void ProjectSettingsEditor::_bind_methods() { ClassDB::bind_method(D_METHOD("_toggle_search_bar"), &ProjectSettingsEditor::_toggle_search_bar); ClassDB::bind_method(D_METHOD("_copy_to_platform_about_to_show"), &ProjectSettingsEditor::_copy_to_platform_about_to_show); + + ClassDB::bind_method(D_METHOD("get_tabs"), &ProjectSettingsEditor::get_tabs); } ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) { diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h index ceec089953..e58ba9b1c0 100644 --- a/editor/project_settings_editor.h +++ b/editor/project_settings_editor.h @@ -159,6 +159,8 @@ public: void popup_project_settings(); void set_plugins_page(); + TabContainer *get_tabs(); + void queue_save(); ProjectSettingsEditor(EditorData *p_data); diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp index c71cc5af3f..b92ebed167 100644 --- a/editor/quick_open.cpp +++ b/editor/quick_open.cpp @@ -171,33 +171,50 @@ void EditorQuickOpen::_parse_fs(EditorFileSystemDirectory *efsd, Vector<Pair<Str Pair<String, Ref<Texture> > pair; pair.first = file; pair.second = get_icon((has_icon(efsd->get_file_type(i), ei) ? efsd->get_file_type(i) : ot), ei); + list.push_back(pair); + } + } + + if (add_directories) { + for (int i = 0; i < efsd->get_subdir_count(); i++) { - if (search_text != String() && list.size() > 0) { + _parse_fs(efsd->get_subdir(i), list); + } + } +} - float this_sim = _path_cmp(search_text, file); - float other_sim = _path_cmp(list[0].first, file); - int pos = 1; +Vector<Pair<String, Ref<Texture> > > EditorQuickOpen::_sort_fs(Vector<Pair<String, Ref<Texture> > > &list) { - while (pos < list.size() && this_sim <= other_sim) { - other_sim = _path_cmp(list[pos++].first, file); - } + String search_text = search_box->get_text(); + Vector<Pair<String, Ref<Texture> > > sorted_list; - pos = this_sim >= other_sim ? pos - 1 : pos; - list.insert(pos, pair); + if (search_text == String() || list.size() == 0) + return sorted_list; - } else { + Vector<float> scores; + scores.resize(list.size()); + for (int i = 0; i < list.size(); i++) + scores[i] = _path_cmp(search_text, list[i].first); - list.push_back(pair); - } - } - } + while (list.size() > 0) { - if (add_directories) { - for (int i = 0; i < efsd->get_subdir_count(); i++) { + float best_score = 0.0f; + int best_idx = 0; - _parse_fs(efsd->get_subdir(i), list); + for (int i = 0; i < list.size(); i++) { + float current_score = scores[i]; + if (current_score > best_score) { + best_score = current_score; + best_idx = i; + } } + + sorted_list.push_back(list[best_idx]); + list.remove(best_idx); + scores.remove(best_idx); } + + return sorted_list; } void EditorQuickOpen::_update_search() { @@ -208,6 +225,7 @@ void EditorQuickOpen::_update_search() { Vector<Pair<String, Ref<Texture> > > list; _parse_fs(efsd, list); + list = _sort_fs(list); for (int i = 0; i < list.size(); i++) { TreeItem *ti = search_options->create_item(root); diff --git a/editor/quick_open.h b/editor/quick_open.h index 3f64dd8cf0..5b91965920 100644 --- a/editor/quick_open.h +++ b/editor/quick_open.h @@ -49,6 +49,7 @@ class EditorQuickOpen : public ConfirmationDialog { void _sbox_input(const Ref<InputEvent> &p_ie); void _parse_fs(EditorFileSystemDirectory *efsd, Vector<Pair<String, Ref<Texture> > > &list); + Vector<Pair<String, Ref<Texture> > > _sort_fs(Vector<Pair<String, Ref<Texture> > > &list); float _path_cmp(String search, String path) const; void _confirmed(); diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp index 623e458aca..05e3feedb5 100644 --- a/editor/settings_config_dialog.cpp +++ b/editor/settings_config_dialog.cpp @@ -165,7 +165,7 @@ void EditorSettingsDialog::_update_shortcuts() { section->set_custom_bg_color(1, get_color("prop_subsection", "Editor")); } - if (shortcut_filter.is_subsequence_ofi(sc->get_name())) { + if (shortcut_filter.is_subsequence_ofi(sc->get_name()) || shortcut_filter.is_subsequence_ofi(sc->get_as_text())) { TreeItem *item = shortcuts->create_item(section); item->set_text(0, sc->get_name()); diff --git a/modules/gdscript/gd_script.h b/modules/gdscript/gd_script.h index 6f05a4770b..5e1a8b19ac 100644 --- a/modules/gdscript/gd_script.h +++ b/modules/gdscript/gd_script.h @@ -389,7 +389,6 @@ public: virtual bool can_inherit_from_file() { return true; } virtual int find_function(const String &p_function, const String &p_code) const; virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const; - virtual Error open_in_external_editor(const Ref<Script> &p_script, int p_line, int p_col) { return OK; } virtual Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_forced, String &r_call_hint); #ifdef TOOLS_ENABLED virtual Error lookup_code(const String &p_code, const String &p_symbol, const String &p_base_path, Object *p_owner, LookupResult &r_result); diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp index 1b932f040e..ced1c3ca12 100644 --- a/modules/gridmap/grid_map.cpp +++ b/modules/gridmap/grid_map.cpp @@ -396,8 +396,6 @@ bool GridMap::_octant_update(const OctantKey &p_key) { Map<int, List<Pair<Transform, IndexKey> > > multimesh_items; - print_line("updating octant " + itos(p_key.x) + ", " + itos(p_key.y) + ", " + itos(p_key.z) + " cells: " + itos(g.cells.size())); - for (Set<IndexKey>::Element *E = g.cells.front(); E; E = E->next()) { ERR_CONTINUE(!cell_map.has(E->get())); @@ -464,7 +462,6 @@ bool GridMap::_octant_update(const OctantKey &p_key) { //update multimeshes for (Map<int, List<Pair<Transform, IndexKey> > >::Element *E = multimesh_items.front(); E; E = E->next()) { - print_line("multimesh item " + itos(E->key()) + " transforms " + itos(E->get().size())); Octant::MultimeshInstance mmi; RID mm = VS::get_singleton()->multimesh_create(); diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h index b2e7a6aa27..297e9e510f 100644 --- a/modules/visual_script/visual_script.h +++ b/modules/visual_script/visual_script.h @@ -571,7 +571,6 @@ public: virtual bool has_named_classes() const; virtual int find_function(const String &p_function, const String &p_code) const; virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const; - virtual Error open_in_external_editor(const Ref<Script> &p_script, int p_line, int p_col) { return ERR_UNAVAILABLE; } virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const; virtual void add_global_constant(const StringName &p_variable, const Variant &p_value); diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp index 8386687c9f..37bd730d08 100644 --- a/modules/visual_script/visual_script_editor.cpp +++ b/modules/visual_script/visual_script_editor.cpp @@ -523,7 +523,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) { if (Object::cast_to<VisualScriptExpression>(*node)) { Ref<VisualScriptComment> vsc = node; gnode->set_comment(true); - gnode->set_resizeable(true); + gnode->set_resizable(true); gnode->set_custom_minimum_size(vsc->get_size() * EDSCALE); gnode->connect("resize_request", this, "_comment_node_resized", varray(E->get())); } diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index 9590394211..6a8226c0e1 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -912,35 +912,24 @@ RigidBody::~RigidBody() { ////////////////////////////////////////////////////// ////////////////////////// -Dictionary KinematicBody::_move(const Vector3 &p_motion) { +Ref<KinematicCollision> KinematicBody::_move(const Vector3 &p_motion) { Collision col; - if (move(p_motion, col)) { - Dictionary d; - d["position"] = col.collision; - d["normal"] = col.normal; - d["local_shape"] = col.local_shape; - d["travel"] = col.travel; - d["remainder"] = col.remainder; - d["collider_id"] = col.collider; - if (col.collider) { - d["collider"] = ObjectDB::get_instance(col.collider); - } else { - d["collider"] = Variant(); + if (move_and_collide(p_motion, col)) { + if (motion_cache.is_null()) { + motion_cache.instance(); + motion_cache->owner = this; } - d["collider_velocity"] = col.collider_vel; - d["collider_shape_index"] = col.collider_shape; - d["collider_metadata"] = col.collider_metadata; - - return d; + motion_cache->collision = col; - } else { - return Dictionary(); + return motion_cache; } + + return Ref<KinematicCollision>(); } -bool KinematicBody::move(const Vector3 &p_motion, Collision &r_collision) { +bool KinematicBody::move_and_collide(const Vector3 &p_motion, Collision &r_collision) { Transform gt = get_global_transform(); PhysicsServer::MotionResult result; @@ -964,7 +953,7 @@ bool KinematicBody::move(const Vector3 &p_motion, Collision &r_collision) { return colliding; } -Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Vector3 &p_floor_direction, float p_slope_stop_min_velocity, int p_max_bounces, float p_floor_max_angle) { +Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Vector3 &p_floor_direction, float p_slope_stop_min_velocity, int p_max_slides, float p_floor_max_angle) { Vector3 motion = (floor_velocity + p_linear_velocity) * get_fixed_process_delta_time(); Vector3 lv = p_linear_velocity; @@ -975,11 +964,11 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve colliders.clear(); floor_velocity = Vector3(); - while (p_max_bounces) { + while (p_max_slides) { Collision collision; - bool collided = move(motion, collision); + bool collided = move_and_collide(motion, collision); if (collided) { @@ -1017,7 +1006,7 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve break; } - p_max_bounces--; + p_max_slides--; if (motion == Vector3()) break; } @@ -1059,79 +1048,36 @@ float KinematicBody::get_safe_margin() const { return margin; } - -int KinematicBody::get_collision_count() const { +int KinematicBody::get_slide_count() const { return colliders.size(); } -Vector3 KinematicBody::get_collision_position(int p_collision) const { - - ERR_FAIL_INDEX_V(p_collision, colliders.size(), Vector3()); - return colliders[p_collision].collision; -} -Vector3 KinematicBody::get_collision_normal(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), Vector3()); - return colliders[p_collision].normal; +KinematicBody::Collision KinematicBody::get_slide_collision(int p_bounce) const { + ERR_FAIL_INDEX_V(p_bounce, colliders.size(), Collision()); + return colliders[p_bounce]; } -Vector3 KinematicBody::get_collision_travel(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), Vector3()); - return colliders[p_collision].travel; -} -Vector3 KinematicBody::get_collision_remainder(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), Vector3()); - return colliders[p_collision].remainder; -} -Object *KinematicBody::get_collision_local_shape(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), NULL); - uint32_t owner = shape_find_owner(colliders[p_collision].local_shape); - return shape_owner_get_owner(owner); -} -Object *KinematicBody::get_collision_collider(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), NULL); +Ref<KinematicCollision> KinematicBody::_get_slide_collision(int p_bounce) { - if (colliders[p_collision].collider) { - return ObjectDB::get_instance(colliders[p_collision].collider); + ERR_FAIL_INDEX_V(p_bounce, colliders.size(), Ref<KinematicCollision>()); + if (p_bounce > slide_colliders.size()) { + slide_colliders.resize(p_bounce + 1); } - return NULL; -} -ObjectID KinematicBody::get_collision_collider_id(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), 0); - - return colliders[p_collision].collider; -} -Object *KinematicBody::get_collision_collider_shape(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), NULL); - Object *collider = get_collision_collider(p_collision); - if (collider) { - CollisionObject *obj2d = Object::cast_to<CollisionObject>(collider); - if (obj2d) { - uint32_t owner = shape_find_owner(colliders[p_collision].collider_shape); - return obj2d->shape_owner_get_owner(owner); - } + if (slide_colliders[p_bounce].is_null()) { + slide_colliders[p_bounce].instance(); + slide_colliders[p_bounce]->owner = this; } - return NULL; -} -int KinematicBody::get_collision_collider_shape_index(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), -1); - return colliders[p_collision].collider_shape; -} -Vector3 KinematicBody::get_collision_collider_velocity(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), Vector3()); - return colliders[p_collision].collider_vel; -} -Variant KinematicBody::get_collision_collider_metadata(int p_collision) const { - ERR_FAIL_INDEX_V(p_collision, colliders.size(), Variant()); - return colliders[p_collision].collider_metadata; + slide_colliders[p_bounce]->collision = colliders[p_bounce]; + return slide_colliders[p_bounce]; } void KinematicBody::_bind_methods() { - ClassDB::bind_method(D_METHOD("move", "rel_vec"), &KinematicBody::_move); - ClassDB::bind_method(D_METHOD("move_and_slide", "linear_velocity", "floor_normal", "slope_stop_min_velocity", "max_bounces", "floor_max_angle"), &KinematicBody::move_and_slide, DEFVAL(Vector3(0, 0, 0)), DEFVAL(0.05), DEFVAL(4), DEFVAL(Math::deg2rad((float)45))); + ClassDB::bind_method(D_METHOD("move_and_collide", "rel_vec"), &KinematicBody::_move); + ClassDB::bind_method(D_METHOD("move_and_slide", "linear_velocity", "floor_normal", "slope_stop_min_velocity", "max_slides", "floor_max_angle"), &KinematicBody::move_and_slide, DEFVAL(Vector3(0, 0, 0)), DEFVAL(0.05), DEFVAL(4), DEFVAL(Math::deg2rad((float)45))); ClassDB::bind_method(D_METHOD("test_move", "from", "rel_vec"), &KinematicBody::test_move); @@ -1143,18 +1089,8 @@ void KinematicBody::_bind_methods() { ClassDB::bind_method(D_METHOD("set_safe_margin", "pixels"), &KinematicBody::set_safe_margin); ClassDB::bind_method(D_METHOD("get_safe_margin"), &KinematicBody::get_safe_margin); - ClassDB::bind_method(D_METHOD("get_collision_count"), &KinematicBody::get_collision_count); - ClassDB::bind_method(D_METHOD("get_collision_position", "collision"), &KinematicBody::get_collision_position); - ClassDB::bind_method(D_METHOD("get_collision_normal", "collision"), &KinematicBody::get_collision_normal); - ClassDB::bind_method(D_METHOD("get_collision_travel", "collision"), &KinematicBody::get_collision_travel); - ClassDB::bind_method(D_METHOD("get_collision_remainder", "collision"), &KinematicBody::get_collision_remainder); - ClassDB::bind_method(D_METHOD("get_collision_local_shape", "collision"), &KinematicBody::get_collision_local_shape); - ClassDB::bind_method(D_METHOD("get_collision_collider", "collision"), &KinematicBody::get_collision_collider); - ClassDB::bind_method(D_METHOD("get_collision_collider_id", "collision"), &KinematicBody::get_collision_collider_id); - ClassDB::bind_method(D_METHOD("get_collision_collider_shape", "collision"), &KinematicBody::get_collision_collider_shape); - ClassDB::bind_method(D_METHOD("get_collision_collider_shape_index", "collision"), &KinematicBody::get_collision_collider_shape_index); - ClassDB::bind_method(D_METHOD("get_collision_collider_velocity", "collision"), &KinematicBody::get_collision_collider_velocity); - ClassDB::bind_method(D_METHOD("get_collision_collider_metadata", "collision"), &KinematicBody::get_collision_collider_metadata); + ClassDB::bind_method(D_METHOD("get_slide_count"), &KinematicBody::get_slide_count); + ClassDB::bind_method(D_METHOD("get_slide_collision", "slide_idx"), &KinematicBody::_get_slide_collision); ADD_PROPERTY(PropertyInfo(Variant::REAL, "collision/safe_margin", PROPERTY_HINT_RANGE, "0.001,256,0.001"), "set_safe_margin", "get_safe_margin"); } @@ -1169,4 +1105,106 @@ KinematicBody::KinematicBody() on_wall = false; } KinematicBody::~KinematicBody() { + + if (motion_cache.is_valid()) { + motion_cache->owner = NULL; + } + + for (int i = 0; i < slide_colliders.size(); i++) { + if (slide_colliders[i].is_valid()) { + slide_colliders[i]->owner = NULL; + } + } +} +/////////////////////////////////////// + +Vector3 KinematicCollision::get_position() const { + + return collision.collision; +} +Vector3 KinematicCollision::get_normal() const { + return collision.normal; +} +Vector3 KinematicCollision::get_travel() const { + return collision.travel; +} +Vector3 KinematicCollision::get_remainder() const { + return collision.remainder; +} +Object *KinematicCollision::get_local_shape() const { + ERR_FAIL_COND_V(!owner, NULL); + uint32_t ownerid = owner->shape_find_owner(collision.local_shape); + return owner->shape_owner_get_owner(ownerid); +} + +Object *KinematicCollision::get_collider() const { + + if (collision.collider) { + return ObjectDB::get_instance(collision.collider); + } + + return NULL; +} +ObjectID KinematicCollision::get_collider_id() const { + + return collision.collider; +} +Object *KinematicCollision::get_collider_shape() const { + + Object *collider = get_collider(); + if (collider) { + CollisionObject *obj2d = Object::cast_to<CollisionObject>(collider); + if (obj2d) { + uint32_t ownerid = obj2d->shape_find_owner(collision.collider_shape); + return obj2d->shape_owner_get_owner(ownerid); + } + } + + return NULL; +} +int KinematicCollision::get_collider_shape_index() const { + + return collision.collider_shape; +} +Vector3 KinematicCollision::get_collider_velocity() const { + + return collision.collider_vel; +} +Variant KinematicCollision::get_collider_metadata() const { + + return Variant(); +} + +void KinematicCollision::_bind_methods() { + + ClassDB::bind_method(D_METHOD("get_position"), &KinematicCollision::get_position); + ClassDB::bind_method(D_METHOD("get_normal"), &KinematicCollision::get_normal); + ClassDB::bind_method(D_METHOD("get_travel"), &KinematicCollision::get_travel); + ClassDB::bind_method(D_METHOD("get_remainder"), &KinematicCollision::get_remainder); + ClassDB::bind_method(D_METHOD("get_local_shape"), &KinematicCollision::get_local_shape); + ClassDB::bind_method(D_METHOD("get_collider"), &KinematicCollision::get_collider); + ClassDB::bind_method(D_METHOD("get_collider_id"), &KinematicCollision::get_collider_id); + ClassDB::bind_method(D_METHOD("get_collider_shape"), &KinematicCollision::get_collider_shape); + ClassDB::bind_method(D_METHOD("get_collider_shape_index"), &KinematicCollision::get_collider_shape_index); + ClassDB::bind_method(D_METHOD("get_collider_velocity"), &KinematicCollision::get_collider_velocity); + ClassDB::bind_method(D_METHOD("get_collider_metadata"), &KinematicCollision::get_collider_metadata); + + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "position"), "", "get_position"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "normal"), "", "get_normal"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "travel"), "", "get_travel"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "remainder"), "", "get_remainder"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "local_shape"), "", "get_local_shape"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "collider"), "", "get_collider"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "collider_id"), "", "get_collider_id"); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "collider_shape"), "", "get_collider_shape"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "collider_shape_index"), "", "get_collider_shape_index"); + ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "collider_velocity"), "", "get_collider_velocity"); + ADD_PROPERTY(PropertyInfo(Variant::NIL, "collider_metadata", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT), "", "get_collider_metadata"); +} + +KinematicCollision::KinematicCollision() { + collision.collider = 0; + collision.collider_shape = 0; + collision.local_shape = 0; + owner = NULL; } diff --git a/scene/3d/physics_body.h b/scene/3d/physics_body.h index 23d752ad76..f88b3860dc 100644 --- a/scene/3d/physics_body.h +++ b/scene/3d/physics_body.h @@ -261,6 +261,8 @@ public: VARIANT_ENUM_CAST(RigidBody::Mode); VARIANT_ENUM_CAST(RigidBody::AxisLock); +class KinematicCollision; + class KinematicBody : public PhysicsBody { GDCLASS(KinematicBody, PhysicsBody); @@ -286,42 +288,62 @@ private: bool on_ceiling; bool on_wall; Vector<Collision> colliders; + Vector<Ref<KinematicCollision> > slide_colliders; + Ref<KinematicCollision> motion_cache; _FORCE_INLINE_ bool _ignores_mode(PhysicsServer::BodyMode) const; - Dictionary _move(const Vector3 &p_motion); + Ref<KinematicCollision> _move(const Vector3 &p_motion); + Ref<KinematicCollision> _get_slide_collision(int p_bounce); protected: static void _bind_methods(); public: - bool move(const Vector3 &p_motion, Collision &r_collision); + bool move_and_collide(const Vector3 &p_motion, Collision &r_collision); bool test_move(const Transform &p_from, const Vector3 &p_motion); void set_safe_margin(float p_margin); float get_safe_margin() const; - Vector3 move_and_slide(const Vector3 &p_linear_velocity, const Vector3 &p_floor_direction = Vector3(0, 0, 0), float p_slope_stop_min_velocity = 0.05, int p_max_bounces = 4, float p_floor_max_angle = Math::deg2rad((float)45)); + Vector3 move_and_slide(const Vector3 &p_linear_velocity, const Vector3 &p_floor_direction = Vector3(0, 0, 0), float p_slope_stop_min_velocity = 0.05, int p_max_slides = 4, float p_floor_max_angle = Math::deg2rad((float)45)); bool is_on_floor() const; bool is_on_wall() const; bool is_on_ceiling() const; Vector3 get_floor_velocity() const; - int get_collision_count() const; - Vector3 get_collision_position(int p_collision) const; - Vector3 get_collision_normal(int p_collision) const; - Vector3 get_collision_travel(int p_collision) const; - Vector3 get_collision_remainder(int p_collision) const; - Object *get_collision_local_shape(int p_collision) const; - Object *get_collision_collider(int p_collision) const; - ObjectID get_collision_collider_id(int p_collision) const; - Object *get_collision_collider_shape(int p_collision) const; - int get_collision_collider_shape_index(int p_collision) const; - Vector3 get_collision_collider_velocity(int p_collision) const; - Variant get_collision_collider_metadata(int p_collision) const; + int get_slide_count() const; + Collision get_slide_collision(int p_bounce) const; KinematicBody(); ~KinematicBody(); }; +class KinematicCollision : public Reference { + + GDCLASS(KinematicCollision, Reference); + + KinematicBody *owner; + friend class KinematicBody; + KinematicBody::Collision collision; + +protected: + static void _bind_methods(); + +public: + Vector3 get_position() const; + Vector3 get_normal() const; + Vector3 get_travel() const; + Vector3 get_remainder() const; + Object *get_local_shape() const; + Object *get_collider() const; + ObjectID get_collider_id() const; + Object *get_collider_shape() const; + int get_collider_shape_index() const; + Vector3 get_collider_velocity() const; + Variant get_collider_metadata() const; + + KinematicCollision(); +}; + #endif // PHYSICS_BODY__H diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index 8730be0c06..bef0808fd0 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -270,7 +270,7 @@ void GraphNode::_notification(int p_what) { } } - if (resizeable) { + if (resizable) { draw_texture(resizer, get_size() - resizer->get_size()); } } @@ -594,7 +594,7 @@ void GraphNode::_gui_input(const Ref<InputEvent> &p_ev) { Ref<Texture> resizer = get_icon("resizer"); - if (resizeable && mpos.x > get_size().x - resizer->get_width() && mpos.y > get_size().y - resizer->get_height()) { + if (resizable && mpos.x > get_size().x - resizer->get_width() && mpos.y > get_size().y - resizer->get_height()) { resizing = true; resizing_from = mpos; @@ -645,15 +645,15 @@ bool GraphNode::is_comment() const { return comment; } -void GraphNode::set_resizeable(bool p_enable) { +void GraphNode::set_resizable(bool p_enable) { - resizeable = p_enable; + resizable = p_enable; update(); } -bool GraphNode::is_resizeable() const { +bool GraphNode::is_resizable() const { - return resizeable; + return resizable; } void GraphNode::_bind_methods() { @@ -678,8 +678,8 @@ void GraphNode::_bind_methods() { ClassDB::bind_method(D_METHOD("set_comment", "comment"), &GraphNode::set_comment); ClassDB::bind_method(D_METHOD("is_comment"), &GraphNode::is_comment); - ClassDB::bind_method(D_METHOD("set_resizeable", "resizeable"), &GraphNode::set_resizeable); - ClassDB::bind_method(D_METHOD("is_resizeable"), &GraphNode::is_resizeable); + ClassDB::bind_method(D_METHOD("set_resizable", "resizable"), &GraphNode::set_resizable); + ClassDB::bind_method(D_METHOD("is_resizable"), &GraphNode::is_resizable); ClassDB::bind_method(D_METHOD("set_selected", "selected"), &GraphNode::set_selected); ClassDB::bind_method(D_METHOD("is_selected"), &GraphNode::is_selected); @@ -702,7 +702,7 @@ void GraphNode::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::STRING, "title"), "set_title", "get_title"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_close"), "set_show_close_button", "is_close_button_visible"); - ADD_PROPERTY(PropertyInfo(Variant::BOOL, "resizeable"), "set_resizeable", "is_resizeable"); + ADD_PROPERTY(PropertyInfo(Variant::BOOL, "resizable"), "set_resizable", "is_resizable"); ADD_SIGNAL(MethodInfo("offset_changed")); ADD_SIGNAL(MethodInfo("dragged", PropertyInfo(Variant::VECTOR2, "from"), PropertyInfo(Variant::VECTOR2, "to"))); @@ -722,7 +722,7 @@ GraphNode::GraphNode() { connpos_dirty = true; set_mouse_filter(MOUSE_FILTER_STOP); comment = false; - resizeable = false; + resizable = false; resizing = false; selected = false; } diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h index 416d711aab..a606e47acd 100644 --- a/scene/gui/graph_node.h +++ b/scene/gui/graph_node.h @@ -68,7 +68,7 @@ private: bool show_close; Vector2 offset; bool comment; - bool resizeable; + bool resizable; bool resizing; Vector2 resizing_from; @@ -151,8 +151,8 @@ public: void set_comment(bool p_enable); bool is_comment() const; - void set_resizeable(bool p_enable); - bool is_resizeable() const; + void set_resizable(bool p_enable); + bool is_resizable() const; virtual Size2 get_minimum_size() const; diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 66b4e6cec1..6a5f56c78c 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -631,7 +631,7 @@ void LineEdit::_notification(int p_what) { if (has_icon("right_icon")) { Ref<Texture> r_icon = Control::get_icon("right_icon"); ofs_max -= r_icon->get_width(); - r_icon->draw(ci, Point2(width - r_icon->get_width() - x_ofs, y_ofs), Color(1, 1, 1, disabled_alpha * .9)); + r_icon->draw(ci, Point2(width - r_icon->get_width() - x_ofs, height / 2 - r_icon->get_height() / 2), Color(1, 1, 1, disabled_alpha * .9)); } int caret_height = font->get_height() > y_area ? y_area : font->get_height(); diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp index a3f116c883..e51955ed66 100644 --- a/scene/gui/rich_text_label.cpp +++ b/scene/gui/rich_text_label.cpp @@ -80,6 +80,10 @@ RichTextLabel::Item *RichTextLabel::_get_next_item(Item *p_item, bool p_free) { return NULL; } +Rect2 RichTextLabel::_get_text_rect() { + Ref<StyleBox> style = get_stylebox("normal"); + return Rect2(style->get_offset(), get_size() - style->get_minimum_size()); +} void RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &y, int p_width, int p_line, ProcessMode p_mode, const Ref<Font> &p_base_font, const Color &p_base_color, const Point2i &p_click_pos, Item **r_click_item, int *r_click_char, bool *r_outside, int p_char_count) { RID ci; @@ -583,7 +587,7 @@ void RichTextLabel::_update_scroll() { int total_height = 0; if (main->lines.size()) - total_height = main->lines[main->lines.size() - 1].height_accum_cache; + total_height = main->lines[main->lines.size() - 1].height_accum_cache + get_stylebox("normal")->get_minimum_size().height; bool exceeds = total_height > get_size().height && scroll_active; @@ -641,7 +645,11 @@ void RichTextLabel::_notification(int p_what) { _update_scroll(); RID ci = get_canvas_item(); + Size2 size = get_size(); + Rect2 text_rect = _get_text_rect(); + + draw_style_box(get_stylebox("normal"), Rect2(Point2(), size)); if (has_focus()) { VisualServer::get_singleton()->canvas_item_add_clip_ignore(ci, true); @@ -657,10 +665,10 @@ void RichTextLabel::_notification(int p_what) { int total_chars = 0; while (from_line < main->lines.size()) { - if (main->lines[from_line].height_accum_cache >= ofs) + if (main->lines[from_line].height_accum_cache + _get_text_rect().get_position().y >= ofs) break; - from_line++; total_chars += main->lines[from_line].char_count; + from_line++; } if (from_line >= main->lines.size()) @@ -672,7 +680,7 @@ void RichTextLabel::_notification(int p_what) { while (y < size.height && from_line < main->lines.size()) { - _process_line(main, Point2(), y, size.width - scroll_w, from_line, PROCESS_DRAW, base_font, base_color, Point2i(), NULL, NULL, NULL, total_chars); + _process_line(main, text_rect.get_position(), y, text_rect.get_size().width - scroll_w, from_line, PROCESS_DRAW, base_font, base_color, Point2i(), NULL, NULL, NULL, total_chars); total_chars += main->lines[from_line].char_count; from_line++; } @@ -686,7 +694,7 @@ void RichTextLabel::_find_click(ItemFrame *p_frame, const Point2i &p_click, Item *r_click_item = NULL; Size2 size = get_size(); - + Rect2 text_rect = _get_text_rect(); int ofs = vscroll->get_value(); //todo, change to binary search @@ -706,9 +714,9 @@ void RichTextLabel::_find_click(ItemFrame *p_frame, const Point2i &p_click, Item Ref<Font> base_font = get_font("normal_font"); Color base_color = get_color("default_color"); - while (y < size.height && from_line < p_frame->lines.size()) { + while (y < text_rect.get_size().height && from_line < p_frame->lines.size()) { - _process_line(p_frame, Point2(), y, size.width - scroll_w, from_line, PROCESS_POINTER, base_font, base_color, p_click, r_click_item, r_click_char, r_outside); + _process_line(p_frame, text_rect.get_position(), y, text_rect.get_size().width - scroll_w, from_line, PROCESS_POINTER, base_font, base_color, p_click, r_click_item, r_click_char, r_outside); if (r_click_item && *r_click_item) return; from_line++; @@ -1015,13 +1023,14 @@ void RichTextLabel::_validate_line_caches(ItemFrame *p_frame) { //validate invalid lines!s Size2 size = get_size(); + Rect2 text_rect = _get_text_rect(); Ref<Font> base_font = get_font("normal_font"); for (int i = p_frame->first_invalid_line; i < p_frame->lines.size(); i++) { int y = 0; - _process_line(p_frame, Point2(), y, size.width - scroll_w, i, PROCESS_CACHE, base_font, Color()); + _process_line(p_frame, text_rect.get_position(), y, text_rect.get_size().width - scroll_w, i, PROCESS_CACHE, base_font, Color()); p_frame->lines[i].height_cache = y; p_frame->lines[i].height_accum_cache = y; @@ -1031,7 +1040,7 @@ void RichTextLabel::_validate_line_caches(ItemFrame *p_frame) { int total_height = 0; if (p_frame->lines.size()) - total_height = p_frame->lines[p_frame->lines.size() - 1].height_accum_cache; + total_height = p_frame->lines[p_frame->lines.size() - 1].height_accum_cache + get_stylebox("normal")->get_minimum_size().height; main->first_invalid_line = p_frame->lines.size(); diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h index 74bf180b5d..4db2c3a8e9 100644 --- a/scene/gui/rich_text_label.h +++ b/scene/gui/rich_text_label.h @@ -276,6 +276,8 @@ private: void _gui_input(Ref<InputEvent> p_event); Item *_get_next_item(Item *p_item, bool p_free = false); + Rect2 _get_text_rect(); + bool use_bbcode; String bbcode; diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index ade665b418..1738e303aa 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -2136,15 +2136,25 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { break; } } - if (auto_indent) { - // indent once again if previous line will end with ':' - // (i.e. colon precedes current cursor position) - if (cursor.column > 0 && text[cursor.line][cursor.column - 1] == ':') { + + bool brace_indent = false; + + // no need to indent if we are going upwards. + if (auto_indent && !(k->get_command() && k->get_shift())) { + // indent once again if previous line will end with ':' or '{' + // (i.e. colon/brace precedes current cursor position) + if (cursor.column > 0 && (text[cursor.line][cursor.column - 1] == ':' || text[cursor.line][cursor.column - 1] == '{')) { if (indent_using_spaces) { ins += space_indent; } else { ins += "\t"; } + + // no need to move the brace below if we are not taking the text with us. + if (text[cursor.line][cursor.column] == '}' && !k->get_command()) { + brace_indent = true; + ins += "\n" + ins.substr(1, ins.length() - 2); + } } } @@ -2168,6 +2178,9 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) { if (first_line) { cursor_set_line(0); + } else if (brace_indent) { + cursor_set_line(cursor.line - 1); + cursor_set_column(text[cursor.line].length()); } } break; diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index e01f5e3cdf..69c17f4912 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -378,6 +378,7 @@ void register_scene_types() { ClassDB::register_virtual_class<CollisionObject>(); ClassDB::register_class<StaticBody>(); ClassDB::register_class<RigidBody>(); + ClassDB::register_class<KinematicCollision>(); ClassDB::register_class<KinematicBody>(); ClassDB::register_class<VehicleBody>(); diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index 4ff635edeb..fdea5960e5 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -794,6 +794,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const // RichTextLabel theme->set_stylebox("focus", "RichTextLabel", focus); + theme->set_stylebox("normal", "RichTextLabel", make_stylebox(tree_bg_png, 3, 3, 3, 3)); theme->set_font("normal_font", "RichTextLabel", default_font); theme->set_font("bold_font", "RichTextLabel", default_font); diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index f3d790eef5..3d6a10ffc7 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -239,6 +239,7 @@ void SpatialMaterial::init_shaders() { shader_names->anisotropy = "anisotropy_ratio"; shader_names->depth_scale = "depth_scale"; shader_names->subsurface_scattering_strength = "subsurface_scattering_strength"; + shader_names->transmission = "transmission"; shader_names->refraction = "refraction"; shader_names->point_size = "point_size"; shader_names->uv1_scale = "uv1_scale"; @@ -276,6 +277,7 @@ void SpatialMaterial::init_shaders() { shader_names->texture_names[TEXTURE_AMBIENT_OCCLUSION] = "texture_ambient_occlusion"; shader_names->texture_names[TEXTURE_DEPTH] = "texture_depth"; shader_names->texture_names[TEXTURE_SUBSURFACE_SCATTERING] = "texture_subsurface_scattering"; + shader_names->texture_names[TEXTURE_TRANSMISSION] = "texture_transmission"; shader_names->texture_names[TEXTURE_REFRACTION] = "texture_refraction"; shader_names->texture_names[TEXTURE_DETAIL_MASK] = "texture_detail_mask"; shader_names->texture_names[TEXTURE_DETAIL_ALBEDO] = "texture_detail_albedo"; @@ -352,7 +354,7 @@ void SpatialMaterial::_update_shader() { } switch (diffuse_mode) { case DIFFUSE_LAMBERT: code += ",diffuse_lambert"; break; - case DIFFUSE_HALF_LAMBERT: code += ",diffuse_half_lambert"; break; + case DIFFUSE_LAMBERT_WRAP: code += ",diffuse_lambert_wrap"; break; case DIFFUSE_OREN_NAYAR: code += ",diffuse_oren_nayar"; break; case DIFFUSE_BURLEY: code += ",diffuse_burley"; break; case DIFFUSE_TOON: code += ",diffuse_toon"; break; @@ -451,6 +453,12 @@ void SpatialMaterial::_update_shader() { code += "uniform sampler2D texture_subsurface_scattering : hint_white;\n"; } + if (features[FEATURE_TRANSMISSION]) { + + code += "uniform vec4 transmission : hint_color;\n"; + code += "uniform sampler2D texture_transmission : hint_black;\n"; + } + if (features[FEATURE_DEPTH_MAPPING]) { code += "uniform sampler2D texture_depth : hint_black;\n"; code += "uniform float depth_scale;\n"; @@ -766,6 +774,15 @@ void SpatialMaterial::_update_shader() { code += "\tSSS_STRENGTH=subsurface_scattering_strength*sss_tex;\n"; } + if (features[FEATURE_TRANSMISSION]) { + if (flags[FLAG_UV1_USE_TRIPLANAR]) { + code += "\tvec3 transmission_tex = triplanar_texture(texture_transmission,uv1_power_normal,uv1_triplanar_pos).rgb;\n"; + } else { + code += "\tvec3 transmission_tex = texture(texture_transmission,base_uv).rgb;\n"; + } + code += "\tTRANSMISSION = (transmission.rgb+transmission_tex);\n"; + } + if (features[FEATURE_DETAIL]) { bool triplanar = (flags[FLAG_UV1_USE_TRIPLANAR] && detail_uv == DETAIL_UV_1) || (flags[FLAG_UV2_USE_TRIPLANAR] && detail_uv == DETAIL_UV_2); @@ -1015,6 +1032,17 @@ float SpatialMaterial::get_subsurface_scattering_strength() const { return subsurface_scattering_strength; } +void SpatialMaterial::set_transmission(const Color &p_transmission) { + + transmission = p_transmission; + VS::get_singleton()->material_set_param(_get_material(), shader_names->transmission, transmission); +} + +Color SpatialMaterial::get_transmission() const { + + return transmission; +} + void SpatialMaterial::set_refraction(float p_refraction) { refraction = p_refraction; @@ -1180,6 +1208,7 @@ void SpatialMaterial::_validate_property(PropertyInfo &property) const { _validate_feature("ao", FEATURE_AMBIENT_OCCLUSION, property); _validate_feature("depth", FEATURE_DEPTH_MAPPING, property); _validate_feature("subsurf_scatter", FEATURE_SUBSURACE_SCATTERING, property); + _validate_feature("transmission", FEATURE_TRANSMISSION, property); _validate_feature("refraction", FEATURE_REFRACTION, property); _validate_feature("detail", FEATURE_DETAIL, property); @@ -1530,6 +1559,9 @@ void SpatialMaterial::_bind_methods() { ClassDB::bind_method(D_METHOD("set_subsurface_scattering_strength", "strength"), &SpatialMaterial::set_subsurface_scattering_strength); ClassDB::bind_method(D_METHOD("get_subsurface_scattering_strength"), &SpatialMaterial::get_subsurface_scattering_strength); + ClassDB::bind_method(D_METHOD("set_transmission", "transmission"), &SpatialMaterial::set_transmission); + ClassDB::bind_method(D_METHOD("get_transmission"), &SpatialMaterial::get_transmission); + ClassDB::bind_method(D_METHOD("set_refraction", "refraction"), &SpatialMaterial::set_refraction); ClassDB::bind_method(D_METHOD("get_refraction"), &SpatialMaterial::get_refraction); @@ -1721,6 +1753,11 @@ void SpatialMaterial::_bind_methods() { ADD_PROPERTY(PropertyInfo(Variant::REAL, "subsurf_scatter_strength", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_subsurface_scattering_strength", "get_subsurface_scattering_strength"); ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "subsurf_scatter_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture", TEXTURE_SUBSURFACE_SCATTERING); + ADD_GROUP("Transmission", "transmission_"); + ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "transmission_enabled"), "set_feature", "get_feature", FEATURE_TRANSMISSION); + ADD_PROPERTY(PropertyInfo(Variant::COLOR, "transmission", PROPERTY_HINT_COLOR_NO_ALPHA), "set_transmission", "get_transmission"); + ADD_PROPERTYI(PropertyInfo(Variant::OBJECT, "transmission_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_texture", "get_texture", TEXTURE_TRANSMISSION); + ADD_GROUP("Refraction", "refraction_"); ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "refraction_enabled"), "set_feature", "get_feature", FEATURE_REFRACTION); ADD_PROPERTY(PropertyInfo(Variant::REAL, "refraction_scale", PROPERTY_HINT_RANGE, "-1,1,0.01"), "set_refraction", "get_refraction"); @@ -1758,6 +1795,7 @@ void SpatialMaterial::_bind_methods() { BIND_ENUM_CONSTANT(TEXTURE_AMBIENT_OCCLUSION); BIND_ENUM_CONSTANT(TEXTURE_DEPTH); BIND_ENUM_CONSTANT(TEXTURE_SUBSURFACE_SCATTERING); + BIND_ENUM_CONSTANT(TEXTURE_TRANSMISSION); BIND_ENUM_CONSTANT(TEXTURE_REFRACTION); BIND_ENUM_CONSTANT(TEXTURE_DETAIL_MASK); BIND_ENUM_CONSTANT(TEXTURE_DETAIL_ALBEDO); @@ -1776,6 +1814,7 @@ void SpatialMaterial::_bind_methods() { BIND_ENUM_CONSTANT(FEATURE_AMBIENT_OCCLUSION); BIND_ENUM_CONSTANT(FEATURE_DEPTH_MAPPING); BIND_ENUM_CONSTANT(FEATURE_SUBSURACE_SCATTERING); + BIND_ENUM_CONSTANT(FEATURE_TRANSMISSION); BIND_ENUM_CONSTANT(FEATURE_REFRACTION); BIND_ENUM_CONSTANT(FEATURE_DETAIL); BIND_ENUM_CONSTANT(FEATURE_MAX); @@ -1809,7 +1848,7 @@ void SpatialMaterial::_bind_methods() { BIND_ENUM_CONSTANT(FLAG_MAX); BIND_ENUM_CONSTANT(DIFFUSE_LAMBERT); - BIND_ENUM_CONSTANT(DIFFUSE_HALF_LAMBERT); + BIND_ENUM_CONSTANT(DIFFUSE_LAMBERT_WRAP); BIND_ENUM_CONSTANT(DIFFUSE_OREN_NAYAR); BIND_ENUM_CONSTANT(DIFFUSE_BURLEY); BIND_ENUM_CONSTANT(DIFFUSE_TOON); @@ -1850,6 +1889,7 @@ SpatialMaterial::SpatialMaterial() set_anisotropy(0); set_depth_scale(0.05); set_subsurface_scattering_strength(0); + set_transmission(Color(0, 0, 0)); set_refraction(0.05); set_line_width(1); set_point_size(1); diff --git a/scene/resources/material.h b/scene/resources/material.h index d560d7af55..4e77ab1ed6 100644 --- a/scene/resources/material.h +++ b/scene/resources/material.h @@ -112,6 +112,7 @@ public: TEXTURE_AMBIENT_OCCLUSION, TEXTURE_DEPTH, TEXTURE_SUBSURFACE_SCATTERING, + TEXTURE_TRANSMISSION, TEXTURE_REFRACTION, TEXTURE_DETAIL_MASK, TEXTURE_DETAIL_ALBEDO, @@ -135,6 +136,7 @@ public: FEATURE_AMBIENT_OCCLUSION, FEATURE_DEPTH_MAPPING, FEATURE_SUBSURACE_SCATTERING, + FEATURE_TRANSMISSION, FEATURE_REFRACTION, FEATURE_DETAIL, FEATURE_MAX @@ -179,7 +181,7 @@ public: enum DiffuseMode { DIFFUSE_LAMBERT, - DIFFUSE_HALF_LAMBERT, + DIFFUSE_LAMBERT_WRAP, DIFFUSE_OREN_NAYAR, DIFFUSE_BURLEY, DIFFUSE_TOON, @@ -212,7 +214,7 @@ private: union MaterialKey { struct { - uint64_t feature_mask : 11; + uint64_t feature_mask : 12; uint64_t detail_uv : 1; uint64_t blend_mode : 2; uint64_t depth_draw_mode : 2; @@ -286,6 +288,7 @@ private: StringName anisotropy; StringName depth_scale; StringName subsurface_scattering_strength; + StringName transmission; StringName refraction; StringName point_size; StringName uv1_scale; @@ -337,6 +340,7 @@ private: float anisotropy; float depth_scale; float subsurface_scattering_strength; + Color transmission; float refraction; float line_width; float point_size; @@ -443,6 +447,9 @@ public: void set_subsurface_scattering_strength(float p_subsurface_scattering_strength); float get_subsurface_scattering_strength() const; + void set_transmission(const Color &p_transmission); + Color get_transmission() const; + void set_refraction(float p_refraction); float get_refraction() const; diff --git a/scene/resources/mesh_library.cpp b/scene/resources/mesh_library.cpp index 4e1ffd2ab3..e1131e7e3e 100644 --- a/scene/resources/mesh_library.cpp +++ b/scene/resources/mesh_library.cpp @@ -214,7 +214,7 @@ Vector<int> MeshLibrary::get_item_list() const { return ret; } -int MeshLibrary::find_item_name(const String &p_name) const { +int MeshLibrary::find_item_by_name(const String &p_name) const { for (Map<int, Item>::Element *E = item_map.front(); E; E = E->next()) { @@ -275,6 +275,9 @@ void MeshLibrary::_bind_methods() { ClassDB::bind_method(D_METHOD("get_item_shapes", "id"), &MeshLibrary::_get_item_shapes); ClassDB::bind_method(D_METHOD("get_item_preview", "id"), &MeshLibrary::get_item_preview); ClassDB::bind_method(D_METHOD("remove_item", "id"), &MeshLibrary::remove_item); + ClassDB::bind_method(D_METHOD("remove_item", "id"), &MeshLibrary::remove_item); + ClassDB::bind_method(D_METHOD("find_item_by_name", "name"), &MeshLibrary::find_item_by_name); + ClassDB::bind_method(D_METHOD("clear"), &MeshLibrary::clear); ClassDB::bind_method(D_METHOD("get_item_list"), &MeshLibrary::get_item_list); ClassDB::bind_method(D_METHOD("get_last_unused_item_id"), &MeshLibrary::get_last_unused_item_id); diff --git a/scene/resources/mesh_library.h b/scene/resources/mesh_library.h index 99b6b48d61..c5d23ce50f 100644 --- a/scene/resources/mesh_library.h +++ b/scene/resources/mesh_library.h @@ -84,7 +84,7 @@ public: void clear(); - int find_item_name(const String &p_name) const; + int find_item_by_name(const String &p_name) const; Vector<int> get_item_list() const; int get_last_unused_item_id() const; diff --git a/servers/physics/collision_object_sw.cpp b/servers/physics/collision_object_sw.cpp index ab716a8f6e..3af8b542fa 100644 --- a/servers/physics/collision_object_sw.cpp +++ b/servers/physics/collision_object_sw.cpp @@ -28,6 +28,7 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "collision_object_sw.h" +#include "servers/physics/physics_server_sw.h" #include "space_sw.h" void CollisionObjectSW::add_shape(ShapeSW *p_shape, const Transform &p_transform) { @@ -39,8 +40,12 @@ void CollisionObjectSW::add_shape(ShapeSW *p_shape, const Transform &p_transform s.bpid = 0; //needs update shapes.push_back(s); p_shape->add_owner(this); - _update_shapes(); - _shapes_changed(); + + if (!pending_shape_update_list.in_list()) { + PhysicsServerSW::singleton->pending_shape_update_list.add(&pending_shape_update_list); + } + //_update_shapes(); + //_shapes_changed(); } void CollisionObjectSW::set_shape(int p_index, ShapeSW *p_shape) { @@ -50,8 +55,11 @@ void CollisionObjectSW::set_shape(int p_index, ShapeSW *p_shape) { shapes[p_index].shape = p_shape; p_shape->add_owner(this); - _update_shapes(); - _shapes_changed(); + if (!pending_shape_update_list.in_list()) { + PhysicsServerSW::singleton->pending_shape_update_list.add(&pending_shape_update_list); + } + //_update_shapes(); + //_shapes_changed(); } void CollisionObjectSW::set_shape_transform(int p_index, const Transform &p_transform) { @@ -59,8 +67,11 @@ void CollisionObjectSW::set_shape_transform(int p_index, const Transform &p_tran shapes[p_index].xform = p_transform; shapes[p_index].xform_inv = p_transform.affine_inverse(); - _update_shapes(); - _shapes_changed(); + if (!pending_shape_update_list.in_list()) { + PhysicsServerSW::singleton->pending_shape_update_list.add(&pending_shape_update_list); + } + //_update_shapes(); + //_shapes_changed(); } void CollisionObjectSW::remove_shape(ShapeSW *p_shape) { @@ -90,7 +101,11 @@ void CollisionObjectSW::remove_shape(int p_index) { shapes[p_index].shape->remove_owner(this); shapes.remove(p_index); - _shapes_changed(); + if (!pending_shape_update_list.in_list()) { + PhysicsServerSW::singleton->pending_shape_update_list.add(&pending_shape_update_list); + } + //_update_shapes(); + //_shapes_changed(); } void CollisionObjectSW::_set_static(bool p_static) { @@ -202,7 +217,8 @@ void CollisionObjectSW::_shape_changed() { _shapes_changed(); } -CollisionObjectSW::CollisionObjectSW(Type p_type) { +CollisionObjectSW::CollisionObjectSW(Type p_type) + : pending_shape_update_list(this) { _static = true; type = p_type; diff --git a/servers/physics/collision_object_sw.h b/servers/physics/collision_object_sw.h index dc988aae86..67a8a44944 100644 --- a/servers/physics/collision_object_sw.h +++ b/servers/physics/collision_object_sw.h @@ -75,6 +75,8 @@ private: Transform inv_transform; bool _static; + SelfList<CollisionObjectSW> pending_shape_update_list; + void _update_shapes(); protected: diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp index 8d6f7b3fd8..2d46770924 100644 --- a/servers/physics/physics_server_sw.cpp +++ b/servers/physics/physics_server_sw.cpp @@ -763,6 +763,8 @@ void PhysicsServerSW::body_apply_impulse(RID p_body, const Vector3 &p_pos, const BodySW *body = body_owner.get(p_body); ERR_FAIL_COND(!body); + _update_shapes(); + body->apply_impulse(p_pos, p_impulse); body->wakeup(); }; @@ -772,6 +774,8 @@ void PhysicsServerSW::body_apply_torque_impulse(RID p_body, const Vector3 &p_imp BodySW *body = body_owner.get(p_body); ERR_FAIL_COND(!body); + _update_shapes(); + body->apply_torque_impulse(p_impulse); body->wakeup(); }; @@ -781,6 +785,8 @@ void PhysicsServerSW::body_set_axis_velocity(RID p_body, const Vector3 &p_axis_v BodySW *body = body_owner.get(p_body); ERR_FAIL_COND(!body); + _update_shapes(); + Vector3 v = body->get_linear_velocity(); Vector3 axis = p_axis_velocity.normalized(); v -= axis * axis.dot(v); @@ -793,6 +799,7 @@ void PhysicsServerSW::body_set_axis_lock(RID p_body, BodyAxisLock p_lock) { BodySW *body = body_owner.get(p_body); ERR_FAIL_COND(!body); + body->set_axis_lock(p_lock); body->wakeup(); } @@ -902,6 +909,8 @@ bool PhysicsServerSW::body_test_motion(RID p_body, const Transform &p_from, cons ERR_FAIL_COND_V(!body->get_space(), false); ERR_FAIL_COND_V(body->get_space()->is_locked(), false); + _update_shapes(); + return body->get_space()->test_body_motion(body, p_from, p_motion, p_margin, r_result); } @@ -1209,6 +1218,8 @@ bool PhysicsServerSW::generic_6dof_joint_get_flag(RID p_joint, Vector3::Axis p_a void PhysicsServerSW::free(RID p_rid) { + _update_shapes(); //just in case + if (shape_owner.owns(p_rid)) { ShapeSW *shape = shape_owner.get(p_rid); @@ -1312,6 +1323,8 @@ void PhysicsServerSW::step(real_t p_step) { if (!active) return; + _update_shapes(); + doing_sync = false; last_step = p_step; @@ -1409,6 +1422,14 @@ int PhysicsServerSW::get_process_info(ProcessInfo p_info) { return 0; } +void PhysicsServerSW::_update_shapes() { + + while (pending_shape_update_list.first()) { + pending_shape_update_list.first()->self()->_shape_changed(); + pending_shape_update_list.remove(pending_shape_update_list.first()); + } +} + void PhysicsServerSW::_shape_col_cbk(const Vector3 &p_point_A, const Vector3 &p_point_B, void *p_userdata) { CollCbkData *cbk = (CollCbkData *)p_userdata; diff --git a/servers/physics/physics_server_sw.h b/servers/physics/physics_server_sw.h index 2e1fa7065a..99ba302acd 100644 --- a/servers/physics/physics_server_sw.h +++ b/servers/physics/physics_server_sw.h @@ -62,6 +62,10 @@ class PhysicsServerSW : public PhysicsServer { mutable RID_Owner<JointSW> joint_owner; //void _clear_query(QuerySW *p_query); + friend class CollisionObjectSW; + SelfList<CollisionObjectSW>::List pending_shape_update_list; + void _update_shapes(); + public: static PhysicsServerSW *singleton; diff --git a/servers/visual/shader_types.cpp b/servers/visual/shader_types.cpp index ef0d063f83..91c5d430f5 100644 --- a/servers/visual/shader_types.cpp +++ b/servers/visual/shader_types.cpp @@ -102,6 +102,7 @@ ShaderTypes::ShaderTypes() { shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ANISOTROPY"] = ShaderLanguage::TYPE_FLOAT; shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["ANISOTROPY_FLOW"] = ShaderLanguage::TYPE_VEC2; shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["SSS_STRENGTH"] = ShaderLanguage::TYPE_FLOAT; + shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["TRANSMISSION"] = ShaderLanguage::TYPE_VEC3; shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["AO"] = ShaderLanguage::TYPE_FLOAT; shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["EMISSION"] = ShaderLanguage::TYPE_VEC3; shader_modes[VS::SHADER_SPATIAL].functions["fragment"].built_ins["SCREEN_TEXTURE"] = ShaderLanguage::TYPE_SAMPLER2D; @@ -137,7 +138,7 @@ ShaderTypes::ShaderTypes() { shader_modes[VS::SHADER_SPATIAL].modes.insert("unshaded"); shader_modes[VS::SHADER_SPATIAL].modes.insert("diffuse_lambert"); - shader_modes[VS::SHADER_SPATIAL].modes.insert("diffuse_half_lambert"); + shader_modes[VS::SHADER_SPATIAL].modes.insert("diffuse_lambert_wrap"); shader_modes[VS::SHADER_SPATIAL].modes.insert("diffuse_oren_nayar"); shader_modes[VS::SHADER_SPATIAL].modes.insert("diffuse_burley"); shader_modes[VS::SHADER_SPATIAL].modes.insert("diffuse_toon"); |