<?xml version="1.0" encoding="UTF-8" ?>
<class name="@GlobalScope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
	<brief_description>
		Global scope constants and functions.
	</brief_description>
	<description>
		A list of global scope enumerated constants and built-in functions. This is all that resides in the globals, constants regarding error codes, keycodes, property hints, etc.
		Singletons are also documented here, since they can be accessed from anywhere.
		For the entries that can only be accessed from scripts written in GDScript, see [@GDScript].
	</description>
	<tutorials>
		<link title="Random number generation">$DOCS_URL/tutorials/math/random_number_generation.html</link>
	</tutorials>
	<methods>
		<method name="abs">
			<return type="Variant" />
			<param index="0" name="x" type="Variant" />
			<description>
				Returns the absolute value of a [Variant] parameter [param x] (i.e. non-negative value). Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].
				[codeblock]
				var a = abs(-1)
				# a is 1

				var b = abs(-1.2)
				# b is 1.2

				var c = abs(Vector2(-3.5, -4))
				# c is (3.5, 4)

				var d = abs(Vector2i(-5, -6))
				# d is (5, 6)

				var e = abs(Vector3(-7, 8.5, -3.8))
				# e is (7, 8.5, 3.8)

				var f = abs(Vector3i(-7, -8, -9))
				# f is (7, 8, 9)
				[/codeblock]
				[b]Note:[/b] For better type safety, use [method absf], [method absi], [method Vector2.abs], [method Vector2i.abs], [method Vector3.abs], [method Vector3i.abs], [method Vector4.abs], or [method Vector4i.abs].
			</description>
		</method>
		<method name="absf">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the absolute value of float parameter [param x] (i.e. positive value).
				[codeblock]
				# a is 1.2
				var a = absf(-1.2)
				[/codeblock]
			</description>
		</method>
		<method name="absi">
			<return type="int" />
			<param index="0" name="x" type="int" />
			<description>
				Returns the absolute value of int parameter [param x] (i.e. positive value).
				[codeblock]
				# a is 1
				var a = absi(-1)
				[/codeblock]
			</description>
		</method>
		<method name="acos">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the arc cosine of [param x] in radians. Use to get the angle of cosine [param x]. [param x] will be clamped between [code]-1.0[/code] and [code]1.0[/code] (inclusive), in order to prevent [method acos] from returning [constant @GDScript.NAN].
				[codeblock]
				# c is 0.523599 or 30 degrees if converted with rad_to_deg(c)
				var c = acos(0.866025)
				[/codeblock]
			</description>
		</method>
		<method name="acosh">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the hyperbolic arc (also called inverse) cosine of [param x], returning a value in radians. Use it to get the angle from an angle's cosine in hyperbolic space if [param x] is larger or equal to 1. For values of [param x] lower than 1, it will return 0, in order to prevent [method acosh] from returning [constant @GDScript.NAN].
				[codeblock]
				var a = acosh(2) # Returns 1.31695789692482
				cosh(a) # Returns 2

				var b = acosh(-1) # Returns 0
				[/codeblock]
			</description>
		</method>
		<method name="angle_difference">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<description>
				Returns the difference between the two angles (in radians), in the range of [code][-PI, +PI][/code]. When [param from] and [param to] are opposite, returns [code]-PI[/code] if [param from] is smaller than [param to], or [code]PI[/code] otherwise.
			</description>
		</method>
		<method name="asin">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the arc sine of [param x] in radians. Use to get the angle of sine [param x]. [param x] will be clamped between [code]-1.0[/code] and [code]1.0[/code] (inclusive), in order to prevent [method asin] from returning [constant @GDScript.NAN].
				[codeblock]
				# s is 0.523599 or 30 degrees if converted with rad_to_deg(s)
				var s = asin(0.5)
				[/codeblock]
			</description>
		</method>
		<method name="asinh">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the hyperbolic arc (also called inverse) sine of [param x], returning a value in radians. Use it to get the angle from an angle's sine in hyperbolic space.
				[codeblock]
				var a = asinh(0.9) # Returns 0.8088669356527824
				sinh(a) # Returns 0.9
				[/codeblock]
			</description>
		</method>
		<method name="atan">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the arc tangent of [param x] in radians. Use it to get the angle from an angle's tangent in trigonometry.
				The method cannot know in which quadrant the angle should fall. See [method atan2] if you have both [code]y[/code] and [code skip-lint]x[/code].
				[codeblock]
				var a = atan(0.5) # a is 0.463648
				[/codeblock]
				If [param x] is between [code]-PI / 2[/code] and [code]PI / 2[/code] (inclusive), [code]atan(tan(x))[/code] is equal to [param x].
			</description>
		</method>
		<method name="atan2">
			<return type="float" />
			<param index="0" name="y" type="float" />
			<param index="1" name="x" type="float" />
			<description>
				Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle of tangent [code]y/x[/code]. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant.
				Important note: The Y coordinate comes first, by convention.
				[codeblock]
				var a = atan2(0, -1) # a is 3.141593
				[/codeblock]
			</description>
		</method>
		<method name="atanh">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the hyperbolic arc (also called inverse) tangent of [param x], returning a value in radians. Use it to get the angle from an angle's tangent in hyperbolic space if [param x] is between -1 and 1 (non-inclusive).
				In mathematics, the inverse hyperbolic tangent is only defined for -1 &lt; [param x] &lt; 1 in the real set, so values equal or lower to -1 for [param x] return negative [constant @GDScript.INF] and values equal or higher than 1 return positive [constant @GDScript.INF] in order to prevent [method atanh] from returning [constant @GDScript.NAN].
				[codeblock]
				var a = atanh(0.9) # Returns 1.47221948958322
				tanh(a) # Returns 0.9

				var b = atanh(-2) # Returns -inf
				tanh(b) # Returns -1
				[/codeblock]
			</description>
		</method>
		<method name="bezier_derivative">
			<return type="float" />
			<param index="0" name="start" type="float" />
			<param index="1" name="control_1" type="float" />
			<param index="2" name="control_2" type="float" />
			<param index="3" name="end" type="float" />
			<param index="4" name="t" type="float" />
			<description>
				Returns the derivative at the given [param t] on a one-dimensional [url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] defined by the given [param control_1], [param control_2], and [param end] points.
			</description>
		</method>
		<method name="bezier_interpolate">
			<return type="float" />
			<param index="0" name="start" type="float" />
			<param index="1" name="control_1" type="float" />
			<param index="2" name="control_2" type="float" />
			<param index="3" name="end" type="float" />
			<param index="4" name="t" type="float" />
			<description>
				Returns the point at the given [param t] on a one-dimensional [url=https://en.wikipedia.org/wiki/B%C3%A9zier_curve]Bézier curve[/url] defined by the given [param control_1], [param control_2], and [param end] points.
			</description>
		</method>
		<method name="bytes_to_var">
			<return type="Variant" />
			<param index="0" name="bytes" type="PackedByteArray" />
			<description>
				Decodes a byte array back to a [Variant] value, without decoding objects.
				[b]Note:[/b] If you need object deserialization, see [method bytes_to_var_with_objects].
			</description>
		</method>
		<method name="bytes_to_var_with_objects">
			<return type="Variant" />
			<param index="0" name="bytes" type="PackedByteArray" />
			<description>
				Decodes a byte array back to a [Variant] value. Decoding objects is allowed.
				[b]Warning:[/b] Deserialized object can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats (remote code execution).
			</description>
		</method>
		<method name="ceil">
			<return type="Variant" />
			<param index="0" name="x" type="Variant" />
			<description>
				Rounds [param x] upward (towards positive infinity), returning the smallest whole number that is not less than [param x]. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].
				[codeblock]
				var i = ceil(1.45) # i is 2.0
				i = ceil(1.001)    # i is 2.0
				[/codeblock]
				See also [method floor], [method round], and [method snapped].
				[b]Note:[/b] For better type safety, use [method ceilf], [method ceili], [method Vector2.ceil], [method Vector3.ceil], or [method Vector4.ceil].
			</description>
		</method>
		<method name="ceilf">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Rounds [param x] upward (towards positive infinity), returning the smallest whole number that is not less than [param x].
				A type-safe version of [method ceil], returning a [float].
			</description>
		</method>
		<method name="ceili">
			<return type="int" />
			<param index="0" name="x" type="float" />
			<description>
				Rounds [param x] upward (towards positive infinity), returning the smallest whole number that is not less than [param x].
				A type-safe version of [method ceil], returning an [int].
			</description>
		</method>
		<method name="clamp">
			<return type="Variant" />
			<param index="0" name="value" type="Variant" />
			<param index="1" name="min" type="Variant" />
			<param index="2" name="max" type="Variant" />
			<description>
				Clamps the [param value], returning a [Variant] not less than [param min] and not more than [param max]. Any values that can be compared with the less than and greater than operators will work.
				[codeblock]
				var a = clamp(-10, -1, 5)
				# a is -1

				var b = clamp(8.1, 0.9, 5.5)
				# b is 5.5
				[/codeblock]
				[b]Note:[/b] For better type safety, use [method clampf], [method clampi], [method Vector2.clamp], [method Vector2i.clamp], [method Vector3.clamp], [method Vector3i.clamp], [method Vector4.clamp], [method Vector4i.clamp], or [method Color.clamp] (not currently supported by this method).
				[b]Note:[/b] When using this on vectors it will [i]not[/i] perform component-wise clamping, and will pick [param min] if [code]value &lt; min[/code] or [param max] if [code]value &gt; max[/code]. To perform component-wise clamping use the methods listed above.
			</description>
		</method>
		<method name="clampf">
			<return type="float" />
			<param index="0" name="value" type="float" />
			<param index="1" name="min" type="float" />
			<param index="2" name="max" type="float" />
			<description>
				Clamps the [param value], returning a [float] not less than [param min] and not more than [param max].
				[codeblock]
				var speed = 42.1
				var a = clampf(speed, 1.0, 20.5) # a is 20.5

				speed = -10.0
				var b = clampf(speed, -1.0, 1.0) # b is -1.0
				[/codeblock]
			</description>
		</method>
		<method name="clampi">
			<return type="int" />
			<param index="0" name="value" type="int" />
			<param index="1" name="min" type="int" />
			<param index="2" name="max" type="int" />
			<description>
				Clamps the [param value], returning an [int] not less than [param min] and not more than [param max].
				[codeblock]
				var speed = 42
				var a = clampi(speed, 1, 20) # a is 20

				speed = -10
				var b = clampi(speed, -1, 1) # b is -1
				[/codeblock]
			</description>
		</method>
		<method name="cos">
			<return type="float" />
			<param index="0" name="angle_rad" type="float" />
			<description>
				Returns the cosine of angle [param angle_rad] in radians.
				[codeblock]
				cos(PI * 2)         # Returns 1.0
				cos(PI)             # Returns -1.0
				cos(deg_to_rad(90)) # Returns 0.0
				[/codeblock]
			</description>
		</method>
		<method name="cosh">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the hyperbolic cosine of [param x] in radians.
				[codeblock]
				print(cosh(1)) # Prints 1.543081
				[/codeblock]
			</description>
		</method>
		<method name="cubic_interpolate">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="pre" type="float" />
			<param index="3" name="post" type="float" />
			<param index="4" name="weight" type="float" />
			<description>
				Cubic interpolates between two values by the factor defined in [param weight] with [param pre] and [param post] values.
			</description>
		</method>
		<method name="cubic_interpolate_angle">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="pre" type="float" />
			<param index="3" name="post" type="float" />
			<param index="4" name="weight" type="float" />
			<description>
				Cubic interpolates between two rotation values with shortest path by the factor defined in [param weight] with [param pre] and [param post] values. See also [method lerp_angle].
			</description>
		</method>
		<method name="cubic_interpolate_angle_in_time">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="pre" type="float" />
			<param index="3" name="post" type="float" />
			<param index="4" name="weight" type="float" />
			<param index="5" name="to_t" type="float" />
			<param index="6" name="pre_t" type="float" />
			<param index="7" name="post_t" type="float" />
			<description>
				Cubic interpolates between two rotation values with shortest path by the factor defined in [param weight] with [param pre] and [param post] values. See also [method lerp_angle].
				It can perform smoother interpolation than [method cubic_interpolate] by the time values.
			</description>
		</method>
		<method name="cubic_interpolate_in_time">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="pre" type="float" />
			<param index="3" name="post" type="float" />
			<param index="4" name="weight" type="float" />
			<param index="5" name="to_t" type="float" />
			<param index="6" name="pre_t" type="float" />
			<param index="7" name="post_t" type="float" />
			<description>
				Cubic interpolates between two values by the factor defined in [param weight] with [param pre] and [param post] values.
				It can perform smoother interpolation than [method cubic_interpolate] by the time values.
			</description>
		</method>
		<method name="db_to_linear">
			<return type="float" />
			<param index="0" name="db" type="float" />
			<description>
				Converts from decibels to linear energy (audio).
			</description>
		</method>
		<method name="deg_to_rad">
			<return type="float" />
			<param index="0" name="deg" type="float" />
			<description>
				Converts an angle expressed in degrees to radians.
				[codeblock]
				var r = deg_to_rad(180) # r is 3.141593
				[/codeblock]
			</description>
		</method>
		<method name="ease" keywords="smooth">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<param index="1" name="curve" type="float" />
			<description>
				Returns an "eased" value of [param x] based on an easing function defined with [param curve]. This easing function is based on an exponent. The [param curve] can be any floating-point number, with specific values leading to the following behaviors:
				[codeblock lang=text]
				- Lower than -1.0 (exclusive): Ease in-out
				- -1.0: Linear
				- Between -1.0 and 0.0 (exclusive): Ease out-in
				- 0.0: Constant
				- Between 0.0 to 1.0 (exclusive): Ease out
				- 1.0: Linear
				- Greater than 1.0 (exclusive): Ease in
				[/codeblock]
				[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/ease_cheatsheet.png]ease() curve values cheatsheet[/url]
				See also [method smoothstep]. If you need to perform more advanced transitions, use [method Tween.interpolate_value].
			</description>
		</method>
		<method name="error_string">
			<return type="String" />
			<param index="0" name="error" type="int" />
			<description>
				Returns a human-readable name for the given [enum Error] code.
				[codeblock]
				print(OK)                              # Prints 0
				print(error_string(OK))                # Prints "OK"
				print(error_string(ERR_BUSY))          # Prints "Busy"
				print(error_string(ERR_OUT_OF_MEMORY)) # Prints "Out of memory"
				[/codeblock]
			</description>
		</method>
		<method name="exp">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				The natural exponential function. It raises the mathematical constant [i]e[/i] to the power of [param x] and returns it.
				[i]e[/i] has an approximate value of 2.71828, and can be obtained with [code]exp(1)[/code].
				For exponents to other bases use the method [method pow].
				[codeblock]
				var a = exp(2) # Approximately 7.39
				[/codeblock]
			</description>
		</method>
		<method name="floor">
			<return type="Variant" />
			<param index="0" name="x" type="Variant" />
			<description>
				Rounds [param x] downward (towards negative infinity), returning the largest whole number that is not more than [param x]. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].
				[codeblock]
				var a = floor(2.99) # a is 2.0
				a = floor(-2.99)    # a is -3.0
				[/codeblock]
				See also [method ceil], [method round], and [method snapped].
				[b]Note:[/b] For better type safety, use [method floorf], [method floori], [method Vector2.floor], [method Vector3.floor], or [method Vector4.floor].
			</description>
		</method>
		<method name="floorf">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Rounds [param x] downward (towards negative infinity), returning the largest whole number that is not more than [param x].
				A type-safe version of [method floor], returning a [float].
			</description>
		</method>
		<method name="floori">
			<return type="int" />
			<param index="0" name="x" type="float" />
			<description>
				Rounds [param x] downward (towards negative infinity), returning the largest whole number that is not more than [param x].
				A type-safe version of [method floor], returning an [int].
				[b]Note:[/b] This function is [i]not[/i] the same as [code]int(x)[/code], which rounds towards 0.
			</description>
		</method>
		<method name="fmod">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<param index="1" name="y" type="float" />
			<description>
				Returns the floating-point remainder of [param x] divided by [param y], keeping the sign of [param x].
				[codeblock]
				var remainder = fmod(7, 5.5) # remainder is 1.5
				[/codeblock]
				For the integer remainder operation, use the [code]%[/code] operator.
			</description>
		</method>
		<method name="fposmod">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<param index="1" name="y" type="float" />
			<description>
				Returns the floating-point modulus of [param x] divided by [param y], wrapping equally in positive and negative.
				[codeblock]
				print(" (x)  (fmod(x, 1.5))   (fposmod(x, 1.5))")
				for i in 7:
					var x = i * 0.5 - 1.5
					print("%4.1f           %4.1f  | %4.1f" % [x, fmod(x, 1.5), fposmod(x, 1.5)])
				[/codeblock]
				Prints:
				[codeblock lang=text]
				 (x)  (fmod(x, 1.5))   (fposmod(x, 1.5))
				-1.5           -0.0  |  0.0
				-1.0           -1.0  |  0.5
				-0.5           -0.5  |  1.0
				 0.0            0.0  |  0.0
				 0.5            0.5  |  0.5
				 1.0            1.0  |  1.0
				 1.5            0.0  |  0.0
				[/codeblock]
			</description>
		</method>
		<method name="hash">
			<return type="int" />
			<param index="0" name="variable" type="Variant" />
			<description>
				Returns the integer hash of the passed [param variable].
				[codeblocks]
				[gdscript]
				print(hash("a")) # Prints 177670
				[/gdscript]
				[csharp]
				GD.Print(GD.Hash("a")); // Prints 177670
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="instance_from_id">
			<return type="Object" />
			<param index="0" name="instance_id" type="int" />
			<description>
				Returns the [Object] that corresponds to [param instance_id]. All Objects have a unique instance ID. See also [method Object.get_instance_id].
				[codeblocks]
				[gdscript]
				var drink = "water"

				func _ready():
					var id = get_instance_id()
					var instance = instance_from_id(id)
					print(instance.drink) # Prints "water"
				[/gdscript]
				[csharp]
				public partial class MyNode : Node
				{
					public string Drink { get; set; } = "water";

					public override void _Ready()
					{
						ulong id = GetInstanceId();
						var instance = (MyNode)InstanceFromId(Id);
						GD.Print(instance.Drink); // Prints "water"
					}
				}
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="inverse_lerp" keywords="interpolate">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="weight" type="float" />
			<description>
				Returns an interpolation or extrapolation factor considering the range specified in [param from] and [param to], and the interpolated value specified in [param weight]. The returned value will be between [code]0.0[/code] and [code]1.0[/code] if [param weight] is between [param from] and [param to] (inclusive). If [param weight] is located outside this range, then an extrapolation factor will be returned (return value lower than [code]0.0[/code] or greater than [code]1.0[/code]). Use [method clamp] on the result of [method inverse_lerp] if this is not desired.
				[codeblock]
				# The interpolation ratio in the `lerp()` call below is 0.75.
				var middle = lerp(20, 30, 0.75)
				# middle is now 27.5.

				# Now, we pretend to have forgotten the original ratio and want to get it back.
				var ratio = inverse_lerp(20, 30, 27.5)
				# ratio is now 0.75.
				[/codeblock]
				See also [method lerp], which performs the reverse of this operation, and [method remap] to map a continuous series of values to another.
			</description>
		</method>
		<method name="is_equal_approx" keywords="roughly">
			<return type="bool" />
			<param index="0" name="a" type="float" />
			<param index="1" name="b" type="float" />
			<description>
				Returns [code]true[/code] if [param a] and [param b] are approximately equal to each other.
				Here, "approximately equal" means that [param a] and [param b] are within a small internal epsilon of each other, which scales with the magnitude of the numbers.
				Infinity values of the same sign are considered equal.
			</description>
		</method>
		<method name="is_finite">
			<return type="bool" />
			<param index="0" name="x" type="float" />
			<description>
				Returns whether [param x] is a finite value, i.e. it is not [constant @GDScript.NAN], positive infinity, or negative infinity. See also [method is_inf] and [method is_nan].
			</description>
		</method>
		<method name="is_inf">
			<return type="bool" />
			<param index="0" name="x" type="float" />
			<description>
				Returns [code]true[/code] if [param x] is either positive infinity or negative infinity. See also [method is_finite] and [method is_nan].
			</description>
		</method>
		<method name="is_instance_id_valid">
			<return type="bool" />
			<param index="0" name="id" type="int" />
			<description>
				Returns [code]true[/code] if the Object that corresponds to [param id] is a valid object (e.g. has not been deleted from memory). All Objects have a unique instance ID.
			</description>
		</method>
		<method name="is_instance_valid">
			<return type="bool" />
			<param index="0" name="instance" type="Variant" />
			<description>
				Returns [code]true[/code] if [param instance] is a valid Object (e.g. has not been deleted from memory).
			</description>
		</method>
		<method name="is_nan">
			<return type="bool" />
			<param index="0" name="x" type="float" />
			<description>
				Returns [code]true[/code] if [param x] is a NaN ("Not a Number" or invalid) value. This method is needed as [constant @GDScript.NAN] is not equal to itself, which means [code]x == NAN[/code] can't be used to check whether a value is a NaN.
			</description>
		</method>
		<method name="is_same">
			<return type="bool" />
			<param index="0" name="a" type="Variant" />
			<param index="1" name="b" type="Variant" />
			<description>
				Returns [code]true[/code], for value types, if [param a] and [param b] share the same value. Returns [code]true[/code], for reference types, if the references of [param a] and [param b] are the same.
				[codeblock]
				# Vector2 is a value type
				var vec2_a = Vector2(0, 0)
				var vec2_b = Vector2(0, 0)
				var vec2_c = Vector2(1, 1)
				is_same(vec2_a, vec2_a)  # true
				is_same(vec2_a, vec2_b)  # true
				is_same(vec2_a, vec2_c)  # false

				# Array is a reference type
				var arr_a = []
				var arr_b = []
				is_same(arr_a, arr_a)  # true
				is_same(arr_a, arr_b)  # false
				[/codeblock]
				These are [Variant] value types: [code]null[/code], [bool], [int], [float], [String], [StringName], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i], [Rect2], [Rect2i], [Transform2D], [Transform3D], [Plane], [Quaternion], [AABB], [Basis], [Projection], [Color], [NodePath], [RID], [Callable] and [Signal].
				These are [Variant] reference types: [Object], [Dictionary], [Array], [PackedByteArray], [PackedInt32Array], [PackedInt64Array], [PackedFloat32Array], [PackedFloat64Array], [PackedStringArray], [PackedVector2Array], [PackedVector3Array], [PackedVector4Array], and [PackedColorArray].
			</description>
		</method>
		<method name="is_zero_approx">
			<return type="bool" />
			<param index="0" name="x" type="float" />
			<description>
				Returns [code]true[/code] if [param x] is zero or almost zero. The comparison is done using a tolerance calculation with a small internal epsilon.
				This function is faster than using [method is_equal_approx] with one value as zero.
			</description>
		</method>
		<method name="lerp" keywords="interpolate">
			<return type="Variant" />
			<param index="0" name="from" type="Variant" />
			<param index="1" name="to" type="Variant" />
			<param index="2" name="weight" type="Variant" />
			<description>
				Linearly interpolates between two values by the factor defined in [param weight]. To perform interpolation, [param weight] should be between [code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside this range are allowed and can be used to perform [i]extrapolation[/i]. If this is not desired, use [method clampf] to limit [param weight].
				Both [param from] and [param to] must be the same type. Supported types: [int], [float], [Vector2], [Vector3], [Vector4], [Color], [Quaternion], [Basis], [Transform2D], [Transform3D].
				[codeblock]
				lerp(0, 4, 0.75) # Returns 3.0
				[/codeblock]
				See also [method inverse_lerp] which performs the reverse of this operation. To perform eased interpolation with [method lerp], combine it with [method ease] or [method smoothstep]. See also [method remap] to map a continuous series of values to another.
				[b]Note:[/b] For better type safety, use [method lerpf], [method Vector2.lerp], [method Vector3.lerp], [method Vector4.lerp], [method Color.lerp], [method Quaternion.slerp], [method Basis.slerp], [method Transform2D.interpolate_with], or [method Transform3D.interpolate_with].
			</description>
		</method>
		<method name="lerp_angle" keywords="interpolate">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="weight" type="float" />
			<description>
				Linearly interpolates between two angles (in radians) by a [param weight] value between 0.0 and 1.0.
				Similar to [method lerp], but interpolates correctly when the angles wrap around [constant @GDScript.TAU]. To perform eased interpolation with [method lerp_angle], combine it with [method ease] or [method smoothstep].
				[codeblock]
				extends Sprite
				var elapsed = 0.0
				func _process(delta):
					var min_angle = deg_to_rad(0.0)
					var max_angle = deg_to_rad(90.0)
					rotation = lerp_angle(min_angle, max_angle, elapsed)
					elapsed += delta
				[/codeblock]
				[b]Note:[/b] This function lerps through the shortest path between [param from] and [param to]. However, when these two angles are approximately [code]PI + k * TAU[/code] apart for any integer [code]k[/code], it's not obvious which way they lerp due to floating-point precision errors. For example, [code]lerp_angle(0, PI, weight)[/code] lerps counter-clockwise, while [code]lerp_angle(0, PI + 5 * TAU, weight)[/code] lerps clockwise.
			</description>
		</method>
		<method name="lerpf">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="weight" type="float" />
			<description>
				Linearly interpolates between two values by the factor defined in [param weight]. To perform interpolation, [param weight] should be between [code]0.0[/code] and [code]1.0[/code] (inclusive). However, values outside this range are allowed and can be used to perform [i]extrapolation[/i]. If this is not desired, use [method clampf] on the result of this function.
				[codeblock]
				lerpf(0, 4, 0.75) # Returns 3.0
				[/codeblock]
				See also [method inverse_lerp] which performs the reverse of this operation. To perform eased interpolation with [method lerp], combine it with [method ease] or [method smoothstep].
			</description>
		</method>
		<method name="linear_to_db">
			<return type="float" />
			<param index="0" name="lin" type="float" />
			<description>
				Converts from linear energy to decibels (audio). Since volume is not normally linear, this can be used to implement volume sliders that behave as expected.
				[b]Example:[/b] Change the Master bus's volume through a [Slider] node, which ranges from [code]0.0[/code] to [code]1.0[/code]:
				[codeblock]
				AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db($Slider.value))
				[/codeblock]
			</description>
		</method>
		<method name="log">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the [url=https://en.wikipedia.org/wiki/Natural_logarithm]natural logarithm[/url] of [param x] (base [url=https://en.wikipedia.org/wiki/E_(mathematical_constant)]e[/url], with [i]e[/i] being approximately 2.71828). This is the amount of time needed to reach a certain level of continuous growth.
				[b]Note:[/b] This is not the same as the "log" function on most calculators, which uses a base 10 logarithm. To use base 10 logarithm, use [code]log(x) / log(10)[/code].
				[codeblock]
				log(10) # Returns 2.302585
				[/codeblock]
				[b]Note:[/b] The logarithm of [code]0[/code] returns [code]-inf[/code], while negative values return [code]-nan[/code].
			</description>
		</method>
		<method name="max" qualifiers="vararg">
			<return type="Variant" />
			<description>
				Returns the maximum of the given numeric values. This function can take any number of arguments.
				[codeblock]
				max(1, 7, 3, -6, 5) # Returns 7
				[/codeblock]
				[b]Note:[/b] When using this on vectors it will [i]not[/i] perform component-wise maximum, and will pick the largest value when compared using [code]x &lt; y[/code]. To perform component-wise maximum, use [method Vector2.max], [method Vector2i.max], [method Vector3.max], [method Vector3i.max], [method Vector4.max], and [method Vector4i.max].
			</description>
		</method>
		<method name="maxf">
			<return type="float" />
			<param index="0" name="a" type="float" />
			<param index="1" name="b" type="float" />
			<description>
				Returns the maximum of two [float] values.
				[codeblock]
				maxf(3.6, 24)   # Returns 24.0
				maxf(-3.99, -4) # Returns -3.99
				[/codeblock]
			</description>
		</method>
		<method name="maxi">
			<return type="int" />
			<param index="0" name="a" type="int" />
			<param index="1" name="b" type="int" />
			<description>
				Returns the maximum of two [int] values.
				[codeblock]
				maxi(1, 2)   # Returns 2
				maxi(-3, -4) # Returns -3
				[/codeblock]
			</description>
		</method>
		<method name="min" qualifiers="vararg">
			<return type="Variant" />
			<description>
				Returns the minimum of the given numeric values. This function can take any number of arguments.
				[codeblock]
				min(1, 7, 3, -6, 5) # Returns -6
				[/codeblock]
				[b]Note:[/b] When using this on vectors it will [i]not[/i] perform component-wise minimum, and will pick the smallest value when compared using [code]x &lt; y[/code]. To perform component-wise minimum, use [method Vector2.min], [method Vector2i.min], [method Vector3.min], [method Vector3i.min], [method Vector4.min], and [method Vector4i.min].
			</description>
		</method>
		<method name="minf">
			<return type="float" />
			<param index="0" name="a" type="float" />
			<param index="1" name="b" type="float" />
			<description>
				Returns the minimum of two [float] values.
				[codeblock]
				minf(3.6, 24)   # Returns 3.6
				minf(-3.99, -4) # Returns -4.0
				[/codeblock]
			</description>
		</method>
		<method name="mini">
			<return type="int" />
			<param index="0" name="a" type="int" />
			<param index="1" name="b" type="int" />
			<description>
				Returns the minimum of two [int] values.
				[codeblock]
				mini(1, 2)   # Returns 1
				mini(-3, -4) # Returns -4
				[/codeblock]
			</description>
		</method>
		<method name="move_toward">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="delta" type="float" />
			<description>
				Moves [param from] toward [param to] by the [param delta] amount. Will not go past [param to].
				Use a negative [param delta] value to move away.
				[codeblock]
				move_toward(5, 10, 4)    # Returns 9
				move_toward(10, 5, 4)    # Returns 6
				move_toward(5, 10, 9)    # Returns 10
				move_toward(10, 5, -1.5) # Returns 11.5
				[/codeblock]
			</description>
		</method>
		<method name="nearest_po2">
			<return type="int" />
			<param index="0" name="value" type="int" />
			<description>
				Returns the smallest integer power of 2 that is greater than or equal to [param value].
				[codeblock]
				nearest_po2(3) # Returns 4
				nearest_po2(4) # Returns 4
				nearest_po2(5) # Returns 8

				nearest_po2(0)  # Returns 0 (this may not be expected)
				nearest_po2(-1) # Returns 0 (this may not be expected)
				[/codeblock]
				[b]Warning:[/b] Due to its implementation, this method returns [code]0[/code] rather than [code]1[/code] for values less than or equal to [code]0[/code], with an exception for [param value] being the smallest negative 64-bit integer ([code]-9223372036854775808[/code]) in which case the [param value] is returned unchanged.
			</description>
		</method>
		<method name="pingpong">
			<return type="float" />
			<param index="0" name="value" type="float" />
			<param index="1" name="length" type="float" />
			<description>
				Wraps [param value] between [code]0[/code] and the [param length]. If the limit is reached, the next value the function returns is decreased to the [code]0[/code] side or increased to the [param length] side (like a triangle wave). If [param length] is less than zero, it becomes positive.
				[codeblock]
				pingpong(-3.0, 3.0) # Returns 3.0
				pingpong(-2.0, 3.0) # Returns 2.0
				pingpong(-1.0, 3.0) # Returns 1.0
				pingpong(0.0, 3.0)  # Returns 0.0
				pingpong(1.0, 3.0)  # Returns 1.0
				pingpong(2.0, 3.0)  # Returns 2.0
				pingpong(3.0, 3.0)  # Returns 3.0
				pingpong(4.0, 3.0)  # Returns 2.0
				pingpong(5.0, 3.0)  # Returns 1.0
				pingpong(6.0, 3.0)  # Returns 0.0
				[/codeblock]
			</description>
		</method>
		<method name="posmod">
			<return type="int" />
			<param index="0" name="x" type="int" />
			<param index="1" name="y" type="int" />
			<description>
				Returns the integer modulus of [param x] divided by [param y] that wraps equally in positive and negative.
				[codeblock]
				print("#(i)  (i % 3)   (posmod(i, 3))")
				for i in range(-3, 4):
					print("%2d       %2d  | %2d" % [i, i % 3, posmod(i, 3)])
				[/codeblock]
				Prints:
				[codeblock lang=text]
				(i)  (i % 3)   (posmod(i, 3))
				-3        0  |  0
				-2       -2  |  1
				-1       -1  |  2
				 0        0  |  0
				 1        1  |  1
				 2        2  |  2
				 3        0  |  0
				[/codeblock]
			</description>
		</method>
		<method name="pow">
			<return type="float" />
			<param index="0" name="base" type="float" />
			<param index="1" name="exp" type="float" />
			<description>
				Returns the result of [param base] raised to the power of [param exp].
				In GDScript, this is the equivalent of the [code]**[/code] operator.
				[codeblock]
				pow(2, 5)   # Returns 32.0
				pow(4, 1.5) # Returns 8.0
				[/codeblock]
			</description>
		</method>
		<method name="print" qualifiers="vararg">
			<return type="void" />
			<description>
				Converts one or more arguments of any type to string in the best way possible and prints them to the console.
				[codeblocks]
				[gdscript]
				var a = [1, 2, 3]
				print("a", "b", a) # Prints "ab[1, 2, 3]"
				[/gdscript]
				[csharp]
				Godot.Collections.Array a = [1, 2, 3];
				GD.Print("a", "b", a); // Prints "ab[1, 2, 3]"
				[/csharp]
				[/codeblocks]
				[b]Note:[/b] Consider using [method push_error] and [method push_warning] to print error and warning messages instead of [method print] or [method print_rich]. This distinguishes them from print messages used for debugging purposes, while also displaying a stack trace when an error or warning is printed. See also [member Engine.print_to_stdout] and [member ProjectSettings.application/run/disable_stdout].
			</description>
		</method>
		<method name="print_rich" qualifiers="vararg">
			<return type="void" />
			<description>
				Converts one or more arguments of any type to string in the best way possible and prints them to the console.
				The following BBCode tags are supported: [code]b[/code], [code]i[/code], [code]u[/code], [code]s[/code], [code]indent[/code], [code]code[/code], [code]url[/code], [code]center[/code], [code]right[/code], [code]color[/code], [code]bgcolor[/code], [code]fgcolor[/code].
				URL tags only support URLs wrapped by a URL tag, not URLs with a different title.
				When printing to standard output, the supported subset of BBCode is converted to ANSI escape codes for the terminal emulator to display. Support for ANSI escape codes varies across terminal emulators, especially for italic and strikethrough. In standard output, [code]code[/code] is represented with faint text but without any font change. Unsupported tags are left as-is in standard output.
				[codeblocks]
				[gdscript skip-lint]
				print_rich("[color=green][b]Hello world![/b][/color]") # Prints "Hello world!", in green with a bold font.
				[/gdscript]
				[csharp skip-lint]
				GD.PrintRich("[color=green][b]Hello world![/b][/color]"); // Prints "Hello world!", in green with a bold font.
				[/csharp]
				[/codeblocks]
				[b]Note:[/b] Consider using [method push_error] and [method push_warning] to print error and warning messages instead of [method print] or [method print_rich]. This distinguishes them from print messages used for debugging purposes, while also displaying a stack trace when an error or warning is printed.
				[b]Note:[/b] Output displayed in the editor supports clickable [code skip-lint][url=address]text[/url][/code] tags. The [code skip-lint][url][/code] tag's [code]address[/code] value is handled by [method OS.shell_open] when clicked.
			</description>
		</method>
		<method name="print_verbose" qualifiers="vararg">
			<return type="void" />
			<description>
				If verbose mode is enabled ([method OS.is_stdout_verbose] returning [code]true[/code]), converts one or more arguments of any type to string in the best way possible and prints them to the console.
			</description>
		</method>
		<method name="printerr" qualifiers="vararg">
			<return type="void" />
			<description>
				Prints one or more arguments to strings in the best way possible to standard error line.
				[codeblocks]
				[gdscript]
				printerr("prints to stderr")
				[/gdscript]
				[csharp]
				GD.PrintErr("prints to stderr");
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="printraw" qualifiers="vararg">
			<return type="void" />
			<description>
				Prints one or more arguments to strings in the best way possible to the OS terminal. Unlike [method print], no newline is automatically added at the end.
				[b]Note:[/b] The OS terminal is [i]not[/i] the same as the editor's Output dock. The output sent to the OS terminal can be seen when running Godot from a terminal. On Windows, this requires using the [code]console.exe[/code] executable.
				[codeblocks]
				[gdscript]
				# Prints "ABC" to terminal.
				printraw("A")
				printraw("B")
				printraw("C")
				[/gdscript]
				[csharp]
				// Prints "ABC" to terminal.
				GD.PrintRaw("A");
				GD.PrintRaw("B");
				GD.PrintRaw("C");
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="prints" qualifiers="vararg">
			<return type="void" />
			<description>
				Prints one or more arguments to the console with a space between each argument.
				[codeblocks]
				[gdscript]
				prints("A", "B", "C") # Prints "A B C"
				[/gdscript]
				[csharp]
				GD.PrintS("A", "B", "C"); // Prints "A B C"
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="printt" qualifiers="vararg">
			<return type="void" />
			<description>
				Prints one or more arguments to the console with a tab between each argument.
				[codeblocks]
				[gdscript]
				printt("A", "B", "C") # Prints "A       B       C"
				[/gdscript]
				[csharp]
				GD.PrintT("A", "B", "C"); // Prints "A       B       C"
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="push_error" qualifiers="vararg">
			<return type="void" />
			<description>
				Pushes an error message to Godot's built-in debugger and to the OS terminal.
				[codeblocks]
				[gdscript]
				push_error("test error") # Prints "test error" to debugger and terminal as an error.
				[/gdscript]
				[csharp]
				GD.PushError("test error"); // Prints "test error" to debugger and terminal as an error.
				[/csharp]
				[/codeblocks]
				[b]Note:[/b] This function does not pause project execution. To print an error message and pause project execution in debug builds, use [code]assert(false, "test error")[/code] instead.
			</description>
		</method>
		<method name="push_warning" qualifiers="vararg">
			<return type="void" />
			<description>
				Pushes a warning message to Godot's built-in debugger and to the OS terminal.
				[codeblocks]
				[gdscript]
				push_warning("test warning") # Prints "test warning" to debugger and terminal as a warning.
				[/gdscript]
				[csharp]
				GD.PushWarning("test warning"); // Prints "test warning" to debugger and terminal as a warning.
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="rad_to_deg">
			<return type="float" />
			<param index="0" name="rad" type="float" />
			<description>
				Converts an angle expressed in radians to degrees.
				[codeblock]
				rad_to_deg(0.523599) # Returns 30
				rad_to_deg(PI)       # Returns 180
				rad_to_deg(PI * 2)   # Returns 360
				[/codeblock]
			</description>
		</method>
		<method name="rand_from_seed">
			<return type="PackedInt64Array" />
			<param index="0" name="seed" type="int" />
			<description>
				Given a [param seed], returns a [PackedInt64Array] of size [code]2[/code], where its first element is the randomized [int] value, and the second element is the same as [param seed]. Passing the same [param seed] consistently returns the same array.
				[b]Note:[/b] "Seed" here refers to the internal state of the pseudo random number generator, currently implemented as a 64 bit integer.
				[codeblock]
				var a = rand_from_seed(4)

				print(a[0]) # Prints 2879024997
				print(a[1]) # Prints 4
				[/codeblock]
			</description>
		</method>
		<method name="randf">
			<return type="float" />
			<description>
				Returns a random floating-point value between [code]0.0[/code] and [code]1.0[/code] (inclusive).
				[codeblocks]
				[gdscript]
				randf() # Returns e.g. 0.375671
				[/gdscript]
				[csharp]
				GD.Randf(); // Returns e.g. 0.375671
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="randf_range">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<description>
				Returns a random floating-point value between [param from] and [param to] (inclusive).
				[codeblocks]
				[gdscript]
				randf_range(0, 20.5) # Returns e.g. 7.45315
				randf_range(-10, 10) # Returns e.g. -3.844535
				[/gdscript]
				[csharp]
				GD.RandRange(0.0, 20.5);   // Returns e.g. 7.45315
				GD.RandRange(-10.0, 10.0); // Returns e.g. -3.844535
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="randfn">
			<return type="float" />
			<param index="0" name="mean" type="float" />
			<param index="1" name="deviation" type="float" />
			<description>
				Returns a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-distributed[/url], pseudo-random floating-point value from the specified [param mean] and a standard [param deviation]. This is also known as a Gaussian distribution.
				[b]Note:[/b] This method uses the [url=https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform]Box-Muller transform[/url] algorithm.
			</description>
		</method>
		<method name="randi">
			<return type="int" />
			<description>
				Returns a random unsigned 32-bit integer. Use remainder to obtain a random value in the interval [code][0, N - 1][/code] (where N is smaller than 2^32).
				[codeblocks]
				[gdscript]
				randi()           # Returns random integer between 0 and 2^32 - 1
				randi() % 20      # Returns random integer between 0 and 19
				randi() % 100     # Returns random integer between 0 and 99
				randi() % 100 + 1 # Returns random integer between 1 and 100
				[/gdscript]
				[csharp]
				GD.Randi();           // Returns random integer between 0 and 2^32 - 1
				GD.Randi() % 20;      // Returns random integer between 0 and 19
				GD.Randi() % 100;     // Returns random integer between 0 and 99
				GD.Randi() % 100 + 1; // Returns random integer between 1 and 100
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="randi_range">
			<return type="int" />
			<param index="0" name="from" type="int" />
			<param index="1" name="to" type="int" />
			<description>
				Returns a random signed 32-bit integer between [param from] and [param to] (inclusive). If [param to] is lesser than [param from], they are swapped.
				[codeblocks]
				[gdscript]
				randi_range(0, 1)      # Returns either 0 or 1
				randi_range(-10, 1000) # Returns random integer between -10 and 1000
				[/gdscript]
				[csharp]
				GD.RandRange(0, 1);      // Returns either 0 or 1
				GD.RandRange(-10, 1000); // Returns random integer between -10 and 1000
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="randomize">
			<return type="void" />
			<description>
				Randomizes the seed (or the internal state) of the random number generator. The current implementation uses a number based on the device's time.
				[b]Note:[/b] This function is called automatically when the project is run. If you need to fix the seed to have consistent, reproducible results, use [method seed] to initialize the random number generator.
			</description>
		</method>
		<method name="remap" keywords="range, lerp, interpolate">
			<return type="float" />
			<param index="0" name="value" type="float" />
			<param index="1" name="istart" type="float" />
			<param index="2" name="istop" type="float" />
			<param index="3" name="ostart" type="float" />
			<param index="4" name="ostop" type="float" />
			<description>
				Maps a [param value] from range [code][istart, istop][/code] to [code][ostart, ostop][/code]. See also [method lerp] and [method inverse_lerp]. If [param value] is outside [code][istart, istop][/code], then the resulting value will also be outside [code][ostart, ostop][/code]. If this is not desired, use [method clamp] on the result of this function.
				[codeblock]
				remap(75, 0, 100, -1, 1) # Returns 0.5
				[/codeblock]
				For complex use cases where multiple ranges are needed, consider using [Curve] or [Gradient] instead.
				[b]Note:[/b] If [code]istart == istop[/code], the return value is undefined (most likely NaN, INF, or -INF).
			</description>
		</method>
		<method name="rid_allocate_id">
			<return type="int" />
			<description>
				Allocates a unique ID which can be used by the implementation to construct an RID. This is used mainly from native extensions to implement servers.
			</description>
		</method>
		<method name="rid_from_int64">
			<return type="RID" />
			<param index="0" name="base" type="int" />
			<description>
				Creates an RID from a [param base]. This is used mainly from native extensions to build servers.
			</description>
		</method>
		<method name="rotate_toward">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="delta" type="float" />
			<description>
				Rotates [param from] toward [param to] by the [param delta] amount. Will not go past [param to].
				Similar to [method move_toward], but interpolates correctly when the angles wrap around [constant @GDScript.TAU].
				If [param delta] is negative, this function will rotate away from [param to], toward the opposite angle, and will not go past the opposite angle.
			</description>
		</method>
		<method name="round">
			<return type="Variant" />
			<param index="0" name="x" type="Variant" />
			<description>
				Rounds [param x] to the nearest whole number, with halfway cases rounded away from 0. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].
				[codeblock]
				round(2.4) # Returns 2
				round(2.5) # Returns 3
				round(2.6) # Returns 3
				[/codeblock]
				See also [method floor], [method ceil], and [method snapped].
				[b]Note:[/b] For better type safety, use [method roundf], [method roundi], [method Vector2.round], [method Vector3.round], or [method Vector4.round].
			</description>
		</method>
		<method name="roundf">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Rounds [param x] to the nearest whole number, with halfway cases rounded away from 0.
				A type-safe version of [method round], returning a [float].
			</description>
		</method>
		<method name="roundi">
			<return type="int" />
			<param index="0" name="x" type="float" />
			<description>
				Rounds [param x] to the nearest whole number, with halfway cases rounded away from 0.
				A type-safe version of [method round], returning an [int].
			</description>
		</method>
		<method name="seed">
			<return type="void" />
			<param index="0" name="base" type="int" />
			<description>
				Sets the seed for the random number generator to [param base]. Setting the seed manually can ensure consistent, repeatable results for most random functions.
				[codeblocks]
				[gdscript]
				var my_seed = "Godot Rocks".hash()
				seed(my_seed)
				var a = randf() + randi()
				seed(my_seed)
				var b = randf() + randi()
				# a and b are now identical
				[/gdscript]
				[csharp]
				ulong mySeed = (ulong)GD.Hash("Godot Rocks");
				GD.Seed(mySeed);
				var a = GD.Randf() + GD.Randi();
				GD.Seed(mySeed);
				var b = GD.Randf() + GD.Randi();
				// a and b are now identical
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="sign">
			<return type="Variant" />
			<param index="0" name="x" type="Variant" />
			<description>
				Returns the same type of [Variant] as [param x], with [code]-1[/code] for negative values, [code]1[/code] for positive values, and [code]0[/code] for zeros. For [code]nan[/code] values it returns 0.
				Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].
				[codeblock]
				sign(-6.0) # Returns -1
				sign(0.0)  # Returns 0
				sign(6.0)  # Returns 1
				sign(NAN)  # Returns 0

				sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)
				[/codeblock]
				[b]Note:[/b] For better type safety, use [method signf], [method signi], [method Vector2.sign], [method Vector2i.sign], [method Vector3.sign], [method Vector3i.sign], [method Vector4.sign], or [method Vector4i.sign].
			</description>
		</method>
		<method name="signf">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns [code]-1.0[/code] if [param x] is negative, [code]1.0[/code] if [param x] is positive, and [code]0.0[/code] if [param x] is zero. For [code]nan[/code] values of [param x] it returns 0.0.
				[codeblock]
				signf(-6.5) # Returns -1.0
				signf(0.0)  # Returns 0.0
				signf(6.5)  # Returns 1.0
				signf(NAN)  # Returns 0.0
				[/codeblock]
			</description>
		</method>
		<method name="signi">
			<return type="int" />
			<param index="0" name="x" type="int" />
			<description>
				Returns [code]-1[/code] if [param x] is negative, [code]1[/code] if [param x] is positive, and [code]0[/code] if [param x] is zero.
				[codeblock]
				signi(-6) # Returns -1
				signi(0)  # Returns 0
				signi(6)  # Returns 1
				[/codeblock]
			</description>
		</method>
		<method name="sin">
			<return type="float" />
			<param index="0" name="angle_rad" type="float" />
			<description>
				Returns the sine of angle [param angle_rad] in radians.
				[codeblock]
				sin(0.523599)       # Returns 0.5
				sin(deg_to_rad(90)) # Returns 1.0
				[/codeblock]
			</description>
		</method>
		<method name="sinh">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the hyperbolic sine of [param x].
				[codeblock]
				var a = log(2.0) # Returns 0.693147
				sinh(a) # Returns 0.75
				[/codeblock]
			</description>
		</method>
		<method name="smoothstep">
			<return type="float" />
			<param index="0" name="from" type="float" />
			<param index="1" name="to" type="float" />
			<param index="2" name="x" type="float" />
			<description>
				Returns a smooth cubic Hermite interpolation between [code]0[/code] and [code]1[/code].
				For positive ranges (when [code]from &lt;= to[/code]) the return value is [code]0[/code] when [code]x &lt;= from[/code], and [code]1[/code] when [code]x &gt;= to[/code]. If [param x] lies between [param from] and [param to], the return value follows an S-shaped curve that smoothly transitions from [code]0[/code] to [code]1[/code].
				For negative ranges (when [code]from &gt; to[/code]) the function is mirrored and returns [code]1[/code] when [code]x &lt;= to[/code] and [code]0[/code] when [code]x &gt;= from[/code].
				This S-shaped curve is the cubic Hermite interpolator, given by [code]f(y) = 3*y^2 - 2*y^3[/code] where [code]y = (x-from) / (to-from)[/code].
				[codeblock]
				smoothstep(0, 2, -5.0) # Returns 0.0
				smoothstep(0, 2, 0.5) # Returns 0.15625
				smoothstep(0, 2, 1.0) # Returns 0.5
				smoothstep(0, 2, 2.0) # Returns 1.0
				[/codeblock]
				Compared to [method ease] with a curve value of [code]-1.6521[/code], [method smoothstep] returns the smoothest possible curve with no sudden changes in the derivative. If you need to perform more advanced transitions, use [Tween] or [AnimationPlayer].
				[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/smoothstep_ease_comparison.png]Comparison between smoothstep() and ease(x, -1.6521) return values[/url]
				[url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/smoothstep_range.webp]Smoothstep() return values with positive, zero, and negative ranges[/url]
			</description>
		</method>
		<method name="snapped">
			<return type="Variant" />
			<param index="0" name="x" type="Variant" />
			<param index="1" name="step" type="Variant" />
			<description>
				Returns the multiple of [param step] that is the closest to [param x]. This can also be used to round a floating-point number to an arbitrary number of decimals.
				The returned value is the same type of [Variant] as [param step]. Supported types: [int], [float], [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], [Vector4i].
				[codeblock]
				snapped(100, 32)  # Returns 96
				snapped(3.14159, 0.01)  # Returns 3.14

				snapped(Vector2(34, 70), Vector2(8, 8))  # Returns (32, 72)
				[/codeblock]
				See also [method ceil], [method floor], and [method round].
				[b]Note:[/b] For better type safety, use [method snappedf], [method snappedi], [method Vector2.snapped], [method Vector2i.snapped], [method Vector3.snapped], [method Vector3i.snapped], [method Vector4.snapped], or [method Vector4i.snapped].
			</description>
		</method>
		<method name="snappedf">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<param index="1" name="step" type="float" />
			<description>
				Returns the multiple of [param step] that is the closest to [param x]. This can also be used to round a floating-point number to an arbitrary number of decimals.
				A type-safe version of [method snapped], returning a [float].
				[codeblock]
				snappedf(32.0, 2.5)  # Returns 32.5
				snappedf(3.14159, 0.01)  # Returns 3.14
				[/codeblock]
			</description>
		</method>
		<method name="snappedi">
			<return type="int" />
			<param index="0" name="x" type="float" />
			<param index="1" name="step" type="int" />
			<description>
				Returns the multiple of [param step] that is the closest to [param x].
				A type-safe version of [method snapped], returning an [int].
				[codeblock]
				snappedi(53, 16)  # Returns 48
				snappedi(4096, 100)  # Returns 4100
				[/codeblock]
			</description>
		</method>
		<method name="sqrt">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the square root of [param x], where [param x] is a non-negative number.
				[codeblock]
				sqrt(9)     # Returns 3
				sqrt(10.24) # Returns 3.2
				sqrt(-1)    # Returns NaN
				[/codeblock]
				[b]Note:[/b] Negative values of [param x] return NaN ("Not a Number"). In C#, if you need negative inputs, use [code]System.Numerics.Complex[/code].
			</description>
		</method>
		<method name="step_decimals">
			<return type="int" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the position of the first non-zero digit, after the decimal point. Note that the maximum return value is 10, which is a design decision in the implementation.
				[codeblock]
				var n = step_decimals(5)       # n is 0
				n = step_decimals(1.0005)      # n is 4
				n = step_decimals(0.000000005) # n is 9
				[/codeblock]
			</description>
		</method>
		<method name="str" qualifiers="vararg">
			<return type="String" />
			<description>
				Converts one or more arguments of any [Variant] type to a [String] in the best way possible.
				[codeblock]
				var a = [10, 20, 30]
				var b = str(a)
				print(len(a)) # Prints 3 (the number of elements in the array).
				print(len(b)) # Prints 12 (the length of the string "[10, 20, 30]").
				[/codeblock]
			</description>
		</method>
		<method name="str_to_var">
			<return type="Variant" />
			<param index="0" name="string" type="String" />
			<description>
				Converts a formatted [param string] that was returned by [method var_to_str] to the original [Variant].
				[codeblocks]
				[gdscript]
				var data = '{ "a": 1, "b": 2 }' # data is a String
				var dict = str_to_var(data)     # dict is a Dictionary
				print(dict["a"])                # Prints 1
				[/gdscript]
				[csharp]
				string data = "{ \"a\": 1, \"b\": 2 }";           // data is a string
				var dict = GD.StrToVar(data).AsGodotDictionary(); // dict is a Dictionary
				GD.Print(dict["a"]);                              // Prints 1
				[/csharp]
				[/codeblocks]
			</description>
		</method>
		<method name="tan">
			<return type="float" />
			<param index="0" name="angle_rad" type="float" />
			<description>
				Returns the tangent of angle [param angle_rad] in radians.
				[codeblock]
				tan(deg_to_rad(45)) # Returns 1
				[/codeblock]
			</description>
		</method>
		<method name="tanh">
			<return type="float" />
			<param index="0" name="x" type="float" />
			<description>
				Returns the hyperbolic tangent of [param x].
				[codeblock]
				var a = log(2.0) # Returns 0.693147
				tanh(a)          # Returns 0.6
				[/codeblock]
			</description>
		</method>
		<method name="type_convert">
			<return type="Variant" />
			<param index="0" name="variant" type="Variant" />
			<param index="1" name="type" type="int" />
			<description>
				Converts the given [param variant] to the given [param type], using the [enum Variant.Type] values. This method is generous with how it handles types, it can automatically convert between array types, convert numeric [String]s to [int], and converting most things to [String].
				If the type conversion cannot be done, this method will return the default value for that type, for example converting [Rect2] to [Vector2] will always return [constant Vector2.ZERO]. This method will never show error messages as long as [param type] is a valid Variant type.
				The returned value is a [Variant], but the data inside and its type will be the same as the requested type.
				[codeblock]
				type_convert("Hi!", TYPE_INT) # Returns 0
				type_convert("123", TYPE_INT) # Returns 123
				type_convert(123.4, TYPE_INT) # Returns 123
				type_convert(5, TYPE_VECTOR2) # Returns (0, 0)
				type_convert("Hi!", TYPE_NIL) # Returns null
				[/codeblock]
			</description>
		</method>
		<method name="type_string">
			<return type="String" />
			<param index="0" name="type" type="int" />
			<description>
				Returns a human-readable name of the given [param type], using the [enum Variant.Type] values.
				[codeblock]
				print(TYPE_INT) # Prints 2
				print(type_string(TYPE_INT)) # Prints "int"
				print(type_string(TYPE_STRING)) # Prints "String"
				[/codeblock]
				See also [method typeof].
			</description>
		</method>
		<method name="typeof">
			<return type="int" />
			<param index="0" name="variable" type="Variant" />
			<description>
				Returns the internal type of the given [param variable], using the [enum Variant.Type] values.
				[codeblock]
				var json = JSON.new()
				json.parse('["a", "b", "c"]')
				var result = json.get_data()
				if typeof(result) == TYPE_ARRAY:
					print(result[0]) # Prints "a"
				else:
					print("Unexpected result!")
				[/codeblock]
				See also [method type_string].
			</description>
		</method>
		<method name="var_to_bytes">
			<return type="PackedByteArray" />
			<param index="0" name="variable" type="Variant" />
			<description>
				Encodes a [Variant] value to a byte array, without encoding objects. Deserialization can be done with [method bytes_to_var].
				[b]Note:[/b] If you need object serialization, see [method var_to_bytes_with_objects].
				[b]Note:[/b] Encoding [Callable] is not supported and will result in an empty value, regardless of the data.
			</description>
		</method>
		<method name="var_to_bytes_with_objects">
			<return type="PackedByteArray" />
			<param index="0" name="variable" type="Variant" />
			<description>
				Encodes a [Variant] value to a byte array. Encoding objects is allowed (and can potentially include executable code). Deserialization can be done with [method bytes_to_var_with_objects].
				[b]Note:[/b] Encoding [Callable] is not supported and will result in an empty value, regardless of the data.
			</description>
		</method>
		<method name="var_to_str">
			<return type="String" />
			<param index="0" name="variable" type="Variant" />
			<description>
				Converts a [Variant] [param variable] to a formatted [String] that can then be parsed using [method str_to_var].
				[codeblocks]
				[gdscript]
				var a = { "a": 1, "b": 2 }
				print(var_to_str(a))
				[/gdscript]
				[csharp]
				var a = new Godot.Collections.Dictionary { ["a"] = 1, ["b"] = 2 };
				GD.Print(GD.VarToStr(a));
				[/csharp]
				[/codeblocks]
				Prints:
				[codeblock lang=text]
				{
					"a": 1,
					"b": 2
				}
				[/codeblock]
				[b]Note:[/b] Converting [Signal] or [Callable] is not supported and will result in an empty value for these types, regardless of their data.
			</description>
		</method>
		<method name="weakref">
			<return type="Variant" />
			<param index="0" name="obj" type="Variant" />
			<description>
				Returns a [WeakRef] instance holding a weak reference to [param obj]. Returns an empty [WeakRef] instance if [param obj] is [code]null[/code]. Prints an error and returns [code]null[/code] if [param obj] is neither [Object]-derived nor [code]null[/code].
				A weak reference to an object is not enough to keep the object alive: when the only remaining references to a referent are weak references, garbage collection is free to destroy the referent and reuse its memory for something else. However, until the object is actually destroyed the weak reference may return the object even if there are no strong references to it.
			</description>
		</method>
		<method name="wrap">
			<return type="Variant" />
			<param index="0" name="value" type="Variant" />
			<param index="1" name="min" type="Variant" />
			<param index="2" name="max" type="Variant" />
			<description>
				Wraps the [Variant] [param value] between [param min] and [param max]. [param min] is [i]inclusive[/i] while [param max] is [i]exclusive[/i]. This can be used for creating loop-like behavior or infinite surfaces.
				Variant types [int] and [float] are supported. If any of the arguments is [float], this function returns a [float], otherwise it returns an [int].
				[codeblock]
				var a = wrap(4, 5, 10)
				# a is 9 (int)

				var a = wrap(7, 5, 10)
				# a is 7 (int)

				var a = wrap(10.5, 5, 10)
				# a is 5.5 (float)
				[/codeblock]
			</description>
		</method>
		<method name="wrapf">
			<return type="float" />
			<param index="0" name="value" type="float" />
			<param index="1" name="min" type="float" />
			<param index="2" name="max" type="float" />
			<description>
				Wraps the float [param value] between [param min] and [param max]. [param min] is [i]inclusive[/i] while [param max] is [i]exclusive[/i]. This can be used for creating loop-like behavior or infinite surfaces.
				[codeblock]
				# Infinite loop between 5.0 and 9.9
				value = wrapf(value + 0.1, 5.0, 10.0)
				[/codeblock]
				[codeblock]
				# Infinite rotation (in radians)
				angle = wrapf(angle + 0.1, 0.0, TAU)
				[/codeblock]
				[codeblock]
				# Infinite rotation (in radians)
				angle = wrapf(angle + 0.1, -PI, PI)
				[/codeblock]
				[b]Note:[/b] If [param min] is [code]0[/code], this is equivalent to [method fposmod], so prefer using that instead. [method wrapf] is more flexible than using the [method fposmod] approach by giving the user control over the minimum value.
			</description>
		</method>
		<method name="wrapi">
			<return type="int" />
			<param index="0" name="value" type="int" />
			<param index="1" name="min" type="int" />
			<param index="2" name="max" type="int" />
			<description>
				Wraps the integer [param value] between [param min] and [param max]. [param min] is [i]inclusive[/i] while [param max] is [i]exclusive[/i]. This can be used for creating loop-like behavior or infinite surfaces.
				[codeblock]
				# Infinite loop between 5 and 9
				frame = wrapi(frame + 1, 5, 10)
				[/codeblock]
				[codeblock]
				# result is -2
				var result = wrapi(-6, -5, -1)
				[/codeblock]
			</description>
		</method>
	</methods>
	<members>
		<member name="AccessibilityServer" type="AccessibilityServer" setter="" getter="">
			The [AccessibilityServer] singleton.
		</member>
		<member name="AudioServer" type="AudioServer" setter="" getter="">
			The [AudioServer] singleton.
		</member>
		<member name="CameraServer" type="CameraServer" setter="" getter="">
			The [CameraServer] singleton.
		</member>
		<member name="ClassDB" type="ClassDB" setter="" getter="">
			The [ClassDB] singleton.
		</member>
		<member name="DisplayServer" type="DisplayServer" setter="" getter="">
			The [DisplayServer] singleton.
		</member>
		<member name="EditorInterface" type="EditorInterface" setter="" getter="">
			The [EditorInterface] singleton.
			[b]Note:[/b] Only available in editor builds.
		</member>
		<member name="Engine" type="Engine" setter="" getter="">
			The [Engine] singleton.
		</member>
		<member name="EngineDebugger" type="EngineDebugger" setter="" getter="">
			The [EngineDebugger] singleton.
		</member>
		<member name="GDExtensionManager" type="GDExtensionManager" setter="" getter="">
			The [GDExtensionManager] singleton.
		</member>
		<member name="GDScriptLanguageProtocol" type="GDScriptLanguageProtocol" setter="" getter="">
			The [GDScriptLanguageProtocol] singleton.
			[b]Note:[/b] Only available in editor builds.
		</member>
		<member name="Geometry2D" type="Geometry2D" setter="" getter="">
			The [Geometry2D] singleton.
		</member>
		<member name="Geometry3D" type="Geometry3D" setter="" getter="">
			The [Geometry3D] singleton.
		</member>
		<member name="IP" type="IP" setter="" getter="">
			The [IP] singleton.
		</member>
		<member name="Input" type="Input" setter="" getter="">
			The [Input] singleton.
		</member>
		<member name="InputMap" type="InputMap" setter="" getter="">
			The [InputMap] singleton.
		</member>
		<member name="JavaClassWrapper" type="JavaClassWrapper" setter="" getter="">
			The [JavaClassWrapper] singleton.
			[b]Note:[/b] Only implemented on Android.
		</member>
		<member name="JavaScriptBridge" type="JavaScriptBridge" setter="" getter="">
			The [JavaScriptBridge] singleton.
			[b]Note:[/b] Only implemented on the Web platform.
		</member>
		<member name="Marshalls" type="Marshalls" setter="" getter="">
			The [Marshalls] singleton.
		</member>
		<member name="NativeMenu" type="NativeMenu" setter="" getter="">
			The [NativeMenu] singleton.
			[b]Note:[/b] Only implemented on macOS.
		</member>
		<member name="NavigationMeshGenerator" type="NavigationMeshGenerator" setter="" getter="">
			The [NavigationMeshGenerator] singleton.
		</member>
		<member name="NavigationServer2D" type="NavigationServer2D" setter="" getter="">
			The [NavigationServer2D] singleton.
		</member>
		<member name="NavigationServer2DManager" type="NavigationServer2DManager" setter="" getter="">
			The [NavigationServer2DManager] singleton.
		</member>
		<member name="NavigationServer3D" type="NavigationServer3D" setter="" getter="">
			The [NavigationServer3D] singleton.
		</member>
		<member name="NavigationServer3DManager" type="NavigationServer3DManager" setter="" getter="">
			The [NavigationServer3DManager] singleton.
		</member>
		<member name="OS" type="OS" setter="" getter="">
			The [OS] singleton.
		</member>
		<member name="Performance" type="Performance" setter="" getter="">
			The [Performance] singleton.
		</member>
		<member name="PhysicsServer2D" type="PhysicsServer2D" setter="" getter="">
			The [PhysicsServer2D] singleton.
		</member>
		<member name="PhysicsServer2DManager" type="PhysicsServer2DManager" setter="" getter="">
			The [PhysicsServer2DManager] singleton.
		</member>
		<member name="PhysicsServer3D" type="PhysicsServer3D" setter="" getter="">
			The [PhysicsServer3D] singleton.
		</member>
		<member name="PhysicsServer3DManager" type="PhysicsServer3DManager" setter="" getter="">
			The [PhysicsServer3DManager] singleton.
		</member>
		<member name="ProjectSettings" type="ProjectSettings" setter="" getter="">
			The [ProjectSettings] singleton.
		</member>
		<member name="RenderingServer" type="RenderingServer" setter="" getter="">
			The [RenderingServer] singleton.
		</member>
		<member name="ResourceLoader" type="ResourceLoader" setter="" getter="">
			The [ResourceLoader] singleton.
		</member>
		<member name="ResourceSaver" type="ResourceSaver" setter="" getter="">
			The [ResourceSaver] singleton.
		</member>
		<member name="ResourceUID" type="ResourceUID" setter="" getter="">
			The [ResourceUID] singleton.
		</member>
		<member name="TextServerManager" type="TextServerManager" setter="" getter="">
			The [TextServerManager] singleton.
		</member>
		<member name="ThemeDB" type="ThemeDB" setter="" getter="">
			The [ThemeDB] singleton.
		</member>
		<member name="Time" type="Time" setter="" getter="">
			The [Time] singleton.
		</member>
		<member name="TranslationServer" type="TranslationServer" setter="" getter="">
			The [TranslationServer] singleton.
		</member>
		<member name="WorkerThreadPool" type="WorkerThreadPool" setter="" getter="">
			The [WorkerThreadPool] singleton.
		</member>
		<member name="XRServer" type="XRServer" setter="" getter="">
			The [XRServer] singleton.
		</member>
	</members>
	<constants>
		<constant name="SIDE_LEFT" value="0" enum="Side">
			Left side, usually used for [Control] or [StyleBox]-derived classes.
		</constant>
		<constant name="SIDE_TOP" value="1" enum="Side">
			Top side, usually used for [Control] or [StyleBox]-derived classes.
		</constant>
		<constant name="SIDE_RIGHT" value="2" enum="Side">
			Right side, usually used for [Control] or [StyleBox]-derived classes.
		</constant>
		<constant name="SIDE_BOTTOM" value="3" enum="Side">
			Bottom side, usually used for [Control] or [StyleBox]-derived classes.
		</constant>
		<constant name="CORNER_TOP_LEFT" value="0" enum="Corner">
			Top-left corner.
		</constant>
		<constant name="CORNER_TOP_RIGHT" value="1" enum="Corner">
			Top-right corner.
		</constant>
		<constant name="CORNER_BOTTOM_RIGHT" value="2" enum="Corner">
			Bottom-right corner.
		</constant>
		<constant name="CORNER_BOTTOM_LEFT" value="3" enum="Corner">
			Bottom-left corner.
		</constant>
		<constant name="VERTICAL" value="1" enum="Orientation">
			General vertical alignment, usually used for [Separator], [ScrollBar], [Slider], etc.
		</constant>
		<constant name="HORIZONTAL" value="0" enum="Orientation">
			General horizontal alignment, usually used for [Separator], [ScrollBar], [Slider], etc.
		</constant>
		<constant name="CLOCKWISE" value="0" enum="ClockDirection">
			Clockwise rotation. Used by some methods (e.g. [method Image.rotate_90]).
		</constant>
		<constant name="COUNTERCLOCKWISE" value="1" enum="ClockDirection">
			Counter-clockwise rotation. Used by some methods (e.g. [method Image.rotate_90]).
		</constant>
		<constant name="HORIZONTAL_ALIGNMENT_LEFT" value="0" enum="HorizontalAlignment">
			Horizontal left alignment, usually for text-derived classes.
		</constant>
		<constant name="HORIZONTAL_ALIGNMENT_CENTER" value="1" enum="HorizontalAlignment">
			Horizontal center alignment, usually for text-derived classes.
		</constant>
		<constant name="HORIZONTAL_ALIGNMENT_RIGHT" value="2" enum="HorizontalAlignment">
			Horizontal right alignment, usually for text-derived classes.
		</constant>
		<constant name="HORIZONTAL_ALIGNMENT_FILL" value="3" enum="HorizontalAlignment">
			Expand row to fit width, usually for text-derived classes.
		</constant>
		<constant name="VERTICAL_ALIGNMENT_TOP" value="0" enum="VerticalAlignment">
			Vertical top alignment, usually for text-derived classes.
		</constant>
		<constant name="VERTICAL_ALIGNMENT_CENTER" value="1" enum="VerticalAlignment">
			Vertical center alignment, usually for text-derived classes.
		</constant>
		<constant name="VERTICAL_ALIGNMENT_BOTTOM" value="2" enum="VerticalAlignment">
			Vertical bottom alignment, usually for text-derived classes.
		</constant>
		<constant name="VERTICAL_ALIGNMENT_FILL" value="3" enum="VerticalAlignment">
			Expand rows to fit height, usually for text-derived classes.
		</constant>
		<constant name="INLINE_ALIGNMENT_TOP_TO" value="0" enum="InlineAlignment">
			Aligns the top of the inline object (e.g. image, table) to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant.
		</constant>
		<constant name="INLINE_ALIGNMENT_CENTER_TO" value="1" enum="InlineAlignment">
			Aligns the center of the inline object (e.g. image, table) to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant.
		</constant>
		<constant name="INLINE_ALIGNMENT_BASELINE_TO" value="3" enum="InlineAlignment">
			Aligns the baseline (user defined) of the inline object (e.g. image, table) to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant.
		</constant>
		<constant name="INLINE_ALIGNMENT_BOTTOM_TO" value="2" enum="InlineAlignment">
			Aligns the bottom of the inline object (e.g. image, table) to the position of the text specified by [code]INLINE_ALIGNMENT_TO_*[/code] constant.
		</constant>
		<constant name="INLINE_ALIGNMENT_TO_TOP" value="0" enum="InlineAlignment">
			Aligns the position of the inline object (e.g. image, table) specified by [code]INLINE_ALIGNMENT_*_TO[/code] constant to the top of the text.
		</constant>
		<constant name="INLINE_ALIGNMENT_TO_CENTER" value="4" enum="InlineAlignment">
			Aligns the position of the inline object (e.g. image, table) specified by [code]INLINE_ALIGNMENT_*_TO[/code] constant to the center of the text.
		</constant>
		<constant name="INLINE_ALIGNMENT_TO_BASELINE" value="8" enum="InlineAlignment">
			Aligns the position of the inline object (e.g. image, table) specified by [code]INLINE_ALIGNMENT_*_TO[/code] constant to the baseline of the text.
		</constant>
		<constant name="INLINE_ALIGNMENT_TO_BOTTOM" value="12" enum="InlineAlignment">
			Aligns inline object (e.g. image, table) to the bottom of the text.
		</constant>
		<constant name="INLINE_ALIGNMENT_TOP" value="0" enum="InlineAlignment">
			Aligns top of the inline object (e.g. image, table) to the top of the text. Equivalent to [code]INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP[/code].
		</constant>
		<constant name="INLINE_ALIGNMENT_CENTER" value="5" enum="InlineAlignment">
			Aligns center of the inline object (e.g. image, table) to the center of the text. Equivalent to [code]INLINE_ALIGNMENT_CENTER_TO | INLINE_ALIGNMENT_TO_CENTER[/code].
		</constant>
		<constant name="INLINE_ALIGNMENT_BOTTOM" value="14" enum="InlineAlignment">
			Aligns bottom of the inline object (e.g. image, table) to the bottom of the text. Equivalent to [code]INLINE_ALIGNMENT_BOTTOM_TO | INLINE_ALIGNMENT_TO_BOTTOM[/code].
		</constant>
		<constant name="INLINE_ALIGNMENT_IMAGE_MASK" value="3" enum="InlineAlignment">
			A bit mask for [code]INLINE_ALIGNMENT_*_TO[/code] alignment constants.
		</constant>
		<constant name="INLINE_ALIGNMENT_TEXT_MASK" value="12" enum="InlineAlignment">
			A bit mask for [code]INLINE_ALIGNMENT_TO_*[/code] alignment constants.
		</constant>
		<constant name="EULER_ORDER_XYZ" value="0" enum="EulerOrder">
			Specifies that Euler angles should be in intrinsic XYZ order. When composing, the rotations happen around the local X, Y, and Z axes, in that order. When decomposing, the order is reversed, first Z, then Y, and X last.
		</constant>
		<constant name="EULER_ORDER_XZY" value="1" enum="EulerOrder">
			Specifies that Euler angles should be in intrinsic XZY order. When composing, the rotations happen around the local X, Z, and Y axes, in that order. When decomposing, the order is reversed, first Y, then Z, and X last.
		</constant>
		<constant name="EULER_ORDER_YXZ" value="2" enum="EulerOrder">
			Specifies that Euler angles should be in intrinsic YXZ order. When composing, the rotations happen around the local Y, X, and Z axes, in that order. When decomposing, the order is reversed, first Z, then X, and Y last.
		</constant>
		<constant name="EULER_ORDER_YZX" value="3" enum="EulerOrder">
			Specifies that Euler angles should be in intrinsic YZX order. When composing, the rotations happen around the local Y, Z, and X axes, in that order. When decomposing, the order is reversed, first X, then Z, and Y last.
		</constant>
		<constant name="EULER_ORDER_ZXY" value="4" enum="EulerOrder">
			Specifies that Euler angles should be in intrinsic ZXY order. When composing, the rotations happen around the local Z, X, and Y axes, in that order. When decomposing, the order is reversed, first Y, then X, and Z last.
		</constant>
		<constant name="EULER_ORDER_ZYX" value="5" enum="EulerOrder">
			Specifies that Euler angles should be in intrinsic ZYX order. When composing, the rotations happen around the local Z, Y, and X axes, in that order. When decomposing, the order is reversed, first X, then Y, and Z last.
		</constant>
		<constant name="KEY_NONE" value="0" enum="Key">
			Enum value which doesn't correspond to any key. This is used to initialize [enum Key] properties with a generic state.
		</constant>
		<constant name="KEY_SPECIAL" value="4194304" enum="Key">
			Keycodes with this bit applied are non-printable.
		</constant>
		<constant name="KEY_ESCAPE" value="4194305" enum="Key">
			Escape key.
		</constant>
		<constant name="KEY_TAB" value="4194306" enum="Key">
			Tab key.
		</constant>
		<constant name="KEY_BACKTAB" value="4194307" enum="Key">
			Shift + Tab key.
		</constant>
		<constant name="KEY_BACKSPACE" value="4194308" enum="Key">
			Backspace key.
		</constant>
		<constant name="KEY_ENTER" value="4194309" enum="Key">
			Return key (on the main keyboard).
		</constant>
		<constant name="KEY_KP_ENTER" value="4194310" enum="Key">
			Enter key on the numeric keypad.
		</constant>
		<constant name="KEY_INSERT" value="4194311" enum="Key">
			Insert key.
		</constant>
		<constant name="KEY_DELETE" value="4194312" enum="Key">
			Delete key.
		</constant>
		<constant name="KEY_PAUSE" value="4194313" enum="Key">
			Pause key.
		</constant>
		<constant name="KEY_PRINT" value="4194314" enum="Key">
			Print Screen key.
		</constant>
		<constant name="KEY_SYSREQ" value="4194315" enum="Key">
			System Request key.
		</constant>
		<constant name="KEY_CLEAR" value="4194316" enum="Key">
			Clear key.
		</constant>
		<constant name="KEY_HOME" value="4194317" enum="Key">
			Home key.
		</constant>
		<constant name="KEY_END" value="4194318" enum="Key">
			End key.
		</constant>
		<constant name="KEY_LEFT" value="4194319" enum="Key">
			Left arrow key.
		</constant>
		<constant name="KEY_UP" value="4194320" enum="Key">
			Up arrow key.
		</constant>
		<constant name="KEY_RIGHT" value="4194321" enum="Key">
			Right arrow key.
		</constant>
		<constant name="KEY_DOWN" value="4194322" enum="Key">
			Down arrow key.
		</constant>
		<constant name="KEY_PAGEUP" value="4194323" enum="Key">
			Page Up key.
		</constant>
		<constant name="KEY_PAGEDOWN" value="4194324" enum="Key">
			Page Down key.
		</constant>
		<constant name="KEY_SHIFT" value="4194325" enum="Key">
			Shift key.
		</constant>
		<constant name="KEY_CTRL" value="4194326" enum="Key">
			Control key.
		</constant>
		<constant name="KEY_META" value="4194327" enum="Key">
			Meta key.
		</constant>
		<constant name="KEY_ALT" value="4194328" enum="Key">
			Alt key.
		</constant>
		<constant name="KEY_CAPSLOCK" value="4194329" enum="Key">
			Caps Lock key.
		</constant>
		<constant name="KEY_NUMLOCK" value="4194330" enum="Key">
			Num Lock key.
		</constant>
		<constant name="KEY_SCROLLLOCK" value="4194331" enum="Key">
			Scroll Lock key.
		</constant>
		<constant name="KEY_F1" value="4194332" enum="Key">
			F1 key.
		</constant>
		<constant name="KEY_F2" value="4194333" enum="Key">
			F2 key.
		</constant>
		<constant name="KEY_F3" value="4194334" enum="Key">
			F3 key.
		</constant>
		<constant name="KEY_F4" value="4194335" enum="Key">
			F4 key.
		</constant>
		<constant name="KEY_F5" value="4194336" enum="Key">
			F5 key.
		</constant>
		<constant name="KEY_F6" value="4194337" enum="Key">
			F6 key.
		</constant>
		<constant name="KEY_F7" value="4194338" enum="Key">
			F7 key.
		</constant>
		<constant name="KEY_F8" value="4194339" enum="Key">
			F8 key.
		</constant>
		<constant name="KEY_F9" value="4194340" enum="Key">
			F9 key.
		</constant>
		<constant name="KEY_F10" value="4194341" enum="Key">
			F10 key.
		</constant>
		<constant name="KEY_F11" value="4194342" enum="Key">
			F11 key.
		</constant>
		<constant name="KEY_F12" value="4194343" enum="Key">
			F12 key.
		</constant>
		<constant name="KEY_F13" value="4194344" enum="Key">
			F13 key.
		</constant>
		<constant name="KEY_F14" value="4194345" enum="Key">
			F14 key.
		</constant>
		<constant name="KEY_F15" value="4194346" enum="Key">
			F15 key.
		</constant>
		<constant name="KEY_F16" value="4194347" enum="Key">
			F16 key.
		</constant>
		<constant name="KEY_F17" value="4194348" enum="Key">
			F17 key.
		</constant>
		<constant name="KEY_F18" value="4194349" enum="Key">
			F18 key.
		</constant>
		<constant name="KEY_F19" value="4194350" enum="Key">
			F19 key.
		</constant>
		<constant name="KEY_F20" value="4194351" enum="Key">
			F20 key.
		</constant>
		<constant name="KEY_F21" value="4194352" enum="Key">
			F21 key.
		</constant>
		<constant name="KEY_F22" value="4194353" enum="Key">
			F22 key.
		</constant>
		<constant name="KEY_F23" value="4194354" enum="Key">
			F23 key.
		</constant>
		<constant name="KEY_F24" value="4194355" enum="Key">
			F24 key.
		</constant>
		<constant name="KEY_F25" value="4194356" enum="Key">
			F25 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F26" value="4194357" enum="Key">
			F26 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F27" value="4194358" enum="Key">
			F27 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F28" value="4194359" enum="Key">
			F28 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F29" value="4194360" enum="Key">
			F29 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F30" value="4194361" enum="Key">
			F30 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F31" value="4194362" enum="Key">
			F31 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F32" value="4194363" enum="Key">
			F32 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F33" value="4194364" enum="Key">
			F33 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F34" value="4194365" enum="Key">
			F34 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_F35" value="4194366" enum="Key">
			F35 key. Only supported on macOS and Linux due to a Windows limitation.
		</constant>
		<constant name="KEY_KP_MULTIPLY" value="4194433" enum="Key">
			Multiply (*) key on the numeric keypad.
		</constant>
		<constant name="KEY_KP_DIVIDE" value="4194434" enum="Key">
			Divide (/) key on the numeric keypad.
		</constant>
		<constant name="KEY_KP_SUBTRACT" value="4194435" enum="Key">
			Subtract (-) key on the numeric keypad.
		</constant>
		<constant name="KEY_KP_PERIOD" value="4194436" enum="Key">
			Period (.) key on the numeric keypad.
		</constant>
		<constant name="KEY_KP_ADD" value="4194437" enum="Key">
			Add (+) key on the numeric keypad.
		</constant>
		<constant name="KEY_KP_0" value="4194438" enum="Key">
			Number 0 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_1" value="4194439" enum="Key">
			Number 1 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_2" value="4194440" enum="Key">
			Number 2 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_3" value="4194441" enum="Key">
			Number 3 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_4" value="4194442" enum="Key">
			Number 4 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_5" value="4194443" enum="Key">
			Number 5 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_6" value="4194444" enum="Key">
			Number 6 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_7" value="4194445" enum="Key">
			Number 7 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_8" value="4194446" enum="Key">
			Number 8 on the numeric keypad.
		</constant>
		<constant name="KEY_KP_9" value="4194447" enum="Key">
			Number 9 on the numeric keypad.
		</constant>
		<constant name="KEY_MENU" value="4194370" enum="Key">
			Context menu key.
		</constant>
		<constant name="KEY_HYPER" value="4194371" enum="Key">
			Hyper key. (On Linux/X11 only).
		</constant>
		<constant name="KEY_HELP" value="4194373" enum="Key">
			Help key.
		</constant>
		<constant name="KEY_BACK" value="4194376" enum="Key">
			Back key.
		</constant>
		<constant name="KEY_FORWARD" value="4194377" enum="Key">
			Forward key.
		</constant>
		<constant name="KEY_STOP" value="4194378" enum="Key">
			Media stop key.
		</constant>
		<constant name="KEY_REFRESH" value="4194379" enum="Key">
			Refresh key.
		</constant>
		<constant name="KEY_VOLUMEDOWN" value="4194380" enum="Key">
			Volume down key.
		</constant>
		<constant name="KEY_VOLUMEMUTE" value="4194381" enum="Key">
			Mute volume key.
		</constant>
		<constant name="KEY_VOLUMEUP" value="4194382" enum="Key">
			Volume up key.
		</constant>
		<constant name="KEY_MEDIAPLAY" value="4194388" enum="Key">
			Media play key.
		</constant>
		<constant name="KEY_MEDIASTOP" value="4194389" enum="Key">
			Media stop key.
		</constant>
		<constant name="KEY_MEDIAPREVIOUS" value="4194390" enum="Key">
			Previous song key.
		</constant>
		<constant name="KEY_MEDIANEXT" value="4194391" enum="Key">
			Next song key.
		</constant>
		<constant name="KEY_MEDIARECORD" value="4194392" enum="Key">
			Media record key.
		</constant>
		<constant name="KEY_HOMEPAGE" value="4194393" enum="Key">
			Home page key.
		</constant>
		<constant name="KEY_FAVORITES" value="4194394" enum="Key">
			Favorites key.
		</constant>
		<constant name="KEY_SEARCH" value="4194395" enum="Key">
			Search key.
		</constant>
		<constant name="KEY_STANDBY" value="4194396" enum="Key">
			Standby key.
		</constant>
		<constant name="KEY_OPENURL" value="4194397" enum="Key">
			Open URL / Launch Browser key.
		</constant>
		<constant name="KEY_LAUNCHMAIL" value="4194398" enum="Key">
			Launch Mail key.
		</constant>
		<constant name="KEY_LAUNCHMEDIA" value="4194399" enum="Key">
			Launch Media key.
		</constant>
		<constant name="KEY_LAUNCH0" value="4194400" enum="Key">
			Launch Shortcut 0 key.
		</constant>
		<constant name="KEY_LAUNCH1" value="4194401" enum="Key">
			Launch Shortcut 1 key.
		</constant>
		<constant name="KEY_LAUNCH2" value="4194402" enum="Key">
			Launch Shortcut 2 key.
		</constant>
		<constant name="KEY_LAUNCH3" value="4194403" enum="Key">
			Launch Shortcut 3 key.
		</constant>
		<constant name="KEY_LAUNCH4" value="4194404" enum="Key">
			Launch Shortcut 4 key.
		</constant>
		<constant name="KEY_LAUNCH5" value="4194405" enum="Key">
			Launch Shortcut 5 key.
		</constant>
		<constant name="KEY_LAUNCH6" value="4194406" enum="Key">
			Launch Shortcut 6 key.
		</constant>
		<constant name="KEY_LAUNCH7" value="4194407" enum="Key">
			Launch Shortcut 7 key.
		</constant>
		<constant name="KEY_LAUNCH8" value="4194408" enum="Key">
			Launch Shortcut 8 key.
		</constant>
		<constant name="KEY_LAUNCH9" value="4194409" enum="Key">
			Launch Shortcut 9 key.
		</constant>
		<constant name="KEY_LAUNCHA" value="4194410" enum="Key">
			Launch Shortcut A key.
		</constant>
		<constant name="KEY_LAUNCHB" value="4194411" enum="Key">
			Launch Shortcut B key.
		</constant>
		<constant name="KEY_LAUNCHC" value="4194412" enum="Key">
			Launch Shortcut C key.
		</constant>
		<constant name="KEY_LAUNCHD" value="4194413" enum="Key">
			Launch Shortcut D key.
		</constant>
		<constant name="KEY_LAUNCHE" value="4194414" enum="Key">
			Launch Shortcut E key.
		</constant>
		<constant name="KEY_LAUNCHF" value="4194415" enum="Key">
			Launch Shortcut F key.
		</constant>
		<constant name="KEY_GLOBE" value="4194416" enum="Key">
			"Globe" key on Mac / iPad keyboard.
		</constant>
		<constant name="KEY_KEYBOARD" value="4194417" enum="Key">
			"On-screen keyboard" key on iPad keyboard.
		</constant>
		<constant name="KEY_JIS_EISU" value="4194418" enum="Key">
			英数 key on Mac keyboard.
		</constant>
		<constant name="KEY_JIS_KANA" value="4194419" enum="Key">
			かな key on Mac keyboard.
		</constant>
		<constant name="KEY_UNKNOWN" value="8388607" enum="Key">
			Unknown key.
		</constant>
		<constant name="KEY_SPACE" value="32" enum="Key">
			Space key.
		</constant>
		<constant name="KEY_EXCLAM" value="33" enum="Key">
			Exclamation mark ([code]![/code]) key.
		</constant>
		<constant name="KEY_QUOTEDBL" value="34" enum="Key">
			Double quotation mark ([code]"[/code]) key.
		</constant>
		<constant name="KEY_NUMBERSIGN" value="35" enum="Key" keywords="pound, hash">
			Number sign or [i]hash[/i] ([code]#[/code]) key.
		</constant>
		<constant name="KEY_DOLLAR" value="36" enum="Key">
			Dollar sign ([code]$[/code]) key.
		</constant>
		<constant name="KEY_PERCENT" value="37" enum="Key">
			Percent sign ([code]%[/code]) key.
		</constant>
		<constant name="KEY_AMPERSAND" value="38" enum="Key">
			Ampersand ([code]&amp;[/code]) key.
		</constant>
		<constant name="KEY_APOSTROPHE" value="39" enum="Key">
			Apostrophe ([code]'[/code]) key.
		</constant>
		<constant name="KEY_PARENLEFT" value="40" enum="Key" keywords="open round bracket">
			Left parenthesis ([code]([/code]) key.
		</constant>
		<constant name="KEY_PARENRIGHT" value="41" enum="Key" keywords="close round bracket">
			Right parenthesis ([code])[/code]) key.
		</constant>
		<constant name="KEY_ASTERISK" value="42" enum="Key">
			Asterisk ([code]*[/code]) key.
		</constant>
		<constant name="KEY_PLUS" value="43" enum="Key">
			Plus ([code]+[/code]) key.
		</constant>
		<constant name="KEY_COMMA" value="44" enum="Key">
			Comma ([code],[/code]) key.
		</constant>
		<constant name="KEY_MINUS" value="45" enum="Key" keywords="hyphen">
			Minus ([code]-[/code]) key.
		</constant>
		<constant name="KEY_PERIOD" value="46" enum="Key" keywords="dot">
			Period ([code].[/code]) key.
		</constant>
		<constant name="KEY_SLASH" value="47" enum="Key">
			Slash ([code]/[/code]) key.
		</constant>
		<constant name="KEY_0" value="48" enum="Key">
			Number 0 key.
		</constant>
		<constant name="KEY_1" value="49" enum="Key">
			Number 1 key.
		</constant>
		<constant name="KEY_2" value="50" enum="Key">
			Number 2 key.
		</constant>
		<constant name="KEY_3" value="51" enum="Key">
			Number 3 key.
		</constant>
		<constant name="KEY_4" value="52" enum="Key">
			Number 4 key.
		</constant>
		<constant name="KEY_5" value="53" enum="Key">
			Number 5 key.
		</constant>
		<constant name="KEY_6" value="54" enum="Key">
			Number 6 key.
		</constant>
		<constant name="KEY_7" value="55" enum="Key">
			Number 7 key.
		</constant>
		<constant name="KEY_8" value="56" enum="Key">
			Number 8 key.
		</constant>
		<constant name="KEY_9" value="57" enum="Key">
			Number 9 key.
		</constant>
		<constant name="KEY_COLON" value="58" enum="Key">
			Colon ([code]:[/code]) key.
		</constant>
		<constant name="KEY_SEMICOLON" value="59" enum="Key">
			Semicolon ([code];[/code]) key.
		</constant>
		<constant name="KEY_LESS" value="60" enum="Key">
			Less-than sign ([code]&lt;[/code]) key.
		</constant>
		<constant name="KEY_EQUAL" value="61" enum="Key">
			Equal sign ([code]=[/code]) key.
		</constant>
		<constant name="KEY_GREATER" value="62" enum="Key">
			Greater-than sign ([code]&gt;[/code]) key.
		</constant>
		<constant name="KEY_QUESTION" value="63" enum="Key">
			Question mark ([code]?[/code]) key.
		</constant>
		<constant name="KEY_AT" value="64" enum="Key" keywords="commercial at">
			At sign ([code]@[/code]) key.
		</constant>
		<constant name="KEY_A" value="65" enum="Key">
			A key.
		</constant>
		<constant name="KEY_B" value="66" enum="Key">
			B key.
		</constant>
		<constant name="KEY_C" value="67" enum="Key">
			C key.
		</constant>
		<constant name="KEY_D" value="68" enum="Key">
			D key.
		</constant>
		<constant name="KEY_E" value="69" enum="Key">
			E key.
		</constant>
		<constant name="KEY_F" value="70" enum="Key">
			F key.
		</constant>
		<constant name="KEY_G" value="71" enum="Key">
			G key.
		</constant>
		<constant name="KEY_H" value="72" enum="Key">
			H key.
		</constant>
		<constant name="KEY_I" value="73" enum="Key">
			I key.
		</constant>
		<constant name="KEY_J" value="74" enum="Key">
			J key.
		</constant>
		<constant name="KEY_K" value="75" enum="Key">
			K key.
		</constant>
		<constant name="KEY_L" value="76" enum="Key">
			L key.
		</constant>
		<constant name="KEY_M" value="77" enum="Key">
			M key.
		</constant>
		<constant name="KEY_N" value="78" enum="Key">
			N key.
		</constant>
		<constant name="KEY_O" value="79" enum="Key">
			O key.
		</constant>
		<constant name="KEY_P" value="80" enum="Key">
			P key.
		</constant>
		<constant name="KEY_Q" value="81" enum="Key">
			Q key.
		</constant>
		<constant name="KEY_R" value="82" enum="Key">
			R key.
		</constant>
		<constant name="KEY_S" value="83" enum="Key">
			S key.
		</constant>
		<constant name="KEY_T" value="84" enum="Key">
			T key.
		</constant>
		<constant name="KEY_U" value="85" enum="Key">
			U key.
		</constant>
		<constant name="KEY_V" value="86" enum="Key">
			V key.
		</constant>
		<constant name="KEY_W" value="87" enum="Key">
			W key.
		</constant>
		<constant name="KEY_X" value="88" enum="Key">
			X key.
		</constant>
		<constant name="KEY_Y" value="89" enum="Key">
			Y key.
		</constant>
		<constant name="KEY_Z" value="90" enum="Key">
			Z key.
		</constant>
		<constant name="KEY_BRACKETLEFT" value="91" enum="Key" keywords="open square bracket">
			Left bracket ([code][lb][/code]) key.
		</constant>
		<constant name="KEY_BACKSLASH" value="92" enum="Key">
			Backslash ([code]\[/code]) key.
		</constant>
		<constant name="KEY_BRACKETRIGHT" value="93" enum="Key" keywords="close square bracket">
			Right bracket ([code][rb][/code]) key.
		</constant>
		<constant name="KEY_ASCIICIRCUM" value="94" enum="Key" keywords="caret">
			Caret ([code]^[/code]) key.
		</constant>
		<constant name="KEY_UNDERSCORE" value="95" enum="Key" keywords="underline">
			Underscore ([code]_[/code]) key.
		</constant>
		<constant name="KEY_QUOTELEFT" value="96" enum="Key" keywords="backtick, backquote">
			Backtick ([code]`[/code]) key.
		</constant>
		<constant name="KEY_BRACELEFT" value="123" enum="Key" keywords="open curly bracket">
			Left brace ([code]{[/code]) key.
		</constant>
		<constant name="KEY_BAR" value="124" enum="Key" keywords="pipe">
			Vertical bar or [i]pipe[/i] ([code]|[/code]) key.
		</constant>
		<constant name="KEY_BRACERIGHT" value="125" enum="Key" keywords="close curly bracket">
			Right brace ([code]}[/code]) key.
		</constant>
		<constant name="KEY_ASCIITILDE" value="126" enum="Key">
			Tilde ([code]~[/code]) key.
		</constant>
		<constant name="KEY_YEN" value="165" enum="Key">
			Yen symbol ([code]¥[/code]) key.
		</constant>
		<constant name="KEY_SECTION" value="167" enum="Key" keywords="silcrow">
			Section sign ([code]§[/code]) key.
		</constant>
		<constant name="KEY_CODE_MASK" value="8388607" enum="KeyModifierMask" is_bitfield="true">
			Bit mask with all bits enabled except for modifier keys. Apply it to remove modifiers.
			[codeblock]
			var keycode = KEY_A | KEY_MASK_SHIFT
			keycode = keycode &amp; KEY_CODE_MASK
			print(keycode) # KEY_A
			[/codeblock]
		</constant>
		<constant name="KEY_MODIFIER_MASK" value="2130706432" enum="KeyModifierMask" is_bitfield="true">
			Bit mask with all modifier bits enabled. Apply it to isolate modifiers.
			[codeblock]
			var keycode = KEY_A | KEY_MASK_SHIFT
			keycode = keycode &amp; KEY_MODIFIER_MASK
			print(keycode) # KEY_MASK_SHIFT
			[/codeblock]
		</constant>
		<constant name="KEY_MASK_CMD_OR_CTRL" value="16777216" enum="KeyModifierMask" is_bitfield="true">
			Automatically remapped to [constant KEY_META] on macOS and [constant KEY_CTRL] on other platforms, this mask is never set in the actual events, and should be used for key mapping only.
		</constant>
		<constant name="KEY_MASK_SHIFT" value="33554432" enum="KeyModifierMask" is_bitfield="true">
			Shift key mask.
		</constant>
		<constant name="KEY_MASK_ALT" value="67108864" enum="KeyModifierMask" is_bitfield="true">
			Alt or Option (on macOS) key mask.
		</constant>
		<constant name="KEY_MASK_META" value="134217728" enum="KeyModifierMask" is_bitfield="true">
			Command (on macOS) or Meta/Windows key mask.
		</constant>
		<constant name="KEY_MASK_CTRL" value="268435456" enum="KeyModifierMask" is_bitfield="true">
			Control key mask.
		</constant>
		<constant name="KEY_MASK_KPAD" value="536870912" enum="KeyModifierMask" is_bitfield="true">
			Keypad key mask.
		</constant>
		<constant name="KEY_MASK_GROUP_SWITCH" value="1073741824" enum="KeyModifierMask" is_bitfield="true">
			Group Switch key mask.
		</constant>
		<constant name="KEY_LOCATION_UNSPECIFIED" value="0" enum="KeyLocation">
			Used for keys which only appear once, or when a comparison doesn't need to differentiate the [code]LEFT[/code] and [code]RIGHT[/code] versions.
			For example, when using [method InputEvent.is_match], an event which has [constant KEY_LOCATION_UNSPECIFIED] will match any [enum KeyLocation] on the passed event.
		</constant>
		<constant name="KEY_LOCATION_LEFT" value="1" enum="KeyLocation">
			A key which is to the left of its twin.
		</constant>
		<constant name="KEY_LOCATION_RIGHT" value="2" enum="KeyLocation">
			A key which is to the right of its twin.
		</constant>
		<constant name="MOUSE_BUTTON_NONE" value="0" enum="MouseButton">
			Enum value which doesn't correspond to any mouse button. This is used to initialize [enum MouseButton] properties with a generic state.
		</constant>
		<constant name="MOUSE_BUTTON_LEFT" value="1" enum="MouseButton">
			Primary mouse button, usually assigned to the left button.
		</constant>
		<constant name="MOUSE_BUTTON_RIGHT" value="2" enum="MouseButton">
			Secondary mouse button, usually assigned to the right button.
		</constant>
		<constant name="MOUSE_BUTTON_MIDDLE" value="3" enum="MouseButton">
			Middle mouse button.
		</constant>
		<constant name="MOUSE_BUTTON_WHEEL_UP" value="4" enum="MouseButton">
			Mouse wheel scrolling up.
		</constant>
		<constant name="MOUSE_BUTTON_WHEEL_DOWN" value="5" enum="MouseButton">
			Mouse wheel scrolling down.
		</constant>
		<constant name="MOUSE_BUTTON_WHEEL_LEFT" value="6" enum="MouseButton">
			Mouse wheel left button (only present on some mice).
		</constant>
		<constant name="MOUSE_BUTTON_WHEEL_RIGHT" value="7" enum="MouseButton">
			Mouse wheel right button (only present on some mice).
		</constant>
		<constant name="MOUSE_BUTTON_XBUTTON1" value="8" enum="MouseButton">
			Extra mouse button 1. This is sometimes present, usually to the sides of the mouse.
		</constant>
		<constant name="MOUSE_BUTTON_XBUTTON2" value="9" enum="MouseButton">
			Extra mouse button 2. This is sometimes present, usually to the sides of the mouse.
		</constant>
		<constant name="MOUSE_BUTTON_MASK_LEFT" value="1" enum="MouseButtonMask" is_bitfield="true">
			Primary mouse button mask, usually for the left button.
		</constant>
		<constant name="MOUSE_BUTTON_MASK_RIGHT" value="2" enum="MouseButtonMask" is_bitfield="true">
			Secondary mouse button mask, usually for the right button.
		</constant>
		<constant name="MOUSE_BUTTON_MASK_MIDDLE" value="4" enum="MouseButtonMask" is_bitfield="true">
			Middle mouse button mask.
		</constant>
		<constant name="MOUSE_BUTTON_MASK_MB_XBUTTON1" value="128" enum="MouseButtonMask" is_bitfield="true">
			Extra mouse button 1 mask.
		</constant>
		<constant name="MOUSE_BUTTON_MASK_MB_XBUTTON2" value="256" enum="MouseButtonMask" is_bitfield="true">
			Extra mouse button 2 mask.
		</constant>
		<constant name="JOY_BUTTON_INVALID" value="-1" enum="JoyButton">
			An invalid game controller button.
		</constant>
		<constant name="JOY_BUTTON_A" value="0" enum="JoyButton">
			Game controller SDL button A. Corresponds to the bottom action button: Sony Cross, Xbox A, Nintendo B.
		</constant>
		<constant name="JOY_BUTTON_B" value="1" enum="JoyButton">
			Game controller SDL button B. Corresponds to the right action button: Sony Circle, Xbox B, Nintendo A.
		</constant>
		<constant name="JOY_BUTTON_X" value="2" enum="JoyButton">
			Game controller SDL button X. Corresponds to the left action button: Sony Square, Xbox X, Nintendo Y.
		</constant>
		<constant name="JOY_BUTTON_Y" value="3" enum="JoyButton">
			Game controller SDL button Y. Corresponds to the top action button: Sony Triangle, Xbox Y, Nintendo X.
		</constant>
		<constant name="JOY_BUTTON_BACK" value="4" enum="JoyButton">
			Game controller SDL back button. Corresponds to the Sony Select, Xbox Back, Nintendo - button.
		</constant>
		<constant name="JOY_BUTTON_GUIDE" value="5" enum="JoyButton">
			Game controller SDL guide button. Corresponds to the Sony PS, Xbox Home button.
		</constant>
		<constant name="JOY_BUTTON_START" value="6" enum="JoyButton">
			Game controller SDL start button. Corresponds to the Sony Options, Xbox Menu, Nintendo + button.
		</constant>
		<constant name="JOY_BUTTON_LEFT_STICK" value="7" enum="JoyButton">
			Game controller SDL left stick button. Corresponds to the Sony L3, Xbox L/LS button.
		</constant>
		<constant name="JOY_BUTTON_RIGHT_STICK" value="8" enum="JoyButton">
			Game controller SDL right stick button. Corresponds to the Sony R3, Xbox R/RS button.
		</constant>
		<constant name="JOY_BUTTON_LEFT_SHOULDER" value="9" enum="JoyButton">
			Game controller SDL left shoulder button. Corresponds to the Sony L1, Xbox LB button.
		</constant>
		<constant name="JOY_BUTTON_RIGHT_SHOULDER" value="10" enum="JoyButton">
			Game controller SDL right shoulder button. Corresponds to the Sony R1, Xbox RB button.
		</constant>
		<constant name="JOY_BUTTON_DPAD_UP" value="11" enum="JoyButton">
			Game controller D-pad up button.
		</constant>
		<constant name="JOY_BUTTON_DPAD_DOWN" value="12" enum="JoyButton">
			Game controller D-pad down button.
		</constant>
		<constant name="JOY_BUTTON_DPAD_LEFT" value="13" enum="JoyButton">
			Game controller D-pad left button.
		</constant>
		<constant name="JOY_BUTTON_DPAD_RIGHT" value="14" enum="JoyButton">
			Game controller D-pad right button.
		</constant>
		<constant name="JOY_BUTTON_MISC1" value="15" enum="JoyButton">
			Game controller SDL miscellaneous button. Corresponds to Xbox share button, PS5 microphone button, Nintendo Switch capture button.
		</constant>
		<constant name="JOY_BUTTON_PADDLE1" value="16" enum="JoyButton">
			Game controller SDL paddle 1 button.
		</constant>
		<constant name="JOY_BUTTON_PADDLE2" value="17" enum="JoyButton">
			Game controller SDL paddle 2 button.
		</constant>
		<constant name="JOY_BUTTON_PADDLE3" value="18" enum="JoyButton">
			Game controller SDL paddle 3 button.
		</constant>
		<constant name="JOY_BUTTON_PADDLE4" value="19" enum="JoyButton">
			Game controller SDL paddle 4 button.
		</constant>
		<constant name="JOY_BUTTON_TOUCHPAD" value="20" enum="JoyButton">
			Game controller SDL touchpad button.
		</constant>
		<constant name="JOY_BUTTON_MISC2" value="21" enum="JoyButton">
			Game controller SDL miscellaneous button. Used by Nintendo Switch 2 Pro Controller and Horipad Steam controllers.
		</constant>
		<constant name="JOY_BUTTON_MISC3" value="22" enum="JoyButton">
			Game controller SDL miscellaneous button.
		</constant>
		<constant name="JOY_BUTTON_MISC4" value="23" enum="JoyButton">
			Game controller SDL miscellaneous button.
		</constant>
		<constant name="JOY_BUTTON_MISC5" value="24" enum="JoyButton">
			Game controller SDL miscellaneous button.
		</constant>
		<constant name="JOY_BUTTON_MISC6" value="25" enum="JoyButton">
			Game controller SDL miscellaneous button.
		</constant>
		<constant name="JOY_BUTTON_SDL_MAX" value="26" enum="JoyButton">
			The number of SDL game controller buttons.
		</constant>
		<constant name="JOY_BUTTON_MAX" value="128" enum="JoyButton">
			The maximum number of game controller buttons supported by the engine. The actual limit may be lower on specific platforms:
			- [b]Android:[/b] Up to 36 buttons.
			- [b]Linux:[/b] Up to 80 buttons.
			- [b]Windows[/b] and [b]macOS:[/b] Up to 128 buttons.
		</constant>
		<constant name="JOY_AXIS_INVALID" value="-1" enum="JoyAxis">
			An invalid game controller axis.
		</constant>
		<constant name="JOY_AXIS_LEFT_X" value="0" enum="JoyAxis">
			Game controller left joystick x-axis.
		</constant>
		<constant name="JOY_AXIS_LEFT_Y" value="1" enum="JoyAxis">
			Game controller left joystick y-axis.
		</constant>
		<constant name="JOY_AXIS_RIGHT_X" value="2" enum="JoyAxis">
			Game controller right joystick x-axis.
		</constant>
		<constant name="JOY_AXIS_RIGHT_Y" value="3" enum="JoyAxis">
			Game controller right joystick y-axis.
		</constant>
		<constant name="JOY_AXIS_TRIGGER_LEFT" value="4" enum="JoyAxis">
			Game controller left trigger axis.
		</constant>
		<constant name="JOY_AXIS_TRIGGER_RIGHT" value="5" enum="JoyAxis">
			Game controller right trigger axis.
		</constant>
		<constant name="JOY_AXIS_SDL_MAX" value="6" enum="JoyAxis">
			The number of SDL game controller axes.
		</constant>
		<constant name="JOY_AXIS_MAX" value="10" enum="JoyAxis">
			The maximum number of game controller axes: OpenVR supports up to 5 Joysticks making a total of 10 axes.
		</constant>
		<constant name="MIDI_MESSAGE_NONE" value="0" enum="MIDIMessage">
			Does not correspond to any MIDI message. This is the default value of [member InputEventMIDI.message].
		</constant>
		<constant name="MIDI_MESSAGE_NOTE_OFF" value="8" enum="MIDIMessage">
			MIDI message sent when a note is released.
			[b]Note:[/b] Not all MIDI devices send this message; some may send [constant MIDI_MESSAGE_NOTE_ON] with [member InputEventMIDI.velocity] set to [code]0[/code].
		</constant>
		<constant name="MIDI_MESSAGE_NOTE_ON" value="9" enum="MIDIMessage">
			MIDI message sent when a note is pressed.
		</constant>
		<constant name="MIDI_MESSAGE_AFTERTOUCH" value="10" enum="MIDIMessage">
			MIDI message sent to indicate a change in pressure while a note is being pressed down, also called aftertouch.
		</constant>
		<constant name="MIDI_MESSAGE_CONTROL_CHANGE" value="11" enum="MIDIMessage">
			MIDI message sent when a controller value changes. In a MIDI device, a controller is any input that doesn't play notes. These may include sliders for volume, balance, and panning, as well as switches and pedals. See the [url=https://en.wikipedia.org/wiki/General_MIDI#Controller_events]General MIDI specification[/url] for a small list.
		</constant>
		<constant name="MIDI_MESSAGE_PROGRAM_CHANGE" value="12" enum="MIDIMessage">
			MIDI message sent when the MIDI device changes its current instrument (also called [i]program[/i] or [i]preset[/i]).
		</constant>
		<constant name="MIDI_MESSAGE_CHANNEL_PRESSURE" value="13" enum="MIDIMessage">
			MIDI message sent to indicate a change in pressure for the whole channel. Some MIDI devices may send this instead of [constant MIDI_MESSAGE_AFTERTOUCH].
		</constant>
		<constant name="MIDI_MESSAGE_PITCH_BEND" value="14" enum="MIDIMessage">
			MIDI message sent when the value of the pitch bender changes, usually a wheel on the MIDI device.
		</constant>
		<constant name="MIDI_MESSAGE_SYSTEM_EXCLUSIVE" value="240" enum="MIDIMessage">
			MIDI system exclusive (SysEx) message. This type of message is not standardized and it's highly dependent on the MIDI device sending it.
			[b]Note:[/b] Getting this message's data from [InputEventMIDI] is not implemented.
		</constant>
		<constant name="MIDI_MESSAGE_QUARTER_FRAME" value="241" enum="MIDIMessage">
			MIDI message sent every quarter frame to keep connected MIDI devices synchronized. Related to [constant MIDI_MESSAGE_TIMING_CLOCK].
			[b]Note:[/b] Getting this message's data from [InputEventMIDI] is not implemented.
		</constant>
		<constant name="MIDI_MESSAGE_SONG_POSITION_POINTER" value="242" enum="MIDIMessage">
			MIDI message sent to jump onto a new position in the current sequence or song.
			[b]Note:[/b] Getting this message's data from [InputEventMIDI] is not implemented.
		</constant>
		<constant name="MIDI_MESSAGE_SONG_SELECT" value="243" enum="MIDIMessage">
			MIDI message sent to select a sequence or song to play.
			[b]Note:[/b] Getting this message's data from [InputEventMIDI] is not implemented.
		</constant>
		<constant name="MIDI_MESSAGE_TUNE_REQUEST" value="246" enum="MIDIMessage">
			MIDI message sent to request a tuning calibration. Used on analog synthesizers. Most modern MIDI devices do not need this message.
		</constant>
		<constant name="MIDI_MESSAGE_TIMING_CLOCK" value="248" enum="MIDIMessage">
			MIDI message sent 24 times after [constant MIDI_MESSAGE_QUARTER_FRAME], to keep connected MIDI devices synchronized.
		</constant>
		<constant name="MIDI_MESSAGE_START" value="250" enum="MIDIMessage">
			MIDI message sent to start the current sequence or song from the beginning.
		</constant>
		<constant name="MIDI_MESSAGE_CONTINUE" value="251" enum="MIDIMessage">
			MIDI message sent to resume from the point the current sequence or song was paused.
		</constant>
		<constant name="MIDI_MESSAGE_STOP" value="252" enum="MIDIMessage">
			MIDI message sent to pause the current sequence or song.
		</constant>
		<constant name="MIDI_MESSAGE_ACTIVE_SENSING" value="254" enum="MIDIMessage">
			MIDI message sent repeatedly while the MIDI device is idle, to tell the receiver that the connection is alive. Most MIDI devices do not send this message.
		</constant>
		<constant name="MIDI_MESSAGE_SYSTEM_RESET" value="255" enum="MIDIMessage">
			MIDI message sent to reset a MIDI device to its default state, as if it was just turned on. It should not be sent when the MIDI device is being turned on.
		</constant>
		<constant name="OK" value="0" enum="Error">
			Methods that return [enum Error] return [constant OK] when no error occurred.
			Since [constant OK] has value [code]0[/code], and all other error constants are positive integers, it can also be used in boolean checks.
			[codeblock]
			var error = method_that_returns_error()
			if error != OK:
				printerr("Failure!")

			# Or, alternatively:
			if error:
				printerr("Still failing!")
			[/codeblock]
			[b]Note:[/b] Many functions do not return an error code, but will print error messages to standard output.
		</constant>
		<constant name="FAILED" value="1" enum="Error">
			Generic error.
		</constant>
		<constant name="ERR_UNAVAILABLE" value="2" enum="Error">
			Unavailable error.
		</constant>
		<constant name="ERR_UNCONFIGURED" value="3" enum="Error">
			Unconfigured error.
		</constant>
		<constant name="ERR_UNAUTHORIZED" value="4" enum="Error">
			Unauthorized error.
		</constant>
		<constant name="ERR_PARAMETER_RANGE_ERROR" value="5" enum="Error">
			Parameter range error.
		</constant>
		<constant name="ERR_OUT_OF_MEMORY" value="6" enum="Error">
			Out of memory (OOM) error.
		</constant>
		<constant name="ERR_FILE_NOT_FOUND" value="7" enum="Error">
			File: Not found error.
		</constant>
		<constant name="ERR_FILE_BAD_DRIVE" value="8" enum="Error">
			File: Bad drive error.
		</constant>
		<constant name="ERR_FILE_BAD_PATH" value="9" enum="Error">
			File: Bad path error.
		</constant>
		<constant name="ERR_FILE_NO_PERMISSION" value="10" enum="Error">
			File: No permission error.
		</constant>
		<constant name="ERR_FILE_ALREADY_IN_USE" value="11" enum="Error">
			File: Already in use error.
		</constant>
		<constant name="ERR_FILE_CANT_OPEN" value="12" enum="Error">
			File: Can't open error.
		</constant>
		<constant name="ERR_FILE_CANT_WRITE" value="13" enum="Error">
			File: Can't write error.
		</constant>
		<constant name="ERR_FILE_CANT_READ" value="14" enum="Error">
			File: Can't read error.
		</constant>
		<constant name="ERR_FILE_UNRECOGNIZED" value="15" enum="Error">
			File: Unrecognized error.
		</constant>
		<constant name="ERR_FILE_CORRUPT" value="16" enum="Error">
			File: Corrupt error.
		</constant>
		<constant name="ERR_FILE_MISSING_DEPENDENCIES" value="17" enum="Error">
			File: Missing dependencies error.
		</constant>
		<constant name="ERR_FILE_EOF" value="18" enum="Error">
			File: End of file (EOF) error.
		</constant>
		<constant name="ERR_CANT_OPEN" value="19" enum="Error">
			Can't open error.
		</constant>
		<constant name="ERR_CANT_CREATE" value="20" enum="Error">
			Can't create error.
		</constant>
		<constant name="ERR_QUERY_FAILED" value="21" enum="Error">
			Query failed error.
		</constant>
		<constant name="ERR_ALREADY_IN_USE" value="22" enum="Error">
			Already in use error.
		</constant>
		<constant name="ERR_LOCKED" value="23" enum="Error">
			Locked error.
		</constant>
		<constant name="ERR_TIMEOUT" value="24" enum="Error">
			Timeout error.
		</constant>
		<constant name="ERR_CANT_CONNECT" value="25" enum="Error">
			Can't connect error.
		</constant>
		<constant name="ERR_CANT_RESOLVE" value="26" enum="Error">
			Can't resolve error.
		</constant>
		<constant name="ERR_CONNECTION_ERROR" value="27" enum="Error">
			Connection error.
		</constant>
		<constant name="ERR_CANT_ACQUIRE_RESOURCE" value="28" enum="Error">
			Can't acquire resource error.
		</constant>
		<constant name="ERR_CANT_FORK" value="29" enum="Error">
			Can't fork process error.
		</constant>
		<constant name="ERR_INVALID_DATA" value="30" enum="Error">
			Invalid data error.
		</constant>
		<constant name="ERR_INVALID_PARAMETER" value="31" enum="Error">
			Invalid parameter error.
		</constant>
		<constant name="ERR_ALREADY_EXISTS" value="32" enum="Error">
			Already exists error.
		</constant>
		<constant name="ERR_DOES_NOT_EXIST" value="33" enum="Error">
			Does not exist error.
		</constant>
		<constant name="ERR_DATABASE_CANT_READ" value="34" enum="Error">
			Database: Read error.
		</constant>
		<constant name="ERR_DATABASE_CANT_WRITE" value="35" enum="Error">
			Database: Write error.
		</constant>
		<constant name="ERR_COMPILATION_FAILED" value="36" enum="Error">
			Compilation failed error.
		</constant>
		<constant name="ERR_METHOD_NOT_FOUND" value="37" enum="Error">
			Method not found error.
		</constant>
		<constant name="ERR_LINK_FAILED" value="38" enum="Error">
			Linking failed error.
		</constant>
		<constant name="ERR_SCRIPT_FAILED" value="39" enum="Error">
			Script failed error.
		</constant>
		<constant name="ERR_CYCLIC_LINK" value="40" enum="Error">
			Cycling link (import cycle) error.
		</constant>
		<constant name="ERR_INVALID_DECLARATION" value="41" enum="Error">
			Invalid declaration error.
		</constant>
		<constant name="ERR_DUPLICATE_SYMBOL" value="42" enum="Error">
			Duplicate symbol error.
		</constant>
		<constant name="ERR_PARSE_ERROR" value="43" enum="Error">
			Parse error.
		</constant>
		<constant name="ERR_BUSY" value="44" enum="Error">
			Busy error.
		</constant>
		<constant name="ERR_SKIP" value="45" enum="Error">
			Skip error.
		</constant>
		<constant name="ERR_HELP" value="46" enum="Error">
			Help error. Used internally when passing [code]--version[/code] or [code]--help[/code] as executable options.
		</constant>
		<constant name="ERR_BUG" value="47" enum="Error">
			Bug error, caused by an implementation issue in the method.
			[b]Note:[/b] If a built-in method returns this code, please open an issue on [url=https://github.com/godotengine/godot/issues]the GitHub Issue Tracker[/url].
		</constant>
		<constant name="ERR_PRINTER_ON_FIRE" value="48" enum="Error">
			Printer on fire error (this is an easter egg, no built-in methods return this error code).
		</constant>
		<constant name="PROPERTY_HINT_NONE" value="0" enum="PropertyHint">
			The property has no hint for the editor. However, the hint string is still read, which can be used to specify a suffix for a property that has no range limit (see [constant PROPERTY_HINT_RANGE]'s description).
		</constant>
		<constant name="PROPERTY_HINT_RANGE" value="1" enum="PropertyHint">
			Hints that an [int], [float], or packed/typed [Array] property containing [int] or [float] types should be within a range specified via the hint string [code]"min,max"[/code] or [code]"min,max,step"[/code]. The hint string can optionally include [code]"or_greater"[/code] and/or [code]"or_less"[/code] to allow manual input going respectively above the max or below the min values.
			[b]Example:[/b] [code]"-360,360,1,or_greater,or_less"[/code].
			Additionally, other keywords can be included: [code]"exp"[/code] for exponential range editing, [code]"radians_as_degrees"[/code] for editing radian angles in degrees (the range values are also in degrees), [code]"degrees"[/code] to hint at an angle, [code]"prefer_slider"[/code] to show the slider for integers, [code]"hide_control"[/code] to hide the slider or up-down arrows, and [code]"suffix:px/s"[/code] to display a suffix indicating the value's unit (e.g. [code]px/s[/code] for pixels per second).
		</constant>
		<constant name="PROPERTY_HINT_ENUM" value="2" enum="PropertyHint">
			Hints that an [int], [String], or [StringName] property is an enumerated value to pick in a list specified via a hint string.
			The hint string is a comma separated list of names such as [code]"Hello,Something,Else"[/code]. Whitespace is [b]not[/b] removed from either end of a name. For integer properties, the first name in the list has value 0, the next 1, and so on. Explicit values can also be specified by appending [code]:integer[/code] to the name, e.g. [code]"Zero,One,Three:3,Four,Six:6"[/code].
		</constant>
		<constant name="PROPERTY_HINT_ENUM_SUGGESTION" value="3" enum="PropertyHint">
			Hints that a [String] or [StringName] property can be an enumerated value to pick in a list specified via a hint string such as [code]"Hello,Something,Else"[/code]. See [constant PROPERTY_HINT_ENUM] for details.
			Unlike [constant PROPERTY_HINT_ENUM], a property with this hint still accepts arbitrary values and can be empty. The list of values serves to suggest possible values.
		</constant>
		<constant name="PROPERTY_HINT_EXP_EASING" value="4" enum="PropertyHint">
			Hints that a [float] property should be edited using a curve editor showing an exponential easing function. The hint string can include [code]"attenuation"[/code] to flip the curve horizontally and/or [code]"positive_only"[/code] to exclude in/out easing and limit values to be greater than or equal to zero. This displays differently to a property that uses [constant PROPERTY_HINT_RANGE] with the [code]"exp"[/code] keyword, as it's edited with a slider instead of a curve editor.
		</constant>
		<constant name="PROPERTY_HINT_LINK" value="5" enum="PropertyHint">
			Hints that a vector property should allow its components to be linked. For example, this allows [member Vector2.x] and [member Vector2.y] to be edited together. This hint is supported on [Vector2], [Vector2i], [Vector3], [Vector3i], [Vector4], and [Vector4i]. The hint string can be used to specify a suffix indicating each value's unit with the [code]"suffix:px/s"[/code] syntax.
		</constant>
		<constant name="PROPERTY_HINT_FLAGS" value="6" enum="PropertyHint">
			Hints that an [int] property is a bitmask with named bit flags.
			The hint string is a comma separated list of names such as [code]"Bit0,Bit1,Bit2,Bit3"[/code]. Whitespace is [b]not[/b] removed from either end of a name. The first name in the list has value 1, the next 2, then 4, 8, 16 and so on. Explicit values can also be specified by appending [code]:integer[/code] to the name, e.g. [code]"A:4,B:8,C:16"[/code]. You can also combine several flags ([code]"A:4,B:8,AB:12,C:16"[/code]).
			[b]Note:[/b] A flag value must be at least [code]1[/code] and at most [code]2 ** 32 - 1[/code].
			[b]Note:[/b] Unlike [constant PROPERTY_HINT_ENUM], the previous explicit value is not taken into account. For the hint [code]"A:16,B,C"[/code], A is 16, B is 2, C is 4.
		</constant>
		<constant name="PROPERTY_HINT_LAYERS_2D_RENDER" value="7" enum="PropertyHint">
			Hints that an [int] property is a bitmask using the optionally named 2D render layers.
		</constant>
		<constant name="PROPERTY_HINT_LAYERS_2D_PHYSICS" value="8" enum="PropertyHint">
			Hints that an [int] property is a bitmask using the optionally named 2D physics layers.
		</constant>
		<constant name="PROPERTY_HINT_LAYERS_2D_NAVIGATION" value="9" enum="PropertyHint">
			Hints that an [int] property is a bitmask using the optionally named 2D navigation layers.
		</constant>
		<constant name="PROPERTY_HINT_LAYERS_3D_RENDER" value="10" enum="PropertyHint">
			Hints that an [int] property is a bitmask using the optionally named 3D render layers.
		</constant>
		<constant name="PROPERTY_HINT_LAYERS_3D_PHYSICS" value="11" enum="PropertyHint">
			Hints that an [int] property is a bitmask using the optionally named 3D physics layers.
		</constant>
		<constant name="PROPERTY_HINT_LAYERS_3D_NAVIGATION" value="12" enum="PropertyHint">
			Hints that an [int] property is a bitmask using the optionally named 3D navigation layers.
		</constant>
		<constant name="PROPERTY_HINT_LAYERS_AVOIDANCE" value="37" enum="PropertyHint">
			Hints that an integer property is a bitmask using the optionally named avoidance layers.
		</constant>
		<constant name="PROPERTY_HINT_FILE" value="13" enum="PropertyHint">
			Hints that a [String] property is a path to a file. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards like [code]"*.png,*.jpg"[/code]. By default the file will be stored as UID whenever available. You can use [ResourceUID] methods to convert it back to path. For storing a raw path, use [constant PROPERTY_HINT_FILE_PATH].
		</constant>
		<constant name="PROPERTY_HINT_DIR" value="14" enum="PropertyHint">
			Hints that a [String] property is a path to a directory. Editing it will show a file dialog for picking the path.
		</constant>
		<constant name="PROPERTY_HINT_GLOBAL_FILE" value="15" enum="PropertyHint">
			Hints that a [String] property is an absolute path to a file outside the project folder. Editing it will show a file dialog for picking the path. The hint string can be a set of filters with wildcards, like [code]"*.png,*.jpg"[/code].
		</constant>
		<constant name="PROPERTY_HINT_GLOBAL_DIR" value="16" enum="PropertyHint">
			Hints that a [String] property is an absolute path to a directory outside the project folder. Editing it will show a file dialog for picking the path.
		</constant>
		<constant name="PROPERTY_HINT_RESOURCE_TYPE" value="17" enum="PropertyHint">
			Hints that a property is an instance of a [Resource]-derived type, optionally specified via the hint string (e.g. [code]"Texture2D"[/code]). Editing it will show a popup menu of valid resource types to instantiate.
		</constant>
		<constant name="PROPERTY_HINT_MULTILINE_TEXT" value="18" enum="PropertyHint">
			Hints that a [String] property is text with line breaks. Editing it will show a text input field where line breaks can be typed.
			The hint string can be set to [code]"monospace"[/code] to force the input field to use a monospaced font.
			If the hint string [code]"no_wrap"[/code] is set, the input field will not wrap lines at boundaries, instead resorting to making the area scrollable.
		</constant>
		<constant name="PROPERTY_HINT_EXPRESSION" value="19" enum="PropertyHint">
			Hints that a [String] property is an [Expression].
		</constant>
		<constant name="PROPERTY_HINT_PLACEHOLDER_TEXT" value="20" enum="PropertyHint">
			Hints that a [String] property should show a placeholder text on its input field, if empty. The hint string is the placeholder text to use.
		</constant>
		<constant name="PROPERTY_HINT_COLOR_NO_ALPHA" value="21" enum="PropertyHint">
			Hints that a [Color] property should be edited without affecting its transparency ([member Color.a] is not editable).
		</constant>
		<constant name="PROPERTY_HINT_OBJECT_ID" value="22" enum="PropertyHint">
			Hints that the property's value is an object encoded as object ID, with its type specified in the hint string. Used by the debugger.
		</constant>
		<constant name="PROPERTY_HINT_TYPE_STRING" value="23" enum="PropertyHint">
			If a property is [String], hints that the property represents a particular type (class). This allows to select a type from the create dialog. The property will store the selected type as a string.
			If a property is [Array], hints the editor how to show elements. The [code]hint_string[/code] must encode nested types using [code]":"[/code] and [code]"/"[/code].
			If a property is [Dictionary], hints the editor how to show elements. The [code]hint_string[/code] is the same as [Array], with a [code]";"[/code] separating the key and value.
			[codeblocks]
			[gdscript]
			# Array of elem_type.
			hint_string = "%d:" % [elem_type]
			hint_string = "%d/%d:%s" % [elem_type, elem_hint, elem_hint_string]
			# Two-dimensional array of elem_type (array of arrays of elem_type).
			hint_string = "%d:%d:" % [TYPE_ARRAY, elem_type]
			hint_string = "%d:%d/%d:%s" % [TYPE_ARRAY, elem_type, elem_hint, elem_hint_string]
			# Three-dimensional array of elem_type (array of arrays of arrays of elem_type).
			hint_string = "%d:%d:%d:" % [TYPE_ARRAY, TYPE_ARRAY, elem_type]
			hint_string = "%d:%d:%d/%d:%s" % [TYPE_ARRAY, TYPE_ARRAY, elem_type, elem_hint, elem_hint_string]
			[/gdscript]
			[csharp]
			// Array of elemType.
			hintString = $"{elemType:D}:";
			hintString = $"{elemType:D}/{elemHint:D}:{elemHintString}";
			// Two-dimensional array of elemType (array of arrays of elemType).
			hintString = $"{Variant.Type.Array:D}:{elemType:D}:";
			hintString = $"{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}";
			// Three-dimensional array of elemType (array of arrays of arrays of elemType).
			hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}:";
			hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}";
			[/csharp]
			[/codeblocks]
			[b]Examples:[/b]
			[codeblocks]
			[gdscript]
			hint_string = "%d:" % [TYPE_INT] # Array of integers.
			hint_string = "%d/%d:1,10,1" % [TYPE_INT, PROPERTY_HINT_RANGE] # Array of integers (in range from 1 to 10).
			hint_string = "%d/%d:Zero,One,Two" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum).
			hint_string = "%d/%d:Zero,One,Three:3,Six:6" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum).
			hint_string = "%d/%d:*.png" % [TYPE_STRING, PROPERTY_HINT_FILE] # Array of strings (file paths).
			hint_string = "%d/%d:Texture2D" % [TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Array of textures.

			hint_string = "%d:%d:" % [TYPE_ARRAY, TYPE_FLOAT] # Two-dimensional array of floats.
			hint_string = "%d:%d/%d:" % [TYPE_ARRAY, TYPE_STRING, PROPERTY_HINT_MULTILINE_TEXT] # Two-dimensional array of multiline strings.
			hint_string = "%d:%d/%d:-1,1,0.1" % [TYPE_ARRAY, TYPE_FLOAT, PROPERTY_HINT_RANGE] # Two-dimensional array of floats (in range from -1 to 1).
			hint_string = "%d:%d/%d:Texture2D" % [TYPE_ARRAY, TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Two-dimensional array of textures.
			[/gdscript]
			[csharp]
			hintString = $"{Variant.Type.Int:D}/{PropertyHint.Range:D}:1,10,1"; // Array of integers (in range from 1 to 10).
			hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Two"; // Array of integers (an enum).
			hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3,Six:6"; // Array of integers (an enum).
			hintString = $"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png"; // Array of strings (file paths).
			hintString = $"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Array of textures.

			hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}:"; // Two-dimensional array of floats.
			hintString = $"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint.MultilineText:D}:"; // Two-dimensional array of multiline strings.
			hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint.Range:D}:-1,1,0.1"; // Two-dimensional array of floats (in range from -1 to 1).
			hintString = $"{Variant.Type.Array:D}:{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Two-dimensional array of textures.
			[/csharp]
			[/codeblocks]
			[b]Note:[/b] The trailing colon is required for properly detecting built-in types.
		</constant>
		<constant name="PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE" value="24" enum="PropertyHint" deprecated="This hint is not used by the engine.">
		</constant>
		<constant name="PROPERTY_HINT_OBJECT_TOO_BIG" value="25" enum="PropertyHint">
			Hints that an object is too big to be sent via the debugger.
		</constant>
		<constant name="PROPERTY_HINT_NODE_PATH_VALID_TYPES" value="26" enum="PropertyHint">
			Hints that the hint string specifies valid node types for property of type [NodePath].
		</constant>
		<constant name="PROPERTY_HINT_SAVE_FILE" value="27" enum="PropertyHint">
			Hints that a [String] property is a path to a file. Editing it will show a file dialog for picking the path for the file to be saved at. The dialog has access to the project's directory. The hint string can be a set of filters with wildcards like [code]"*.png,*.jpg"[/code]. See also [member FileDialog.filters].
		</constant>
		<constant name="PROPERTY_HINT_GLOBAL_SAVE_FILE" value="28" enum="PropertyHint">
			Hints that a [String] property is a path to a file. Editing it will show a file dialog for picking the path for the file to be saved at. The dialog has access to the entire filesystem. The hint string can be a set of filters with wildcards like [code]"*.png,*.jpg"[/code]. See also [member FileDialog.filters].
		</constant>
		<constant name="PROPERTY_HINT_INT_IS_OBJECTID" value="29" enum="PropertyHint" deprecated="This hint is not used by the engine.">
		</constant>
		<constant name="PROPERTY_HINT_INT_IS_POINTER" value="30" enum="PropertyHint">
			Hints that an [int] property is a pointer. Used by GDExtension.
		</constant>
		<constant name="PROPERTY_HINT_ARRAY_TYPE" value="31" enum="PropertyHint">
			Hints that a property is an [Array] with the stored type specified in the hint string. The hint string contains the type of the array (e.g. [code]"String"[/code]).
			Use the hint string format from [constant PROPERTY_HINT_TYPE_STRING] for more control over the stored type.
		</constant>
		<constant name="PROPERTY_HINT_DICTIONARY_TYPE" value="38" enum="PropertyHint">
			Hints that a property is a [Dictionary] with the stored types specified in the hint string. The hint string contains the key and value types separated by a semicolon (e.g. [code]"int;String"[/code]).
			Use the hint string format from [constant PROPERTY_HINT_TYPE_STRING] for more control over the stored types.
		</constant>
		<constant name="PROPERTY_HINT_LOCALE_ID" value="32" enum="PropertyHint">
			Hints that a string property is a locale code. Editing it will show a locale dialog for picking language and country.
		</constant>
		<constant name="PROPERTY_HINT_LOCALIZABLE_STRING" value="33" enum="PropertyHint">
			Hints that a dictionary property is string translation map. Dictionary keys are locale codes and, values are translated strings.
		</constant>
		<constant name="PROPERTY_HINT_NODE_TYPE" value="34" enum="PropertyHint">
			Hints that a property is an instance of a [Node]-derived type, optionally specified via the hint string (e.g. [code]"Node2D"[/code]). Editing it will show a dialog for picking a node from the scene.
		</constant>
		<constant name="PROPERTY_HINT_HIDE_QUATERNION_EDIT" value="35" enum="PropertyHint">
			Hints that a quaternion property should disable the temporary euler editor.
		</constant>
		<constant name="PROPERTY_HINT_PASSWORD" value="36" enum="PropertyHint">
			Hints that a string property is a password, and every character is replaced with the secret character.
		</constant>
		<constant name="PROPERTY_HINT_TOOL_BUTTON" value="39" enum="PropertyHint">
			Hints that a [Callable] property should be displayed as a clickable button. When the button is pressed, the callable is called. The hint string specifies the button text and optionally an icon from the [code]"EditorIcons"[/code] theme type.
			[codeblock lang=text]
			"Click me!" - A button with the text "Click me!" and the default "Callable" icon.
			"Click me!,ColorRect" - A button with the text "Click me!" and the "ColorRect" icon.
			[/codeblock]
			[b]Note:[/b] A [Callable] cannot be properly serialized and stored in a file, so it is recommended to use [constant PROPERTY_USAGE_EDITOR] instead of [constant PROPERTY_USAGE_DEFAULT].
		</constant>
		<constant name="PROPERTY_HINT_ONESHOT" value="40" enum="PropertyHint">
			Hints that a property will be changed on its own after setting, such as [member AudioStreamPlayer.playing] or [member GPUParticles3D.emitting].
		</constant>
		<constant name="PROPERTY_HINT_GROUP_ENABLE" value="42" enum="PropertyHint">
			Hints that a boolean property will enable the feature associated with the group that it occurs in. The property will be displayed as a checkbox on the group header. Only works within a group or subgroup.
			By default, disabling the property hides all properties in the group. Use the optional hint string [code]"checkbox_only"[/code] to disable this behavior.
		</constant>
		<constant name="PROPERTY_HINT_INPUT_NAME" value="43" enum="PropertyHint">
			Hints that a [String] or [StringName] property is the name of an input action. This allows the selection of any action name from the Input Map in the Project Settings. The hint string may contain two options separated by commas:
			- If it contains [code]"show_builtin"[/code], built-in input actions are included in the selection.
			- If it contains [code]"loose_mode"[/code], loose mode is enabled. This allows inserting any action name even if it's not present in the input map.
		</constant>
		<constant name="PROPERTY_HINT_FILE_PATH" value="44" enum="PropertyHint">
			Like [constant PROPERTY_HINT_FILE], but the property is stored as a raw path, not UID. That means the reference will be broken if you move the file. Consider using [constant PROPERTY_HINT_FILE] when possible.
		</constant>
		<constant name="PROPERTY_HINT_MAX" value="45" enum="PropertyHint">
			Represents the size of the [enum PropertyHint] enum.
		</constant>
		<constant name="PROPERTY_USAGE_NONE" value="0" enum="PropertyUsageFlags" is_bitfield="true">
			The property is not stored, and does not display in the editor. This is the default for non-exported properties.
		</constant>
		<constant name="PROPERTY_USAGE_STORAGE" value="2" enum="PropertyUsageFlags" is_bitfield="true">
			The property is serialized and saved in the scene file (default for exported properties).
		</constant>
		<constant name="PROPERTY_USAGE_EDITOR" value="4" enum="PropertyUsageFlags" is_bitfield="true">
			The property is shown in the [EditorInspector] (default for exported properties).
		</constant>
		<constant name="PROPERTY_USAGE_INTERNAL" value="8" enum="PropertyUsageFlags" is_bitfield="true">
			The property is excluded from the class reference.
		</constant>
		<constant name="PROPERTY_USAGE_CHECKABLE" value="16" enum="PropertyUsageFlags" is_bitfield="true">
			The property can be checked in the [EditorInspector].
		</constant>
		<constant name="PROPERTY_USAGE_CHECKED" value="32" enum="PropertyUsageFlags" is_bitfield="true">
			The property is checked in the [EditorInspector].
		</constant>
		<constant name="PROPERTY_USAGE_GROUP" value="64" enum="PropertyUsageFlags" is_bitfield="true">
			Used to group properties together in the editor. See [EditorInspector].
		</constant>
		<constant name="PROPERTY_USAGE_CATEGORY" value="128" enum="PropertyUsageFlags" is_bitfield="true">
			Used to categorize properties together in the editor.
		</constant>
		<constant name="PROPERTY_USAGE_SUBGROUP" value="256" enum="PropertyUsageFlags" is_bitfield="true">
			Used to group properties together in the editor in a subgroup (under a group). See [EditorInspector].
		</constant>
		<constant name="PROPERTY_USAGE_CLASS_IS_BITFIELD" value="512" enum="PropertyUsageFlags" is_bitfield="true">
			The property is a bitfield, i.e. it contains multiple flags represented as bits.
		</constant>
		<constant name="PROPERTY_USAGE_NO_INSTANCE_STATE" value="1024" enum="PropertyUsageFlags" is_bitfield="true">
			The property does not save its state in [PackedScene].
		</constant>
		<constant name="PROPERTY_USAGE_RESTART_IF_CHANGED" value="2048" enum="PropertyUsageFlags" is_bitfield="true">
			Editing the property prompts the user for restarting the editor.
		</constant>
		<constant name="PROPERTY_USAGE_SCRIPT_VARIABLE" value="4096" enum="PropertyUsageFlags" is_bitfield="true">
			The property is a script variable. [constant PROPERTY_USAGE_SCRIPT_VARIABLE] can be used to distinguish between exported script variables from built-in variables (which don't have this usage flag). By default, [constant PROPERTY_USAGE_SCRIPT_VARIABLE] is [b]not[/b] applied to variables that are created by overriding [method Object._get_property_list] in a script.
		</constant>
		<constant name="PROPERTY_USAGE_STORE_IF_NULL" value="8192" enum="PropertyUsageFlags" is_bitfield="true">
			The property value of type [Object] will be stored even if its value is [code]null[/code].
		</constant>
		<constant name="PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED" value="16384" enum="PropertyUsageFlags" is_bitfield="true">
			If this property is modified, all inspector fields will be refreshed.
		</constant>
		<constant name="PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE" value="32768" enum="PropertyUsageFlags" is_bitfield="true" deprecated="This flag is not used by the engine.">
		</constant>
		<constant name="PROPERTY_USAGE_CLASS_IS_ENUM" value="65536" enum="PropertyUsageFlags" is_bitfield="true">
			The property is a variable of enum type, i.e. it only takes named integer constants from its associated enumeration.
		</constant>
		<constant name="PROPERTY_USAGE_NIL_IS_VARIANT" value="131072" enum="PropertyUsageFlags" is_bitfield="true">
			If property has [code]nil[/code] as default value, its type will be [Variant].
		</constant>
		<constant name="PROPERTY_USAGE_ARRAY" value="262144" enum="PropertyUsageFlags" is_bitfield="true">
			The property is the element count of a property array, i.e. a list of groups of related properties. Properties defined with this usage also need a specific [code]class_name[/code] field in the form of [code]label,prefix[/code]. The field may also include additional comma-separated options:
			- [code]page_size=N[/code]: Overrides [member EditorSettings.interface/inspector/max_array_dictionary_items_per_page] for this array.
			- [code]add_button_text=text[/code]: The text displayed by the "Add Element" button.
			- [code]static[/code]: The elements can't be re-arranged.
			- [code]const[/code]: New elements can't be added.
			- [code]numbered[/code]: An index will appear next to each element.
			- [code]unfoldable[/code]: The array can't be folded.
			- [code]swap_method=method_name[/code]: The method that will be called when two elements switch places. The method should take 2 [int] parameters, which will be indices of the elements being swapped.
			Note that making a full-fledged property array requires boilerplate code involving [method Object._get_property_list].
		</constant>
		<constant name="PROPERTY_USAGE_ALWAYS_DUPLICATE" value="524288" enum="PropertyUsageFlags" is_bitfield="true">
			When duplicating a resource with [method Resource.duplicate], and this flag is set on a property of that resource, the property should always be duplicated, regardless of the [code]subresources[/code] bool parameter.
		</constant>
		<constant name="PROPERTY_USAGE_NEVER_DUPLICATE" value="1048576" enum="PropertyUsageFlags" is_bitfield="true">
			When duplicating a resource with [method Resource.duplicate], and this flag is set on a property of that resource, the property should never be duplicated, regardless of the [code]subresources[/code] bool parameter.
		</constant>
		<constant name="PROPERTY_USAGE_HIGH_END_GFX" value="2097152" enum="PropertyUsageFlags" is_bitfield="true">
			The property is only shown in the editor if modern renderers are supported (the Compatibility rendering method is excluded).
		</constant>
		<constant name="PROPERTY_USAGE_NODE_PATH_FROM_SCENE_ROOT" value="4194304" enum="PropertyUsageFlags" is_bitfield="true">
			The [NodePath] property will always be relative to the scene's root. Mostly useful for local resources.
		</constant>
		<constant name="PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT" value="8388608" enum="PropertyUsageFlags" is_bitfield="true">
			Use when a resource is created on the fly, i.e. the getter will always return a different instance. [ResourceSaver] needs this information to properly save such resources.
		</constant>
		<constant name="PROPERTY_USAGE_KEYING_INCREMENTS" value="16777216" enum="PropertyUsageFlags" is_bitfield="true">
			Inserting an animation key frame of this property will automatically increment the value, allowing to easily keyframe multiple values in a row.
		</constant>
		<constant name="PROPERTY_USAGE_DEFERRED_SET_RESOURCE" value="33554432" enum="PropertyUsageFlags" is_bitfield="true" deprecated="This flag is not used by the engine.">
		</constant>
		<constant name="PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT" value="67108864" enum="PropertyUsageFlags" is_bitfield="true">
			When this property is a [Resource] and base object is a [Node], a resource instance will be automatically created whenever the node is created in the editor.
		</constant>
		<constant name="PROPERTY_USAGE_EDITOR_BASIC_SETTING" value="134217728" enum="PropertyUsageFlags" is_bitfield="true">
			The property is considered a basic setting and will appear even when advanced mode is disabled. Used for project settings.
		</constant>
		<constant name="PROPERTY_USAGE_READ_ONLY" value="268435456" enum="PropertyUsageFlags" is_bitfield="true">
			The property is read-only in the [EditorInspector].
		</constant>
		<constant name="PROPERTY_USAGE_SECRET" value="536870912" enum="PropertyUsageFlags" is_bitfield="true">
			An export preset property with this flag contains confidential information and is stored separately from the rest of the export preset configuration.
		</constant>
		<constant name="PROPERTY_USAGE_DEFAULT" value="6" enum="PropertyUsageFlags" is_bitfield="true">
			Default usage (storage and editor).
		</constant>
		<constant name="PROPERTY_USAGE_NO_EDITOR" value="2" enum="PropertyUsageFlags" is_bitfield="true">
			Default usage but without showing the property in the editor (storage).
		</constant>
		<constant name="METHOD_FLAG_NORMAL" value="1" enum="MethodFlags" is_bitfield="true">
			Flag for a normal method.
		</constant>
		<constant name="METHOD_FLAG_EDITOR" value="2" enum="MethodFlags" is_bitfield="true">
			Flag for an editor method.
		</constant>
		<constant name="METHOD_FLAG_CONST" value="4" enum="MethodFlags" is_bitfield="true">
			Flag for a constant method.
		</constant>
		<constant name="METHOD_FLAG_VIRTUAL" value="8" enum="MethodFlags" is_bitfield="true">
			Flag for a virtual method.
		</constant>
		<constant name="METHOD_FLAG_VARARG" value="16" enum="MethodFlags" is_bitfield="true">
			Flag for a method with a variable number of arguments.
		</constant>
		<constant name="METHOD_FLAG_STATIC" value="32" enum="MethodFlags" is_bitfield="true">
			Flag for a static method.
		</constant>
		<constant name="METHOD_FLAG_OBJECT_CORE" value="64" enum="MethodFlags" is_bitfield="true">
			Used internally. Allows to not dump core virtual methods (such as [method Object._notification]) to the JSON API.
		</constant>
		<constant name="METHOD_FLAG_VIRTUAL_REQUIRED" value="128" enum="MethodFlags" is_bitfield="true">
			Flag for a virtual method that is required. In GDScript, this flag is set for abstract functions.
		</constant>
		<constant name="METHOD_FLAGS_DEFAULT" value="1" enum="MethodFlags" is_bitfield="true">
			Default method flags (normal).
		</constant>
		<constant name="UINT8_MAX" value="255">
			Maximum value of an 8-bit unsigned integer.
		</constant>
		<constant name="UINT16_MAX" value="65535">
			Maximum value of a 16-bit unsigned integer.
		</constant>
		<constant name="UINT32_MAX" value="4294967295">
			Maximum value of a 32-bit unsigned integer.
		</constant>
		<constant name="INT8_MIN" value="-128">
			Minimum value of an 8-bit signed integer.
		</constant>
		<constant name="INT8_MAX" value="127">
			Maximum value of an 8-bit signed integer.
		</constant>
		<constant name="INT16_MIN" value="-32768">
			Minimum value of a 16-bit signed integer.
		</constant>
		<constant name="INT16_MAX" value="32767">
			Maximum value of a 16-bit signed integer.
		</constant>
		<constant name="INT32_MIN" value="-2147483648">
			Minimum value of a 32-bit signed integer.
		</constant>
		<constant name="INT32_MAX" value="2147483647">
			Maximum value of a 32-bit signed integer.
		</constant>
		<constant name="INT64_MIN" value="-9223372036854775808">
			Minimum value of a 64-bit signed integer.
		</constant>
		<constant name="INT64_MAX" value="9223372036854775807">
			Maximum value of a 64-bit signed integer.
		</constant>
		<constant name="TYPE_NIL" value="0" enum="Variant.Type">
			Variable is [code]null[/code].
		</constant>
		<constant name="TYPE_BOOL" value="1" enum="Variant.Type">
			Variable is of type [bool].
		</constant>
		<constant name="TYPE_INT" value="2" enum="Variant.Type">
			Variable is of type [int].
		</constant>
		<constant name="TYPE_FLOAT" value="3" enum="Variant.Type">
			Variable is of type [float].
		</constant>
		<constant name="TYPE_STRING" value="4" enum="Variant.Type">
			Variable is of type [String].
		</constant>
		<constant name="TYPE_VECTOR2" value="5" enum="Variant.Type">
			Variable is of type [Vector2].
		</constant>
		<constant name="TYPE_VECTOR2I" value="6" enum="Variant.Type">
			Variable is of type [Vector2i].
		</constant>
		<constant name="TYPE_RECT2" value="7" enum="Variant.Type">
			Variable is of type [Rect2].
		</constant>
		<constant name="TYPE_RECT2I" value="8" enum="Variant.Type">
			Variable is of type [Rect2i].
		</constant>
		<constant name="TYPE_VECTOR3" value="9" enum="Variant.Type">
			Variable is of type [Vector3].
		</constant>
		<constant name="TYPE_VECTOR3I" value="10" enum="Variant.Type">
			Variable is of type [Vector3i].
		</constant>
		<constant name="TYPE_TRANSFORM2D" value="11" enum="Variant.Type">
			Variable is of type [Transform2D].
		</constant>
		<constant name="TYPE_VECTOR4" value="12" enum="Variant.Type">
			Variable is of type [Vector4].
		</constant>
		<constant name="TYPE_VECTOR4I" value="13" enum="Variant.Type">
			Variable is of type [Vector4i].
		</constant>
		<constant name="TYPE_PLANE" value="14" enum="Variant.Type">
			Variable is of type [Plane].
		</constant>
		<constant name="TYPE_QUATERNION" value="15" enum="Variant.Type">
			Variable is of type [Quaternion].
		</constant>
		<constant name="TYPE_AABB" value="16" enum="Variant.Type">
			Variable is of type [AABB].
		</constant>
		<constant name="TYPE_BASIS" value="17" enum="Variant.Type">
			Variable is of type [Basis].
		</constant>
		<constant name="TYPE_TRANSFORM3D" value="18" enum="Variant.Type">
			Variable is of type [Transform3D].
		</constant>
		<constant name="TYPE_PROJECTION" value="19" enum="Variant.Type">
			Variable is of type [Projection].
		</constant>
		<constant name="TYPE_COLOR" value="20" enum="Variant.Type">
			Variable is of type [Color].
		</constant>
		<constant name="TYPE_STRING_NAME" value="21" enum="Variant.Type">
			Variable is of type [StringName].
		</constant>
		<constant name="TYPE_NODE_PATH" value="22" enum="Variant.Type">
			Variable is of type [NodePath].
		</constant>
		<constant name="TYPE_RID" value="23" enum="Variant.Type">
			Variable is of type [RID].
		</constant>
		<constant name="TYPE_OBJECT" value="24" enum="Variant.Type">
			Variable is of type [Object].
		</constant>
		<constant name="TYPE_CALLABLE" value="25" enum="Variant.Type">
			Variable is of type [Callable].
		</constant>
		<constant name="TYPE_SIGNAL" value="26" enum="Variant.Type">
			Variable is of type [Signal].
		</constant>
		<constant name="TYPE_DICTIONARY" value="27" enum="Variant.Type">
			Variable is of type [Dictionary].
		</constant>
		<constant name="TYPE_ARRAY" value="28" enum="Variant.Type">
			Variable is of type [Array].
		</constant>
		<constant name="TYPE_PACKED_BYTE_ARRAY" value="29" enum="Variant.Type">
			Variable is of type [PackedByteArray].
		</constant>
		<constant name="TYPE_PACKED_INT32_ARRAY" value="30" enum="Variant.Type">
			Variable is of type [PackedInt32Array].
		</constant>
		<constant name="TYPE_PACKED_INT64_ARRAY" value="31" enum="Variant.Type">
			Variable is of type [PackedInt64Array].
		</constant>
		<constant name="TYPE_PACKED_FLOAT32_ARRAY" value="32" enum="Variant.Type">
			Variable is of type [PackedFloat32Array].
		</constant>
		<constant name="TYPE_PACKED_FLOAT64_ARRAY" value="33" enum="Variant.Type">
			Variable is of type [PackedFloat64Array].
		</constant>
		<constant name="TYPE_PACKED_STRING_ARRAY" value="34" enum="Variant.Type">
			Variable is of type [PackedStringArray].
		</constant>
		<constant name="TYPE_PACKED_VECTOR2_ARRAY" value="35" enum="Variant.Type">
			Variable is of type [PackedVector2Array].
		</constant>
		<constant name="TYPE_PACKED_VECTOR3_ARRAY" value="36" enum="Variant.Type">
			Variable is of type [PackedVector3Array].
		</constant>
		<constant name="TYPE_PACKED_COLOR_ARRAY" value="37" enum="Variant.Type">
			Variable is of type [PackedColorArray].
		</constant>
		<constant name="TYPE_PACKED_VECTOR4_ARRAY" value="38" enum="Variant.Type">
			Variable is of type [PackedVector4Array].
		</constant>
		<constant name="TYPE_MAX" value="39" enum="Variant.Type">
			Represents the size of the [enum Variant.Type] enum.
		</constant>
		<constant name="OP_EQUAL" value="0" enum="Variant.Operator">
			Equality operator ([code]==[/code]).
		</constant>
		<constant name="OP_NOT_EQUAL" value="1" enum="Variant.Operator">
			Inequality operator ([code]!=[/code]).
		</constant>
		<constant name="OP_LESS" value="2" enum="Variant.Operator">
			Less than operator ([code]&lt;[/code]).
		</constant>
		<constant name="OP_LESS_EQUAL" value="3" enum="Variant.Operator">
			Less than or equal operator ([code]&lt;=[/code]).
		</constant>
		<constant name="OP_GREATER" value="4" enum="Variant.Operator">
			Greater than operator ([code]&gt;[/code]).
		</constant>
		<constant name="OP_GREATER_EQUAL" value="5" enum="Variant.Operator">
			Greater than or equal operator ([code]&gt;=[/code]).
		</constant>
		<constant name="OP_ADD" value="6" enum="Variant.Operator">
			Addition operator ([code]+[/code]).
		</constant>
		<constant name="OP_SUBTRACT" value="7" enum="Variant.Operator">
			Subtraction operator ([code]-[/code]).
		</constant>
		<constant name="OP_MULTIPLY" value="8" enum="Variant.Operator">
			Multiplication operator ([code]*[/code]).
		</constant>
		<constant name="OP_DIVIDE" value="9" enum="Variant.Operator">
			Division operator ([code]/[/code]).
		</constant>
		<constant name="OP_NEGATE" value="10" enum="Variant.Operator">
			Unary negation operator ([code]-[/code]).
		</constant>
		<constant name="OP_POSITIVE" value="11" enum="Variant.Operator">
			Unary plus operator ([code]+[/code]).
		</constant>
		<constant name="OP_MODULE" value="12" enum="Variant.Operator">
			Remainder/modulo operator ([code]%[/code]).
		</constant>
		<constant name="OP_POWER" value="13" enum="Variant.Operator">
			Power operator ([code]**[/code]).
		</constant>
		<constant name="OP_SHIFT_LEFT" value="14" enum="Variant.Operator">
			Left shift operator ([code]&lt;&lt;[/code]).
		</constant>
		<constant name="OP_SHIFT_RIGHT" value="15" enum="Variant.Operator">
			Right shift operator ([code]&gt;&gt;[/code]).
		</constant>
		<constant name="OP_BIT_AND" value="16" enum="Variant.Operator">
			Bitwise AND operator ([code]&amp;[/code]).
		</constant>
		<constant name="OP_BIT_OR" value="17" enum="Variant.Operator">
			Bitwise OR operator ([code]|[/code]).
		</constant>
		<constant name="OP_BIT_XOR" value="18" enum="Variant.Operator">
			Bitwise XOR operator ([code]^[/code]).
		</constant>
		<constant name="OP_BIT_NEGATE" value="19" enum="Variant.Operator">
			Bitwise NOT operator ([code]~[/code]).
		</constant>
		<constant name="OP_AND" value="20" enum="Variant.Operator">
			Logical AND operator ([code]and[/code] or [code]&amp;&amp;[/code]).
		</constant>
		<constant name="OP_OR" value="21" enum="Variant.Operator">
			Logical OR operator ([code]or[/code] or [code]||[/code]).
		</constant>
		<constant name="OP_XOR" value="22" enum="Variant.Operator">
			Logical XOR operator (not implemented in GDScript).
		</constant>
		<constant name="OP_NOT" value="23" enum="Variant.Operator">
			Logical NOT operator ([code]not[/code] or [code]![/code]).
		</constant>
		<constant name="OP_IN" value="24" enum="Variant.Operator">
			Logical IN operator ([code]in[/code]).
		</constant>
		<constant name="OP_MAX" value="25" enum="Variant.Operator">
			Represents the size of the [enum Variant.Operator] enum.
		</constant>
	</constants>
</class>
